diff --git a/4coder_API.html b/4coder_API.html new file mode 100644 index 00000000..75e6f58c --- /dev/null +++ b/4coder_API.html @@ -0,0 +1,145 @@ + + +4coder API Docs + + +

4coder API

+§1 Introduction

+
Coming Soon

+§2 Functions

+
+exec_command +
+
+exec_system_command +
+
+directory_get_hot +
+
+get_4ed_path +
+
+file_exists +
+
+directory_cd +
+
+get_file_list +
+
+free_file_list +
+
+clipboard_post +
+
+clipboard_count +
+
+clipboard_index +
+
+get_buffer_first +
+
+get_buffer_next +
+
+get_buffer +
+
+get_buffer_by_name +
+
+buffer_seek +
+
+buffer_read_range +
+
+buffer_replace_range +
+
+buffer_set_setting +
+
+buffer_auto_indent +
+
+create_buffer +
+
+save_buffer +
+
+kill_buffer +
+
+get_view_first +
+
+get_view_next +
+
+get_view +
+
+get_active_view +
+
+view_compute_cursor +
+
+view_set_cursor +
+
+view_set_mark +
+
+view_set_highlight +
+
+view_set_buffer +
+
+view_post_fade +
+
+view_set_paste_rewrite_ +
+
+view_get_paste_rewrite_ +
+
+get_user_input +
+
+get_command_input +
+
+get_mouse_state +
+
+start_query_bar +
+
+end_query_bar +
+
+print_message +
+
+change_theme +
+
+change_font +
+
+set_theme_colors +
+
+get_theme_colors +
+ diff --git a/4coder_custom_api.h b/4coder_custom_api.h index 7e5edd34..a2370492 100644 --- a/4coder_custom_api.h +++ b/4coder_custom_api.h @@ -35,11 +35,10 @@ #define VIEW_GET_PASTE_REWRITE__SIG(n) int n(Application_Links *app, View_Summary *view) #define GET_USER_INPUT_SIG(n) User_Input n(Application_Links *app, unsigned int get_type, unsigned int abort_type) #define GET_COMMAND_INPUT_SIG(n) User_Input n(Application_Links *app) -#define GET_EVENT_MESSAGE_SIG(n) Event_Message n(Application_Links *app) #define GET_MOUSE_STATE_SIG(n) Mouse_State n(Application_Links *app) #define START_QUERY_BAR_SIG(n) int n(Application_Links *app, Query_Bar *bar, unsigned int flags) #define END_QUERY_BAR_SIG(n) void n(Application_Links *app, Query_Bar *bar, unsigned int flags) -#define PRINT_MESSAGE_SIG(n) void n(Application_Links *app, char *string, int len) +#define PRINT_MESSAGE_SIG(n) void n(Application_Links *app, char *str, int len) #define CHANGE_THEME_SIG(n) void n(Application_Links *app, char *name, int len) #define CHANGE_FONT_SIG(n) void n(Application_Links *app, char *name, int len) #define SET_THEME_COLORS_SIG(n) void n(Application_Links *app, Theme_Color *colors, int count) @@ -82,7 +81,6 @@ extern "C"{ typedef VIEW_GET_PASTE_REWRITE__SIG(View_Get_Paste_Rewrite__Function); typedef GET_USER_INPUT_SIG(Get_User_Input_Function); typedef GET_COMMAND_INPUT_SIG(Get_Command_Input_Function); - typedef GET_EVENT_MESSAGE_SIG(Get_Event_Message_Function); typedef GET_MOUSE_STATE_SIG(Get_Mouse_State_Function); typedef START_QUERY_BAR_SIG(Start_Query_Bar_Function); typedef END_QUERY_BAR_SIG(End_Query_Bar_Function); @@ -132,7 +130,6 @@ struct Application_Links{ View_Get_Paste_Rewrite__Function *view_get_paste_rewrite_; Get_User_Input_Function *get_user_input; Get_Command_Input_Function *get_command_input; - Get_Event_Message_Function *get_event_message; Get_Mouse_State_Function *get_mouse_state; Start_Query_Bar_Function *start_query_bar; End_Query_Bar_Function *end_query_bar; @@ -184,7 +181,6 @@ app_links->view_set_paste_rewrite_ = external_view_set_paste_rewrite_;\ app_links->view_get_paste_rewrite_ = external_view_get_paste_rewrite_;\ app_links->get_user_input = external_get_user_input;\ app_links->get_command_input = external_get_command_input;\ -app_links->get_event_message = external_get_event_message;\ app_links->get_mouse_state = external_get_mouse_state;\ app_links->start_query_bar = external_start_query_bar;\ app_links->end_query_bar = external_end_query_bar;\ diff --git a/4coder_string.h b/4coder_string.h index 9ebac71a..506c7959 100644 --- a/4coder_string.h +++ b/4coder_string.h @@ -31,16 +31,16 @@ NOTES ON USE: #ifndef FRED_STRING_STRUCT #define FRED_STRING_STRUCT -struct String{ +typedef struct String{ char *str; int32_t size; int32_t memory_size; -}; +} String; -struct Offset_String{ +typedef struct Offset_String{ int32_t offset; int32_t size; -}; +} Offset_String; #endif #ifndef fstr_bool @@ -187,25 +187,29 @@ FSTRING_INLINE fstr_bool terminate_with_null(String *str){ FSTRING_LINK fstr_bool append_padding(String *dest, char c, int32_t target_size); -FSTRING_LINK int32_t compare(char *a, char *b); -FSTRING_LINK int32_t compare(String a, char *b); -FSTRING_INLINE int32_t compare(char *a, String b) { return -compare(b,a); } -FSTRING_LINK int32_t compare(String a, String b); +FSTRING_LINK int32_t compare(char *a, char *b); +FSTRING_LINK int32_t compare(String a, char *b); +FSTRING_INLINE int32_t compare(char *a, String b) { return -compare(b,a); } +FSTRING_LINK int32_t compare(String a, String b); + +FSTRING_LINK int32_t reverse_seek_slash(String str); +FSTRING_LINK int32_t reverse_seek_slash(String str, int32_t start_pos); +FSTRING_INLINE String front_of_directory(String dir) { return substr(dir, reverse_seek_slash(dir) + 1); } +FSTRING_INLINE String path_of_directory(String dir) { return substr(dir, 0, reverse_seek_slash(dir) + 1); } +FSTRING_INLINE fstr_bool get_front_of_directory(String *dest, String dir) { return append_checked(dest, front_of_directory(dir)); } +FSTRING_INLINE fstr_bool get_path_of_directory(String *dest, String dir) { return append_checked(dest, path_of_directory(dir)); } +FSTRING_LINK fstr_bool set_last_folder(String *dir, char *folder_name, char slash); +FSTRING_LINK fstr_bool set_last_folder(String *dir, String folder_name, char slash); +FSTRING_LINK String file_extension(String str); +FSTRING_LINK String file_extension_slowly(char *str); +FSTRING_LINK char * file_extension_c(String str); +FSTRING_LINK fstr_bool remove_last_folder(String *str); +FSTRING_LINK void replace_char(String str, char replace, char with); +FSTRING_LINK void replace_char(char *str, char replace, char with); + +// TODO(allen): Add hash-table extension to string sets. +FSTRING_LINK fstr_bool string_set_match(String *str_set, int32_t count, String str, int32_t *match_index); -FSTRING_LINK int32_t reverse_seek_slash(String str); -FSTRING_LINK int32_t reverse_seek_slash(String str, int32_t start_pos); -FSTRING_INLINE String front_of_directory(String dir) { return substr(dir, reverse_seek_slash(dir) + 1); } -FSTRING_INLINE String path_of_directory(String dir) { return substr(dir, 0, reverse_seek_slash(dir) + 1); } -FSTRING_INLINE fstr_bool get_front_of_directory(String *dest, String dir) { return append_checked(dest, front_of_directory(dir)); } -FSTRING_INLINE fstr_bool get_path_of_directory(String *dest, String dir) { return append_checked(dest, path_of_directory(dir)); } -FSTRING_LINK fstr_bool set_last_folder(String *dir, char *folder_name, char slash); -FSTRING_LINK fstr_bool set_last_folder(String *dir, String folder_name, char slash); -FSTRING_LINK String file_extension(String str); -FSTRING_LINK String file_extension_slowly(char *str); -FSTRING_LINK char * file_extension_c(String str); -FSTRING_LINK fstr_bool remove_last_folder(String *str); -FSTRING_LINK void replace_char(String str, char replace, char with); -FSTRING_LINK void replace_char(char *str, char replace, char with); FSTRING_INLINE String string_zero(){ String str={0}; @@ -1251,6 +1255,20 @@ replace_char(char *str, char replace, char with){ } } +FSTRING_LINK fstr_bool +string_set_match(String *str_set, int32_t count, String str, int32_t *match_index){ + fstr_bool result = false; + int32_t i = 0; + for (; i < count; ++i, ++str_set){ + if (match(*str_set, str)){ + *match_index = i; + result = true; + break; + } + } + return(result); +} + // NOTE(allen): experimental section, things below here are // not promoted to public API level yet. diff --git a/4ed_api_implementation.cpp b/4ed_api_implementation.cpp index 917d9377..6bc36bc0 100644 --- a/4ed_api_implementation.cpp +++ b/4ed_api_implementation.cpp @@ -1310,7 +1310,21 @@ VIEW_GET_PASTE_REWRITE__SIG(external_view_get_paste_rewrite_){ return(result); } -GET_USER_INPUT_SIG(external_get_user_input){ +GET_USER_INPUT_SIG(external_get_user_input)/* +DOC_PARAM(get_type, input type flag that specifies the types of inputs that should be returned) +DOC_PARAM(abort_type, input type flag that specifies the types of inputs that should cause an abort signal) +DOC_RETURN(returns a User_Input that describes an event passed to the command) +DOC +( +This call preempts the command. The command is resumed if either a get or abort condition +is met, or if another command is executed. If either the abort condition is met or another +command is executed an abort signal is returned. If an abort signal is ever returned the +command should finish execution without any more calls that preempt the command. +If a get condition is met the user input is returned +) +DOC_SEE(Input_Type_Flag) +DOC_SEE(User_Input) +*/{ Command_Data *cmd = (Command_Data*)app->cmd_context; System_Functions *system = cmd->system; Coroutine *coroutine = (Coroutine*)app->current_coroutine; @@ -1327,7 +1341,10 @@ GET_USER_INPUT_SIG(external_get_user_input){ return(result); } -GET_COMMAND_INPUT_SIG(external_get_command_input){ +GET_COMMAND_INPUT_SIG(external_get_command_input)/* +DOC_RETURN(returns the input that triggered the command in execution.) +DOC_SEE(User_Input) +*/{ Command_Data *cmd = (Command_Data*)app->cmd_context; User_Input result; @@ -1339,13 +1356,17 @@ GET_COMMAND_INPUT_SIG(external_get_command_input){ return(result); } -GET_MOUSE_STATE_SIG(external_get_mouse_state){ +GET_MOUSE_STATE_SIG(external_get_mouse_state)/* +DOC_RETURN(returns the current mouse state) +DOC_SEE(Mouse_State) +*/{ Command_Data *cmd = (Command_Data*)app->cmd_context; App_Vars *vars = cmd->vars; Mouse_State mouse = direct_get_mouse_state(&vars->available_input); return(mouse); } +#if 0 GET_EVENT_MESSAGE_SIG(external_get_event_message){ Event_Message message = {0}; System_Functions *system = (System_Functions*)app->system_links; @@ -1359,8 +1380,18 @@ GET_EVENT_MESSAGE_SIG(external_get_event_message){ return(message); } +#endif -START_QUERY_BAR_SIG(external_start_query_bar){ +START_QUERY_BAR_SIG(external_start_query_bar)/* +DOC_PARAM(bar, a pointer to the Query_Bar struct that defines the bar's contents) +DOC_PARAM(flags, not currently used) +DOC_RETURN(returns non-zero on success) +DOC +( +The memory pointed to by bar must remain valid until a call to end_query_bar or +until the command returns. +) +*/{ Command_Data *cmd = (Command_Data*)app->cmd_context; Query_Slot *slot = 0; View *vptr; @@ -1373,20 +1404,33 @@ START_QUERY_BAR_SIG(external_start_query_bar){ return(slot != 0); } -END_QUERY_BAR_SIG(external_end_query_bar){ +END_QUERY_BAR_SIG(external_end_query_bar)/* +DOC_PARAM(bar, a pointer to the Query_Bar struct to end) +DOC_PARAM(flags, not currently used) +DOC +( +bar must be a pointer previously passed to start_query_bar previously in the same command. +) +*/{ Command_Data *cmd = (Command_Data*)app->cmd_context; View *vptr; vptr = cmd->view; free_query_slot(&vptr->query_set, bar); } -PRINT_MESSAGE_SIG(external_print_message){ +PRINT_MESSAGE_SIG(external_print_message)/* +DOC_PARAM(str, the string to post to *messages*) +DOC_PARAM(len, the length of str string) +*/{ Command_Data *cmd = (Command_Data*)app->cmd_context; Models *models = cmd->models; - do_feedback_message(cmd->system, models, make_string(string, len)); + do_feedback_message(cmd->system, models, make_string(str, len)); } -CHANGE_THEME_SIG(external_change_theme){ +CHANGE_THEME_SIG(external_change_theme)/* +DOC_PARAM(name, the name of the built in theme to change to) +DOC_PARAM(len, the length of the name string) +*/{ Command_Data *cmd = (Command_Data*)app->cmd_context; Style_Library *styles = &cmd->models->styles; String theme_name = make_string(name, len); @@ -1403,7 +1447,10 @@ CHANGE_THEME_SIG(external_change_theme){ } } -CHANGE_FONT_SIG(external_change_font){ +CHANGE_FONT_SIG(external_change_font)/* +DOC_PARAM(name, the name of the built in font to change to) +DOC_PARAM(len, the length of the name string) +*/{ Command_Data *cmd = (Command_Data*)app->cmd_context; Font_Set *set = cmd->models->font_set; Style_Font *global_font = &cmd->models->global_font; @@ -1416,7 +1463,15 @@ CHANGE_FONT_SIG(external_change_font){ } } -SET_THEME_COLORS_SIG(external_set_theme_colors){ +SET_THEME_COLORS_SIG(external_set_theme_colors)/* +DOC_PARAM(colors, an array of color structs pairing differet style tags to color codes) +DOC_PARAM(count, the number of color structs in the colors array) +DOC +( +For each color struct in the array, the color in the style pallet is set to the color +code paired with the tag. +) +*/{ Command_Data *cmd = (Command_Data*)app->cmd_context; Style *style = main_style(cmd->models); @@ -1430,7 +1485,15 @@ SET_THEME_COLORS_SIG(external_set_theme_colors){ } } -GET_THEME_COLORS_SIG(external_get_theme_colors){ +GET_THEME_COLORS_SIG(external_get_theme_colors)/* +DOC_PARAM(colors, an array of color structs listing style tags to get color values for) +DOC_PARAM(count, the number of color structs in the colors array) +DOC +( +For each color struct in the array, the color field of the struct is filled with the +color from the specified color in the pallet. +) +*/{ Command_Data *cmd = (Command_Data*)app->cmd_context; Style *style = main_style(cmd->models); diff --git a/4ed_metagen.cpp b/4ed_metagen.cpp index 944cd501..176783f8 100644 --- a/4ed_metagen.cpp +++ b/4ed_metagen.cpp @@ -1,17 +1,24 @@ /* - * Mr. 4th Dimention - Allen Webster - * - * 25.02.2016 - * - * File editing view for 4coder - * - */ +* Mr. 4th Dimention - Allen Webster +* +* 25.02.2016 +* +* File editing view for 4coder +* +*/ // TOP +#include "4ed_meta.h" #define FCPP_STRING_IMPLEMENTATION #include "4coder_string.h" +#include "4cpp_types.h" +#include "4cpp_lexer_types.h" + +#define FCPP_LEXER_IMPLEMENTATION +#include "4cpp_lexer.h" + struct Struct_Field{ char *type; char *name; @@ -26,6 +33,15 @@ void to_lower(char *src, char *dst){ *dst = 0; } +void to_lower(String *str){ + char *c; + int i = 0; + int size = str->size; + for (c = str->str; i < size; ++c, ++i){ + *c = char_to_lower(*c); + } +} + void to_upper(char *src, char *dst){ char *c, ch; for (c = src; *c != 0; ++c){ @@ -35,6 +51,15 @@ void to_upper(char *src, char *dst){ *dst = 0; } +void to_upper(String *str){ + char *c; + int i = 0; + int size = str->size; + for (c = str->str; i < size; ++c, ++i){ + *c = char_to_upper(*c); + } +} + void to_camel(char *src, char *dst){ char *c, ch; int is_first = 1; @@ -303,13 +328,25 @@ char* generate_style(){ } ////////////////////////////////////////////////////////////////////////////////////////////////// -struct Function_Signature{ - String name; - String ret; - String args; - int valid; +struct Function_Set{ + String *name; + String *ret; + String *args; + + String *macros; + String *public_name; + + int *valid; }; +void +zero_index(Function_Set fnc_set, int sig_count){ + fnc_set.name [sig_count] = string_zero(); + fnc_set.ret [sig_count] = string_zero(); + fnc_set.args [sig_count] = string_zero(); + fnc_set.valid[sig_count] = 0; +} + String file_dump(char *filename){ String result = {0}; @@ -391,9 +428,71 @@ is_comment(String str){ return(result); } +struct Doc_Parse{ + Cpp_Token_Stack tokens; + String doc_string; +}; + +int +check_and_fix_docs(String *lexeme){ + int result = false; + + if (lexeme->size > 4){ + if (lexeme->str[0] == '/'){ + if (lexeme->str[1] == '*'){ + if (lexeme->str[lexeme->size - 2] == '*'){ + if (lexeme->str[lexeme->size - 1] == '/'){ + result = true; + lexeme->str += 2; + lexeme->size -= 4; + } + } + } + } + } + + return(result); +} + +static String +doc_note_string[] = { + make_lit_string("DOC_PARAM"), + make_lit_string("DOC_RETURN"), + make_lit_string("DOC"), + make_lit_string("DOC_SEE"), +}; + +void +perform_doc_parse(Doc_Parse *parse, String lexeme){ +#if 0 + int keep_parsing = true; + int pos = 0; + + do{ + String doc_note = doc_parse_identifier(lexeme, &pos); + if (doc_note.size == 0){ + keep_parsing = false; + } + else{ + if (string_set_match(doc_note_string, ArrayCount(doc_note_string), doc_note, &match)){ + + } + else{ + // TODO(allen): do warning + } + } + }while(keep_parsing); +#endif +} + char* generate_custom_headers(){ - char *filename = "4coder_custom_api.h"; +#define API_H "4coder_custom_api.h" +#define API_DOC "4coder_API.html" + + char *filename = API_H " & " API_DOC; + + // NOTE(allen): Header String data = file_dump("custom_api_spec.cpp"); int line_count = 0; @@ -404,8 +503,14 @@ generate_custom_headers(){ ++line_count; } - Function_Signature *sigs = - (Function_Signature*)malloc(sizeof(Function_Signature)*line_count); + Function_Set function_set = {0}; + + function_set.name = (String*)malloc((sizeof(String)*5 + sizeof(int))*line_count); + function_set.ret = function_set.name + line_count; + function_set.args = function_set.ret + line_count; + function_set.macros = function_set.args + line_count; + function_set.public_name = function_set.macros + line_count; + function_set.valid = (int*)(function_set.public_name + line_count); int max_name_size = 0; int sig_count = 0; @@ -421,85 +526,101 @@ generate_custom_headers(){ parse = chop_whitespace(parse); if (parse.size > 0){ if (!is_comment(parse)){ - Function_Signature *sig = sigs + sig_count; - memset(sig, 0, sizeof(*sig)); - - ++sig_count; + zero_index(function_set, sig_count); + int valid = false; int pos = find(parse, 0, ' '); - sig->ret = substr(parse, 0, pos); + function_set.ret[sig_count] = substr(parse, 0, pos); parse = substr(parse, pos); parse = skip_whitespace(parse); if (parse.size > 0){ pos = find(parse, 0, '('); - sig->name = substr(parse, 0, pos); - sig->name = chop_whitespace(sig->name); + + String name_string = substr(parse, 0, pos); + function_set.name[sig_count] = chop_whitespace(name_string); parse = substr(parse, pos); if (parse.size > 0){ char end = parse.str[parse.size - 1]; - int valid = true; + valid = true; switch (end){ case ')': - sig->args = parse; + function_set.args[sig_count] = parse; break; case ';': --parse.size; - sig->args = parse; + function_set.args[sig_count] = parse; break; default: valid = false; break; } - sig->valid = valid; + function_set.valid[sig_count] = valid; - if (max_name_size < sig->name.size){ - max_name_size = sig->name.size; + if (max_name_size < name_string.size){ + max_name_size = name_string.size; } } } - if (!sig->valid){ + if (!valid){ printf("custom_api_spec.cpp(%d) : generator warning : invalid function signature\n", line_count); } + + ++sig_count; } } } - FILE *file = fopen("4coder_custom_api.h", "wb"); - int buffer_size = max_name_size + 1; - char *name_buffer = (char*)malloc(buffer_size); + FILE *file = fopen(API_H, "wb"); for (int i = 0; i < sig_count; ++i){ - Function_Signature *sig = sigs + i; + String name_string = function_set.name[i]; + String *macro = function_set.macros + i; + String *public_name = function_set.public_name + i; - copy_fast_unsafe(name_buffer, sig->name); - name_buffer[sig->name.size] = 0; - to_upper(name_buffer, name_buffer); + macro->size = 0; + macro->memory_size = name_string.size+4; - fprintf(file, "#define %s_SIG(n) %.*s n%.*s\n", - name_buffer, - sig->ret.size, sig->ret.str, - sig->args.size, sig->args.str + macro->str = (char*)malloc(macro->memory_size); + copy(macro, name_string); + to_upper(macro); + append(macro, make_lit_string("_SIG")); + + + public_name->size = 0; + public_name->memory_size = name_string.size; + + public_name->str = (char*)malloc(public_name->memory_size); + copy(public_name, name_string); + to_lower(public_name); + } + + for (int i = 0; i < sig_count; ++i){ + String ret_string = function_set.ret[i]; + String args_string = function_set.args[i]; + String macro_string = function_set.macros[i]; + + fprintf(file, "#define %.*s(n) %.*s n%.*s\n", + macro_string.size, macro_string.str, + ret_string.size, ret_string.str, + args_string.size, args_string.str ); } fprintf(file, "extern \"C\"{\n"); for (int i = 0; i < sig_count; ++i){ - Function_Signature *sig = sigs + i; + String name_string = function_set.name[i]; + String macro_string = function_set.macros[i]; - copy_fast_unsafe(name_buffer, sig->name); - name_buffer[sig->name.size] = 0; - to_upper(name_buffer, name_buffer); - - fprintf(file, " typedef %s_SIG(%.*s_Function);\n", - name_buffer, - sig->name.size, sig->name.str); + fprintf(file, " typedef %.*s(%.*s_Function);\n", + macro_string.size, macro_string.str, + name_string.size, name_string.str); } fprintf(file, "}\n"); @@ -509,15 +630,12 @@ generate_custom_headers(){ " int memory_size;\n" ); for (int i = 0; i < sig_count; ++i){ - Function_Signature *sig = sigs + i; + String name_string = function_set.name[i]; + String public_string = function_set.public_name[i]; - copy_fast_unsafe(name_buffer, sig->name); - name_buffer[sig->name.size] = 0; - to_lower(name_buffer, name_buffer); - - fprintf(file, " %.*s_Function *%s;\n", - sig->name.size, sig->name.str, - name_buffer); + fprintf(file, " %.*s_Function *%.*s;\n", + name_string.size, name_string.str, + public_string.size, public_string.str); } fprintf(file, " void *cmd_context;\n" @@ -529,34 +647,106 @@ generate_custom_headers(){ fprintf(file, "#define FillAppLinksAPI(app_links) do{"); for (int i = 0; i < sig_count; ++i){ - Function_Signature *sig = sigs + i; - - copy_fast_unsafe(name_buffer, sig->name); - name_buffer[sig->name.size] = 0; - to_lower(name_buffer, name_buffer); + String public_string = function_set.public_name[i]; fprintf(file, "\\\n" - "app_links->%s = external_%s;", - name_buffer, name_buffer + "app_links->%.*s = external_%.*s;", + public_string.size, public_string.str, + public_string.size, public_string.str ); } fprintf(file, " } while(false)\n"); fclose(file); + // NOTE(allen): Documentation + String code_data[2]; + Doc_Parse parses[2]; + + code_data[0] = file_dump("4ed_api_implementation.cpp"); + code_data[1] = file_dump("win32_4ed.cpp"); + + for (int J = 0; J < 2; ++J){ + String *code = &code_data[J]; + Doc_Parse *parse = &parses[J]; + + // TODO(allen): KILL THIS FUCKIN' Cpp_File FUCKIN NONSENSE BULLSHIT!!!!! + Cpp_File file; + file.data = code->str; + file.size = code->size; + + parse->tokens = cpp_make_token_stack(512); + cpp_lex_file(file, &parse->tokens); + + int count = parse->tokens.count; + Cpp_Token *tokens = parse->tokens.tokens; + + Cpp_Token *token = tokens; + for (int i = 0; i < count; ++i, ++token){ + if (token->type == CPP_TOKEN_IDENTIFIER){ + String lexeme = make_string(file.data + token->start, token->size); + int match = 0; + if (string_set_match(function_set.macros, sig_count, lexeme, &match)){ + for (; i < count; ++i, ++token){ + if (token->type == CPP_TOKEN_COMMENT){ + lexeme = make_string(file.data + token->start, token->size); + if (check_and_fix_docs(&lexeme)){ + perform_doc_parse(parse, lexeme); + break; + } + } + } + } + } + } + } + + file = fopen(API_DOC, "wb"); + + fprintf(file, + "\n" + "\n" + "4coder API Docs\n" + "\n" + "\n" + "

