diff options
Diffstat (limited to 'fluid/nodes')
| -rw-r--r-- | fluid/nodes/Function_Node.cxx | 138 | ||||
| -rw-r--r-- | fluid/nodes/Function_Node.h | 48 |
2 files changed, 67 insertions, 119 deletions
diff --git a/fluid/nodes/Function_Node.cxx b/fluid/nodes/Function_Node.cxx index 66e425533..a05bba271 100644 --- a/fluid/nodes/Function_Node.cxx +++ b/fluid/nodes/Function_Node.cxx @@ -741,14 +741,6 @@ void CodeBlock_Node::write_code2(fld::io::Code_Writer& f) { Decl_Node Decl_Node::prototype; /** - Constructor. - */ -Decl_Node::Decl_Node() : - public_(0), - static_(1) -{ } - -/** Return 1 if this declaration and its parents are public. */ int Decl_Node::is_public() const @@ -911,21 +903,6 @@ void Decl_Node::write_code1(fld::io::Code_Writer& f) { Data_Node Data_Node::prototype; /** - Constructor. - */ -Data_Node::Data_Node() : - Decl_Node() -{ } - -/** - Destructor. - */ -Data_Node::~Data_Node() { - if (filename_) - free((void*)filename_); -} - -/** Create an empty inline data node. \param[in] strategy add after current or as last child \return new inline data node @@ -942,7 +919,7 @@ Node *Data_Node::make(Strategy strategy) { Data_Node *o = new Data_Node(); o->public_ = 1; o->static_ = 1; - o->filename_ = nullptr; + o->filename_.clear(); o->output_format_ = 0; o->name("myInlineData"); o->add(anchor, strategy); @@ -957,9 +934,9 @@ Node *Data_Node::make(Strategy strategy) { */ void Data_Node::write_properties(fld::io::Project_Writer &f) { Decl_Node::write_properties(f); - if (filename_) { + if (!filename().empty()) { f.write_string("filename"); - f.write_word(filename_); + f.write_word(filename().c_str()); } switch (output_format_) { case 1: f.write_string("textmode"); break; @@ -1005,14 +982,14 @@ void Data_Node::write_code1(fld::io::Code_Writer& f) { const char *message = nullptr; const char *c = name(); if (!c) return; - const char *fn = filename_; + std::string fn = filename(); char *data = nullptr; int nData = -1; int uncompressedDataSize = 0; // path should be set correctly already - if (filename_ && !f.write_codeview) { + if (!filename().empty() && !f.write_codeview) { Fluid.proj.enter_project_dir(); - FILE *f = fl_fopen(filename_, "rb"); + FILE *f = fl_fopen(filename().c_str(), "rb"); Fluid.proj.leave_project_dir(); if (!f) { message = "Can't include data from file. Can't open"; @@ -1036,7 +1013,8 @@ void Data_Node::write_code1(fld::io::Code_Writer& f) { fclose(f); } } else { - fn = filename_ ? filename_ : "<no filename>"; + if (filename().empty()) + fn = "<no filename>"; } if (is_in_class()) { f.write_public(public_); @@ -1045,13 +1023,13 @@ void Data_Node::write_code1(fld::io::Code_Writer& f) { write_comment_c(f); if (output_format_ == 1) { f.write_h("%sstatic const char *%s;\n", f.indent(1), c); - f.write_c("const char *%s::%s = /* text inlined from %s */\n", class_name(1), c, fn); + f.write_c("const char *%s::%s = /* text inlined from %s */\n", class_name(1), c, fn.c_str()); } else { f.write_h_once("#include <string>"); f.write_h("%sstatic const std::string %s;\n", f.indent(1), c); - f.write_c("const std::string %s::%s = /* text inlined from %s */\n", class_name(1), c, fn); + f.write_c("const std::string %s::%s = /* text inlined from %s */\n", class_name(1), c, fn.c_str()); } - if (message) f.write_c("#error %s %s\n", message, fn); + if (message) f.write_c("#error %s %s\n", message, fn.c_str()); f.write_cstring(data, nData); } else if ((output_format_ == 2) || (output_format_ == 5)) { f.write_h("%sstatic int %s_size;\n", f.indent(1), c); @@ -1060,28 +1038,28 @@ void Data_Node::write_code1(fld::io::Code_Writer& f) { f.write_c("int %s::%s_size = %d;\n", class_name(1), c, uncompressedDataSize); if (output_format_ == 2) { f.write_h("%sstatic unsigned char %s[%d];\n", f.indent(1), c, nData); - f.write_c("unsigned char %s::%s[%d] = /* data compressed and inlined from %s */\n", class_name(1), c, nData, fn); + f.write_c("unsigned char %s::%s[%d] = /* data compressed and inlined from %s */\n", class_name(1), c, nData, fn.c_str()); } else { f.write_h_once("#include <stdint.h>"); f.write_h_once("#include <vector>"); f.write_h("%sstatic std::vector<uint8_t> %s;\n", f.indent(1), c); - f.write_c("std::vector<uint8_t> %s::%s = /* data compressed and inlined from %s */\n", class_name(1), c, fn); + f.write_c("std::vector<uint8_t> %s::%s = /* data compressed and inlined from %s */\n", class_name(1), c, fn.c_str()); } - if (message) f.write_c("#error %s %s\n", message, fn); + if (message) f.write_c("#error %s %s\n", message, fn.c_str()); f.write_cdata(data, nData); } else { f.write_c("\n"); write_comment_c(f); if (output_format_ == 0) { f.write_h("%sstatic unsigned char %s[%d];\n", f.indent(1), c, nData); - f.write_c("unsigned char %s::%s[%d] = /* data inlined from %s */\n", class_name(1), c, nData, fn); + f.write_c("unsigned char %s::%s[%d] = /* data inlined from %s */\n", class_name(1), c, nData, fn.c_str()); } else { f.write_h_once("#include <stdint.h>"); f.write_h_once("#include <vector>"); f.write_h("%sstatic std::vector<uint8_t> %s;\n", f.indent(1), c); - f.write_c("std::vector<uint8_t> %s::%s = /* data inlined from %s */\n", class_name(1), c, fn); + f.write_c("std::vector<uint8_t> %s::%s = /* data inlined from %s */\n", class_name(1), c, fn.c_str()); } - if (message) f.write_c("#error %s %s\n", message, fn); + if (message) f.write_c("#error %s %s\n", message, fn.c_str()); f.write_cdata(data, nData); } f.write_c(";\n"); @@ -1094,13 +1072,13 @@ void Data_Node::write_code1(fld::io::Code_Writer& f) { write_comment_c(f); if (output_format_ == 1) { f.write_h("extern const char *%s;\n", c); - f.write_c("const char *%s = /* text inlined from %s */\n", c, fn); + f.write_c("const char *%s = /* text inlined from %s */\n", c, fn.c_str()); } else { f.write_h_once("#include <string>"); f.write_h("extern const std::string %s;\n", c); - f.write_c("const std::string %s = /* text inlined from %s */\n", c, fn); + f.write_c("const std::string %s = /* text inlined from %s */\n", c, fn.c_str()); } - if (message) f.write_c("#error %s %s\n", message, fn); + if (message) f.write_c("#error %s %s\n", message, fn.c_str()); f.write_cstring(data, nData); } else if ((output_format_ == 2) || (output_format_ == 5)) { f.write_h("extern int %s_size;\n", c); @@ -1109,34 +1087,34 @@ void Data_Node::write_code1(fld::io::Code_Writer& f) { f.write_c("int %s_size = %d;\n", c, uncompressedDataSize); if (output_format_ == 2) { f.write_h("extern unsigned char %s[%d];\n", c, nData); - f.write_c("unsigned char %s[%d] = /* data compressed and inlined from %s */\n", c, nData, fn); + f.write_c("unsigned char %s[%d] = /* data compressed and inlined from %s */\n", c, nData, fn.c_str()); } else { f.write_h_once("#include <stdint.h>"); f.write_h_once("#include <vector>"); f.write_h("extern std::vector<uint8_t> %s;\n", c); - f.write_c("std::vector<uint8_t> %s = /* data compressed and inlined from %s */\n", c, fn); + f.write_c("std::vector<uint8_t> %s = /* data compressed and inlined from %s */\n", c, fn.c_str()); } - if (message) f.write_c("#error %s %s\n", message, fn); + if (message) f.write_c("#error %s %s\n", message, fn.c_str()); f.write_cdata(data, nData); } else { f.write_c("\n"); write_comment_c(f); if (output_format_ == 0) { f.write_h("extern unsigned char %s[%d];\n", c, nData); - f.write_c("unsigned char %s[%d] = /* data inlined from %s */\n", c, nData, fn); + f.write_c("unsigned char %s[%d] = /* data inlined from %s */\n", c, nData, fn.c_str()); } else { f.write_h_once("#include <stdint.h>"); f.write_h_once("#include <vector>"); f.write_h("extern std::vector<uint8_t> %s;\n", c); - f.write_c("std::vector<uint8_t> %s = /* data inlined from %s */\n", c, fn); + f.write_c("std::vector<uint8_t> %s = /* data inlined from %s */\n", c, fn.c_str()); } - if (message) f.write_c("#error %s %s\n", message, fn); + if (message) f.write_c("#error %s %s\n", message, fn.c_str()); f.write_cdata(data, nData); } f.write_c(";\n"); } else { write_comment_h(f); - f.write_h("#error Unsupported declaration loading inline data %s\n", fn); + f.write_h("#error Unsupported declaration loading inline data %s\n", fn.c_str()); if (output_format_ == 1) f.write_h("const char *%s = \"abc...\";\n", c); else @@ -1148,39 +1126,39 @@ void Data_Node::write_code1(fld::io::Code_Writer& f) { if ((output_format_ == 1) || (output_format_ == 4)) { if (output_format_ == 1) { if (static_) f.write_c("static "); - f.write_c("const char *%s = /* text inlined from %s */\n", c, fn); + f.write_c("const char *%s = /* text inlined from %s */\n", c, fn.c_str()); } else { f.write_c_once("#include <string>"); if (static_) f.write_c("static "); - f.write_c("const std::string %s = /* text inlined from %s */\n", c, fn); + f.write_c("const std::string %s = /* text inlined from %s */\n", c, fn.c_str()); } - if (message) f.write_c("#error %s %s\n", message, fn); + if (message) f.write_c("#error %s %s\n", message, fn.c_str()); f.write_cstring(data, nData); } else if ((output_format_ == 2) || (output_format_ == 5)) { if (static_) f.write_c("static "); f.write_c("int %s_size = %d;\n", c, uncompressedDataSize); if (output_format_ == 2) { if (static_) f.write_c("static "); - f.write_c("unsigned char %s[%d] = /* data compressed and inlined from %s */\n", c, nData, fn); + f.write_c("unsigned char %s[%d] = /* data compressed and inlined from %s */\n", c, nData, fn.c_str()); } else { f.write_c_once("#include <stdint.h>"); f.write_c_once("#include <vector>"); if (static_) f.write_c("static "); - f.write_c("std::vector<uint8_t> %s = /* data compressed and inlined from %s */\n", c, fn); + f.write_c("std::vector<uint8_t> %s = /* data compressed and inlined from %s */\n", c, fn.c_str()); } - if (message) f.write_c("#error %s %s\n", message, fn); + if (message) f.write_c("#error %s %s\n", message, fn.c_str()); f.write_cdata(data, nData); } else { if (output_format_ == 0) { if (static_) f.write_c("static "); - f.write_c("unsigned char %s[%d] = /* data inlined from %s */\n", c, nData, fn); + f.write_c("unsigned char %s[%d] = /* data inlined from %s */\n", c, nData, fn.c_str()); } else { f.write_c_once("#include <stdint.h>"); f.write_c_once("#include <vector>"); if (static_) f.write_c("static "); - f.write_c("std::vector<uint8_t> %s = /* data inlined from %s */\n", c, fn); + f.write_c("std::vector<uint8_t> %s = /* data inlined from %s */\n", c, fn.c_str()); } - if (message) f.write_c("#error %s %s\n", message, fn); + if (message) f.write_c("#error %s %s\n", message, fn.c_str()); f.write_cdata(data, nData); } f.write_c(";\n"); @@ -1190,17 +1168,13 @@ void Data_Node::write_code1(fld::io::Code_Writer& f) { // giving the error: (Fluid.batch_mode && !write_codeview) ??? if (message && !f.write_codeview) { if (Fluid.batch_mode) - fprintf(stderr, "FLUID ERROR: %s %s\n", message, fn); + fprintf(stderr, "FLUID ERROR: %s %s\n", message, fn.c_str()); else - fl_alert("%s\n%s\n", message, fn); + fl_alert("%s\n%s\n", message, fn.c_str()); } if (data) free(data); } -void Data_Node::filename(const char* fn) { - storestring(fn, filename_); -} - // ---- DeclBlock_Node declaration @@ -1216,19 +1190,6 @@ void Data_Node::filename(const char* fn) { DeclBlock_Node DeclBlock_Node::prototype; /** - Constructor. - */ -DeclBlock_Node::DeclBlock_Node() -: Node() -{ } - -/** - Destructor. - */ -DeclBlock_Node::~DeclBlock_Node() { -} - -/** Return 1 if this block is public. */ int DeclBlock_Node::is_public() const { @@ -1363,15 +1324,6 @@ void DeclBlock_Node::write_code2(fld::io::Code_Writer& f) { Comment_Node Comment_Node::prototype; /** - Constructor. - */ -Comment_Node::Comment_Node() : - in_c_(1), - in_h_(1), - style_(0) -{ } - -/** Make a new comment node. \param[in] strategy add after current or as last child \return new Comment node @@ -1505,20 +1457,6 @@ void Comment_Node::write_code1(fld::io::Code_Writer& f) { Class_Node Class_Node::prototype; /** - Constructor. - */ -Class_Node::Class_Node() : - Node(), - public_(1) -{ } - -/** - Destructor. - */ -Class_Node::~Class_Node() { -} - -/** Return 1 if this class is marked public. */ int Class_Node::is_public() const { diff --git a/fluid/nodes/Function_Node.h b/fluid/nodes/Function_Node.h index c35a26705..4196c202a 100644 --- a/fluid/nodes/Function_Node.h +++ b/fluid/nodes/Function_Node.h @@ -144,12 +144,15 @@ class Decl_Node : public Node public: typedef Node super; static Decl_Node prototype; + protected: - char public_; // public = 0, private = 1, protected = 2 - char static_; + char public_ = 0; // public = 0, private = 1, protected = 2 + char static_ = 1; public: - Decl_Node(); + Decl_Node() = default; + ~Decl_Node() override = default; + Node *make(Strategy strategy) override; void write_code1(fld::io::Code_Writer& f) override; void write_code2(fld::io::Code_Writer& f) override { } @@ -174,12 +177,13 @@ public: typedef Decl_Node super; static Data_Node prototype; private: - const char *filename_ { nullptr }; + std::string filename_; int output_format_ { 0 }; public: - Data_Node(); - ~Data_Node(); + Data_Node() = default; + ~Data_Node() override = default; + Node *make(Strategy strategy) override; void write_code1(fld::io::Code_Writer& f) override; void write_code2(fld::io::Code_Writer& f) override {} @@ -189,8 +193,8 @@ public: void read_property(fld::io::Project_Reader &f, const char *) override; Type type() const override { return Type::Data; } bool is_a(Type inType) const override { return (inType==Type::Data) ? true : super::is_a(inType); } - void filename(const char* fn); - const char* filename() { return filename_; } + void filename(const std::string& fn) { storestring(fn, filename_); } + std::string filename() { return filename_; } int output_format() { return output_format_; } void output_format(int fmt) { output_format_ = fmt; } }; @@ -210,12 +214,13 @@ public: }; private: - std::string end_code_; ///< code after all children of this block - int write_map_ { CODE_IN_SOURCE }; ///< see enum above + std::string end_code_; ///< code after all children of this block + int write_map_ = CODE_IN_SOURCE; ///< see enum above public: - DeclBlock_Node(); - ~DeclBlock_Node(); + DeclBlock_Node() = default; + ~DeclBlock_Node() override = default; + Node *make(Strategy strategy) override; void write_static(fld::io::Code_Writer& f) override; void write_static_after(fld::io::Code_Writer& f) override; @@ -245,10 +250,14 @@ public: static Comment_Node prototype; private: - char in_c_, in_h_, style_; + char in_c_ = 1; + char in_h_ = 1; + char style_ = 0; public: - Comment_Node(); + Comment_Node() = default; + ~Comment_Node() override = default; + Node *make(Strategy strategy) override; void write_code1(fld::io::Code_Writer& f) override; void write_code2(fld::io::Code_Writer& f) override { } @@ -276,14 +285,16 @@ public: private: std::string base_class_; std::string prefix_; - char public_; + char public_ = 1; public: - Class_Node(); - ~Class_Node(); - // state variables for output: + Class_Node() = default; + ~Class_Node() override = default; + + // State variables used when writing code to file char write_public_state; // true when public: has been printed Class_Node* parent_class; // save class if nested + Node *make(Strategy strategy) override; void write_code1(fld::io::Code_Writer& f) override; void write_code2(fld::io::Code_Writer& f) override; @@ -306,7 +317,6 @@ public: char visibility() { return public_; } void visibility(char v) { public_ = v; } - // class prefix attribute access /** Get the text between `class` and the class name */ std::string prefix() const { return prefix_; } /** Set the text between `class` and the class name */ |
