diff options
| author | Matthias Melcher <github@matthiasm.com> | 2023-10-26 23:31:12 +0200 |
|---|---|---|
| committer | Matthias Melcher <github@matthiasm.com> | 2023-10-26 23:31:29 +0200 |
| commit | 0b408792c083eb64a5ca737bdbcb30b1d64042e9 (patch) | |
| tree | 51b791729ea8be5bb741088cba12c24a9c4034c5 /fluid/code.h | |
| parent | 8663b867497de6d370b9c8376c4bdfc909744663 (diff) | |
FLUID: Refactors MergeBack
* moved functionality into its own files
* refactored all methods to be less than a page
* documented all calls
* tested all situations I could think of
Diffstat (limited to 'fluid/code.h')
| -rw-r--r-- | fluid/code.h | 38 |
1 files changed, 22 insertions, 16 deletions
diff --git a/fluid/code.h b/fluid/code.h index 68b225183..65f6170b4 100644 --- a/fluid/code.h +++ b/fluid/code.h @@ -31,31 +31,32 @@ struct Fd_Pointer_Tree; int is_id(char c); int write_strings(const Fl_String &filename); -const int FD_TAG_GENERIC = 0; -const int FD_TAG_CODE = 1; -const int FD_TAG_MENU_CALLBACK = 2; -const int FD_TAG_WIDGET_CALLBACK = 3; -const int FD_TAG_LAST = 3; - -const int FD_MERGEBACK_CHECK = 0; -const int FD_MERGEBACK_INTERACTIVE = 1; -const int FD_MERGEBACK_GO = 2; -const int FD_MERGEBACK_GO_SAFE = 3; - class Fd_Code_Writer { protected: + /// file pointer for the C++ code file FILE *code_file; + /// file pointer for the C++ header file FILE *header_file; + + /// tree of unique but human-readable identifiers Fd_Identifier_Tree* id_root; + /// searchable text tree for text that is only written once to the header file Fd_Text_Tree *text_in_header; + /// searchable text tree for text that is only written once to the code file Fd_Text_Tree *text_in_code; + /// searchable tree for pointers that are only written once to the code file Fd_Pointer_Tree *ptr_in_code; + /// crc32 for blocks of text written to the code file unsigned long block_crc_; + /// if set, we are at the start of a line and can ignore leading spaces in crc + bool block_line_start_; + /// expanding buffer for vsnprintf char *block_buffer_; + /// size of expanding buffer for vsnprintf int block_buffer_size_; - bool block_line_start_; + void crc_add(const void *data, int n=-1); int crc_printf(const char *format, ...); int crc_vprintf(const char *format, va_list args); @@ -63,19 +64,25 @@ protected: int crc_putc(int c); public: + /// current level of source code indentation int indentation; + /// set if we write abbreviated file for the source code previewer + /// (disables binary data blocks, for example) bool write_sourceview; - // silly thing to prevent declaring unused variables: - // When this symbol is on, all attempts to write code don't write - // anything, but set a variable if it looks like the variable "o" is used: + /// silly thing to prevent declaring unused variables: + /// When this symbol is on, all attempts to write code don't write + /// anything, but set a variable if it looks like the variable "o" is used: int varused_test; + /// set to 1 if varused_test found that a variable is actually used int varused; public: Fd_Code_Writer(); ~Fd_Code_Writer(); const char* unique_id(void* o, const char*, const char*, const char*); + /// Increment source code indentation level. void indent_more() { indentation++; } + /// Decrement source code indentation level. void indent_less() { indentation--; } const char *indent(); const char *indent(int set); @@ -97,7 +104,6 @@ public: void write_public(int state); // writes pubic:/private: as needed void tag(int type, unsigned short uid); - int merge_back(const char *s, int task); static unsigned long block_crc(const void *data, int n=-1, unsigned long in_crc=0, bool *inout_line_start=NULL); }; |
