mirror of
https://github.com/fltk/fltk.git
synced 2026-05-24 00:06:20 +08:00
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
This commit is contained in:
+23
-17
@@ -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_;
|
||||
char *block_buffer_;
|
||||
int block_buffer_size_;
|
||||
/// 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_;
|
||||
|
||||
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);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user