removed all occurances of int

This commit is contained in:
Allen Webster 2016-08-28 21:03:26 -04:00
parent e7216b80c6
commit ec27163c48
42 changed files with 1205 additions and 1362 deletions

View File

@ -991,7 +991,7 @@ when it is no longer in use.</div></div><hr>
<div id='file_exists_doc' style='margin-bottom: 1cm;'> <div id='file_exists_doc' style='margin-bottom: 1cm;'>
<h4>&sect;3.3.54: file_exists</h4> <h4>&sect;3.3.54: file_exists</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>bool32 app->file_exists( <div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>bool32 app->file_exists(
<div style='margin-left: 4mm;'>Application_Links *app,<br>char *filename,<br>int len<br></div>) <div style='margin-left: 4mm;'>Application_Links *app,<br>char *filename,<br>int32_t len<br></div>)
</div> </div>
<div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Parameters</i></b></div><div> <div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Parameters</i></b></div><div>
<div style='font-weight: 600;'>filename</div> <div style='font-weight: 600;'>filename</div>
@ -1005,7 +1005,7 @@ when it is no longer in use.</div></div><hr>
<div id='directory_cd_doc' style='margin-bottom: 1cm;'> <div id='directory_cd_doc' style='margin-bottom: 1cm;'>
<h4>&sect;3.3.55: directory_cd</h4> <h4>&sect;3.3.55: directory_cd</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>bool32 app->directory_cd( <div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>bool32 app->directory_cd(
<div style='margin-left: 4mm;'>Application_Links *app,<br>char *dir,<br>int *len,<br>int capacity,<br>char *rel_path,<br>int rel_len<br></div>) <div style='margin-left: 4mm;'>Application_Links *app,<br>char *dir,<br>int32_t *len,<br>int32_t capacity,<br>char *rel_path,<br>int32_t rel_len<br></div>)
</div> </div>
<div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Parameters</i></b></div><div> <div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Parameters</i></b></div><div>
<div style='font-weight: 600;'>dir</div> <div style='font-weight: 600;'>dir</div>
@ -1290,7 +1290,7 @@ an empty String with the correct size and memory size to operate on the array.</
<div id='expand_str_str_doc'><h4>&sect;4.3.16: expand_str</h4> <div id='expand_str_str_doc'><h4>&sect;4.3.16: expand_str</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'> <div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>
#define expand_str(s)</div> #define expand_str(s)</div>
<div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Description</i></b></div><div style='margin-left: 5mm; margin-right: 5mm;'>This macro is a helper for any calls that take a char*,int pair to specify a <div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Description</i></b></div><div style='margin-left: 5mm; margin-right: 5mm;'>This macro is a helper for any calls that take a char*,integer pair to specify a
string. This macro expands to both of those parameters from one String struct.</div></div><hr> string. This macro expands to both of those parameters from one String struct.</div></div><hr>
<div id='str_size_str_doc'><h4>&sect;4.3.17: str_size</h4> <div id='str_size_str_doc'><h4>&sect;4.3.17: str_size</h4>
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'> <div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>

View File