4coder API

" + ); + + fprintf(file, + "

\n§1 Introduction

\n" + "
Coming Soon
"); + + fprintf(file, "

\n§2 Functions

\n"); + for (int i = 0; i < sig_count; ++i){ + String name = function_set.public_name[i]; + fprintf(file, + "
\n" + "%.*s\n" + "
\n", + name.size, name.str + ); + } + + fprintf(file, + "" + "\n" + ); + + fclose(file); + return(filename); } int main(){ - char *filename; - + char *filename = 0; + filename = generate_keycode_enum(); printf("gen success: %s\n", filename); - + filename = generate_style(); printf("gen success: %s\n", filename); - + filename = generate_custom_headers(); printf("gen success: %s\n", filename); } diff --git a/README.txt b/README.txt index 08d26851..b20da405 100644 --- a/README.txt +++ b/README.txt @@ -1,4 +1,4 @@ -Distribution Date: 23.6.2016 (dd.mm.yyyy) +Distribution Date: 24.6.2016 (dd.mm.yyyy) Thank you for contributing to the 4coder project! diff --git a/SUPERREADME.txt b/SUPERREADME.txt index 82aaf09e..ee386676 100644 --- a/SUPERREADME.txt +++ b/SUPERREADME.txt @@ -1,4 +1,4 @@ -Distribution Date: 23.6.2016 (dd.mm.yyyy) +Distribution Date: 24.6.2016 (dd.mm.yyyy) Thank you for contributing to the 4coder project! diff --git a/build.bat b/build.bat index 93eb7560..c398ad89 100644 --- a/build.bat +++ b/build.bat @@ -1,5 +1,14 @@ @echo off + +pushd ..\meta +REM cl %OPTS% ..\code\4ed_metagen.cpp /Zi /Femetagen +popd + +pushd ..\code +REM "..\meta\metagen" +popd + REM "build_exp.bat" /Zi "build_all.bat" /DFRED_SUPER /DFRED_INTERNAL /Zi REM "build_all.bat" /O2 /Zi diff --git a/custom_api_spec.cpp b/custom_api_spec.cpp index 101196e6..939f107b 100644 --- a/custom_api_spec.cpp +++ b/custom_api_spec.cpp @@ -56,21 +56,21 @@ void View_Set_Paste_Rewrite_(Application_Links *app, View_Summary *view); int View_Get_Paste_Rewrite_(Application_Links *app, View_Summary *view); // Directly get user input -User_Input Get_User_Input(Application_Links *app, unsigned int get_type, unsigned int abort_type); -User_Input Get_Command_Input(Application_Links *app); -Event_Message Get_Event_Message(Application_Links *app); -Mouse_State Get_Mouse_State(Application_Links *app); +User_Input Get_User_Input (Application_Links *app, unsigned int get_type, unsigned int abort_type); +User_Input Get_Command_Input (Application_Links *app); +Mouse_State Get_Mouse_State (Application_Links *app); +//Event_Message Get_Event_Message (Application_Links *app); // Queries and information display -int Start_Query_Bar(Application_Links *app, Query_Bar *bar, unsigned int flags); -void End_Query_Bar(Application_Links *app, Query_Bar *bar, unsigned int flags); -void Print_Message(Application_Links *app, char *string, int len); +int Start_Query_Bar (Application_Links *app, Query_Bar *bar, unsigned int flags); +void End_Query_Bar (Application_Links *app, Query_Bar *bar, unsigned int flags); +void Print_Message (Application_Links *app, char *str, int len); //GUI_Functions* Get_GUI_Functions(Application_Links *app); //GUI* Get_GUI(Application_Links *app, int view_id); // Color settings -void Change_Theme(Application_Links *app, char *name, int len); -void Change_Font(Application_Links *app, char *name, int len); -void Set_Theme_Colors(Application_Links *app, Theme_Color *colors, int count); -void Get_Theme_Colors(Application_Links *app, Theme_Color *colors, int count); +void Change_Theme (Application_Links *app, char *name, int len); +void Change_Font (Application_Links *app, char *name, int len); +void Set_Theme_Colors (Application_Links *app, Theme_Color *colors, int count); +void Get_Theme_Colors (Application_Links *app, Theme_Color *colors, int count); diff --git a/package.bat b/package.bat index f09b8923..5a193156 100644 --- a/package.bat +++ b/package.bat @@ -16,6 +16,7 @@ copy ..\build\4ed_app.pdb ..\current_dist\4coder\* copy ..\data\* ..\current_dist\4coder\* copy README.txt ..\current_dist\4coder\* copy TODO.txt ..\current_dist\4coder\* +copy 4coder_API.html ..\current_dist\4coder\* del ..\current_dist\SUPERREADME.txt del ..\current_dist\4coder\basic.cpp del ..\current_dist\4coder\.4coder_settings @@ -33,6 +34,7 @@ copy 4coder_*.cpp ..\current_dist_super\4coder\* copy README.txt ..\current_dist_super\4coder\* copy TODO.txt ..\current_dist_super\4coder\* copy SUPERREADME.txt ..\current_dist_super\4coder\* +copy 4coder_API.html ..\current_dist_super\4coder\* copy ..\current_dist\4coder\3rdparty\* ..\current_dist_super\4coder\3rdparty\* REM del ..\current_dist_super\4coder\*.pdb del ..\current_dist_super\4coder\*.lib