diff options
| author | Matthias Melcher <git@matthiasm.com> | 2021-12-20 01:19:00 +0100 |
|---|---|---|
| committer | Matthias Melcher <github@matthiasm.com> | 2021-12-20 01:23:59 +0100 |
| commit | 0d435d51aca65f76702369a1a7d389ee0e31e1e2 (patch) | |
| tree | 1852658a6746459fc829a479059d3f8c2bb7738f /fluid | |
| parent | e8961f10b87290ce9a0b9efc1a0439760b3b2e60 (diff) | |
GitHub #328: removed stray ';' in Fluid code generation.
Diffstat (limited to 'fluid')
| -rw-r--r-- | fluid/Fl_Function_Type.cxx | 3 | ||||
| -rw-r--r-- | fluid/code.cxx | 24 |
2 files changed, 19 insertions, 8 deletions
diff --git a/fluid/Fl_Function_Type.cxx b/fluid/Fl_Function_Type.cxx index ab3672e23..a4ab673a0 100644 --- a/fluid/Fl_Function_Type.cxx +++ b/fluid/Fl_Function_Type.cxx @@ -994,9 +994,8 @@ void Fl_Decl_Type::write_code1() { const char* e = c+strlen(c), *csc = c; while (csc<e && (csc[0]!='/' || csc[1]!='/')) csc++; if (csc!=e) e = csc; // comment found - // lose all trailing semicolons so I can add one: + // lose spaces between text and comment, if any while (e>c && e[-1]==' ') e--; - while (e>c && e[-1]==';') e--; if (class_name(1)) { write_public(public_); write_comment_h(indent(1)); diff --git a/fluid/code.cxx b/fluid/code.cxx index d6b4bdc38..da40970bf 100644 --- a/fluid/code.cxx +++ b/fluid/code.cxx @@ -384,12 +384,20 @@ void write_c(const char* format,...) { /** Write code (c) of size (n) to C file, with optional comment (com) w/o trailing space. + if the code line does not end in a ';' or '}', a ';' will be added. + \param[in] indent indentation string for all lines + \param[in] n number of bytes in code line + \param[in] c line of code + \param[in] com optional commentary */ void write_cc(const char *indent, int n, const char *c, const char *com) { + write_c("%s%.*s", indent, n, c); + char cc = c[n-1]; + if (cc!='}' && cc!=';') + write_c(";"); if (*com) - write_c("%s%.*s; %s\n", indent, n, c, com); - else - write_c("%s%.*s;\n", indent, n, c); + write_c(" %s", com); + write_c("\n"); } /** @@ -406,16 +414,20 @@ void write_h(const char* format,...) { /** Write code (c) of size (n) to H file, with optional comment (com) w/o trailing space. + if the code line does not end in a ';' or '}', a ';' will be added. \param[in] indent indentation string for all lines \param[in] n number of bytes in code line \param[in] c line of code \param[in] com optional commentary */ void write_hc(const char *indent, int n, const char* c, const char *com) { + write_h("%s%.*s", indent, n, c); + char cc = c[n-1]; + if (cc!='}' && cc!=';') + write_h(";"); if (*com) - write_h("%s%.*s; %s\n", indent, n, c, com); - else - write_h("%s%.*s;\n", indent, n, c); + write_h(" %s", com); + write_h("\n"); } /** |