@ -13,7 +13,7 @@
#define FRED_BUFFER_TYPES_H #define FRED_BUFFER_TYPES_H
static Buffer_Seek static Buffer_Seek
seek_pos(int pos){ seek_pos(int32_t pos){
Buffer_Seek result; Buffer_Seek result;
result.type = buffer_seek_pos; result.type = buffer_seek_pos;
result.pos = pos; result.pos = pos;
@ -21,7 +21,7 @@ seek_pos(int pos){
} }
static Buffer_Seek static Buffer_Seek
seek_wrapped_xy(float x, float y, int round_down){ seek_wrapped_xy(float x, float y, int32_t round_down){
Buffer_Seek result; Buffer_Seek result;
result.type = buffer_seek_wrapped_xy; result.type = buffer_seek_wrapped_xy;
result.x = x; result.x = x;
@ -31,7 +31,7 @@ seek_wrapped_xy(float x, float y, int round_down){
} }
static Buffer_Seek static Buffer_Seek
seek_unwrapped_xy(float x, float y, int round_down){ seek_unwrapped_xy(float x, float y, int32_t round_down){
Buffer_Seek result; Buffer_Seek result;
result.type = buffer_seek_unwrapped_xy; result.type = buffer_seek_unwrapped_xy;
result.x = x; result.x = x;
@ -41,7 +41,7 @@ seek_unwrapped_xy(float x, float y, int round_down){
} }
static Buffer_Seek static Buffer_Seek
seek_xy(float x, float y, int round_down, int unwrapped){ seek_xy(float x, float y, int32_t round_down, int32_t unwrapped){
Buffer_Seek result; Buffer_Seek result;
result.type = unwrapped?buffer_seek_unwrapped_xy:buffer_seek_wrapped_xy; result.type = unwrapped?buffer_seek_unwrapped_xy:buffer_seek_wrapped_xy;
result.x = x; result.x = x;
@ -51,7 +51,7 @@ seek_xy(float x, float y, int round_down, int unwrapped){
} }
static Buffer_Seek static Buffer_Seek
seek_line_char(int line, int character){ seek_line_char(int32_t line, int32_t character){
Buffer_Seek result; Buffer_Seek result;
result.type = buffer_seek_line_char; result.type = buffer_seek_line_char;
result.line = line; result.line = line;

View File

@ -14,13 +14,13 @@
#define FSTRING_STRUCT #define FSTRING_STRUCT
typedef struct String{ typedef struct String{
char *str; char *str;
int size; int32_t size;
int memory_size; int32_t memory_size;
} String; } String;
typedef struct Offset_String{ typedef struct Offset_String{
int offset; int32_t offset;
int size; int32_t size;
} Offset_String; } Offset_String;
#endif #endif
@ -52,7 +52,7 @@ typedef CUSTOM_COMMAND_SIG(Custom_Command_Function);
#include "4coder_buffer_types.h" #include "4coder_buffer_types.h"
#include "4coder_gui.h" #include "4coder_gui.h"
#define COMMAND_CALLER_HOOK(name) int name(struct Application_Links *app, Generic_Command cmd) #define COMMAND_CALLER_HOOK(name) int32_t name(struct Application_Links *app, Generic_Command cmd)
typedef COMMAND_CALLER_HOOK(Command_Caller_Hook_Function); typedef COMMAND_CALLER_HOOK(Command_Caller_Hook_Function);
inline Key_Event_Data inline Key_Event_Data
@ -66,7 +66,7 @@ mouse_state_zero(){
return(data); return(data);
} }
inline Range inline Range
make_range(int p1, int p2){ make_range(int32_t p1, int32_t p2){
Range range; Range range;
if (p1 < p2){ if (p1 < p2){
range.min = p1; range.min = p1;
@ -89,11 +89,11 @@ view_summary_zero(){
return(summary); return(summary);
} }
#define VIEW_ROUTINE_SIG(name) void name(struct Application_Links *app, int view_id) #define VIEW_ROUTINE_SIG(name) void name(struct Application_Links *app, int32_t view_id)
#define GET_BINDING_DATA(name) int name(void *data, int size) #define GET_BINDING_DATA(name) int32_t name(void *data, int32_t size)
#define HOOK_SIG(name) int name(struct Application_Links *app) #define HOOK_SIG(name) int32_t name(struct Application_Links *app)
#define OPEN_FILE_HOOK_SIG(name) int name(struct Application_Links *app, int buffer_id) #define OPEN_FILE_HOOK_SIG(name) int32_t name(struct Application_Links *app, int32_t buffer_id)
#define SCROLL_RULE_SIG(name) int name(float target_x, float target_y, float *scroll_x, float *scroll_y, int view_id, int is_new_target, float dt) #define SCROLL_RULE_SIG(name) int32_t name(float target_x, float target_y, float *scroll_x, float *scroll_y, int32_t view_id, int32_t is_new_target, float dt)
#define INPUT_FILTER_SIG(name) void name(Mouse_State *mouse) #define INPUT_FILTER_SIG(name) void name(Mouse_State *mouse)
typedef VIEW_ROUTINE_SIG(View_Routine_Function); typedef VIEW_ROUTINE_SIG(View_Routine_Function);
@ -113,11 +113,11 @@ struct Application_Links;
#define _GET_VERSION_SIG(n) int n(int maj, int min, int patch) #define _GET_VERSION_SIG(n) int32_t n(int32_t maj, int32_t min, int32_t patch)
typedef _GET_VERSION_SIG(_Get_Version_Function); typedef _GET_VERSION_SIG(_Get_Version_Function);
extern "C" _GET_VERSION_SIG(get_alpha_4coder_version){ extern "C" _GET_VERSION_SIG(get_alpha_4coder_version){
int result = (maj == MAJOR && min == MINOR && patch == PATCH); int32_t result = (maj == MAJOR && min == MINOR && patch == PATCH);
return(result); return(result);
} }
@ -151,22 +151,22 @@ enum Map_ID{
struct Binding_Unit{ struct Binding_Unit{
Binding_Unit_Type type; Binding_Unit_Type type;
union{ union{
struct{ int total_size; int user_map_count; int error; } header; struct{ int32_t total_size; int32_t user_map_count; int32_t error; } header;
struct{ int mapid; int replace; int bind_count; } map_begin; struct{ int32_t mapid; int32_t replace; int32_t bind_count; } map_begin;
struct{ int mapid; } map_inherit; struct{ int32_t mapid; } map_inherit;
struct{ struct{
short code; int16_t code;
unsigned char modifiers; uint8_t modifiers;
int command_id; int32_t command_id;
} binding; } binding;
struct{ struct{
short code; int16_t code;
unsigned char modifiers; uint8_t modifiers;
Custom_Command_Function *func; Custom_Command_Function *func;
} callback; } callback;
struct{ struct{
int hook_id; int32_t hook_id;
void *func; void *func;
} hook; } hook;
}; };

View File

@ -51,8 +51,8 @@
#define MEMORY_ALLOCATE_SIG(n) void* n(Application_Links *app, int32_t size) #define MEMORY_ALLOCATE_SIG(n) void* n(Application_Links *app, int32_t size)
#define MEMORY_SET_PROTECTION_SIG(n) bool32 n(Application_Links *app, void *ptr, int32_t size, Memory_Protect_Flags flags) #define MEMORY_SET_PROTECTION_SIG(n) bool32 n(Application_Links *app, void *ptr, int32_t size, Memory_Protect_Flags flags)
#define MEMORY_FREE_SIG(n) void n(Application_Links *app, void *mem, int32_t size) #define MEMORY_FREE_SIG(n) void n(Application_Links *app, void *mem, int32_t size)
#define FILE_EXISTS_SIG(n) bool32 n(Application_Links *app, char *filename, int len) #define FILE_EXISTS_SIG(n) bool32 n(Application_Links *app, char *filename, int32_t len)
#define DIRECTORY_CD_SIG(n) bool32 n(Application_Links *app, char *dir, int *len, int capacity, char *rel_path, int rel_len) #define DIRECTORY_CD_SIG(n) bool32 n(Application_Links *app, char *dir, int32_t *len, int32_t capacity, char *rel_path, int32_t rel_len)
#define GET_4ED_PATH_SIG(n) bool32 n(Application_Links *app, char *out, int32_t capacity) #define GET_4ED_PATH_SIG(n) bool32 n(Application_Links *app, char *out, int32_t capacity)
#define SHOW_MOUSE_CURSOR_SIG(n) void n(Application_Links *app, Mouse_Cursor_Show_Type show) #define SHOW_MOUSE_CURSOR_SIG(n) void n(Application_Links *app, Mouse_Cursor_Show_Type show)
extern "C"{ extern "C"{
@ -116,7 +116,7 @@ extern "C"{
} }
struct Application_Links{ struct Application_Links{
void *memory; void *memory;
int memory_size; int32_t memory_size;
Exec_Command_Function *exec_command; Exec_Command_Function *exec_command;
Exec_System_Command_Function *exec_system_command; Exec_System_Command_Function *exec_system_command;
Clipboard_Post_Function *clipboard_post; Clipboard_Post_Function *clipboard_post;
@ -177,7 +177,7 @@ struct Application_Links{
void *cmd_context; void *cmd_context;
void *system_links; void *system_links;
void *current_coroutine; void *current_coroutine;
int type_coroutine; int32_t type_coroutine;
}; };
#define FillAppLinksAPI(app_links) do{\ #define FillAppLinksAPI(app_links) do{\
app_links->exec_command = Exec_Command;\ app_links->exec_command = Exec_Command;\

View File

@ -44,9 +44,9 @@ CUSTOM_COMMAND_SIG(write_capital){
CUSTOM_COMMAND_SIG(switch_to_compilation){ CUSTOM_COMMAND_SIG(switch_to_compilation){
char name[] = "*compilation*"; char name[] = "*compilation*";
int name_size = sizeof(name)-1; int32_t name_size = sizeof(name)-1;
unsigned int access = AccessOpen; uint32_t access = AccessOpen;
View_Summary view = app->get_active_view(app, access); View_Summary view = app->get_active_view(app, access);
Buffer_Summary buffer = app->get_buffer_by_name(app, name, name_size, access); Buffer_Summary buffer = app->get_buffer_by_name(app, name, name_size, access);
@ -54,7 +54,7 @@ CUSTOM_COMMAND_SIG(switch_to_compilation){
} }
CUSTOM_COMMAND_SIG(rewrite_as_single_caps){ CUSTOM_COMMAND_SIG(rewrite_as_single_caps){
unsigned int access = AccessOpen; uint32_t access = AccessOpen;
View_Summary view = app->get_active_view(app, access); View_Summary view = app->get_active_view(app, access);
Full_Cursor cursor = view.cursor; Full_Cursor cursor = view.cursor;
@ -77,8 +77,8 @@ CUSTOM_COMMAND_SIG(rewrite_as_single_caps){
Buffer_Summary buffer = app->get_buffer(app, view.buffer_id, access); Buffer_Summary buffer = app->get_buffer(app, view.buffer_id, access);
app->buffer_read_range(app, &buffer, range.min, range.max, string.str); app->buffer_read_range(app, &buffer, range.min, range.max, string.str);
int is_first = true; int32_t is_first = true;
for (int i = 0; i < string.size; ++i){ for (int32_t i = 0; i < string.size; ++i){
if (char_is_alpha_true(string.str[i])){ if (char_is_alpha_true(string.str[i])){
if (is_first){ if (is_first){
is_first = false; is_first = false;
@ -100,13 +100,13 @@ CUSTOM_COMMAND_SIG(rewrite_as_single_caps){
} }
CUSTOM_COMMAND_SIG(open_my_files){ CUSTOM_COMMAND_SIG(open_my_files){
unsigned int access = AccessAll; uint32_t access = AccessAll;
View_Summary view = app->get_active_view(app, access); View_Summary view = app->get_active_view(app, access);
view_open_file(app, &view, literal("w:/4ed/data/test/basic.cpp"), false); view_open_file(app, &view, literal("w:/4ed/data/test/basic.cpp"), false);
} }
CUSTOM_COMMAND_SIG(build_at_launch_location){ CUSTOM_COMMAND_SIG(build_at_launch_location){
unsigned int access = AccessAll; uint32_t access = AccessAll;
View_Summary view = app->get_active_view(app, access); View_Summary view = app->get_active_view(app, access);
app->exec_system_command(app, &view, app->exec_system_command(app, &view,
buffer_identifier(literal("*compilation*")), buffer_identifier(literal("*compilation*")),
@ -171,12 +171,12 @@ OPEN_FILE_HOOK_SIG(my_file_settings){
// NOTE(allen|a4.0.8): The app->get_parameter_buffer was eliminated // NOTE(allen|a4.0.8): The app->get_parameter_buffer was eliminated
// and instead the buffer is passed as an explicit parameter through // and instead the buffer is passed as an explicit parameter through
// the function call. That is where buffer_id comes from here. // the function call. That is where buffer_id comes from here.
unsigned int access = AccessProtected|AccessHidden; uint32_t access = AccessProtected|AccessHidden;
Buffer_Summary buffer = app->get_buffer(app, buffer_id, access); Buffer_Summary buffer = app->get_buffer(app, buffer_id, access);
assert(buffer.exists); assert(buffer.exists);
int treat_as_code = 0; int32_t treat_as_code = 0;
int wrap_lines = 1; int32_t wrap_lines = 1;
if (buffer.file_name && buffer.size < (16 << 20)){ if (buffer.file_name && buffer.size < (16 << 20)){
String ext = file_extension(make_string(buffer.file_name, buffer.file_name_len)); String ext = file_extension(make_string(buffer.file_name, buffer.file_name_len));
@ -195,7 +195,8 @@ OPEN_FILE_HOOK_SIG(my_file_settings){
app->buffer_set_setting(app, &buffer, BufferSetting_Lex, treat_as_code); app->buffer_set_setting(app, &buffer, BufferSetting_Lex, treat_as_code);
app->buffer_set_setting(app, &buffer, BufferSetting_WrapLine, wrap_lines); app->buffer_set_setting(app, &buffer, BufferSetting_WrapLine, wrap_lines);
app->buffer_set_setting(app, &buffer, BufferSetting_MapID, (treat_as_code)?((int)my_code_map):((int)mapid_file)); app->buffer_set_setting(app, &buffer, BufferSetting_MapID,
(treat_as_code)?((int32_t)my_code_map):((int32_t)mapid_file));
// no meaning for return // no meaning for return
return(0); return(0);

View File

@ -92,7 +92,7 @@ CUSTOM_COMMAND_SIG(change_active_panel_build){
View_Summary build_view = get_first_view_with_buffer(app, buffer.buffer_id); View_Summary build_view = get_first_view_with_buffer(app, buffer.buffer_id);
View_Summary view = app->get_active_view(app, AccessAll); View_Summary view = app->get_active_view(app, AccessAll);
int prev_view_id = view.view_id; int32_t prev_view_id = view.view_id;
exec_command(app, change_active_panel_regular); exec_command(app, change_active_panel_regular);
view = app->get_active_view(app, AccessAll); view = app->get_active_view(app, AccessAll);

File diff suppressed because it is too large Load Diff

View File

@ -24,10 +24,10 @@ typedef struct GUI GUI;
// down a little more? I think maybe we do. // down a little more? I think maybe we do.
#define GUI_GET_SCROLL_VARS_SIG(n) void n(GUI *gui, GUI_id scroll_id, GUI_Scroll_Vars *vars, i32_Rect *region) #define GUI_GET_SCROLL_VARS_SIG(n) void n(GUI *gui, GUI_id scroll_id, GUI_Scroll_Vars *vars, i32_Rect *region)
#define GUI_BEGIN_SCROLLABLE_SIG(n) int n(GUI *gui, GUI_id scroll_id, GUI_Scroll_Vars vars, float delta, int show_scrollbar) #define GUI_BEGIN_SCROLLABLE_SIG(n) int32_t n(GUI *gui, GUI_id scroll_id, GUI_Scroll_Vars vars, float delta, int32_t show_scrollbar)
#define GUI_END_SCROLLABLE_SIG(n) void n(GUI *gui) #define GUI_END_SCROLLABLE_SIG(n) void n(GUI *gui)
#define GUI_FILE_SIG(n) void n(GUI *gui, int buffer_id) #define GUI_FILE_SIG(n) void n(GUI *gui, int32_t buffer_id)
typedef GUI_BEGIN_SIG(GUI_Begin_Function); typedef GUI_BEGIN_SIG(GUI_Begin_Function);
typedef GUI_END_SIG(GUI_End_Function); typedef GUI_END_SIG(GUI_End_Function);

View File

@ -8,8 +8,8 @@
struct Bind_Helper{ struct Bind_Helper{
Binding_Unit *cursor, *start, *end; Binding_Unit *cursor, *start, *end;
Binding_Unit *header, *group; Binding_Unit *header, *group;
int write_total; int32_t write_total;
int error; int32_t error;
}; };
#define BH_ERR_NONE 0 #define BH_ERR_NONE 0
@ -17,13 +17,6 @@ struct Bind_Helper{
#define BH_ERR_MISSING_BEGIN 2 #define BH_ERR_MISSING_BEGIN 2
#define BH_ERR_OUT_OF_MEMORY 3 #define BH_ERR_OUT_OF_MEMORY 3
inline void
copy(char *dest, const char *src, int len){
for (int i = 0; i < len; ++i){
*dest++ = *src++;
}
}
inline Binding_Unit* inline Binding_Unit*
write_unit(Bind_Helper *helper, Binding_Unit unit){ write_unit(Bind_Helper *helper, Binding_Unit unit){
Binding_Unit *p = 0; Binding_Unit *p = 0;
@ -35,28 +28,8 @@ write_unit(Bind_Helper *helper, Binding_Unit unit){
return p; return p;
} }
inline char*
write_inline_string(Bind_Helper *helper, char *value, int len){
char *dest = 0;
helper->write_total += len;
if (helper->error == 0){
dest = (char*)helper->cursor;
int cursor_advance = len + sizeof(*helper->cursor) - 1;
cursor_advance /= sizeof(*helper->cursor);
cursor_advance *= sizeof(*helper->cursor);
helper->cursor += cursor_advance;
if (helper->cursor < helper->end){
copy(dest, value, len);
}
else{
helper->error = BH_ERR_OUT_OF_MEMORY;
}
}
return dest;
}
inline Bind_Helper inline Bind_Helper
begin_bind_helper(void *data, int size){ begin_bind_helper(void *data, int32_t size){
Bind_Helper result; Bind_Helper result;
result.header = 0; result.header = 0;
@ -78,7 +51,7 @@ begin_bind_helper(void *data, int size){
} }
inline void inline void
begin_map_(Bind_Helper *helper, int mapid, int replace){ begin_map_(Bind_Helper *helper, int32_t mapid, int32_t replace){
if (helper->group != 0 && helper->error == 0) helper->error = BH_ERR_MISSING_END; if (helper->group != 0 && helper->error == 0) helper->error = BH_ERR_MISSING_END;
if (!helper->error && mapid < mapid_global) ++helper->header->header.user_map_count; if (!helper->error && mapid < mapid_global) ++helper->header->header.user_map_count;
@ -91,12 +64,12 @@ begin_map_(Bind_Helper *helper, int mapid, int replace){
} }
inline void inline void
begin_map(Bind_Helper *helper, int mapid){ begin_map(Bind_Helper *helper, int32_t mapid){
begin_map_(helper, mapid, 0); begin_map_(helper, mapid, 0);
} }
inline void inline void
restart_map(Bind_Helper *helper, int mapid){ restart_map(Bind_Helper *helper, int32_t mapid){
begin_map_(helper, mapid, 1); begin_map_(helper, mapid, 1);
} }
@ -107,7 +80,7 @@ end_map(Bind_Helper *helper){
} }
inline void inline void
bind(Bind_Helper *helper, short code, unsigned char modifiers, int cmdid){ bind(Bind_Helper *helper, short code, unsigned char modifiers, int32_t cmdid){
if (helper->group == 0 && helper->error == 0) helper->error = BH_ERR_MISSING_BEGIN; if (helper->group == 0 && helper->error == 0) helper->error = BH_ERR_MISSING_BEGIN;
if (!helper->error) ++helper->group->map_begin.bind_count; if (!helper->error) ++helper->group->map_begin.bind_count;
@ -135,7 +108,7 @@ bind(Bind_Helper *helper, short code, unsigned char modifiers, Custom_Command_Fu
} }
inline void inline void
bind_vanilla_keys(Bind_Helper *helper, int cmdid){ bind_vanilla_keys(Bind_Helper *helper, int32_t cmdid){
bind(helper, 0, 0, cmdid); bind(helper, 0, 0, cmdid);
} }
@ -145,7 +118,7 @@ bind_vanilla_keys(Bind_Helper *helper, Custom_Command_Function *func){
} }
inline void inline void
bind_vanilla_keys(Bind_Helper *helper, unsigned char modifiers, int cmdid){ bind_vanilla_keys(Bind_Helper *helper, unsigned char modifiers, int32_t cmdid){
bind(helper, 0, modifiers, cmdid); bind(helper, 0, modifiers, cmdid);
} }
@ -155,7 +128,7 @@ bind_vanilla_keys(Bind_Helper *helper, unsigned char modifiers, Custom_Command_F
} }
inline void inline void
inherit_map(Bind_Helper *helper, int mapid){ inherit_map(Bind_Helper *helper, int32_t mapid){
if (helper->group == 0 && helper->error == 0) helper->error = BH_ERR_MISSING_BEGIN; if (helper->group == 0 && helper->error == 0) helper->error = BH_ERR_MISSING_BEGIN;
if (!helper->error && mapid < mapid_global) ++helper->header->header.user_map_count; if (!helper->error && mapid < mapid_global) ++helper->header->header.user_map_count;
@ -167,7 +140,7 @@ inherit_map(Bind_Helper *helper, int mapid){
} }
inline void inline void
set_hook(Bind_Helper *helper, int hook_id, Hook_Function *func){ set_hook(Bind_Helper *helper, int32_t hook_id, Hook_Function *func){
Binding_Unit unit; Binding_Unit unit;
unit.type = unit_hook; unit.type = unit_hook;
unit.hook.hook_id = hook_id; unit.hook.hook_id = hook_id;
@ -226,11 +199,11 @@ set_scroll_rule(Bind_Helper *helper, Scroll_Rule_Function *func){
write_unit(helper, unit); write_unit(helper, unit);
} }
inline int inline int32_t
end_bind_helper(Bind_Helper *helper){ end_bind_helper(Bind_Helper *helper){
int result; int32_t result;
if (helper->header){ if (helper->header){
helper->header->header.total_size = (int)(helper->cursor - helper->start); helper->header->header.total_size = (int32_t)(helper->cursor - helper->start);
helper->header->header.error = helper->error; helper->header->header.error = helper->error;
} }
result = helper->write_total; result = helper->write_total;
@ -245,8 +218,8 @@ get_range(View_Summary *view){
} }
struct Buffer_Rect{ struct Buffer_Rect{
int char0,line0; int32_t char0,line0;
int char1,line1; int32_t char1,line1;
}; };
#ifndef Swap #ifndef Swap
@ -264,10 +237,10 @@ get_rect(View_Summary *view){
rect.line1 = view->cursor.line; rect.line1 = view->cursor.line;
if (rect.line0 > rect.line1){ if (rect.line0 > rect.line1){
Swap(int, rect.line0, rect.line1); Swap(int32_t, rect.line0, rect.line1);
} }
if (rect.char0 > rect.char1){ if (rect.char0 > rect.char1){
Swap(int, rect.char0, rect.char1); Swap(int32_t, rect.char0, rect.char1);
} }
return(rect); return(rect);
@ -294,7 +267,7 @@ exec_command(Application_Links *app, Generic_Command cmd){
} }
inline void inline void
active_view_to_line(Application_Links *app, unsigned int access, int line_number){ active_view_to_line(Application_Links *app, uint32_t access, int32_t line_number){
View_Summary view; View_Summary view;
view = app->get_active_view(app, access); view = app->get_active_view(app, access);
@ -305,12 +278,12 @@ active_view_to_line(Application_Links *app, unsigned int access, int line_number
} }
inline View_Summary inline View_Summary
get_first_view_with_buffer(Application_Links *app, int buffer_id){ get_first_view_with_buffer(Application_Links *app, int32_t buffer_id){
View_Summary result = {}; View_Summary result = {};
View_Summary test = {}; View_Summary test = {};
if (buffer_id != 0){ if (buffer_id != 0){
unsigned int access = AccessAll; uint32_t access = AccessAll;
for(test = app->get_view_first(app, access); for(test = app->get_view_first(app, access);
test.exists; test.exists;
app->get_view_next(app, &test, access)){ app->get_view_next(app, &test, access)){
@ -327,18 +300,18 @@ get_first_view_with_buffer(Application_Links *app, int buffer_id){
return(result); return(result);
} }
inline int inline int32_t
key_is_unmodified(Key_Event_Data *key){ key_is_unmodified(Key_Event_Data *key){
char *mods = key->modifiers; char *mods = key->modifiers;
int unmodified = !mods[MDFR_CONTROL_INDEX] && !mods[MDFR_ALT_INDEX]; int32_t unmodified = !mods[MDFR_CONTROL_INDEX] && !mods[MDFR_ALT_INDEX];
return(unmodified); return(unmodified);
} }
static int static int32_t
query_user_general(Application_Links *app, Query_Bar *bar, int force_number){ query_user_general(Application_Links *app, Query_Bar *bar, int32_t force_number){
User_Input in; User_Input in;
int success = 1; int32_t success = 1;
int good_character = 0; int32_t good_character = 0;
// NOTE(allen|a3.4.4): It will not cause an *error* if we continue on after failing to. // NOTE(allen|a3.4.4): It will not cause an *error* if we continue on after failing to.
// start a query bar, but it will be unusual behavior from the point of view of the // start a query bar, but it will be unusual behavior from the point of view of the
@ -398,29 +371,27 @@ query_user_general(Application_Links *app, Query_Bar *bar, int force_number){
return(success); return(success);
} }
inline int inline int32_t
query_user_string(Application_Links *app, Query_Bar *bar){ query_user_string(Application_Links *app, Query_Bar *bar){
int success = query_user_general(app, bar, 0); int32_t success = query_user_general(app, bar, 0);
return(success); return(success);
} }
inline int inline int32_t
query_user_number(Application_Links *app, Query_Bar *bar){ query_user_number(Application_Links *app, Query_Bar *bar){
int success = query_user_general(app, bar, 1); int32_t success = query_user_general(app, bar, 1);
return(success); return(success);
} }
inline String empty_string() {String Result = {}; return(Result);}
inline Buffer_Summary inline Buffer_Summary
get_active_buffer(Application_Links *app, unsigned int access){ get_active_buffer(Application_Links *app, uint32_t access){
View_Summary view = app->get_active_view(app, access); View_Summary view = app->get_active_view(app, access);
Buffer_Summary buffer = app->get_buffer(app, view.buffer_id, access); Buffer_Summary buffer = app->get_buffer(app, view.buffer_id, access);
return(buffer); return(buffer);
} }
inline char inline char
buffer_get_char(Application_Links *app, Buffer_Summary *buffer, int pos){ buffer_get_char(Application_Links *app, Buffer_Summary *buffer, int32_t pos){
char result = ' '; char result = ' ';
*buffer = app->get_buffer(app, buffer->buffer_id, AccessAll); *buffer = app->get_buffer(app, buffer->buffer_id, AccessAll);
if (pos >= 0 && pos < buffer->size){ if (pos >= 0 && pos < buffer->size){
@ -430,7 +401,7 @@ buffer_get_char(Application_Links *app, Buffer_Summary *buffer, int pos){
} }
inline Buffer_Identifier inline Buffer_Identifier
buffer_identifier(char *str, int len){ buffer_identifier(char *str, int32_t len){
Buffer_Identifier identifier; Buffer_Identifier identifier;
identifier.name = str; identifier.name = str;
identifier.name_len = len; identifier.name_len = len;
@ -439,7 +410,7 @@ buffer_identifier(char *str, int len){
} }
inline Buffer_Identifier inline Buffer_Identifier
buffer_identifier(int id){ buffer_identifier(int32_t id){
Buffer_Identifier identifier; Buffer_Identifier identifier;
identifier.name = 0; identifier.name = 0;
identifier.name_len = 0; identifier.name_len = 0;
@ -447,10 +418,10 @@ buffer_identifier(int id){
return(identifier); return(identifier);
} }
static int static int32_t
view_open_file(Application_Links *app, View_Summary *view, view_open_file(Application_Links *app, View_Summary *view,
char *filename, int filename_len, int do_in_background){ char *filename, int32_t filename_len, int32_t do_in_background){
int result = false; int32_t result = false;
Buffer_Summary buffer = app->get_buffer_by_name(app, filename, filename_len, AccessProtected|AccessHidden); Buffer_Summary buffer = app->get_buffer_by_name(app, filename, filename_len, AccessProtected|AccessHidden);
if (buffer.exists){ if (buffer.exists){
if (!do_in_background){ if (!do_in_background){
@ -474,17 +445,17 @@ view_open_file(Application_Links *app, View_Summary *view,
return(result); return(result);
} }
static int static int32_t
read_line(Application_Links *app, read_line(Application_Links *app,
Partition *part, Partition *part,
Buffer_Summary *buffer, Buffer_Summary *buffer,
int line, int32_t line,
String *str){ String *str){
Partial_Cursor begin = {0}; Partial_Cursor begin = {0};
Partial_Cursor end = {0}; Partial_Cursor end = {0};
int success = false; int32_t success = false;
if (app->buffer_compute_cursor(app, buffer, if (app->buffer_compute_cursor(app, buffer,
seek_line_char(line, 1), &begin)){ seek_line_char(line, 1), &begin)){
@ -492,7 +463,7 @@ read_line(Application_Links *app,
seek_line_char(line, 65536), &end)){ seek_line_char(line, 65536), &end)){
if (begin.line == line){ if (begin.line == line){
if (0 <= begin.pos && begin.pos <= end.pos && end.pos <= buffer->size){ if (0 <= begin.pos && begin.pos <= end.pos && end.pos <= buffer->size){
int size = (end.pos - begin.pos); int32_t size = (end.pos - begin.pos);
*str = make_string(push_array(part, char, size+1), size+1); *str = make_string(push_array(part, char, size+1), size+1);
if (str->str){ if (str->str){
success = true; success = true;

View File

@ -4,8 +4,8 @@
struct Jump_Location{ struct Jump_Location{
String file; String file;
int line; int32_t line;
int column; int32_t column;
}; };
static void static void
@ -14,9 +14,9 @@ jump_to_location(Application_Links *app, View_Summary *view, Jump_Location *l){
app->view_set_cursor(app, view, seek_line_char(l->line, l->column), true); app->view_set_cursor(app, view, seek_line_char(l->line, l->column), true);
} }
static int static int32_t
ms_style_verify(String line, int paren_pos){ ms_style_verify(String line, int32_t paren_pos){
int result = false; int32_t result = false;
String line_part = substr_tail(line, paren_pos); String line_part = substr_tail(line, paren_pos);
if (match_part_sc(line_part, ") : ")){ if (match_part_sc(line_part, ") : ")){
@ -29,15 +29,15 @@ ms_style_verify(String line, int paren_pos){
return(result); return(result);
} }
static int static int32_t
parse_error(String line, Jump_Location *location, parse_error(String line, Jump_Location *location,
int skip_sub_errors, int *colon_char){ int32_t skip_sub_errors, int32_t *colon_char){
int result = false; int32_t result = false;
String original_line = line; String original_line = line;
line = skip_chop_whitespace(line); line = skip_chop_whitespace(line);
int colon_pos = find_s_char(line, 0, ')'); int32_t colon_pos = find_s_char(line, 0, ')');
if (ms_style_verify(line, colon_pos)){ if (ms_style_verify(line, colon_pos)){
colon_pos = find_s_char(line, colon_pos, ':'); colon_pos = find_s_char(line, colon_pos, ':');
if (colon_pos < line.size){ if (colon_pos < line.size){
@ -46,12 +46,12 @@ parse_error(String line, Jump_Location *location,
if (!(skip_sub_errors && original_line.str[0] == ' ')){ if (!(skip_sub_errors && original_line.str[0] == ' ')){
location_str = skip_chop_whitespace(location_str); location_str = skip_chop_whitespace(location_str);
int paren_pos = find_s_char(location_str, 0, '('); int32_t paren_pos = find_s_char(location_str, 0, '(');
if (paren_pos < location_str.size){ if (paren_pos < location_str.size){
String file = substr(location_str, 0, paren_pos); String file = substr(location_str, 0, paren_pos);
file = skip_chop_whitespace(file); file = skip_chop_whitespace(file);
int close_pos = find_s_char(location_str, 0, ')') + 1; int32_t close_pos = find_s_char(location_str, 0, ')') + 1;
if (close_pos == location_str.size && file.size > 0){ if (close_pos == location_str.size && file.size > 0){
String line_number = substr(location_str, String line_number = substr(location_str,
paren_pos+1, paren_pos+1,
@ -61,9 +61,9 @@ parse_error(String line, Jump_Location *location,
if (line_number.size > 0){ if (line_number.size > 0){
location->file = file; location->file = file;
int comma_pos = find_s_char(line_number, 0, ','); int32_t comma_pos = find_s_char(line_number, 0, ',');
if (comma_pos < line_number.size){ if (comma_pos < line_number.size){
int start = comma_pos+1; int32_t start = comma_pos+1;
String column_number = substr(line_number, start, line_number.size-start); String column_number = substr(line_number, start, line_number.size-start);
line_number = substr(line_number, 0, comma_pos); line_number = substr(line_number, 0, comma_pos);
@ -85,15 +85,15 @@ parse_error(String line, Jump_Location *location,
} }
else{ else{
int colon_pos1 = find_s_char(line, 0, ':'); int32_t colon_pos1 = find_s_char(line, 0, ':');
if (line.size > colon_pos1+1){ if (line.size > colon_pos1+1){
if (char_is_slash(line.str[colon_pos1+1])){ if (char_is_slash(line.str[colon_pos1+1])){
colon_pos1 = find_s_char(line, colon_pos1+1, ':'); colon_pos1 = find_s_char(line, colon_pos1+1, ':');
} }
} }
int colon_pos2 = find_s_char(line, colon_pos1+1, ':'); int32_t colon_pos2 = find_s_char(line, colon_pos1+1, ':');
int colon_pos3 = find_s_char(line, colon_pos2+1, ':'); int32_t colon_pos3 = find_s_char(line, colon_pos2+1, ':');
if (colon_pos3 < line.size){ if (colon_pos3 < line.size){
String filename = substr(line, 0, colon_pos1); String filename = substr(line, 0, colon_pos1);
@ -140,18 +140,18 @@ parse_error(String line, Jump_Location *location,
return(result); return(result);
} }
static int static int32_t
goto_error(Application_Links *app, goto_error(Application_Links *app,
Partition *part, Partition *part,
View_Summary *view, int line, View_Summary *view, int32_t line,
Jump_Location *location, Jump_Location *location,
int skip_sub_errors){ int32_t skip_sub_errors){
int result = false; int32_t result = false;
String line_str = {0}; String line_str = {0};
Buffer_Summary buffer = app->get_buffer(app, view->buffer_id, AccessAll); Buffer_Summary buffer = app->get_buffer(app, view->buffer_id, AccessAll);
if (read_line(app, part, &buffer, line, &line_str)){ if (read_line(app, part, &buffer, line, &line_str)){
int colon_char = 0; int32_t colon_char = 0;
if (parse_error(line_str, location, skip_sub_errors, &colon_char)){ if (parse_error(line_str, location, skip_sub_errors, &colon_char)){
result = true; result = true;
} }
@ -183,25 +183,25 @@ CUSTOM_COMMAND_SIG(goto_jump_at_cursor){
// //
struct Prev_Jump{ struct Prev_Jump{
int buffer_id; int32_t buffer_id;
int line; int32_t line;
}; };
static Prev_Jump null_location = {0}; static Prev_Jump null_location = {0};
static Prev_Jump prev_location = {0}; static Prev_Jump prev_location = {0};
// TODO(allen): GIVE THESE THINGS NAMES I CAN FUCKING UNDERSTAND // TODO(allen): GIVE THESE THINGS NAMES I CAN FUCKING UNDERSTAND
static int static int32_t
next_error(Application_Links *app, next_error(Application_Links *app,
Partition *part, Partition *part,
View_Summary *comp_out, int *start_line, View_Summary *comp_out, int32_t *start_line,
Jump_Location *location, Jump_Location *location,
int skip_sub_errors, int32_t skip_sub_errors,
int direction, int32_t direction,
int *colon_char){ int32_t *colon_char){
int result = false; int32_t result = false;
int line = *start_line + direction; int32_t line = *start_line + direction;
String line_str = {0}; String line_str = {0};
Buffer_Summary buffer = app->get_buffer(app, comp_out->buffer_id, AccessAll); Buffer_Summary buffer = app->get_buffer(app, comp_out->buffer_id, AccessAll);
for (;;){ for (;;){
@ -240,18 +240,18 @@ jump_location_store(Application_Links *app, Jump_Location loc){
return(result); return(result);
} }
static int static int32_t
seek_error_internal(Application_Links *app, Partition *part, seek_error_internal(Application_Links *app, Partition *part,
int skip_sub_errors, int dir, Jump_Location *loc){ int32_t skip_sub_errors, int32_t dir, Jump_Location *loc){
int result = false; int32_t result = false;
Jump_Location location = {0}; Jump_Location location = {0};
Buffer_Summary buffer = app->get_buffer_by_name(app, literal("*compilation*"), AccessAll); Buffer_Summary buffer = app->get_buffer_by_name(app, literal("*compilation*"), AccessAll);
if (buffer.exists){ if (buffer.exists){
View_Summary view = get_first_view_with_buffer(app, buffer.buffer_id); View_Summary view = get_first_view_with_buffer(app, buffer.buffer_id);
int line = view.cursor.line; int32_t line = view.cursor.line;
int colon_char = 0; int32_t colon_char = 0;
if (next_error(app, part, &view, &line, &location, if (next_error(app, part, &view, &line, &location,
skip_sub_errors, dir, &colon_char)){ skip_sub_errors, dir, &colon_char)){
@ -274,9 +274,9 @@ seek_error_internal(Application_Links *app, Partition *part,
} }
static int static int32_t
skip_this_jump(Prev_Jump prev, Prev_Jump jump){ skip_this_jump(Prev_Jump prev, Prev_Jump jump){
int result = false; int32_t result = false;
if (prev.buffer_id != 0 && prev.buffer_id == jump.buffer_id && if (prev.buffer_id != 0 && prev.buffer_id == jump.buffer_id &&
prev.line == jump.line){ prev.line == jump.line){
result = true; result = true;
@ -284,10 +284,10 @@ skip_this_jump(Prev_Jump prev, Prev_Jump jump){
return(result); return(result);
} }
static int static int32_t
seek_error_skip_repeats(Application_Links *app, Partition *part, seek_error_skip_repeats(Application_Links *app, Partition *part,
int skip_sub_error, int dir){ int32_t skip_sub_error, int32_t dir){
int result = true; int32_t result = true;
Jump_Location location = {0}; Jump_Location location = {0};
Prev_Jump jump = {0}; Prev_Jump jump = {0};
do{ do{
@ -306,10 +306,10 @@ seek_error_skip_repeats(Application_Links *app, Partition *part,
return(result); return(result);
} }
static int static int32_t
seek_error_no_skip(Application_Links *app, Partition *part, seek_error_no_skip(Application_Links *app, Partition *part,
int skip_sub_error, int dir){ int32_t skip_sub_error, int32_t dir){
int result = true; int32_t result = true;
Jump_Location location = {0}; Jump_Location location = {0};
Prev_Jump jump = {0}; Prev_Jump jump = {0};
@ -327,9 +327,9 @@ seek_error_no_skip(Application_Links *app, Partition *part,
return(result); return(result);
} }
static int static int32_t
seek_error(Application_Links *app, Partition *part, seek_error(Application_Links *app, Partition *part,
int skip_sub_error, int skip_same_line, int dir){ int32_t skip_sub_error, int32_t skip_same_line, int32_t dir){
if (skip_same_line){ if (skip_same_line){
seek_error_skip_repeats(app, part, skip_sub_error, dir); seek_error_skip_repeats(app, part, skip_sub_error, dir);
} }

View File

@ -31,7 +31,7 @@ key_f15 = 141,
key_f16 = 142, key_f16 = 142,
}; };
static char* static char*
global_key_name(int key_code, int *size){ global_key_name(int32_t key_code, int32_t *size){
char *result = 0; char *result = 0;
switch(key_code){ switch(key_code){
case key_back: result = "back"; *size = sizeof("back")-1; break; case key_back: result = "back"; *size = sizeof("back")-1; break;

View File

@ -4,16 +4,16 @@
struct Partition{ struct Partition{
char *base; char *base;
int pos, max; int32_t pos, max;
}; };
struct Temp_Memory{ struct Temp_Memory{
void *handle; void *handle;
int pos; int32_t pos;
}; };
inline Partition inline Partition
make_part(void *memory, int size){ make_part(void *memory, int32_t size){
Partition partition; Partition partition;
partition.base = (char*)memory; partition.base = (char*)memory;
partition.pos = 0; partition.pos = 0;
@ -22,7 +22,7 @@ make_part(void *memory, int size){
} }
inline void* inline void*
partition_allocate(Partition *data, int size){ partition_allocate(Partition *data, int32_t size){
void *ret = 0; void *ret = 0;
if (size > 0 && data->pos + size <= data->max){ if (size > 0 && data->pos + size <= data->max){
ret = data->base + data->pos; ret = data->base + data->pos;
@ -32,7 +32,7 @@ partition_allocate(Partition *data, int size){
} }
inline void inline void
partition_align(Partition *data, unsigned int boundary){ partition_align(Partition *data, uint32_t boundary){
--boundary; --boundary;
data->pos = (data->pos + boundary) & (~boundary); data->pos = (data->pos + boundary) & (~boundary);
} }
@ -42,13 +42,13 @@ partition_current(Partition *data){
return data->base + data->pos; return data->base + data->pos;
} }
inline int inline int32_t
partition_remaining(Partition *data){ partition_remaining(Partition *data){
return data->max - data->pos; return data->max - data->pos;
} }
inline Partition inline Partition
partition_sub_part(Partition *data, int size){ partition_sub_part(Partition *data, int32_t size){
Partition result = {}; Partition result = {};
void *d = partition_allocate(data, size); void *d = partition_allocate(data, size);
if (d) result = make_part(d, size); if (d) result = make_part(d, size);

View File

@ -78,36 +78,36 @@ f32XYWH(float x, float y, float w, float h){
return(rect); return(rect);
} }
inline int inline int32_t
rect_equal(i32_Rect r1, i32_Rect r2){ rect_equal(i32_Rect r1, i32_Rect r2){
int result = (r1.x0 == r2.x0 && int32_t result = (r1.x0 == r2.x0 &&
r1.y0 == r2.y0 && r1.y0 == r2.y0 &&
r1.x1 == r2.x1 && r1.x1 == r2.x1 &&
r1.y1 == r2.y1); r1.y1 == r2.y1);
return(result); return(result);
} }
inline int inline int32_t
hit_check(int32_t x, int32_t y, int32_t x0, int32_t y0, int32_t x1, int32_t y1){ hit_check(int32_t x, int32_t y, int32_t x0, int32_t y0, int32_t x1, int32_t y1){
return (x >= x0 && x < x1 && y >= y0 && y < y1); return (x >= x0 && x < x1 && y >= y0 && y < y1);
} }
inline int inline int32_t
hit_check(int32_t x, int32_t y, i32_Rect rect){ hit_check(int32_t x, int32_t y, i32_Rect rect){
return (hit_check(x, y, rect.x0, rect.y0, rect.x1, rect.y1)); return (hit_check(x, y, rect.x0, rect.y0, rect.x1, rect.y1));
} }
inline int inline int32_t
hit_check(int32_t x, int32_t y, float x0, float y0, float x1, float y1){ hit_check(int32_t x, int32_t y, float x0, float y0, float x1, float y1){
return (x >= x0 && x < x1 && y >= y0 && y < y1); return (x >= x0 && x < x1 && y >= y0 && y < y1);
} }
inline int inline int32_t
hit_check(int32_t x, int32_t y, f32_Rect rect){ hit_check(int32_t x, int32_t y, f32_Rect rect){
return (hit_check(x, y, rect.x0, rect.y0, rect.x1, rect.y1)); return (hit_check(x, y, rect.x0, rect.y0, rect.x1, rect.y1));
} }
inline int inline int32_t
positive_area(i32_Rect rect){ positive_area(i32_Rect rect){
return (rect.x0 < rect.x1 && rect.y0 < rect.y1); return (rect.x0 < rect.x1 && rect.y0 < rect.y1);
} }
@ -122,7 +122,7 @@ get_inner_rect(i32_Rect outer, int32_t margin){
return r; return r;
} }
inline int inline int32_t
fits_inside(i32_Rect rect, i32_Rect outer){ fits_inside(i32_Rect rect, i32_Rect outer){
return (rect.x0 >= outer.x0 && rect.x1 <= outer.x1 && return (rect.x0 >= outer.x0 && rect.x1 <= outer.x1 &&
rect.y0 >= outer.y0 && rect.y1 <= outer.y1); rect.y0 >= outer.y0 && rect.y1 <= outer.y1);

View File

@ -17,39 +17,39 @@ enum Search_Range_Flag{
}; };
struct Search_Range{ struct Search_Range{
int type; int32_t type;
unsigned int flags; uint32_t flags;
int buffer; int32_t buffer;
int start; int32_t start;
int size; int32_t size;
int mid_start; int32_t mid_start;
int mid_size; int32_t mid_size;
}; };
struct Search_Set{ struct Search_Set{
Search_Range *ranges; Search_Range *ranges;
int count; int32_t count;
int max; int32_t max;
}; };
struct Search_Iter{ struct Search_Iter{
String word; String word;
int pos; int32_t pos;
int back_pos; int32_t back_pos;
int i; int32_t i;
int range_initialized; int32_t range_initialized;
}; };
struct Search_Match{ struct Search_Match{
Buffer_Summary buffer; Buffer_Summary buffer;
int start; int32_t start;
int end; int32_t end;
int found_match; int32_t found_match;
}; };
static void static void
search_iter_init(General_Memory *general, Search_Iter *iter, int size){ search_iter_init(General_Memory *general, Search_Iter *iter, int32_t size){
int str_max = size*2; int32_t str_max = size*2;
if (iter->word.str == 0){ if (iter->word.str == 0){
iter->word.str = (char*)general_memory_allocate(general, str_max); iter->word.str = (char*)general_memory_allocate(general, str_max);
iter->word.memory_size = str_max; iter->word.memory_size = str_max;
@ -63,8 +63,8 @@ search_iter_init(General_Memory *general, Search_Iter *iter, int size){
} }
static void static void
search_set_init(General_Memory *general, Search_Set *set, int range_count){ search_set_init(General_Memory *general, Search_Set *set, int32_t range_count){
int max = range_count*2; int32_t max = range_count*2;
if (set->ranges == 0){ if (set->ranges == 0){
set->ranges = (Search_Range*)general_memory_allocate(general, sizeof(Search_Range)*max); set->ranges = (Search_Range*)general_memory_allocate(general, sizeof(Search_Range)*max);
@ -80,9 +80,9 @@ search_set_init(General_Memory *general, Search_Set *set, int range_count){
} }
static void static void
search_hits_table_alloc(General_Memory *general, Table *hits, int table_size){ search_hits_table_alloc(General_Memory *general, Table *hits, int32_t table_size){
void *mem = 0; void *mem = 0;
int mem_size = table_required_mem_size(table_size, sizeof(Offset_String)); int32_t mem_size = table_required_mem_size(table_size, sizeof(Offset_String));
if (hits->hash_array == 0){ if (hits->hash_array == 0){
mem = general_memory_allocate(general, mem_size); mem = general_memory_allocate(general, mem_size);
} }
@ -93,12 +93,12 @@ search_hits_table_alloc(General_Memory *general, Table *hits, int table_size){
} }
static void static void
search_hits_init(General_Memory *general, Table *hits, String_Space *str, int table_size, int str_size){ search_hits_init(General_Memory *general, Table *hits, String_Space *str, int32_t table_size, int32_t str_size){
if (hits->hash_array == 0){ if (hits->hash_array == 0){
search_hits_table_alloc(general, hits, table_size); search_hits_table_alloc(general, hits, table_size);
} }
else{ else{
int mem_size = table_required_mem_size(table_size, sizeof(Offset_String)); int32_t mem_size = table_required_mem_size(table_size, sizeof(Offset_String));
void *mem = general_memory_reallocate_nocopy(general, hits->hash_array, mem_size); void *mem = general_memory_reallocate_nocopy(general, hits->hash_array, mem_size);
table_init_memory(hits, mem, table_size, sizeof(Offset_String)); table_init_memory(hits, mem, table_size, sizeof(Offset_String));
} }
@ -116,15 +116,15 @@ search_hits_init(General_Memory *general, Table *hits, String_Space *str, int ta
table_clear(hits); table_clear(hits);
} }
static int static int32_t
search_hit_add(General_Memory *general, Table *hits, String_Space *space, char *str, int len){ search_hit_add(General_Memory *general, Table *hits, String_Space *space, char *str, int32_t len){
int result = false; int32_t result = false;
assert(len != 0); assert(len != 0);
Offset_String ostring = strspace_append(space, str, len); Offset_String ostring = strspace_append(space, str, len);
if (ostring.size == 0){ if (ostring.size == 0){
int new_size = space->max*2; int32_t new_size = space->max*2;
if (new_size < space->max + len){ if (new_size < space->max + len){
new_size = space->max + len; new_size = space->max + len;
} }
@ -155,12 +155,12 @@ search_hit_add(General_Memory *general, Table *hits, String_Space *space, char *
return(result); return(result);
} }
static int static int32_t
buffer_seek_alpha_numeric_end(Application_Links *app, Buffer_Summary *buffer, int pos){ buffer_seek_alpha_numeric_end(Application_Links *app, Buffer_Summary *buffer, int32_t pos){
char space[1024]; char space[1024];
Stream_Chunk chunk = {0}; Stream_Chunk chunk = {0};
if (init_stream_chunk(&chunk, app, buffer, pos, space, sizeof(space))){ if (init_stream_chunk(&chunk, app, buffer, pos, space, sizeof(space))){
int still_looping = true; int32_t still_looping = true;
do{ do{
for (; pos < chunk.end; ++pos){ for (; pos < chunk.end; ++pos){
char at_pos = chunk.data[pos]; char at_pos = chunk.data[pos];
@ -187,14 +187,14 @@ enum{
FindResult_PastEnd FindResult_PastEnd
}; };
static int static int32_t
match_check(Application_Links *app, Search_Range *range, int *pos, Search_Match *result_ptr, String word){ match_check(Application_Links *app, Search_Range *range, int32_t *pos, Search_Match *result_ptr, String word){
int found_match = FindResult_None; int32_t found_match = FindResult_None;
Search_Match result = *result_ptr; Search_Match result = *result_ptr;
int end_pos = range->start + range->size; int32_t end_pos = range->start + range->size;
int type = (range->flags & SearchFlag_MatchMask); int32_t type = (range->flags & SearchFlag_MatchMask);
switch (type){ switch (type){
case SearchFlag_MatchWholeWord: case SearchFlag_MatchWholeWord:
@ -263,24 +263,24 @@ match_check(Application_Links *app, Search_Range *range, int *pos, Search_Match
return(found_match); return(found_match);
} }
static int static int32_t
search_front_to_back_step(Application_Links *app, search_front_to_back_step(Application_Links *app,
Search_Range *range, Search_Range *range,
String word, String word,
int *pos, int32_t *pos,
Search_Match *result_ptr){ Search_Match *result_ptr){
int found_match = FindResult_None; int32_t found_match = FindResult_None;
Search_Match result = *result_ptr; Search_Match result = *result_ptr;
int end_pos = range->start + range->size; int32_t end_pos = range->start + range->size;
if (*pos + word.size < end_pos){ if (*pos + word.size < end_pos){
int start_pos = *pos; int32_t start_pos = *pos;
if (start_pos < range->start){ if (start_pos < range->start){
start_pos = range->start; start_pos = range->start;
} }
int case_insensitive = (range->flags & SearchFlag_CaseInsensitive); int32_t case_insensitive = (range->flags & SearchFlag_CaseInsensitive);
result.buffer = app->get_buffer(app, range->buffer, AccessAll); result.buffer = app->get_buffer(app, range->buffer, AccessAll);
if (case_insensitive){ if (case_insensitive){
@ -318,31 +318,31 @@ search_front_to_back_step(Application_Links *app,
return(found_match); return(found_match);
} }
static int static int32_t
search_front_to_back(Application_Links *app, search_front_to_back(Application_Links *app,
Search_Range *range, Search_Range *range,
String word, String word,
int *pos, int32_t *pos,
Search_Match *result_ptr){ Search_Match *result_ptr){
int found_match = FindResult_None; int32_t found_match = FindResult_None;
for (;found_match == FindResult_None;){ for (;found_match == FindResult_None;){
found_match = search_front_to_back_step(app, range, word, pos, result_ptr); found_match = search_front_to_back_step(app, range, word, pos, result_ptr);
} }
return(found_match); return(found_match);
} }
static int static int32_t
search_back_to_front_step(Application_Links *app, search_back_to_front_step(Application_Links *app,
Search_Range *range, Search_Range *range,
String word, String word,
int *pos, int32_t *pos,
Search_Match *result_ptr){ Search_Match *result_ptr){
int found_match = FindResult_None; int32_t found_match = FindResult_None;
Search_Match result = *result_ptr; Search_Match result = *result_ptr;
if (*pos > range->start){ if (*pos > range->start){
int start_pos = *pos; int32_t start_pos = *pos;
result.buffer = app->get_buffer(app, range->buffer, AccessAll); result.buffer = app->get_buffer(app, range->buffer, AccessAll);
buffer_seek_string_backward(app, &result.buffer, buffer_seek_string_backward(app, &result.buffer,
@ -371,13 +371,13 @@ search_back_to_front_step(Application_Links *app,
return(found_match); return(found_match);
} }
static int static int32_t
search_back_to_front(Application_Links *app, search_back_to_front(Application_Links *app,
Search_Range *range, Search_Range *range,
String word, String word,
int *pos, int32_t *pos,
Search_Match *result_ptr){ Search_Match *result_ptr){
int found_match = FindResult_None; int32_t found_match = FindResult_None;
for (;found_match == FindResult_None;){ for (;found_match == FindResult_None;){
found_match = search_back_to_front_step(app, range, word, pos, result_ptr); found_match = search_back_to_front_step(app, range, word, pos, result_ptr);
} }
@ -389,11 +389,11 @@ search_next_match(Application_Links *app, Search_Set *set, Search_Iter *it_ptr){
Search_Match result = {0}; Search_Match result = {0};
Search_Iter iter = *it_ptr; Search_Iter iter = *it_ptr;
int count = set->count; int32_t count = set->count;
for (; iter.i < count;){ for (; iter.i < count;){
Search_Range *range = set->ranges + iter.i; Search_Range *range = set->ranges + iter.i;
int find_result = FindResult_None; int32_t find_result = FindResult_None;
if (!iter.range_initialized){ if (!iter.range_initialized){
iter.range_initialized = true; iter.range_initialized = true;
@ -435,8 +435,8 @@ search_next_match(Application_Links *app, Search_Set *set, Search_Iter *it_ptr){
Search_Match forward_match = {0}; Search_Match forward_match = {0};
Search_Match backward_match = {0}; Search_Match backward_match = {0};
int forward_result = FindResult_PastEnd; int32_t forward_result = FindResult_PastEnd;
int backward_result = FindResult_PastEnd; int32_t backward_result = FindResult_PastEnd;
if (iter.pos < range->start + range->size){ if (iter.pos < range->start + range->size){
forward_result = search_front_to_back(app, range, forward_result = search_front_to_back(app, range,
@ -456,9 +456,9 @@ search_next_match(Application_Links *app, Search_Set *set, Search_Iter *it_ptr){
if (backward_result == FindResult_FoundMatch){ if (backward_result == FindResult_FoundMatch){
find_result = FindResult_FoundMatch; find_result = FindResult_FoundMatch;
int forward_start = range->mid_start + range->mid_size; int32_t forward_start = range->mid_start + range->mid_size;
int forward_distance = (forward_match.start - forward_start); int32_t forward_distance = (forward_match.start - forward_start);
int backward_distance = (range->mid_start - backward_match.end); int32_t backward_distance = (range->mid_start - backward_match.end);
if (backward_distance < forward_distance){ if (backward_distance < forward_distance){
iter.pos = forward_match.start; iter.pos = forward_match.start;

View File

@ -532,7 +532,7 @@ FSTRING_LINK String
skip_whitespace(String str) skip_whitespace(String str)
{ {
String result = {0}; String result = {0};
int i = 0; int32_t i = 0;
for (; i < str.size && char_is_whitespace(str.str[i]); ++i); for (; i < str.size && char_is_whitespace(str.str[i]); ++i);
result = substr(str, i, str.size - i); result = substr(str, i, str.size - i);
return(result); return(result);
@ -544,7 +544,7 @@ FSTRING_LINK String
chop_whitespace(String str) chop_whitespace(String str)
{ {
String result = {0}; String result = {0};
int i = str.size; int32_t i = str.size;
for (; i > 0 && char_is_whitespace(str.str[i-1]); --i); for (; i > 0 && char_is_whitespace(str.str[i-1]); --i);
result = substr(str, 0, i); result = substr(str, 0, i);
return(result); return(result);
@ -1729,13 +1729,13 @@ hexstr_to_color(String s, uint32_t *out){
uint32_t color = 0; uint32_t color = 0;
if (s.size == 6){ if (s.size == 6){
result = 1; result = 1;
color = (unsigned int)hexstr_to_int(s); color = (uint32_t)hexstr_to_int(s);
color |= (0xFF << 24); color |= (0xFF << 24);
*out = color; *out = color;
} }
else if (s.size == 8){ else if (s.size == 8){
result = 1; result = 1;
color = (unsigned int)hexstr_to_int(s); color = (uint32_t)hexstr_to_int(s);
*out = color; *out = color;
} }
return(result); return(result);

View File

@ -395,9 +395,9 @@ struct Mouse_State{
/* DOC(This field indicates that the mouse is outside of the window.) */ /* DOC(This field indicates that the mouse is outside of the window.) */
char out_of_window; char out_of_window;
/* DOC(This field contains the x position of the mouse relative to the window where the left side is 0.) */ /* DOC(This field contains the x position of the mouse relative to the window where the left side is 0.) */
int x; int32_t x;
/* DOC(This field contains the y position of the mouse relative to the window where the top side is 0.) */ /* DOC(This field contains the y position of the mouse relative to the window where the top side is 0.) */
int y; int32_t y;
}; };
/* DOC( /* DOC(
@ -411,15 +411,15 @@ Throughout the API ranges are thought of in the form [min,max) where max is
union Range{ union Range{
struct{ struct{
/* DOC(This is the smaller value in the range, it is also the 'start'.) */ /* DOC(This is the smaller value in the range, it is also the 'start'.) */
int min; int32_t min;
/* DOC(This is the larger value in the range, it is also the 'end'.) */ /* DOC(This is the larger value in the range, it is also the 'end'.) */
int max; int32_t max;
}; };
struct{ struct{
/* DOC(This is the start of the range, it is also the 'min'.) */ /* DOC(This is the start of the range, it is also the 'min'.) */
int start; int32_t start;
/* DOC(This is the end of the range, it is also the 'max'.) */ /* DOC(This is the end of the range, it is also the 'max'.) */
int end; int32_t end;
}; };
}; };
@ -432,10 +432,10 @@ struct File_Info{
char *filename; char *filename;
/* DOC(This field specifies the length of the filename string not counting the null terminator.) */ /* DOC(This field specifies the length of the filename string not counting the null terminator.) */
int filename_len; int32_t filename_len;
/* DOC(This field indicates that the description is for a folder not a file.) */ /* DOC(This field indicates that the description is for a folder not a file.) */
int folder; int32_t folder;
}; };
/* DOC(File_List is a list of File_Info structs.) */ /* DOC(File_List is a list of File_Info structs.) */
@ -445,9 +445,9 @@ struct File_List{
/* DOC(This field is an array of File_Info structs.) */ /* DOC(This field is an array of File_Info structs.) */
File_Info *infos; File_Info *infos;
/* DOC(This field specifies the number of struts in the info array.) */ /* DOC(This field specifies the number of struts in the info array.) */
int count; int32_t count;
/* DOC(This field is for internal use.) */ /* DOC(This field is for internal use.) */
int block_size; int32_t block_size;
}; };
/* DOC( /* DOC(
@ -462,10 +462,10 @@ struct Buffer_Identifier{
char *name; char *name;
/* DOC(This field specifies the length of the name string.) */ /* DOC(This field specifies the length of the name string.) */
int name_len; int32_t name_len;
/* DOC(This field is the id of the buffer. If name is specified this should be 0.) */ /* DOC(This field is the id of the buffer. If name is specified this should be 0.) */
int id; int32_t id;
}; };
/* DOC(This struct is a part of an incomplete feature.) */ /* DOC(This struct is a part of an incomplete feature.) */
@ -692,7 +692,7 @@ struct Query_Bar{
/* DOC(This feature is not implemented.) */ /* DOC(This feature is not implemented.) */
struct Event_Message{ struct Event_Message{
/* DOC(This feature is not implemented.) */ /* DOC(This feature is not implemented.) */
int type; int32_t type;
}; };
/* /*

View File

@ -12,27 +12,28 @@
#include "4cpp_lexer_fsms.h" #include "4cpp_lexer_fsms.h"
#include "4cpp_lexer_tables.c" #include "4cpp_lexer_tables.c"
#define lexer_link static
// TODO(allen): revisit this keyword data declaration system // TODO(allen): revisit this keyword data declaration system
struct String_And_Flag{
char *str;
uint32_t flags;
};
struct String_List{ struct String_List{
String_And_Flag *data; String_And_Flag *data;
int count; int32_t count;
}; };
struct Sub_Match_List_Result{ struct Sub_Match_List_Result{
int index; int32_t index;
int32_t new_pos; int32_t new_pos;
}; };
#define lexer_string_list(x) {x, (sizeof(x)/sizeof(*x))} #define lexer_string_list(x) {x, (sizeof(x)/sizeof(*(x)))}
static String_And_Flag bool_lit_strings[] = {
{"true"}, {"false"}
};
static String_List bool_lits = lexer_string_list(bool_lit_strings);
static String_And_Flag keyword_strings[] = { static String_And_Flag keyword_strings[] = {
{"true", CPP_TOKEN_BOOLEAN_CONSTANT},
{"false", CPP_TOKEN_BOOLEAN_CONSTANT},
{"and", CPP_TOKEN_AND}, {"and", CPP_TOKEN_AND},
{"and_eq", CPP_TOKEN_ANDEQ}, {"and_eq", CPP_TOKEN_ANDEQ},
{"bitand", CPP_TOKEN_BIT_AND}, {"bitand", CPP_TOKEN_BIT_AND},
@ -120,12 +121,12 @@ static String_And_Flag keyword_strings[] = {
}; };
static String_List keywords = lexer_string_list(keyword_strings); static String_List keywords = lexer_string_list(keyword_strings);
lexer_link Sub_Match_List_Result FCPP_LINK Sub_Match_List_Result
sub_match_list(char *chunk, int size, int pos, String_List list, int sub_size){ sub_match_list(char *chunk, int32_t size, int32_t pos, String_List list, int32_t sub_size){
Sub_Match_List_Result result; Sub_Match_List_Result result;
String str_main; String str_main;
char *str_check; char *str_check;
int i,l; int32_t i,l;
result.index = -1; result.index = -1;
result.new_pos = pos; result.new_pos = pos;
@ -155,15 +156,15 @@ sub_match_list(char *chunk, int size, int pos, String_List list, int sub_size){
} }
lexer_link Cpp_Get_Token_Result FCPP_LINK Cpp_Get_Token_Result
cpp_get_token(Cpp_Token_Stack *token_stack, int pos){ cpp_get_token(Cpp_Token_Stack *token_stack, int32_t pos){
Cpp_Get_Token_Result result = {}; Cpp_Get_Token_Result result = {};
Cpp_Token *token_array = token_stack->tokens; Cpp_Token *token_array = token_stack->tokens;
Cpp_Token *token = 0; Cpp_Token *token = 0;
int first = 0; int32_t first = 0;
int count = token_stack->count; int32_t count = token_stack->count;
int last = count; int32_t last = count;
int this_start = 0, next_start = 0; int32_t this_start = 0, next_start = 0;
if (count > 0){ if (count > 0){
for (;;){ for (;;){
@ -211,10 +212,10 @@ cpp_get_token(Cpp_Token_Stack *token_stack, int pos){
return(result); return(result);
} }
lexer_link void FCPP_LINK void
cpp_shift_token_starts(Cpp_Token_Stack *stack, int from_token_i, int shift_amount){ cpp_shift_token_starts(Cpp_Token_Stack *stack, int32_t from_token_i, int32_t shift_amount){
Cpp_Token *token = stack->tokens + from_token_i; Cpp_Token *token = stack->tokens + from_token_i;
int count = stack->count, i; int32_t count = stack->count, i;
for (i = from_token_i; i < count; ++i, ++token){ for (i = from_token_i; i < count; ++i, ++token){
token->start += shift_amount; token->start += shift_amount;
@ -226,7 +227,7 @@ enum Pos_Update_Rule{
PUR_back_one, PUR_back_one,
}; };
lexer_link Lex_PP_State FCPP_LINK Lex_PP_State
cpp_pp_directive_to_state(Cpp_Token_Type type){ cpp_pp_directive_to_state(Cpp_Token_Type type){
Lex_PP_State result = LSPP_default; Lex_PP_State result = LSPP_default;
switch (type){ switch (type){
@ -272,7 +273,7 @@ cpp_pp_directive_to_state(Cpp_Token_Type type){
return(result); return(result);
} }
lexer_link Cpp_Token_Merge FCPP_LINK Cpp_Token_Merge
cpp_attempt_token_merge(Cpp_Token prev_token, Cpp_Token next_token){ cpp_attempt_token_merge(Cpp_Token prev_token, Cpp_Token next_token){
Cpp_Token_Merge result = {(Cpp_Token_Type)0}; Cpp_Token_Merge result = {(Cpp_Token_Type)0};
if (next_token.type == CPP_TOKEN_COMMENT && prev_token.type == CPP_TOKEN_COMMENT && if (next_token.type == CPP_TOKEN_COMMENT && prev_token.type == CPP_TOKEN_COMMENT &&
@ -290,8 +291,8 @@ cpp_attempt_token_merge(Cpp_Token prev_token, Cpp_Token next_token){
return result; return result;
} }
lexer_link int FCPP_LINK int32_t
cpp_place_token_nonalloc(Cpp_Token *out_tokens, int token_i, Cpp_Token token){ cpp_place_token_nonalloc(Cpp_Token *out_tokens, int32_t token_i, Cpp_Token token){
Cpp_Token_Merge merge = {(Cpp_Token_Type)0}; Cpp_Token_Merge merge = {(Cpp_Token_Type)0};
Cpp_Token prev_token = {(Cpp_Token_Type)0}; Cpp_Token prev_token = {(Cpp_Token_Type)0};
@ -310,7 +311,7 @@ cpp_place_token_nonalloc(Cpp_Token *out_tokens, int token_i, Cpp_Token token){
return(token_i); return(token_i);
} }
lexer_link bool FCPP_LINK bool
cpp_push_token_nonalloc(Cpp_Token_Stack *out_tokens, Cpp_Token token){ cpp_push_token_nonalloc(Cpp_Token_Stack *out_tokens, Cpp_Token token){
bool result = 0; bool result = 0;
if (out_tokens->count == out_tokens->max_count){ if (out_tokens->count == out_tokens->max_count){
@ -323,12 +324,12 @@ cpp_push_token_nonalloc(Cpp_Token_Stack *out_tokens, Cpp_Token token){
struct Lex_Data{ struct Lex_Data{
char *tb; char *tb;
int tb_pos; int32_t tb_pos;
int token_start; int32_t token_start;
int pos; int32_t pos;
int pos_overide; int32_t pos_overide;
int chunk_pos; int32_t chunk_pos;
Lex_FSM fsm; Lex_FSM fsm;
Whitespace_FSM wfsm; Whitespace_FSM wfsm;
@ -337,9 +338,10 @@ struct Lex_Data{
Cpp_Token token; Cpp_Token token;
int __pc__; int32_t __pc__;
}; };
inline Lex_Data
FCPP_LINK Lex_Data
lex_data_init(char *tb){ lex_data_init(char *tb){
Lex_Data data = {0}; Lex_Data data = {0};
data.tb = tb; data.tb = tb;
@ -364,21 +366,21 @@ enum Lex_Result{
LexHitTokenLimit LexHitTokenLimit
}; };
lexer_link int FCPP_LINK int32_t
cpp_lex_nonalloc(Lex_Data *S_ptr, cpp_lex_nonalloc(Lex_Data *S_ptr,
char *chunk, int size, char *chunk, int32_t size,
Cpp_Token_Stack *token_stack_out){ Cpp_Token_Stack *token_stack_out){
Lex_Data S = *S_ptr; Lex_Data S = *S_ptr;
Cpp_Token *out_tokens = token_stack_out->tokens; Cpp_Token *out_tokens = token_stack_out->tokens;
int token_i = token_stack_out->count; int32_t token_i = token_stack_out->count;
int max_token_i = token_stack_out->max_count; int32_t max_token_i = token_stack_out->max_count;
Pos_Update_Rule pos_update_rule = PUR_none; Pos_Update_Rule pos_update_rule = PUR_none;
char c = 0; char c = 0;
int end_pos = size + S.chunk_pos; int32_t end_pos = size + S.chunk_pos;
chunk -= S.chunk_pos; chunk -= S.chunk_pos;
switch (S.__pc__){ switch (S.__pc__){
@ -397,7 +399,7 @@ cpp_lex_nonalloc(Lex_Data *S_ptr,
for(;;){ for(;;){
for (; S.wfsm.pp_state < LSPP_count && S.pos < end_pos;){ for (; S.wfsm.pp_state < LSPP_count && S.pos < end_pos;){
c = chunk[S.pos++]; c = chunk[S.pos++];
int i = S.wfsm.pp_state + whitespace_fsm_eq_classes[c]; int32_t i = S.wfsm.pp_state + whitespace_fsm_eq_classes[c];
S.wfsm.pp_state = whitespace_fsm_table[i]; S.wfsm.pp_state = whitespace_fsm_table[i];
} }
S.wfsm.white_done = (S.wfsm.pp_state >= LSPP_count); S.wfsm.white_done = (S.wfsm.pp_state >= LSPP_count);
@ -428,7 +430,7 @@ cpp_lex_nonalloc(Lex_Data *S_ptr,
c = chunk[S.pos++]; c = chunk[S.pos++];
S.tb[S.tb_pos++] = c; S.tb[S.tb_pos++] = c;
int i = S.fsm.state + eq_classes[c]; int32_t i = S.fsm.state + eq_classes[c];
S.fsm.state = fsm_table[i]; S.fsm.state = fsm_table[i];
S.fsm.multi_line |= multiline_state_table[S.fsm.state]; S.fsm.multi_line |= multiline_state_table[S.fsm.state];
} }
@ -531,7 +533,7 @@ cpp_lex_nonalloc(Lex_Data *S_ptr,
{ {
--S.pos; --S.pos;
int word_size = S.pos - S.token_start; int32_t word_size = S.pos - S.token_start;
if (S.pp_state == LSPP_body_if){ if (S.pp_state == LSPP_body_if){
if (match_ss(make_string(S.tb, word_size), make_lit_string("defined"))){ if (match_ss(make_string(S.tb, word_size), make_lit_string("defined"))){
@ -542,13 +544,6 @@ cpp_lex_nonalloc(Lex_Data *S_ptr,
} }
Sub_Match_List_Result sub_match; Sub_Match_List_Result sub_match;
sub_match = sub_match_list(S.tb, S.tb_pos, 0, bool_lits, word_size);
if (sub_match.index != -1){
S.token.type = CPP_TOKEN_BOOLEAN_CONSTANT;
S.token.flags = CPP_TFLAG_IS_KEYWORD;
}
else{
sub_match = sub_match_list(S.tb, S.tb_pos, 0, keywords, word_size); sub_match = sub_match_list(S.tb, S.tb_pos, 0, keywords, word_size);
if (sub_match.index != -1){ if (sub_match.index != -1){
@ -560,7 +555,6 @@ cpp_lex_nonalloc(Lex_Data *S_ptr,
S.token.type = CPP_TOKEN_IDENTIFIER; S.token.type = CPP_TOKEN_IDENTIFIER;
S.token.flags = 0; S.token.flags = 0;
} }
}
}break; }break;
case LS_pound: case LS_pound:
@ -992,16 +986,16 @@ cpp_lex_nonalloc(Lex_Data *S_ptr,
#undef DrReturn #undef DrReturn
#undef DrCase #undef DrCase
lexer_link int FCPP_LINK int32_t
cpp_lex_nonalloc(Lex_Data *S_ptr, cpp_lex_nonalloc(Lex_Data *S_ptr,
char *chunk, int size, char *chunk, int32_t size,
Cpp_Token_Stack *token_stack_out, int max_tokens){ Cpp_Token_Stack *token_stack_out, int32_t max_tokens){
Cpp_Token_Stack temp_stack = *token_stack_out; Cpp_Token_Stack temp_stack = *token_stack_out;
if (temp_stack.max_count > temp_stack.count + max_tokens){ if (temp_stack.max_count > temp_stack.count + max_tokens){
temp_stack.max_count = temp_stack.count + max_tokens; temp_stack.max_count = temp_stack.count + max_tokens;
} }
int result = cpp_lex_nonalloc(S_ptr, chunk, size, &temp_stack); int32_t result = cpp_lex_nonalloc(S_ptr, chunk, size, &temp_stack);
token_stack_out->count = temp_stack.count; token_stack_out->count = temp_stack.count;
@ -1014,11 +1008,11 @@ cpp_lex_nonalloc(Lex_Data *S_ptr,
return(result); return(result);
} }
lexer_link int FCPP_LINK int32_t
cpp_lex_size_nonalloc(Lex_Data *S_ptr, cpp_lex_size_nonalloc(Lex_Data *S_ptr,
char *chunk, int size, int full_size, char *chunk, int32_t size, int32_t full_size,
Cpp_Token_Stack *token_stack_out){ Cpp_Token_Stack *token_stack_out){
int result = 0; int32_t result = 0;
if (S_ptr->pos >= full_size){ if (S_ptr->pos >= full_size){
char end_null = 0; char end_null = 0;
result = cpp_lex_nonalloc(S_ptr, &end_null, 1, token_stack_out); result = cpp_lex_nonalloc(S_ptr, &end_null, 1, token_stack_out);
@ -1035,16 +1029,16 @@ cpp_lex_size_nonalloc(Lex_Data *S_ptr,
return(result); return(result);
} }
lexer_link int FCPP_LINK int32_t
cpp_lex_size_nonalloc(Lex_Data *S_ptr, cpp_lex_size_nonalloc(Lex_Data *S_ptr,
char *chunk, int size, int full_size, char *chunk, int32_t size, int32_t full_size,
Cpp_Token_Stack *token_stack_out, int max_tokens){ Cpp_Token_Stack *token_stack_out, int32_t max_tokens){
Cpp_Token_Stack temp_stack = *token_stack_out; Cpp_Token_Stack temp_stack = *token_stack_out;
if (temp_stack.max_count > temp_stack.count + max_tokens){ if (temp_stack.max_count > temp_stack.count + max_tokens){
temp_stack.max_count = temp_stack.count + max_tokens; temp_stack.max_count = temp_stack.count + max_tokens;
} }
int result = cpp_lex_size_nonalloc(S_ptr, chunk, size, full_size, int32_t result = cpp_lex_size_nonalloc(S_ptr, chunk, size, full_size,
&temp_stack); &temp_stack);
token_stack_out->count = temp_stack.count; token_stack_out->count = temp_stack.count;
@ -1058,9 +1052,9 @@ cpp_lex_size_nonalloc(Lex_Data *S_ptr,
return(result); return(result);
} }
lexer_link Cpp_Relex_State FCPP_LINK Cpp_Relex_State
cpp_relex_nonalloc_start(char *data, int size, Cpp_Token_Stack *stack, cpp_relex_nonalloc_start(char *data, int32_t size, Cpp_Token_Stack *stack,
int start, int end, int amount, int tolerance){ int32_t start, int32_t end, int32_t amount, int32_t tolerance){
Cpp_Relex_State state; Cpp_Relex_State state;
state.data = data; state.data = data;
state.size = size; state.size = size;
@ -1097,15 +1091,15 @@ cpp_relex_nonalloc_start(char *data, int size, Cpp_Token_Stack *stack,
return(state); return(state);
} }
inline char FCPP_LINK char
cpp_token_get_pp_state(uint16_t bitfield){ cpp_token_get_pp_state(uint16_t bitfield){
return (char)(bitfield); return (char)(bitfield);
} }
// TODO(allen): Eliminate this once we actually store the EOF token // TODO(allen): Eliminate this once we actually store the EOF token
// in the token stack. // in the token stack.
inline Cpp_Token FCPP_LINK Cpp_Token
cpp__get_token(Cpp_Token_Stack *stack, Cpp_Token *tokens, int size, int index){ cpp__get_token(Cpp_Token_Stack *stack, Cpp_Token *tokens, int32_t size, int32_t index){
Cpp_Token result; Cpp_Token result;
if (index < stack->count){ if (index < stack->count){
result = tokens[index]; result = tokens[index];
@ -1120,10 +1114,10 @@ cpp__get_token(Cpp_Token_Stack *stack, Cpp_Token *tokens, int size, int index){
return result; return result;
} }
FCPP_LINK int FCPP_LINK int32_t
cpp_relex_nonalloc_main(Cpp_Relex_State *state, cpp_relex_nonalloc_main(Cpp_Relex_State *state,
Cpp_Token_Stack *relex_stack, Cpp_Token_Stack *relex_stack,
int *relex_end, int32_t *relex_end,
char *spare){ char *spare){
Cpp_Token_Stack *stack = state->stack; Cpp_Token_Stack *stack = state->stack;
Cpp_Token *tokens = stack->tokens; Cpp_Token *tokens = stack->tokens;
@ -1134,14 +1128,14 @@ cpp_relex_nonalloc_main(Cpp_Relex_State *state,
lex.pp_state = cpp_token_get_pp_state(tokens[state->start_token_i].state_flags); lex.pp_state = cpp_token_get_pp_state(tokens[state->start_token_i].state_flags);
lex.pos = state->relex_start; lex.pos = state->relex_start;
int relex_end_i = state->end_token_i; int32_t relex_end_i = state->end_token_i;
Cpp_Token match_token = cpp__get_token(stack, tokens, state->size, relex_end_i); Cpp_Token match_token = cpp__get_token(stack, tokens, state->size, relex_end_i);
Cpp_Token end_token = match_token; Cpp_Token end_token = match_token;
int went_too_far = false; int32_t went_too_far = false;
// TODO(allen): This can be better I suspect. // TODO(allen): This can be better I suspect.
for (;;){ for (;;){
int result = int32_t result =
cpp_lex_size_nonalloc(&lex, cpp_lex_size_nonalloc(&lex,
state->data, state->data,
state->size, state->size,
@ -1217,7 +1211,7 @@ cpp_relex_nonalloc_main(Cpp_Relex_State *state,
#include <string.h> #include <string.h>
FCPP_LINK Cpp_Token_Stack FCPP_LINK Cpp_Token_Stack
cpp_make_token_stack(int starting_max){ cpp_make_token_stack(int32_t starting_max){
Cpp_Token_Stack token_stack; Cpp_Token_Stack token_stack;
token_stack.count = 0; token_stack.count = 0;
token_stack.max_count = starting_max; token_stack.max_count = starting_max;
@ -1231,7 +1225,7 @@ cpp_free_token_stack(Cpp_Token_Stack token_stack){
} }
FCPP_LINK void FCPP_LINK void
cpp_resize_token_stack(Cpp_Token_Stack *token_stack, int new_max){ cpp_resize_token_stack(Cpp_Token_Stack *token_stack, int32_t new_max){
Cpp_Token *new_tokens = (Cpp_Token*)malloc(sizeof(Cpp_Token)*new_max); Cpp_Token *new_tokens = (Cpp_Token*)malloc(sizeof(Cpp_Token)*new_max);
if (new_tokens){ if (new_tokens){
@ -1245,21 +1239,21 @@ cpp_resize_token_stack(Cpp_Token_Stack *token_stack, int new_max){
FCPP_LINK void FCPP_LINK void
cpp_push_token(Cpp_Token_Stack *token_stack, Cpp_Token token){ cpp_push_token(Cpp_Token_Stack *token_stack, Cpp_Token token){
if (!cpp_push_token_nonalloc(token_stack, token)){ if (!cpp_push_token_nonalloc(token_stack, token)){
int new_max = 2*token_stack->max_count + 1; int32_t new_max = 2*token_stack->max_count + 1;
cpp_resize_token_stack(token_stack, new_max); cpp_resize_token_stack(token_stack, new_max);
cpp_push_token_nonalloc(token_stack, token); cpp_push_token_nonalloc(token_stack, token);
} }
} }
FCPP_LINK void FCPP_LINK void
cpp_lex_file(char *data, int size, Cpp_Token_Stack *token_stack_out){ cpp_lex_file(char *data, int32_t size, Cpp_Token_Stack *token_stack_out){
Lex_Data S = {0}; Lex_Data S = {0};
S.tb = (char*)malloc(size); S.tb = (char*)malloc(size);
int quit = 0; int32_t quit = 0;
token_stack_out->count = 0; token_stack_out->count = 0;
for (;!quit;){ for (;!quit;){
int result = cpp_lex_nonalloc(&S, data, size, token_stack_out); int32_t result = cpp_lex_nonalloc(&S, data, size, token_stack_out);
switch (result){ switch (result){
case LexFinished: case LexFinished:
{ {
@ -1275,7 +1269,7 @@ cpp_lex_file(char *data, int size, Cpp_Token_Stack *token_stack_out){
case LexNeedTokenMemory: case LexNeedTokenMemory:
{ {
int new_max = 2*token_stack_out->max_count + 1; int32_t new_max = 2*token_stack_out->max_count + 1;
cpp_resize_token_stack(token_stack_out, new_max); cpp_resize_token_stack(token_stack_out, new_max);
}break; }break;
} }

View File

@ -1,38 +1,14 @@
/* /*
* FSMs for 4c++ lexer * FSMs for 4cpp lexer
* *
* 23.03.2016 (dd.mm.yyyy) * 23.03.2016 (dd.mm.yyyy)
*
*/ */
// TOP // TOP
struct String_And_Flag{ #if !defined(FCPP_LEXER_FSMS_H)
char *str; #define FCPP_LEXER_FSMS_H
unsigned int flags;
};
enum Lex_State{ enum Lex_State{
LS_default, LS_default,
@ -113,19 +89,19 @@ enum Lex_PP_State{
}; };
struct Whitespace_FSM{ struct Whitespace_FSM{
unsigned char pp_state; uint8_t pp_state;
unsigned char white_done; uint8_t white_done;
}; };
struct Lex_FSM{ struct Lex_FSM{
unsigned char state; uint8_t state;
union{ union{
unsigned char int_state; uint8_t int_state;
unsigned char directive_state; uint8_t directive_state;
unsigned char sub_machine; uint8_t sub_machine;
}; };
unsigned char emit_token; uint8_t emit_token;
unsigned char multi_line; uint8_t multi_line;
}; };
inline Lex_FSM inline Lex_FSM
zero_lex_fsm(){ zero_lex_fsm(){
@ -133,6 +109,8 @@ zero_lex_fsm(){
return(fsm); return(fsm);
} }
#endif
// BOTTOM // BOTTOM

View File

@ -1,39 +1,39 @@
unsigned short whitespace_fsm_eq_classes[] = { uint16_t whitespace_fsm_eq_classes[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 9,18, 9, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9,18, 9, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
}; };
const int num_whitespace_fsm_eq_classes = 3; const int32_t num_whitespace_fsm_eq_classes = 3;
unsigned char whitespace_fsm_table[] = { uint8_t whitespace_fsm_table[] = {
9,10,11,12,13,14,15,16,17, 9,10,11,12,13,14,15,16,17,
0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 1, 2, 3, 4, 5, 6, 7, 8,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
}; };
unsigned short int_fsm_eq_classes[] = { uint16_t int_fsm_eq_classes[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0,16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,24, 0, 0, 0, 0, 0, 0, 0, 0,16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0,16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,24, 0, 0, 0, 0, 0, 0, 0, 0,16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
}; };
const int num_int_fsm_eq_classes = 4; const int32_t num_int_fsm_eq_classes = 4;
unsigned char int_fsm_table[] = { uint8_t int_fsm_table[] = {
8, 9,10,11,12,13,14,15, 8, 9,10,11,12,13,14,15,
3, 5,10, 6,12, 7,14,15, 3, 5,10, 6,12, 7,14,15,
1, 9, 7, 7,12,13, 7,15, 1, 9, 7, 7,12,13, 7,15,
2, 4, 6,11, 7,13,14,15, 2, 4, 6,11, 7,13,14,15,
}; };
unsigned char multiline_state_table[] = { uint8_t multiline_state_table[] = {
0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
}; };
unsigned short main_fsm_eq_classes[] = { uint16_t main_fsm_eq_classes[] = {
0,39,39,39,39,39,39,39,39,39,78,117,117,117,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,156,195,234,273,312,351,390,273,273,429,468,273,507,546,585,624,663,663,663,663,663,663,663,663,663,702,273,741,780,819,273,273,858,858,858,858,858,858,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,273,936,273,975,897,39,858,858,858,858,1014,858,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1053,897,897,273,1092,273,273,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39, 0,39,39,39,39,39,39,39,39,39,78,117,117,117,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,156,195,234,273,312,351,390,273,273,429,468,273,507,546,585,624,663,663,663,663,663,663,663,663,663,702,273,741,780,819,273,273,858,858,858,858,858,858,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,273,936,273,975,897,39,858,858,858,858,1014,858,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1053,897,897,273,1092,273,273,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,
}; };
const int num_main_fsm_eq_classes = 29; const int32_t num_main_fsm_eq_classes = 29;
unsigned char main_fsm_table[] = { uint8_t main_fsm_table[] = {
39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77, 39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,
0,40,41, 3, 4, 5, 4, 7, 8, 7,49,50,51,52,53,54,55,17,17,19,19,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,38, 0,40,41, 3, 4, 5, 4, 7, 8, 7,49,50,51,52,53,54,55,17,17,19,19,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,38,
0,40,41, 3,43,44, 5,46,47, 8,49,50,51,52,53,54,55,56,17,19,19,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,38, 0,40,41, 3,43,44, 5,46,47, 8,49,50,51,52,53,54,55,56,17,19,19,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,38,
@ -65,13 +65,13 @@ unsigned char main_fsm_table[] = {
30,40,41, 3, 4, 5, 4, 7, 8, 7,49,50,51,52,53,54,55,17,17,19,19,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,38, 30,40,41, 3, 4, 5, 4, 7, 8, 7,49,50,51,52,53,54,55,17,17,19,19,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,38,
}; };
unsigned short pp_include_fsm_eq_classes[] = { uint16_t pp_include_fsm_eq_classes[] = {
0,39,39,39,39,39,39,39,39,39,78,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,117,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,156,39,195,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39, 0,39,39,39,39,39,39,39,39,39,78,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,117,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,156,39,195,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,
}; };
const int num_pp_include_fsm_eq_classes = 6; const int32_t num_pp_include_fsm_eq_classes = 6;
unsigned char pp_include_fsm_table[] = { uint8_t pp_include_fsm_table[] = {
39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77, 39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,
3, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38, 3, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,
3,42,42,42, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38, 3,42,42,42, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,
@ -80,13 +80,13 @@ unsigned char pp_include_fsm_table[] = {
3, 1,41, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38, 3, 1,41, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,
}; };
unsigned short pp_macro_fsm_eq_classes[] = { uint16_t pp_macro_fsm_eq_classes[] = {
0,39,39,39,39,39,39,39,39,39,78,117,117,117,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,156,195,234,273,312,351,390,273,273,429,468,273,507,546,585,624,663,663,663,663,663,663,663,663,663,702,273,741,780,819,273,273,858,858,858,858,858,858,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,273,936,273,975,897,39,858,858,858,858,1014,858,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1053,897,897,273,1092,273,273,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39, 0,39,39,39,39,39,39,39,39,39,78,117,117,117,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,156,195,234,273,312,351,390,273,273,429,468,273,507,546,585,624,663,663,663,663,663,663,663,663,663,702,273,741,780,819,273,273,858,858,858,858,858,858,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,273,936,273,975,897,39,858,858,858,858,1014,858,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1053,897,897,273,1092,273,273,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,
}; };
const int num_pp_macro_fsm_eq_classes = 29; const int32_t num_pp_macro_fsm_eq_classes = 29;
unsigned char pp_macro_fsm_table[] = { uint8_t pp_macro_fsm_table[] = {
39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77, 39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,
0,40,41, 3, 4, 5, 4, 7, 8, 7,49,50,51,52,53,54,55,17,17,19,19,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,38, 0,40,41, 3, 4, 5, 4, 7, 8, 7,49,50,51,52,53,54,55,17,17,19,19,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,38,
0,40,41, 3,43,44, 5,46,47, 8,49,50,51,52,53,54,55,56,17,19,19,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,38, 0,40,41, 3,43,44, 5,46,47, 8,49,50,51,52,53,54,55,56,17,19,19,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,38,
@ -118,13 +118,13 @@ unsigned char pp_macro_fsm_table[] = {
30,40,41, 3, 4, 5, 4, 7, 8, 7,49,50,51,52,53,54,55,17,17,19,19,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,38, 30,40,41, 3, 4, 5, 4, 7, 8, 7,49,50,51,52,53,54,55,17,17,19,19,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,38,
}; };
unsigned short pp_identifier_fsm_eq_classes[] = { uint16_t pp_identifier_fsm_eq_classes[] = {
0,39,39,39,39,39,39,39,39,39,78,117,117,117,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,156,195,234,273,312,351,390,273,273,429,468,273,507,546,585,624,663,663,663,663,663,663,663,663,663,702,273,741,780,819,273,273,858,858,858,858,858,858,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,273,936,273,975,897,39,858,858,858,858,1014,858,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1053,897,897,273,1092,273,273,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39, 0,39,39,39,39,39,39,39,39,39,78,117,117,117,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,156,195,234,273,312,351,390,273,273,429,468,273,507,546,585,624,663,663,663,663,663,663,663,663,663,702,273,741,780,819,273,273,858,858,858,858,858,858,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,273,936,273,975,897,39,858,858,858,858,1014,858,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1053,897,897,273,1092,273,273,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,
}; };
const int num_pp_identifier_fsm_eq_classes = 29; const int32_t num_pp_identifier_fsm_eq_classes = 29;
unsigned char pp_identifier_fsm_table[] = { uint8_t pp_identifier_fsm_table[] = {
39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77, 39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,
0,40,41, 3, 4, 5, 4, 7, 8, 7,49,50,51,52,53,54,55,17,17,19,19,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,38, 0,40,41, 3, 4, 5, 4, 7, 8, 7,49,50,51,52,53,54,55,17,17,19,19,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,38,
0,40,41, 3,43,44, 5,46,47, 8,49,50,51,52,53,54,55,56,17,19,19,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,38, 0,40,41, 3,43,44, 5,46,47, 8,49,50,51,52,53,54,55,56,17,19,19,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,38,
@ -156,13 +156,13 @@ unsigned char pp_identifier_fsm_table[] = {
30,40,41, 3, 4, 5, 4, 7, 8, 7,49,50,51,52,53,54,55,17,17,19,19,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,38, 30,40,41, 3, 4, 5, 4, 7, 8, 7,49,50,51,52,53,54,55,17,17,19,19,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,38,
}; };
unsigned short pp_body_if_fsm_eq_classes[] = { uint16_t pp_body_if_fsm_eq_classes[] = {
0,39,39,39,39,39,39,39,39,39,78,117,117,117,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,156,195,234,273,312,351,390,273,273,429,468,273,507,546,585,624,663,663,663,663,663,663,663,663,663,702,273,741,780,819,273,273,858,858,858,858,858,858,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,273,936,273,975,897,39,858,858,858,858,1014,858,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1053,897,897,273,1092,273,273,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39, 0,39,39,39,39,39,39,39,39,39,78,117,117,117,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,156,195,234,273,312,351,390,273,273,429,468,273,507,546,585,624,663,663,663,663,663,663,663,663,663,702,273,741,780,819,273,273,858,858,858,858,858,858,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,273,936,273,975,897,39,858,858,858,858,1014,858,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1053,897,897,273,1092,273,273,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,
}; };
const int num_pp_body_if_fsm_eq_classes = 29; const int32_t num_pp_body_if_fsm_eq_classes = 29;
unsigned char pp_body_if_fsm_table[] = { uint8_t pp_body_if_fsm_table[] = {
39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77, 39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,
0,40,41, 3, 4, 5, 4, 7, 8, 7,49,50,51,52,53,54,55,17,17,19,19,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,38, 0,40,41, 3, 4, 5, 4, 7, 8, 7,49,50,51,52,53,54,55,17,17,19,19,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,38,
0,40,41, 3,43,44, 5,46,47, 8,49,50,51,52,53,54,55,56,17,19,19,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,38, 0,40,41, 3,43,44, 5,46,47, 8,49,50,51,52,53,54,55,56,17,19,19,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,38,
@ -194,13 +194,13 @@ unsigned char pp_body_if_fsm_table[] = {
30,40,41, 3, 4, 5, 4, 7, 8, 7,49,50,51,52,53,54,55,17,17,19,19,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,38, 30,40,41, 3, 4, 5, 4, 7, 8, 7,49,50,51,52,53,54,55,17,17,19,19,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,38,
}; };
unsigned short pp_body_fsm_eq_classes[] = { uint16_t pp_body_fsm_eq_classes[] = {
0,39,39,39,39,39,39,39,39,39,78,117,117,117,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,156,195,234,273,312,351,390,273,273,429,468,273,507,546,585,624,663,663,663,663,663,663,663,663,663,702,273,741,780,819,273,273,858,858,858,858,858,858,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,273,936,273,975,897,39,858,858,858,858,1014,858,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1053,897,897,273,1092,273,273,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39, 0,39,39,39,39,39,39,39,39,39,78,117,117,117,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,156,195,234,273,312,351,390,273,273,429,468,273,507,546,585,624,663,663,663,663,663,663,663,663,663,702,273,741,780,819,273,273,858,858,858,858,858,858,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,273,936,273,975,897,39,858,858,858,858,1014,858,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1053,897,897,273,1092,273,273,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,
}; };
const int num_pp_body_fsm_eq_classes = 29; const int32_t num_pp_body_fsm_eq_classes = 29;
unsigned char pp_body_fsm_table[] = { uint8_t pp_body_fsm_table[] = {
39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77, 39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,
0,40,41, 3, 4, 5, 4, 7, 8, 7,49,50,51,52,53,54,55,17,17,19,19,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,38, 0,40,41, 3, 4, 5, 4, 7, 8, 7,49,50,51,52,53,54,55,17,17,19,19,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,38,
0,40,41, 3,43,44, 5,46,47, 8,49,50,51,52,53,54,55,56,17,19,19,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,38, 0,40,41, 3,43,44, 5,46,47, 8,49,50,51,52,53,54,55,56,17,19,19,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,38,
@ -232,13 +232,13 @@ unsigned char pp_body_fsm_table[] = {
30,40,41, 3, 4, 5, 4, 7, 8, 7,49,50,51,52,53,54,55,17,17,19,19,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,38, 30,40,41, 3, 4, 5, 4, 7, 8, 7,49,50,51,52,53,54,55,17,17,19,19,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,38,
}; };
unsigned short pp_number_fsm_eq_classes[] = { uint16_t pp_number_fsm_eq_classes[] = {
0,39,39,39,39,39,39,39,39,39,78,117,117,117,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,156,195,234,273,312,351,390,273,273,429,468,273,507,546,585,624,663,663,663,663,663,663,663,663,663,702,273,741,780,819,273,273,858,858,858,858,858,858,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,273,936,273,975,897,39,858,858,858,858,1014,858,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1053,897,897,273,1092,273,273,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39, 0,39,39,39,39,39,39,39,39,39,78,117,117,117,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,156,195,234,273,312,351,390,273,273,429,468,273,507,546,585,624,663,663,663,663,663,663,663,663,663,702,273,741,780,819,273,273,858,858,858,858,858,858,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,273,936,273,975,897,39,858,858,858,858,1014,858,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1053,897,897,273,1092,273,273,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,
}; };
const int num_pp_number_fsm_eq_classes = 29; const int32_t num_pp_number_fsm_eq_classes = 29;
unsigned char pp_number_fsm_table[] = { uint8_t pp_number_fsm_table[] = {
39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77, 39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,
0,40,41, 3, 4, 5, 4, 7, 8, 7,49,50,51,52,53,54,55,17,17,19,19,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,38, 0,40,41, 3, 4, 5, 4, 7, 8, 7,49,50,51,52,53,54,55,17,17,19,19,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,38,
0,40,41, 3,43,44, 5,46,47, 8,49,50,51,52,53,54,55,56,17,19,19,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,38, 0,40,41, 3,43,44, 5,46,47, 8,49,50,51,52,53,54,55,56,17,19,19,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,38,
@ -270,25 +270,25 @@ unsigned char pp_number_fsm_table[] = {
30,40,41, 3, 4, 5, 4, 7, 8, 7,49,50,51,52,53,54,55,17,17,19,19,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,38, 30,40,41, 3, 4, 5, 4, 7, 8, 7,49,50,51,52,53,54,55,17,17,19,19,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,38,
}; };
unsigned short pp_error_fsm_eq_classes[] = { uint16_t pp_error_fsm_eq_classes[] = {
0,39,39,39,39,39,39,39,39,39,78,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39, 0,39,39,39,39,39,39,39,39,39,78,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,
}; };
const int num_pp_error_fsm_eq_classes = 3; const int32_t num_pp_error_fsm_eq_classes = 3;
unsigned char pp_error_fsm_table[] = { uint8_t pp_error_fsm_table[] = {
39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77, 39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,
38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38, 38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,
77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77, 77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,
}; };
unsigned short pp_junk_fsm_eq_classes[] = { uint16_t pp_junk_fsm_eq_classes[] = {
0,39,39,39,39,39,39,39,39,39,78,117,117,117,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,156,195,234,273,312,351,390,273,273,429,468,273,507,546,585,624,663,663,663,663,663,663,663,663,663,702,273,741,780,819,273,273,858,858,858,858,858,858,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,273,936,273,975,897,39,858,858,858,858,1014,858,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1053,897,897,273,1092,273,273,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39, 0,39,39,39,39,39,39,39,39,39,78,117,117,117,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,156,195,234,273,312,351,390,273,273,429,468,273,507,546,585,624,663,663,663,663,663,663,663,663,663,702,273,741,780,819,273,273,858,858,858,858,858,858,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,273,936,273,975,897,39,858,858,858,858,1014,858,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1053,897,897,273,1092,273,273,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,
}; };
const int num_pp_junk_fsm_eq_classes = 29; const int32_t num_pp_junk_fsm_eq_classes = 29;
unsigned char pp_junk_fsm_table[] = { uint8_t pp_junk_fsm_table[] = {
39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77, 39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,
0,40,41, 3, 4, 5, 4, 7, 8, 7,49,50,51,52,53,54,55,17,17,19,19,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,38, 0,40,41, 3, 4, 5, 4, 7, 8, 7,49,50,51,52,53,54,55,17,17,19,19,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,38,
0,40,41, 3,43,44, 5,46,47, 8,49,50,51,52,53,54,55,56,17,19,19,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,38, 0,40,41, 3,43,44, 5,46,47, 8,49,50,51,52,53,54,55,56,17,19,19,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,38,
@ -320,7 +320,7 @@ unsigned char pp_junk_fsm_table[] = {
30,40,41, 3, 4, 5, 4, 7, 8, 7,49,50,51,52,53,54,55,17,17,19,19,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,38, 30,40,41, 3, 4, 5, 4, 7, 8, 7,49,50,51,52,53,54,55,17,17,19,19,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,38,
}; };
unsigned short * get_eq_classes[] = { uint16_t * get_eq_classes[] = {
main_fsm_eq_classes, main_fsm_eq_classes,
pp_include_fsm_eq_classes, pp_include_fsm_eq_classes,
pp_macro_fsm_eq_classes, pp_macro_fsm_eq_classes,
@ -332,7 +332,7 @@ pp_error_fsm_eq_classes,
pp_junk_fsm_eq_classes, pp_junk_fsm_eq_classes,
}; };
unsigned char * get_table[] = { uint8_t * get_table[] = {
main_fsm_table, main_fsm_table,
pp_include_fsm_table, pp_include_fsm_table,
pp_macro_fsm_table, pp_macro_fsm_table,
@ -344,13 +344,13 @@ pp_error_fsm_table,
pp_junk_fsm_table, pp_junk_fsm_table,
}; };
unsigned short pp_directive_eq_classes[] = { uint16_t pp_directive_eq_classes[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0,119, 0,119,119,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,238, 0,357,476,595,714,833, 0,952, 0, 0,1071,1190,1309,1428,1547, 0,1666,1785,1904,2023, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,2142, 0,2261,2380,2499,2618,2737, 0,2856, 0, 0,2975,3094,3213,3332,3451, 0,3570,3689,3808,3927, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,119, 0,119,119,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,238, 0,357,476,595,714,833, 0,952, 0, 0,1071,1190,1309,1428,1547, 0,1666,1785,1904,2023, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,2142, 0,2261,2380,2499,2618,2737, 0,2856, 0, 0,2975,3094,3213,3332,3451, 0,3570,3689,3808,3927, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
}; };
const int num_pp_directive_eq_classes = 34; const int32_t num_pp_directive_eq_classes = 34;
unsigned char pp_directive_table[] = { uint8_t pp_directive_table[] = {
200,200,200,200,200,200,200,200,200,200,200,200,200,200,205,200,200,200,200,200,202,200,200,200,200,207,200,206,200,200,200,212,200,205,200,200,200,200,200,202,200,200,200,200,207,200,206,200,200,200,212,200,200,200,200,203,200,200,200,200,203,200,200,200,200,215,200,200,200,200,215,200,200,200,200,204,200,200,213,200,200,200,200,204,200,200,213,200,200,200,200,200,210,200,200,211,200,200,208,209,200,200,200,200,200,210,200,200,211,200,200,208,209,200,200,214,200,200,214, 200,200,200,200,200,200,200,200,200,200,200,200,200,200,205,200,200,200,200,200,202,200,200,200,200,207,200,206,200,200,200,212,200,205,200,200,200,200,200,202,200,200,200,200,207,200,206,200,200,200,212,200,200,200,200,203,200,200,200,200,203,200,200,200,200,215,200,200,200,200,215,200,200,200,200,204,200,200,213,200,200,200,200,204,200,200,213,200,200,200,200,200,210,200,200,211,200,200,208,209,200,200,200,200,200,210,200,200,211,200,200,208,209,200,200,214,200,200,214,
0,200,200,200,200,200,200,200,200,200,200,200,200,200,205,200,200,200,200,200,202,200,200,200,200,207,200,206,200,200,200,212,200,205,200,200,200,200,200,202,200,200,200,200,207,200,206,200,200,200,212,200,200,200,200,203,200,200,200,200,203,200,200,200,200,215,200,200,200,200,215,200,200,200,200,204,200,200,213,200,200,200,200,204,200,200,213,200,200,200,200,200,210,200,200,211,200,200,208,209,200,200,200,200,200,210,200,200,211,200,200,208,209,200,200,214,200,200,214, 0,200,200,200,200,200,200,200,200,200,200,200,200,200,205,200,200,200,200,200,202,200,200,200,200,207,200,206,200,200,200,212,200,205,200,200,200,200,200,202,200,200,200,200,207,200,206,200,200,200,212,200,200,200,200,203,200,200,200,200,203,200,200,200,200,215,200,200,200,200,215,200,200,200,200,204,200,200,213,200,200,200,200,204,200,200,213,200,200,200,200,200,210,200,200,211,200,200,208,209,200,200,200,200,200,210,200,200,211,200,200,208,209,200,200,214,200,200,214,
200,200,200,200,200,200,200,200,200,200,200,200,200,200,205,200,200,200,200,200,202,200,200,200,200,207,200,206,200,200,200,212,200,205,200,200,200,200,200,202,200,200,200,200,207,200,206,200,200,200,212,200,200,200,200,203,200,200,200,200,203,200,200,200,200,215,67,200,200,70,215,200,200,200,200,204,200,200,213,200,200,200,200,204,200,200,213,200,200,200,200,200,210,200,200,211,200,200,208,209,200,200,200,200,200,210,200,200,211,200,200,208,209,200,200,214,200,200,214, 200,200,200,200,200,200,200,200,200,200,200,200,200,200,205,200,200,200,200,200,202,200,200,200,200,207,200,206,200,200,200,212,200,205,200,200,200,200,200,202,200,200,200,200,207,200,206,200,200,200,212,200,200,200,200,203,200,200,200,200,203,200,200,200,200,215,67,200,200,70,215,200,200,200,200,204,200,200,213,200,200,200,200,204,200,200,213,200,200,200,200,200,210,200,200,211,200,200,208,209,200,200,200,200,200,210,200,200,211,200,200,208,209,200,200,214,200,200,214,
@ -387,9 +387,9 @@ unsigned char pp_directive_table[] = {
7,200,200,200,200,200,200,200,200,200,200,200,200,200,205,200,200,18,200,200,202,200,200,200,200,207,200,206,200,200,200,212,200,205,200,200,200,200,200,202,200,200,200,200,207,200,206,200,200,200,212,200,200,200,200,203,200,200,200,200,203,200,200,200,200,215,200,200,200,200,215,200,200,200,200,204,200,200,213,200,200,200,200,204,200,200,213,200,200,200,200,200,210,200,200,211,200,200,208,209,200,200,200,200,200,210,200,200,211,200,200,208,209,200,200,214,200,200,214, 7,200,200,200,200,200,200,200,200,200,200,200,200,200,205,200,200,18,200,200,202,200,200,200,200,207,200,206,200,200,200,212,200,205,200,200,200,200,200,202,200,200,200,200,207,200,206,200,200,200,212,200,200,200,200,203,200,200,200,200,203,200,200,200,200,215,200,200,200,200,215,200,200,200,200,204,200,200,213,200,200,200,200,204,200,200,213,200,200,200,200,200,210,200,200,211,200,200,208,209,200,200,200,200,200,210,200,200,211,200,200,208,209,200,200,214,200,200,214,
}; };
unsigned char LSDIR_default = 0; uint8_t LSDIR_default = 0;
unsigned char LSDIR_count = 119; uint8_t LSDIR_count = 119;
unsigned char pp_directive_terminal_base = 200; uint8_t pp_directive_terminal_base = 200;

View File

@ -172,9 +172,9 @@ enum Cpp_Token_Type{
struct Cpp_Token{ struct Cpp_Token{
Cpp_Token_Type type; Cpp_Token_Type type;
int start, size; int32_t start, size;
unsigned short state_flags; uint16_t state_flags;
unsigned short flags; uint16_t flags;
}; };
enum Cpp_Token_Flag{ enum Cpp_Token_Flag{
@ -204,7 +204,7 @@ enum Cpp_Preprocessor_State{
struct Cpp_Token_Stack{ struct Cpp_Token_Stack{
Cpp_Token *tokens; Cpp_Token *tokens;
int count, max_count; int32_t count, max_count;
}; };
inline Cpp_Token_Stack inline Cpp_Token_Stack
cpp_token_stack_zero(){ cpp_token_stack_zero(){
@ -214,30 +214,30 @@ cpp_token_stack_zero(){
struct Cpp_Token_Merge{ struct Cpp_Token_Merge{
Cpp_Token new_token; Cpp_Token new_token;
int did_merge; int32_t did_merge;
}; };
struct Seek_Result{ struct Seek_Result{
int pos; int32_t pos;
int new_line; int32_t new_line;
}; };
struct Cpp_Get_Token_Result{ struct Cpp_Get_Token_Result{
int token_index; int32_t token_index;
int in_whitespace; int32_t in_whitespace;
}; };
struct Cpp_Relex_State{ struct Cpp_Relex_State{
char *data; char *data;
int size; int32_t size;
Cpp_Token_Stack *stack; Cpp_Token_Stack *stack;
int start, end, amount; int32_t start, end, amount;
int start_token_i; int32_t start_token_i;
int end_token_i; int32_t end_token_i;
int relex_start; int32_t relex_start;
int tolerance; int32_t tolerance;
int space_request; int32_t space_request;
}; };
#endif #endif

42
4ed.cpp
View File

@ -172,7 +172,7 @@ enum Coroutine_Type{
}; };
struct App_Coroutine_State{ struct App_Coroutine_State{
void *co; void *co;
int type; i32 type;
}; };
inline App_Coroutine_State inline App_Coroutine_State
get_state(Application_Links *app){ get_state(Application_Links *app){
@ -764,7 +764,7 @@ view_caller(Coroutine *coroutine){
} }
internal void internal void
app_links_init(System_Functions *system, Application_Links *app_links, void *data, int size){ app_links_init(System_Functions *system, Application_Links *app_links, void *data, i32 size){
app_links->memory = data; app_links->memory = data;
app_links->memory_size = size; app_links->memory_size = size;
@ -1077,26 +1077,6 @@ app_hardcode_styles(Models *models){
style_copy(main_style(models), models->styles.styles + 1); style_copy(main_style(models), models->styles.styles + 1);
} }
char *_4coder_get_extension(const char *filename, int len, int *extension_len){
char *c = (char*)(filename + len - 1);
char *end = c;
while (*c != '.' && c > filename) --c;
*extension_len = (int)(end - c);
return c+1;
}
bool _4coder_str_match(const char *a, int len_a, const char *b, int len_b){
bool result = 0;
if (len_a == len_b){
char *end = (char*)(a + len_a);
while (a < end && *a == *b){
++a; ++b;
}
if (a == end) result = 1;
}
return result;
}
enum Command_Line_Action{ enum Command_Line_Action{
CLAct_Nothing, CLAct_Nothing,
CLAct_Ignore, CLAct_Ignore,
@ -1271,7 +1251,7 @@ App_Read_Command_Line_Sig(app_read_command_line){
} }
extern "C" SCROLL_RULE_SIG(fallback_scroll_rule){ extern "C" SCROLL_RULE_SIG(fallback_scroll_rule){
int result = 0; i32 result = 0;
if (target_x != *scroll_x){ if (target_x != *scroll_x){
*scroll_x = target_x; *scroll_x = target_x;
@ -1403,8 +1383,8 @@ App_Init_Sig(app_init){
switch (unit->type){ switch (unit->type){
case unit_map_begin: case unit_map_begin:
{ {
int mapid = unit->map_begin.mapid; i32 mapid = unit->map_begin.mapid;
int count = map_get_count(models, mapid); i32 count = map_get_count(models, mapid);
if (unit->map_begin.replace){ if (unit->map_begin.replace){
map_set_count(models, mapid, unit->map_begin.bind_count); map_set_count(models, mapid, unit->map_begin.bind_count);
} }
@ -1420,9 +1400,9 @@ App_Init_Sig(app_init){
switch (unit->type){ switch (unit->type){
case unit_map_begin: case unit_map_begin:
{ {
int mapid = unit->map_begin.mapid; i32 mapid = unit->map_begin.mapid;
int count = map_get_max_count(models, mapid); i32 count = map_get_max_count(models, mapid);
int table_max = count * 3 / 2; i32 table_max = count * 3 / 2;
if (mapid == mapid_global){ if (mapid == mapid_global){
map_ptr = &models->map_top; map_ptr = &models->map_top;
map_init(map_ptr, &models->mem.part, table_max, global); map_init(map_ptr, &models->mem.part, table_max, global);
@ -1449,7 +1429,7 @@ App_Init_Sig(app_init){
case unit_inherit: case unit_inherit:
if (map_ptr){ if (map_ptr){
Command_Map *parent = 0; Command_Map *parent = 0;
int mapid = unit->map_inherit.mapid; i32 mapid = unit->map_inherit.mapid;
if (mapid == mapid_global) parent = &models->map_top; if (mapid == mapid_global) parent = &models->map_top;
else if (mapid == mapid_file) parent = &models->map_file; else if (mapid == mapid_file) parent = &models->map_file;
else if (mapid < mapid_global){ else if (mapid < mapid_global){
@ -1495,7 +1475,7 @@ App_Init_Sig(app_init){
case unit_hook: case unit_hook:
{ {
int hook_id = unit->hook.hook_id; i32 hook_id = unit->hook.hook_id;
if (hook_id >= 0){ if (hook_id >= 0){
if (hook_id < hook_type_count){ if (hook_id < hook_type_count){
models->hooks[hook_id] = (Hook_Function*)unit->hook.func; models->hooks[hook_id] = (Hook_Function*)unit->hook.func;
@ -1551,7 +1531,7 @@ App_Init_Sig(app_init){
i32 pt_size; i32 pt_size;
}; };
int font_size = models->settings.font_size; i32 font_size = models->settings.font_size;
if (font_size < 8) font_size = 8; if (font_size < 8) font_size = 8;

2
4ed.h
View File

@ -61,7 +61,7 @@ struct Input_Summary{
struct Command_Line_Parameters{ struct Command_Line_Parameters{
char **argv; char **argv;
int argc; int32_t argc;
}; };
struct Plat_Settings{ struct Plat_Settings{

View File

@ -57,7 +57,7 @@ fill_view_summary(View_Summary *view, View *vptr, Live_Views *live_set, Working_
if (vptr->in_use){ if (vptr->in_use){
view->exists = 1; view->exists = 1;
view->view_id = (int)(vptr - live_set->views) + 1; view->view_id = (int32_t)(vptr - live_set->views) + 1;
view->line_height = (float)(vptr->line_height); view->line_height = (float)(vptr->line_height);
view->unwrapped_lines = vptr->file_data.unwrapped_lines; view->unwrapped_lines = vptr->file_data.unwrapped_lines;
view->show_whitespace = vptr->file_data.show_whitespace; view->show_whitespace = vptr->file_data.show_whitespace;
@ -800,7 +800,7 @@ DOC_SEE(Buffer_Batch_Edit_Type)
Assert(inverse_edits); Assert(inverse_edits);
char *inv_str = (char*)part->base + part->pos; char *inv_str = (char*)part->base + part->pos;
int inv_str_max = part->max - part->pos; int32_t inv_str_max = part->max - part->pos;
Edit_Spec spec = Edit_Spec spec =
file_compute_edit(mem, file, file_compute_edit(mem, file,
@ -1112,7 +1112,7 @@ DOC_SEE(Buffer_Identifier)
Working_Set *working_set = &models->working_set; Working_Set *working_set = &models->working_set;
View *vptr = imp_get_view(cmd, view_id); View *vptr = imp_get_view(cmd, view_id);
Editing_File *file = get_file_from_identifier(system, working_set, buffer); Editing_File *file = get_file_from_identifier(system, working_set, buffer);
int result = false; int32_t result = false;
if (file){ if (file){
if (flags & BufferKill_AlwaysKill){ if (flags & BufferKill_AlwaysKill){
@ -1155,7 +1155,7 @@ internal void
internal_get_view_next(Command_Data *cmd, View_Summary *view){ internal_get_view_next(Command_Data *cmd, View_Summary *view){
Editing_Layout *layout = &cmd->models->layout; Editing_Layout *layout = &cmd->models->layout;
Live_Views *live_set = &cmd->vars->live_set; Live_Views *live_set = &cmd->vars->live_set;
int index = view->view_id - 1; int32_t index = view->view_id - 1;
View *vptr = 0; View *vptr = 0;
Panel *panel = 0; Panel *panel = 0;
@ -1749,7 +1749,7 @@ DOC_SEE(int_color)
bool32 result = false; bool32 result = false;
int size = end - start; int32_t size = end - start;
if (vptr){ if (vptr){
if (size > 0){ if (size > 0){
result = true; result = true;

View File

@ -11,24 +11,25 @@
#include "4coder_custom.h" #include "4coder_custom.h"
#define FSTRING_IMPLEMENTATION
#define FSTRING_C
#include "4coder_string.h"
#define BUFFER_EXPERIMENT_SCALPEL 0 #define BUFFER_EXPERIMENT_SCALPEL 0
#include "4ed_meta.h" #include "4ed_meta.h"
#define FSTRING_IMPLEMENTATION #include "4ed_math.h"
#include "4coder_string.h"
#include "4ed_math.cpp"
#include "4ed_system.h" #include "4ed_system.h"
#include "4ed_rendering.h" #include "4ed_rendering.h"
#include "4ed.h" #include "4ed.h"
#include "4coder_table.cpp"
#include "4cpp_lexer.h" #include "4cpp_lexer.h"
#include "4ed_template.cpp" #include "4coder_table.cpp"
#include "4ed_doubly_linked_list.cpp"
#include "4ed_font_set.cpp" #include "4ed_font_set.cpp"
#include "4ed_rendering_helper.cpp" #include "4ed_rendering_helper.cpp"

View File

@ -0,0 +1,22 @@
/*
* Mr. 4th Dimention - Allen Webster
*
* 01.03.2016
*
* generic dynamically linked list
*
*/
// NOTE(allen): These macros are setup to work on structs
// with a next and prev pointer where the type of the struct
// is the same as the type of the next/prev pointers.
#define dll_init_sentinel(s) do{ (s)->next=(s); (s)->prev=(s); }while(0)
#define dll_insert(p,v) do{ (v)->next=(p)->next; (v)->prev=(p); (p)->next=(v); (v)->next->prev=(v); }while(0)
#define dll_remove(v) do{ (v)->next->prev = (v)->prev; (v)->prev->next = (v)->next; }while(0)
// for(dll_items(iterator, sentinel_ptr)){...}
#define dll_items(it, st) ((it) = (st)->next); ((it) != (st)); ((it) = (it)->next)
// BOTTOM

View File

@ -2547,7 +2547,7 @@ get_first_token_at_line(Buffer *buffer, Cpp_Token_Stack tokens, i32 line){
internal Cpp_Token* internal Cpp_Token*
seek_matching_token_backwards(Cpp_Token_Stack tokens, Cpp_Token *token, seek_matching_token_backwards(Cpp_Token_Stack tokens, Cpp_Token *token,
Cpp_Token_Type open_type, Cpp_Token_Type close_type){ Cpp_Token_Type open_type, Cpp_Token_Type close_type){
int nesting_level = 0; int32_t nesting_level = 0;
if (token <= tokens.tokens){ if (token <= tokens.tokens){
token = tokens.tokens; token = tokens.tokens;
} }
@ -2712,7 +2712,7 @@ get_line_indentation_marks(Partition *part, Buffer *buffer, Cpp_Token_Stack toke
} }
} }
else{ else{
int close = 0; int32_t close = 0;
for (token = brace_token; token > start_token; --token){ for (token = brace_token; token > start_token; --token){
switch(token->type){ switch(token->type){

View File

@ -23,7 +23,7 @@ struct Query_Set{
internal void internal void
init_query_set(Query_Set *set){ init_query_set(Query_Set *set){
Query_Slot *slot = set->slots; Query_Slot *slot = set->slots;
int i; int32_t i;
set->free_slot = slot; set->free_slot = slot;
set->used_slot = 0; set->used_slot = 0;
for (i = 0; i+1 < ArrayCount(set->slots); ++i, ++slot){ for (i = 0; i+1 < ArrayCount(set->slots); ++i, ++slot){

View File

@ -33,8 +33,6 @@ struct Panel{
i32 parent; i32 parent;
i32 which_child; i32 which_child;
int ALLOCED;
union{ union{
struct{ struct{
i32_Rect full; i32_Rect full;
@ -140,8 +138,6 @@ layout_alloc_panel(Editing_Layout *layout){
result.id = (i32)(result.panel - layout->panels); result.id = (i32)(result.panel - layout->panels);
result.panel->ALLOCED = 1;
return(result); return(result);
} }
@ -150,8 +146,6 @@ layout_free_panel(Editing_Layout *layout, Panel *panel){
dll_remove(panel); dll_remove(panel);
dll_insert(&layout->free_sentinel, panel); dll_insert(&layout->free_sentinel, panel);
--layout->panel_count; --layout->panel_count;
panel->ALLOCED = 0;
} }
internal Divider_And_ID internal Divider_And_ID

File diff suppressed because it is too large Load Diff

View File

@ -171,7 +171,7 @@ struct Render_Quad{
}; };
inline Render_Quad inline Render_Quad
get_render_quad(Glyph_Data *b, int pw, int ph, float xpos, float ypos){ get_render_quad(Glyph_Data *b, i32 pw, i32 ph, float xpos, float ypos){
Render_Quad q; Render_Quad q;
float ipw = 1.0f / pw, iph = 1.0f / ph; float ipw = 1.0f / pw, iph = 1.0f / ph;
@ -190,7 +190,7 @@ get_render_quad(Glyph_Data *b, int pw, int ph, float xpos, float ypos){
} }
inline Render_Quad inline Render_Quad
get_exact_render_quad(Glyph_Data *b, int pw, int ph, float xpos, float ypos){ get_exact_render_quad(Glyph_Data *b, i32 pw, i32 ph, float xpos, float ypos){
Render_Quad q; Render_Quad q;
float ipw = 1.0f / pw, iph = 1.0f / ph; float ipw = 1.0f / pw, iph = 1.0f / ph;
@ -342,7 +342,7 @@ launch_rendering(Render_Target *target){
#undef ExtractStruct #undef ExtractStruct
internal void* internal void*
part_alloc(int size, void *context){ part_alloc(i32 size, void *context){
Partition *part = (Partition*)context; Partition *part = (Partition*)context;
void *result = push_block(part, size); void *result = push_block(part, size);
return(result); return(result);
@ -561,10 +561,10 @@ font_load_freetype(Partition *part,
rf->height -= rf->line_skip; rf->height -= rf->line_skip;
rf->line_skip = 0; rf->line_skip = 0;
int max_glyph_w = face->size->metrics.x_ppem; i32 max_glyph_w = face->size->metrics.x_ppem;
int max_glyph_h = rf->height; i32 max_glyph_h = rf->height;
int tex_width = 64; i32 tex_width = 64;
int tex_height = 0; i32 tex_height = 0;
// estimate upper bound on texture width // estimate upper bound on texture width
do { do {
@ -576,8 +576,8 @@ font_load_freetype(Partition *part,
tex_height = next_pow_of_2(tex_height); tex_height = next_pow_of_2(tex_height);
int pen_x = 0; i32 pen_x = 0;
int pen_y = 0; i32 pen_y = 0;
u32* pixels = push_array(part, u32, tex_width * tex_height); u32* pixels = push_array(part, u32, tex_width * tex_height);
memset(pixels, 0, tex_width * tex_height * sizeof(u32)); memset(pixels, 0, tex_width * tex_height * sizeof(u32));
@ -597,11 +597,11 @@ font_load_freetype(Partition *part,
} }
} }
for(int i = 0; i < NUM_GLYPHS; ++i){ for(i32 i = 0; i < NUM_GLYPHS; ++i){
if(FT_Load_Char(face, i, FT_LOAD_RENDER | ft_extra_flags) != 0) continue; if(FT_Load_Char(face, i, FT_LOAD_RENDER | ft_extra_flags) != 0) continue;
int w = face->glyph->bitmap.width; i32 w = face->glyph->bitmap.width;
int h = face->glyph->bitmap.rows; i32 h = face->glyph->bitmap.rows;
// lcd filter produces RGB bitmaps, need to account for the extra components // lcd filter produces RGB bitmaps, need to account for the extra components
if(use_lcd_filter){ if(use_lcd_filter){
@ -635,13 +635,13 @@ font_load_freetype(Partition *part,
rf->glyphs[i].exists = 1; rf->glyphs[i].exists = 1;
int pitch = face->glyph->bitmap.pitch; i32 pitch = face->glyph->bitmap.pitch;
// write to texture atlas // write to texture atlas
for(int j = 0; j < h; ++j){ for(i32 j = 0; j < h; ++j){
for(int i = 0; i < w; ++i){ for(i32 i = 0; i < w; ++i){
int x = pen_x + i; i32 x = pen_x + i;
int y = pen_y + j; i32 y = pen_y + j;
if(use_lcd_filter){ if(use_lcd_filter){
#if 1 #if 1

View File

@ -19,9 +19,9 @@ handle_zero(void){
return(result); return(result);
} }
inline int inline int32_t
handle_equal(Plat_Handle a, Plat_Handle b){ handle_equal(Plat_Handle a, Plat_Handle b){
int result = (memcmp(&a, &b, sizeof(a)) == 0); int32_t result = (memcmp(&a, &b, sizeof(a)) == 0);
return(result); return(result);
} }

View File

@ -1,54 +0,0 @@
/*
* Mr. 4th Dimention - Allen Webster
*
* 01.03.2016
*
* Templated code.
*
*/
// TOP
// NOTE(allen): This is an experiment, BUT remember a lot of people shit on templates.
// So if you start getting a wiff of stupidity from this back out immediately!
//
// experience 1: no badness, haven't seen any annoying template errors
// ...
template<typename T>
inline void
dll_init_sentinel(T *sentinel){
sentinel->next = sentinel;
sentinel->prev = sentinel;
}
template<typename T>
inline void
dll_insert(T *pos, T *v){
v->next = pos->next;
v->prev = pos;
pos->next = v;
v->next->prev = v;
}
template<typename T>
inline void
dll_insert_back(T *pos, T *v){
v->prev = pos->prev;
v->next = pos;
pos->prev = v;
v->prev->next = v;
}
template<typename T>
inline void
dll_remove(T *v){
v->next->prev = v->prev;
v->prev->next = v->next;
}
// for(dll_items(iterator, sentinel_ptr)){...}
#define dll_items(it, st) ((it) = (st)->next); ((it) != (st)); ((it) = (it)->next)
// BOTTOM

16
build.c
View File

@ -33,7 +33,7 @@
#endif #endif
static char cmd[1024]; static char cmd[1024];
static int error_state = 0; static int32_t error_state = 0;
#define systemf(...) do{\ #define systemf(...) do{\
int32_t n = snprintf(cmd, sizeof(cmd), __VA_ARGS__);\ int32_t n = snprintf(cmd, sizeof(cmd), __VA_ARGS__);\
@ -269,6 +269,20 @@ int main(int argc, char **argv){
#define META_DIR "../meta" #define META_DIR "../meta"
#define BUILD_DIR "../build" #define BUILD_DIR "../build"
#if 0
{
BEGIN_TIME_SECTION();
build(OPTS, cdir, "fsm_table_generator.cpp",
BUILD_DIR, "fsmgen", 0);
END_TIME_SECTION("build fsm generator");
}
{
BEGIN_TIME_SECTION();
execute(cdir, BUILD_DIR"/fsmgen");
END_TIME_SECTION("run fsm generator");
}
#endif
{ {
BEGIN_TIME_SECTION(); BEGIN_TIME_SECTION();
build(OPTS | DEBUG_INFO, cdir, "4ed_metagen.cpp", build(OPTS | DEBUG_INFO, cdir, "4ed_metagen.cpp",

View File

@ -9,11 +9,8 @@
/* TODO(allen): /* TODO(allen):
Next Time: 1. Eliminate the complicated preprocessor directive parsing tables
Finish linking from one FSM to the next in the keyword recognizer. 2. Establish a clean systematic way of maintaining whatever is left
1. Make sure each FSM follows the rules about state types correctly.
2. Make a look up table from final states to resulting token types.
*/ */
@ -21,12 +18,18 @@ Finish linking from one FSM to the next in the keyword recognizer.
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include <assert.h> #include <assert.h>
#include <stdint.h>
#define ArrayCount(a) (sizeof(a)/sizeof(*a)) #define ArrayCount(a) (sizeof(a)/sizeof(*a))
#include "../4cpp_lexer_types.h" #include "4cpp_lexer_types.h"
#include "4cpp_lexer_fsms.h" #include "4cpp_lexer_fsms.h"
struct String_And_Flag{
char *str;
uint32_t flags;
};
static String_And_Flag preprop_strings[] = { static String_And_Flag preprop_strings[] = {
{"include", CPP_PP_INCLUDE}, {"include", CPP_PP_INCLUDE},
{"INCLUDE", CPP_PP_INCLUDE}, {"INCLUDE", CPP_PP_INCLUDE},
@ -147,12 +150,12 @@ static String_And_Flag keyword_strings[] = {
{"thread_local", CPP_TOKEN_KEY_OTHER}, {"thread_local", CPP_TOKEN_KEY_OTHER},
}; };
struct FSM_State{ typedef struct FSM_State{
unsigned int transition_rule[256]; uint32_t transition_rule[256];
unsigned char override; uint8_t override;
}; } FSM_State;
struct FSM{ typedef struct FSM{
FSM_State *states; FSM_State *states;
unsigned short count, max; unsigned short count, max;
@ -162,47 +165,47 @@ struct FSM{
unsigned char terminal_base; unsigned char terminal_base;
char *comment; char *comment;
}; } FSM;
struct FSM_Stack{ typedef struct FSM_Stack{
FSM *fsms; FSM *fsms;
int count, max; int32_t count, max;
unsigned char table_transition_state; uint8_t table_transition_state;
unsigned char final_state; uint8_t final_state;
}; } FSM_Stack;
struct Match_Node{ typedef struct Match_Node{
Match_Node *first_child; Match_Node *first_child;
Match_Node *next_sibling; Match_Node *next_sibling;
int *words; int32_t *words;
int count, max; int32_t count, max;
int index; int32_t index;
FSM_State *state; FSM_State *state;
}; } Match_Node;
struct Match_Tree{ typedef struct Match_Tree{
Match_Node *nodes; Match_Node *nodes;
int count, max; int32_t count, max;
}; } Match_Tree;
struct Match_Tree_Stack{ typedef struct Match_Tree_Stack{
Match_Tree *trees; Match_Tree *trees;
int count, max; int32_t count, max;
}; } Match_Tree_Stack;
struct Future_FSM{ typedef struct Future_FSM{
Match_Node *source; Match_Node *source;
}; } Future_FSM;
struct Future_FSM_Stack{ typedef struct Future_FSM_Stack{
Future_FSM *futures; Future_FSM *futures;
int count, max; int32_t count, max;
}; } Future_FSM_Stack;
FSM* static FSM*
get_fsm(FSM_Stack *stack){ get_fsm(FSM_Stack *stack){
FSM* result = 0; FSM* result = 0;
assert(stack->count < stack->max); assert(stack->count < stack->max);
@ -211,7 +214,7 @@ get_fsm(FSM_Stack *stack){
return(result); return(result);
} }
Match_Tree* static Match_Tree*
get_tree(Match_Tree_Stack *stack){ get_tree(Match_Tree_Stack *stack){
Match_Tree* result = 0; Match_Tree* result = 0;
assert(stack->count < stack->max); assert(stack->count < stack->max);
@ -219,10 +222,10 @@ get_tree(Match_Tree_Stack *stack){
return(result); return(result);
} }
FSM static FSM
fsm_init(unsigned short max, unsigned char terminal_base){ fsm_init(uint16_t max, uint8_t terminal_base){
FSM fsm; FSM fsm;
int memsize; int32_t memsize;
fsm.max = max; fsm.max = max;
fsm.count = 0; fsm.count = 0;
memsize = sizeof(FSM_State)*fsm.max; memsize = sizeof(FSM_State)*fsm.max;
@ -238,16 +241,16 @@ fsm_init(unsigned short max, unsigned char terminal_base){
return(fsm); return(fsm);
} }
void static void
fsm_add_comment(FSM *fsm, char *str){ fsm_add_comment(FSM *fsm, char *str){
int comment_len; int32_t comment_len;
int str_len; int32_t str_len;
char *new_comment; char *new_comment;
str_len = (int)strlen(str); str_len = (int32_t)strlen(str);
if (fsm->comment != 0){ if (fsm->comment != 0){
comment_len = (int)strlen(fsm->comment); comment_len = (int32_t)strlen(fsm->comment);
new_comment = (char*)malloc(str_len + comment_len + 1); new_comment = (char*)malloc(str_len + comment_len + 1);
memcpy(new_comment, fsm->comment, comment_len); memcpy(new_comment, fsm->comment, comment_len);
@ -264,10 +267,10 @@ fsm_add_comment(FSM *fsm, char *str){
} }
} }
Match_Tree static Match_Tree
tree_init(unsigned short max){ tree_init(uint16_t max){
Match_Tree tree; Match_Tree tree;
int memsize; int32_t memsize;
tree.max = max; tree.max = max;
tree.count = 0; tree.count = 0;
memsize = sizeof(Match_Node)*tree.max; memsize = sizeof(Match_Node)*tree.max;
@ -275,19 +278,19 @@ tree_init(unsigned short max){
return(tree); return(tree);
} }
unsigned char static uint8_t
push_future_fsm(Future_FSM_Stack *stack, Match_Node *node){ push_future_fsm(Future_FSM_Stack *stack, Match_Node *node){
unsigned char index = 0; uint8_t index = 0;
Future_FSM *future = 0; Future_FSM *future = 0;
assert(stack->count < stack->max); assert(stack->count < stack->max);
assert(stack->max < 256); assert(stack->max < 256);
index = (unsigned char)(stack->count++); index = (uint8_t)(stack->count++);
future = &stack->futures[index]; future = &stack->futures[index];
future->source = node; future->source = node;
return(index); return(index);
} }
Match_Node* static Match_Node*
match_get_node(Match_Tree *tree){ match_get_node(Match_Tree *tree){
Match_Node *result; Match_Node *result;
assert(tree->count < tree->max); assert(tree->count < tree->max);
@ -295,33 +298,33 @@ match_get_node(Match_Tree *tree){
return(result); return(result);
} }
void static void
match_init_node(Match_Node *node, int match_count){ match_init_node(Match_Node *node, int32_t match_count){
*node = {}; *node = {};
node->words = (int*)malloc(sizeof(int)*match_count); node->words = (int32_t*)malloc(sizeof(int32_t)*match_count);
node->max = match_count; node->max = match_count;
} }
void static void
match_copy_init_node(Match_Node *node, Match_Node *source){ match_copy_init_node(Match_Node *node, Match_Node *source){
*node = {}; *node = {};
node->max = source->count; node->max = source->count;
node->count = source->count; node->count = source->count;
node->words = (int*)malloc(sizeof(int)*source->count); node->words = (int32_t*)malloc(sizeof(int32_t)*source->count);
node->index = source->index; node->index = source->index;
memcpy(node->words, source->words, sizeof(int)*source->count); memcpy(node->words, source->words, sizeof(int32_t)*source->count);
} }
void static void
match_add_word(Match_Node *node, int word){ match_add_word(Match_Node *node, int32_t word){
assert(node->count < node->max); assert(node->count < node->max);
node->words[node->count++] = word; node->words[node->count++] = word;
} }
FSM_State* static FSM_State*
fsm_get_state(FSM *fsm, unsigned int terminal_base){ fsm_get_state(FSM *fsm, uint32_t terminal_base){
FSM_State *result; FSM_State *result;
unsigned short i; uint16_t i;
assert(fsm->count < fsm->max); assert(fsm->count < fsm->max);
result = &fsm->states[fsm->count++]; result = &fsm->states[fsm->count++];
for (i = 0; i < 256; ++i){ for (i = 0; i < 256; ++i){
@ -331,13 +334,13 @@ fsm_get_state(FSM *fsm, unsigned int terminal_base){
return(result); return(result);
} }
FSM_State* static FSM_State*
fsm_get_state(FSM *fsm){ fsm_get_state(FSM *fsm){
FSM_State *result = fsm_get_state(fsm, fsm->terminal_base); FSM_State *result = fsm_get_state(fsm, fsm->terminal_base);
return(result); return(result);
} }
FSM_State* static FSM_State*
fsm_get_term_state(FSM *fsm, unsigned char override){ fsm_get_term_state(FSM *fsm, unsigned char override){
FSM_State *result; FSM_State *result;
assert(fsm->term_count < fsm->term_max); assert(fsm->term_count < fsm->term_max);
@ -346,52 +349,52 @@ fsm_get_term_state(FSM *fsm, unsigned char override){
return(result); return(result);
} }
unsigned char static uint8_t
fsm_index(FSM *fsm, FSM_State *s){ fsm_index(FSM *fsm, FSM_State *s){
unsigned char result; uint8_t result;
result = (unsigned char)(unsigned long long)(s - fsm->states); result = (uint8_t)(uint64_t)(s - fsm->states);
if (s->override){ if (s->override){
result = fsm->terminal_base + s->override; result = fsm->terminal_base + s->override;
} }
return(result); return(result);
} }
void static void
fsm_add_transition(FSM_State *state, char c, unsigned char dest){ fsm_add_transition(FSM_State *state, char c, unsigned char dest){
state->transition_rule[c] = dest; state->transition_rule[c] = dest;
} }
struct Terminal_Lookup_Table{ struct Terminal_Lookup_Table{
unsigned int state_to_type[60]; uint32_t state_to_type[60];
unsigned char type_to_state[CPP_TOKEN_TYPE_COUNT]; uint8_t type_to_state[CPP_TOKEN_TYPE_COUNT];
unsigned char state_count; uint8_t state_count;
}; };
void static void
process_match_node(String_And_Flag *input, Match_Node *node, Match_Tree *tree, FSM *fsm){ process_match_node(String_And_Flag *input, Match_Node *node, Match_Tree *tree, FSM *fsm){
int next_index = node->index + 1; int32_t next_index = node->index + 1;
int match_count = node->count; int32_t match_count = node->count;
FSM_State *this_state = node->state; FSM_State *this_state = node->state;
unsigned char terminal_base = fsm->terminal_base; uint8_t terminal_base = fsm->terminal_base;
int i, j, *words = node->words; int32_t i, j, *words = node->words;
String_And_Flag saf; String_And_Flag saf;
int l; int32_t l;
char c; char c;
Match_Node *next_nodes[256]; Match_Node *next_nodes[256];
Match_Node *newest_child = 0; Match_Node *newest_child = 0;
Match_Node *n; Match_Node *n;
unsigned char unjunkify = 0; uint8_t unjunkify = 0;
memset(next_nodes, 0, sizeof(next_nodes)); memset(next_nodes, 0, sizeof(next_nodes));
for (i = 0; i < match_count; ++i){ for (i = 0; i < match_count; ++i){
j = words[i]; j = words[i];
saf = input[j]; saf = input[j];
l = (int)strlen(saf.str); l = (int32_t)strlen(saf.str);
if (next_index < l){ if (next_index < l){
c = saf.str[next_index]; c = saf.str[next_index];
@ -436,13 +439,13 @@ process_match_node(String_And_Flag *input, Match_Node *node, Match_Tree *tree, F
} }
} }
FSM static FSM
generate_pp_directive_fsm(){ generate_pp_directive_fsm(){
Match_Tree tree; Match_Tree tree;
FSM fsm; FSM fsm;
Match_Node *root_node; Match_Node *root_node;
FSM_State *root_state; FSM_State *root_state;
int i; int32_t i;
fsm = fsm_init(200, 200); fsm = fsm_init(200, 200);
tree = tree_init(200); tree = tree_init(200);
@ -480,9 +483,9 @@ Each state needs a full set of transition rules. Most transitions should go int
#define RealTerminateBase 65536 #define RealTerminateBase 65536
int static int32_t
char_is_alphanumeric(char x){ char_is_alphanumeric(char x){
int result = 0; int32_t result = 0;
if ((x >= '0' && x <= '9') || if ((x >= '0' && x <= '9') ||
(x >= 'A' && x <= 'Z') || (x >= 'A' && x <= 'Z') ||
(x >= 'a' && x <= 'z') || (x >= 'a' && x <= 'z') ||
@ -492,20 +495,20 @@ char_is_alphanumeric(char x){
return(result); return(result);
} }
void static void
process_match_node(String_And_Flag *input, Match_Node *node, Match_Tree *tree, FSM *fsm, process_match_node(String_And_Flag *input, Match_Node *node, Match_Tree *tree, FSM *fsm,
Terminal_Lookup_Table *terminal_table, int levels_to_go, Terminal_Lookup_Table *terminal_table, int32_t levels_to_go,
Future_FSM_Stack *unfinished_fsms){ Future_FSM_Stack *unfinished_fsms){
int next_index = node->index + 1; int32_t next_index = node->index + 1;
int match_count = node->count; int32_t match_count = node->count;
int *words = node->words; int32_t *words = node->words;
FSM_State *this_state = node->state; FSM_State *this_state = node->state;
int word_index = 0; int32_t word_index = 0;
int good_transition = 0; int32_t good_transition = 0;
int len = 0; int32_t len = 0;
int i = 0; int32_t i = 0;
String_And_Flag saf = {0}; String_And_Flag saf = {0};
@ -514,7 +517,7 @@ process_match_node(String_And_Flag *input, Match_Node *node, Match_Tree *tree, F
Match_Node *n = 0; Match_Node *n = 0;
char c = 0; char c = 0;
unsigned char override = 0; uint8_t override = 0;
memset(next_nodes, 0, sizeof(next_nodes)); memset(next_nodes, 0, sizeof(next_nodes));
@ -522,7 +525,7 @@ process_match_node(String_And_Flag *input, Match_Node *node, Match_Tree *tree, F
word_index = words[i]; word_index = words[i];
saf = input[word_index]; saf = input[word_index];
len = (int)strlen(saf.str); len = (int32_t)strlen(saf.str);
if (next_index < len){ if (next_index < len){
c = saf.str[next_index]; c = saf.str[next_index];
@ -1041,73 +1044,73 @@ main_fsm(Lex_FSM fsm, unsigned char pp_state, unsigned char c){
return(fsm); return(fsm);
} }
void static void
begin_table(FILE *file, char *type, char *group_name, char *table_name){ begin_table(FILE *file, char *type, char *group_name, char *table_name){
fprintf(file, "unsigned %s %s_%s[] = {\n", type, group_name, table_name); fprintf(file, "%s %s_%s[] = {\n", type, group_name, table_name);
} }
void static void
begin_table(FILE *file, char *type, char *table_name){ begin_table(FILE *file, char *type, char *table_name){
fprintf(file, "unsigned %s %s[] = {\n", type, table_name); fprintf(file, "%s %s[] = {\n", type, table_name);
} }
void static void
begin_ptr_table(FILE *file, char *type, char *table_name){ begin_ptr_table(FILE *file, char *type, char *table_name){
fprintf(file, "unsigned %s * %s[] = {\n", type, table_name); fprintf(file, "%s * %s[] = {\n", type, table_name);
} }
void static void
do_table_item(FILE *file, unsigned short item){ do_table_item(FILE *file, uint16_t item){
fprintf(file, "%2d,", (int)item); fprintf(file, "%2d,", (int32_t)item);
} }
void static void
do_table_item_direct(FILE *file, char *item, char *tail){ do_table_item_direct(FILE *file, char *item, char *tail){
fprintf(file, "%s%s,", item, tail); fprintf(file, "%s%s,", item, tail);
} }
void static void
end_row(FILE *file){ end_row(FILE *file){
fprintf(file, "\n"); fprintf(file, "\n");
} }
void static void
end_table(FILE *file){ end_table(FILE *file){
fprintf(file, "};\n\n"); fprintf(file, "};\n\n");
} }
struct FSM_Tables{ typedef struct FSM_Tables{
unsigned char *full_transition_table; uint8_t *full_transition_table;
unsigned char *marks; uint8_t *marks;
unsigned char *eq_class; uint8_t *eq_class;
unsigned char *eq_class_rep; uint8_t *eq_class_rep;
unsigned char *reduced_transition_table; uint8_t *reduced_transition_table;
unsigned char eq_class_counter; uint8_t eq_class_counter;
unsigned short state_count; uint16_t state_count;
}; } FSM_Tables;
void static void
allocate_full_tables(FSM_Tables *table, unsigned char state_count){ allocate_full_tables(FSM_Tables *table, uint8_t state_count){
table->full_transition_table = (unsigned char*)malloc(state_count * 256); table->full_transition_table = (uint8_t*)malloc(state_count * 256);
table->marks = (unsigned char*)malloc(state_count * 256); table->marks = (uint8_t*)malloc(state_count * 256);
table->eq_class = (unsigned char*)malloc(state_count * 256); table->eq_class = (uint8_t*)malloc(state_count * 256);
table->eq_class_rep = (unsigned char*)malloc(state_count * 256); table->eq_class_rep = (uint8_t*)malloc(state_count * 256);
table->state_count = state_count; table->state_count = state_count;
memset(table->marks, 0, 256); memset(table->marks, 0, 256);
} }
void static void
do_table_reduction(FSM_Tables *table, unsigned short state_count){ do_table_reduction(FSM_Tables *table, uint16_t state_count){
{ {
table->eq_class_counter = 0; table->eq_class_counter = 0;
unsigned char *c_line = table->full_transition_table; uint8_t *c_line = table->full_transition_table;
for (unsigned short c = 0; c < 256; ++c){ for (uint16_t c = 0; c < 256; ++c){
if (table->marks[c] == 0){ if (table->marks[c] == 0){
table->eq_class[c] = table->eq_class_counter; table->eq_class[c] = table->eq_class_counter;
table->eq_class_rep[table->eq_class_counter] = (unsigned char)c; table->eq_class_rep[table->eq_class_counter] = (uint8_t)c;
unsigned char *c2_line = c_line + state_count; uint8_t *c2_line = c_line + state_count;
for (unsigned short c2 = c + 1; c2 < 256; ++c2){ for (uint16_t c2 = c + 1; c2 < 256; ++c2){
if (memcmp(c_line, c2_line, state_count) == 0){ if (memcmp(c_line, c2_line, state_count) == 0){
table->marks[c2] = 1; table->marks[c2] = 1;
table->eq_class[c2] = table->eq_class_counter; table->eq_class[c2] = table->eq_class_counter;
@ -1120,31 +1123,31 @@ do_table_reduction(FSM_Tables *table, unsigned short state_count){
} }
} }
table->reduced_transition_table = (unsigned char*)malloc(state_count * table->eq_class_counter); table->reduced_transition_table = (uint8_t*)malloc(state_count * table->eq_class_counter);
{ {
unsigned char *r_line = table->reduced_transition_table; uint8_t *r_line = table->reduced_transition_table;
for (unsigned short eq = 0; eq < table->eq_class_counter; ++eq){ for (uint16_t eq = 0; eq < table->eq_class_counter; ++eq){
unsigned char *u_line = table->full_transition_table + state_count * table->eq_class_rep[eq]; uint8_t *u_line = table->full_transition_table + state_count * table->eq_class_rep[eq];
memcpy(r_line, u_line, state_count); memcpy(r_line, u_line, state_count);
r_line += state_count; r_line += state_count;
} }
} }
} }
FSM_Tables static FSM_Tables
generate_whitespace_skip_table(){ generate_whitespace_skip_table(){
unsigned char state_count = LSPP_count; uint8_t state_count = LSPP_count;
FSM_Tables table; FSM_Tables table;
allocate_full_tables(&table, state_count); allocate_full_tables(&table, state_count);
int i = 0; int32_t i = 0;
Whitespace_FSM wfsm = {0}; Whitespace_FSM wfsm = {0};
Whitespace_FSM new_wfsm; Whitespace_FSM new_wfsm;
for (unsigned short c = 0; c < 256; ++c){ for (uint16_t c = 0; c < 256; ++c){
for (unsigned char state = 0; state < state_count; ++state){ for (uint8_t state = 0; state < state_count; ++state){
wfsm.pp_state = state; wfsm.pp_state = state;
wfsm.white_done = 0; wfsm.white_done = 0;
new_wfsm = whitespace_skip_fsm(wfsm, (unsigned char)c); new_wfsm = whitespace_skip_fsm(wfsm, (uint8_t)c);
table.full_transition_table[i++] = new_wfsm.pp_state + state_count*new_wfsm.white_done; table.full_transition_table[i++] = new_wfsm.pp_state + state_count*new_wfsm.white_done;
} }
} }
@ -1154,20 +1157,20 @@ generate_whitespace_skip_table(){
return(table); return(table);
} }
FSM_Tables static FSM_Tables
generate_int_table(){ generate_int_table(){
unsigned char state_count = LSINT_count; uint8_t state_count = LSINT_count;
FSM_Tables table; FSM_Tables table;
allocate_full_tables(&table, state_count); allocate_full_tables(&table, state_count);
int i = 0; int32_t i = 0;
Lex_FSM fsm = {0}; Lex_FSM fsm = {0};
Lex_FSM new_fsm; Lex_FSM new_fsm;
for (unsigned short c = 0; c < 256; ++c){ for (uint16_t c = 0; c < 256; ++c){
for (unsigned char state = 0; state < state_count; ++state){ for (uint8_t state = 0; state < state_count; ++state){
fsm.int_state = state; fsm.int_state = state;
fsm.emit_token = 0; fsm.emit_token = 0;
new_fsm = int_fsm(fsm, (unsigned char)c); new_fsm = int_fsm(fsm, (uint8_t)c);
table.full_transition_table[i++] = new_fsm.int_state + state_count*new_fsm.emit_token; table.full_transition_table[i++] = new_fsm.int_state + state_count*new_fsm.emit_token;
} }
} }
@ -1177,20 +1180,20 @@ generate_int_table(){
return(table); return(table);
} }
FSM_Tables static FSM_Tables
generate_fsm_table(unsigned char pp_state){ generate_fsm_table(uint8_t pp_state){
unsigned char state_count = LS_count; uint8_t state_count = LS_count;
FSM_Tables table; FSM_Tables table;
allocate_full_tables(&table, state_count); allocate_full_tables(&table, state_count);
int i = 0; int32_t i = 0;
Lex_FSM fsm = {0}; Lex_FSM fsm = {0};
Lex_FSM new_fsm; Lex_FSM new_fsm;
for (unsigned short c = 0; c < 256; ++c){ for (uint16_t c = 0; c < 256; ++c){
for (unsigned char state = 0; state < state_count; ++state){ for (uint8_t state = 0; state < state_count; ++state){
fsm.state = state; fsm.state = state;
fsm.emit_token = 0; fsm.emit_token = 0;
new_fsm = main_fsm(fsm, pp_state, (unsigned char)c); new_fsm = main_fsm(fsm, pp_state, (uint8_t)c);
table.full_transition_table[i++] = new_fsm.state + state_count*new_fsm.emit_token; table.full_transition_table[i++] = new_fsm.state + state_count*new_fsm.emit_token;
} }
} }
@ -1200,21 +1203,21 @@ generate_fsm_table(unsigned char pp_state){
return(table); return(table);
} }
void static void
render_fsm_table(FILE *file, FSM_Tables tables, char *group_name){ render_fsm_table(FILE *file, FSM_Tables tables, char *group_name){
begin_table(file, "short", group_name, "eq_classes"); begin_table(file, "uint16_t", group_name, "eq_classes");
for (unsigned short c = 0; c < 256; ++c){ for (uint16_t c = 0; c < 256; ++c){
do_table_item(file, tables.eq_class[c]*tables.state_count); do_table_item(file, tables.eq_class[c]*tables.state_count);
} }
end_row(file); end_row(file);
end_table(file); end_table(file);
fprintf(file, "const int num_%s_eq_classes = %d;\n\n", group_name, tables.eq_class_counter); fprintf(file, "const int32_t num_%s_eq_classes = %d;\n\n", group_name, tables.eq_class_counter);
int i = 0; int32_t i = 0;
begin_table(file, "char", group_name, "table"); begin_table(file, "uint8_t", group_name, "table");
for (unsigned short c = 0; c < tables.eq_class_counter; ++c){ for (uint16_t c = 0; c < tables.eq_class_counter; ++c){
for (unsigned char state = 0; state < tables.state_count; ++state){ for (uint8_t state = 0; state < tables.state_count; ++state){
do_table_item(file, tables.reduced_transition_table[i++]); do_table_item(file, tables.reduced_transition_table[i++]);
} }
end_row(file); end_row(file);
@ -1222,22 +1225,22 @@ render_fsm_table(FILE *file, FSM_Tables tables, char *group_name){
end_table(file); end_table(file);
} }
void static void
render_variable(FILE *file, char *type, char *variable, unsigned int x){ render_variable(FILE *file, char *type, char *variable, uint32_t x){
fprintf(file, "%s %s = %d;\n\n", type, variable, x); fprintf(file, "%s %s = %d;\n\n", type, variable, x);
} }
void static void
render_comment(FILE *file, char *comment){ render_comment(FILE *file, char *comment){
fprintf(file, "/*\n%s*/\n", comment); fprintf(file, "/*\n%s*/\n", comment);
} }
struct PP_Names{ typedef struct PP_Names{
unsigned char pp_state; uint8_t pp_state;
char *name; char *name;
}; } PP_Names;
PP_Names pp_names[] = { static PP_Names pp_names[] = {
{LSPP_default, "main_fsm"}, {LSPP_default, "main_fsm"},
{LSPP_include, "pp_include_fsm"}, {LSPP_include, "pp_include_fsm"},
{LSPP_macro_identifier, "pp_macro_fsm"}, {LSPP_macro_identifier, "pp_macro_fsm"},
@ -1249,22 +1252,22 @@ PP_Names pp_names[] = {
{LSPP_junk, "pp_junk_fsm"}, {LSPP_junk, "pp_junk_fsm"},
}; };
FSM_Tables static FSM_Tables
generate_table_from_abstract_fsm(FSM fsm, unsigned char real_term_base){ generate_table_from_abstract_fsm(FSM fsm, uint8_t real_term_base){
unsigned char state_count = (unsigned char)fsm.count; uint8_t state_count = (uint8_t )fsm.count;
FSM_Tables table; FSM_Tables table;
allocate_full_tables(&table, state_count); allocate_full_tables(&table, state_count);
int i = 0; int32_t i = 0;
unsigned int new_state; uint32_t new_state;
for (unsigned short c = 0; c < 256; ++c){ for (uint16_t c = 0; c < 256; ++c){
for (unsigned char state = 0; state < state_count; ++state){ for (uint8_t state = 0; state < state_count; ++state){
new_state = fsm.states[state].transition_rule[c]; new_state = fsm.states[state].transition_rule[c];
if (new_state >= RealTerminateBase){ if (new_state >= RealTerminateBase){
new_state = new_state - RealTerminateBase + real_term_base; new_state = new_state - RealTerminateBase + real_term_base;
} }
table.full_transition_table[i++] = (unsigned char)new_state; table.full_transition_table[i++] = (uint8_t)new_state;
} }
} }
@ -1284,28 +1287,28 @@ main(){
FSM_Tables itables = generate_int_table(); FSM_Tables itables = generate_int_table();
render_fsm_table(file, itables, "int_fsm"); render_fsm_table(file, itables, "int_fsm");
begin_table(file, "char", "multiline_state_table"); begin_table(file, "uint8_t", "multiline_state_table");
for (unsigned char state = 0; state < LS_count; ++state){ for (uint8_t state = 0; state < LS_count; ++state){
do_table_item(file, (state == LS_string_multiline || state == LS_char_multiline)); do_table_item(file, (state == LS_string_multiline || state == LS_char_multiline));
} }
end_row(file); end_row(file);
end_table(file); end_table(file);
for (int i = 0; i < ArrayCount(pp_names); ++i){ for (int32_t i = 0; i < ArrayCount(pp_names); ++i){
assert(i == pp_names[i].pp_state); assert(i == pp_names[i].pp_state);
FSM_Tables tables = generate_fsm_table(pp_names[i].pp_state); FSM_Tables tables = generate_fsm_table(pp_names[i].pp_state);
render_fsm_table(file, tables, pp_names[i].name); render_fsm_table(file, tables, pp_names[i].name);
} }
begin_ptr_table(file, "short", "get_eq_classes"); begin_ptr_table(file, "uint16_t", "get_eq_classes");
for (int i = 0; i < ArrayCount(pp_names); ++i){ for (int32_t i = 0; i < ArrayCount(pp_names); ++i){
do_table_item_direct(file, pp_names[i].name, "_eq_classes"); do_table_item_direct(file, pp_names[i].name, "_eq_classes");
end_row(file); end_row(file);
} }
end_table(file); end_table(file);
begin_ptr_table(file, "char", "get_table"); begin_ptr_table(file, "uint8_t", "get_table");
for (int i = 0; i < ArrayCount(pp_names); ++i){ for (int32_t i = 0; i < ArrayCount(pp_names); ++i){
do_table_item_direct(file, pp_names[i].name, "_table"); do_table_item_direct(file, pp_names[i].name, "_table");
end_row(file); end_row(file);
} }
@ -1315,9 +1318,9 @@ main(){
FSM_Tables pp_directive_tables = generate_table_from_abstract_fsm(pp_directive_fsm, 0); FSM_Tables pp_directive_tables = generate_table_from_abstract_fsm(pp_directive_fsm, 0);
render_fsm_table(file, pp_directive_tables, "pp_directive"); render_fsm_table(file, pp_directive_tables, "pp_directive");
render_variable(file, "unsigned char", "LSDIR_default", 0); render_variable(file, "uint8_t", "LSDIR_default", 0);
render_variable(file, "unsigned char", "LSDIR_count", pp_directive_fsm.count); render_variable(file, "uint8_t", "LSDIR_count", pp_directive_fsm.count);
render_variable(file, "unsigned char", "pp_directive_terminal_base", pp_directive_fsm.terminal_base); render_variable(file, "uint8_t", "pp_directive_terminal_base", pp_directive_fsm.terminal_base);
fclose(file); fclose(file);
return(0); return(0);

View File

@ -170,7 +170,7 @@ DOC_EXPORT /* DOC(This macro takes a local char array with a fixed width and use
an empty String with the correct size and memory size to operate on the array.) */ an empty String with the correct size and memory size to operate on the array.) */
#define make_fixed_width_string(s) (make_string_cap((char*)(s), 0, sizeof(s))) #define make_fixed_width_string(s) (make_string_cap((char*)(s), 0, sizeof(s)))
DOC_EXPORT /* DOC(This macro is a helper for any calls that take a char*,int pair to specify a DOC_EXPORT /* DOC(This macro is a helper for any calls that take a char*,integer pair to specify a
string. This macro expands to both of those parameters from one String struct.) */ string. This macro expands to both of those parameters from one String struct.) */
#define expand_str(s) ((s).str), ((s).size) #define expand_str(s) ((s).str), ((s).size)
@ -227,7 +227,7 @@ skip_whitespace(String str)
Like other substr calls, the new string uses the underlying memory and so should usually be Like other substr calls, the new string uses the underlying memory and so should usually be
considered immutable.) DOC_SEE(substr) */{ considered immutable.) DOC_SEE(substr) */{
String result = {0}; String result = {0};
int i = 0; int32_t i = 0;
for (; i < str.size && char_is_whitespace(str.str[i]); ++i); for (; i < str.size && char_is_whitespace(str.str[i]); ++i);
result = substr(str, i, str.size - i); result = substr(str, i, str.size - i);
return(result); return(result);
@ -239,7 +239,7 @@ chop_whitespace(String str)
Like other substr calls, the new string uses the underlying memory and so should usually be Like other substr calls, the new string uses the underlying memory and so should usually be
considered immutable.) DOC_SEE(substr) */{ considered immutable.) DOC_SEE(substr) */{
String result = {0}; String result = {0};
int i = str.size; int32_t i = str.size;
for (; i > 0 && char_is_whitespace(str.str[i-1]); --i); for (; i > 0 && char_is_whitespace(str.str[i-1]); --i);
result = substr(str, 0, i); result = substr(str, 0, i);
return(result); return(result);
@ -1452,13 +1452,13 @@ DOC(This call interprets s as a color and writes the 32-bit integer representati
uint32_t color = 0; uint32_t color = 0;
if (s.size == 6){ if (s.size == 6){
result = 1; result = 1;
color = (unsigned int)hexstr_to_int(s); color = (uint32_t)hexstr_to_int(s);
color |= (0xFF << 24); color |= (0xFF << 24);
*out = color; *out = color;
} }
else if (s.size == 8){ else if (s.size == 8){
result = 1; result = 1;
color = (unsigned int)hexstr_to_int(s); color = (uint32_t)hexstr_to_int(s);
*out = color; *out = color;
} }
return(result); return(result);

View File

@ -43,9 +43,9 @@ CUSTOM_COMMAND_SIG(load_lots_of_files){
String str = make_fixed_width_string(space); String str = make_fixed_width_string(space);
append_ss(&str, make_lit_string(LOTS_OF_FILES)); append_ss(&str, make_lit_string(LOTS_OF_FILES));
append_s_char(&str, '/'); append_s_char(&str, '/');
int size = str.size; int32_t size = str.size;
for (int i = 0; i < list.count; ++i, ++info){ for (int32_t i = 0; i < list.count; ++i, ++info){
if (!info->folder){ if (!info->folder){
append_ss(&str, make_string(info->filename, info->filename_len)); append_ss(&str, make_string(info->filename, info->filename_len));
Buffer_Summary buffer = app->create_buffer(app, str.str, str.size, Buffer_Summary buffer = app->create_buffer(app, str.str, str.size,

View File

@ -1,6 +1,6 @@
struct Custom_Vars{ struct Custom_Vars{
int initialized; int32_t initialized;
Partition part; Partition part;
}; };
@ -9,13 +9,13 @@ enum View_Mode{
}; };
struct View_Vars{ struct View_Vars{
int id; int32_t id;
View_Mode mode; View_Mode mode;
GUI_Scroll_Vars scroll; GUI_Scroll_Vars scroll;
i32_Rect scroll_region; i32_Rect scroll_region;
int buffer_id; int32_t buffer_id;
}; };
inline View_Vars inline View_Vars
view_vars_zero(){ view_vars_zero(){
@ -24,12 +24,12 @@ view_vars_zero(){
} }
extern "C" void extern "C" void
view_routine(Application_Links *app, int view_id){ view_routine(Application_Links *app, int32_t view_id){
Custom_Vars *vars = (Custom_Vars*)app->memory; Custom_Vars *vars = (Custom_Vars*)app->memory;
View_Vars view = {0}; View_Vars view = {0};
view.id = view_id; view.id = view_id;
int show_scrollbar = 1; int32_t show_scrollbar = 1;
if (!vars->initialized){ if (!vars->initialized){
vars->initialized = 1; vars->initialized = 1;

View File

@ -12,6 +12,7 @@
#include <stdlib.h> #include <stdlib.h>
#include <stdio.h> #include <stdio.h>
#include <time.h> #include <time.h>
#include <stdint.h>
char *header = char *header =
"Distribution Date: %d.%d.%d (dd.mm.yyyy)\n" "Distribution Date: %d.%d.%d (dd.mm.yyyy)\n"
@ -25,13 +26,13 @@ char *header =
; ;
typedef struct Readme_Variables{ typedef struct Readme_Variables{
int day, month, year; int32_t day, month, year;
} Readme_Variables; } Readme_Variables;
typedef struct File_Data{ typedef struct File_Data{
char *data; char *data;
int size; int32_t size;
int file_exists; int32_t file_exists;
} File_Data; } File_Data;
File_Data File_Data

View File

@ -86,7 +86,7 @@ show_reloc_block(Data file, DLL_Data *dll, PE_Section_Definition *reloc_section)
} }
} }
typedef int (Function)(int a, int b); typedef int32_t (Function)(int a, int b);
#include <Windows.h> #include <Windows.h>

View File

@ -15,13 +15,13 @@
# include "4coder_default_bindings.cpp" # include "4coder_default_bindings.cpp"
#endif #endif
#include "4ed_meta.h"
#define FSTRING_IMPLEMENTATION #define FSTRING_IMPLEMENTATION
#define FSTRING_C #define FSTRING_C
#include "4coder_string.h" #include "4coder_string.h"
#include "4ed_math.cpp" #include "4ed_meta.h"
#include "4ed_math.h"
#include "4ed_system.h" #include "4ed_system.h"
#include "4ed_rendering.h" #include "4ed_rendering.h"
@ -31,31 +31,22 @@
#include <GL/gl.h> #include <GL/gl.h>
#include <GL/glext.h> #include <GL/glext.h>
#include "filetrack/4tech_file_track.h"
#include "filetrack/4tech_file_track_win32.c" #include "filetrack/4tech_file_track_win32.c"
#include "system_shared.h" #include "system_shared.h"
#define SUPPORT_DPI 1 #define SUPPORT_DPI 1
#define USE_WIN32_FONTS 0
#define USE_FT_FONTS 1 #define USE_FT_FONTS 1
#define FPS 60 #define FPS 60
#define frame_useconds (1000000 / FPS) #define frame_useconds (1000000 / FPS)
#define WM_4coder_ANIMATE (WM_USER + 1) #define WM_4coder_ANIMATE (WM_USER + 0)
// //
// Win32_Vars structs // Win32_Vars structs
// //
#if FRED_INTERNAL
struct Debug_Log_Entry{
u64 time;
i64 message;
};
#endif
struct Thread_Context{ struct Thread_Context{
u32 job_id; u32 job_id;
b32 running; b32 running;
@ -78,13 +69,6 @@ struct Thread_Group{
i32 cancel_cv0; i32 cancel_cv0;
}; };
#define UseWinDll 1
#if UseWinDll == 0
#include "4ed_dll_reader.h"
#include "4ed_dll_reader.cpp"
#endif
struct Control_Keys{ struct Control_Keys{
b8 l_ctrl; b8 l_ctrl;
b8 r_ctrl; b8 r_ctrl;
@ -127,7 +111,7 @@ struct Win32_Input_Chunk{
struct Win32_Coroutine{ struct Win32_Coroutine{
Coroutine coroutine; Coroutine coroutine;
Win32_Coroutine *next; Win32_Coroutine *next;
int done; i32 done;
}; };
#if FRED_INTERNAL #if FRED_INTERNAL
@ -158,13 +142,8 @@ struct Win32_Vars{
System_Functions system; System_Functions system;
App_Functions app; App_Functions app;
Custom_API custom_api; Custom_API custom_api;
#if UseWinDll
HMODULE app_code; HMODULE app_code;
HMODULE custom; HMODULE custom;
#else
DLL_Loaded app_dll;
DLL_Loaded custom_dll;
#endif
Plat_Settings settings; Plat_Settings settings;
@ -1628,52 +1607,12 @@ Win32LoadAppCode(){
b32 result = 0; b32 result = 0;
App_Get_Functions *get_funcs = 0; App_Get_Functions *get_funcs = 0;
#if UseWinDll
win32vars.app_code = LoadLibraryA("4ed_app.dll"); win32vars.app_code = LoadLibraryA("4ed_app.dll");
if (win32vars.app_code){ if (win32vars.app_code){
get_funcs = (App_Get_Functions*) get_funcs = (App_Get_Functions*)
GetProcAddress(win32vars.app_code, "app_get_functions"); GetProcAddress(win32vars.app_code, "app_get_functions");
} }
#else
File_Data file = system_load_file("4ed_app.dll");
if (file.got_file){
i32 error;
DLL_Data dll_data;
if (dll_parse_headers(file.data, &dll_data, &error)){
Data img;
img.size = dll_total_loaded_size(&dll_data);
img.data = (byte*)
VirtualAlloc((LPVOID)Tbytes(3), img.size,
MEM_COMMIT | MEM_RESERVE,
PAGE_READWRITE);
dll_load(img, &win32vars.app_dll, file.data, &dll_data);
DWORD extra_;
VirtualProtect(img.data + win32vars.app_dll.text_start,
win32vars.app_dll.text_size,
PAGE_EXECUTE_READ,
&extra_);
get_funcs = (App_Get_Functions*)
dll_load_function(&win32vars.app_dll, "app_get_functions", 17);
}
else{
// TODO(allen): file loading error
}
Win32FreeMemory(file.data.data);
}
else{
// TODO(allen): file loading error
}
#endif
if (get_funcs){ if (get_funcs){
result = 1; result = 1;
win32vars.app = get_funcs(); win32vars.app = get_funcs();
@ -2085,7 +2024,7 @@ Win32Callback(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam){
win32vars.input_chunk.pers.mouse_r = 0; win32vars.input_chunk.pers.mouse_r = 0;
b8 *control_keys = win32vars.input_chunk.pers.control_keys; b8 *control_keys = win32vars.input_chunk.pers.control_keys;
for (int i = 0; i < MDFR_INDEX_COUNT; ++i) control_keys[i] = 0; for (i32 i = 0; i < MDFR_INDEX_COUNT; ++i) control_keys[i] = 0;
win32vars.input_chunk.pers.controls = control_keys_zero(); win32vars.input_chunk.pers.controls = control_keys_zero();
}break; }break;
@ -2149,7 +2088,7 @@ WinMain(HINSTANCE hInstance,
LPSTR lpCmdLine, LPSTR lpCmdLine,
int nCmdShow){ int nCmdShow){
int argc = __argc; i32 argc = __argc;
char **argv = __argv; char **argv = __argv;
memset(&win32vars, 0, sizeof(win32vars)); memset(&win32vars, 0, sizeof(win32vars));

View File

@ -63,7 +63,7 @@ DOC(TODO)
} }
API_EXPORT bool32 API_EXPORT bool32
File_Exists(Application_Links *app, char *filename, int len)/* File_Exists(Application_Links *app, char *filename, int32_t len)/*
DOC_PARAM(filename, This parameter specifies the full path to a file; it need not be null terminated.) DOC_PARAM(filename, This parameter specifies the full path to a file; it need not be null terminated.)
DOC_PARAM(len, This parameter specifies the length of the filename string.) DOC_PARAM(len, This parameter specifies the length of the filename string.)
DOC_RETURN(This call returns non-zero if and only if the file exists.) DOC_RETURN(This call returns non-zero if and only if the file exists.)
@ -91,7 +91,7 @@ DOC_RETURN(This call returns non-zero if and only if the file exists.)
} }
API_EXPORT bool32 API_EXPORT bool32
Directory_CD(Application_Links *app, char *dir, int *len, int capacity, char *rel_path, int rel_len)/* Directory_CD(Application_Links *app, char *dir, int32_t *len, int32_t capacity, char *rel_path, int32_t rel_len)/*
DOC_PARAM(dir, This parameter provides a character buffer that stores a directory; it need not be null terminated.) DOC_PARAM(dir, This parameter provides a character buffer that stores a directory; it need not be null terminated.)
DOC_PARAM(len, This parameter specifies the length of the dir string.) DOC_PARAM(len, This parameter specifies the length of the dir string.)
DOC_PARAM(capacity, This parameter specifies the maximum size of the dir string.) DOC_PARAM(capacity, This parameter specifies the maximum size of the dir string.)