diff options
| author | Michael R Sweet <michael.r.sweet@gmail.com> | 2006-07-27 19:26:11 +0000 |
|---|---|---|
| committer | Michael R Sweet <michael.r.sweet@gmail.com> | 2006-07-27 19:26:11 +0000 |
| commit | d9eecaf4ab21a39b37eaf5f13bba523a61559781 (patch) | |
| tree | 48943f84e5cc65aa86331df002cb2af986fd870d | |
| parent | 0043e7a44daa1b910d82d37a20c23b2b11245ed3 (diff) | |
Fix problems with new FLUID output, add common to closing braces to show
what widget is being closed, and bump the version number to 1.1.8 in the
repo...
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@5271 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
| -rw-r--r-- | FL/Enumerations.H | 2 | ||||
| -rw-r--r-- | configure.in | 2 | ||||
| -rw-r--r-- | fluid/Fl_Function_Type.cxx | 12 | ||||
| -rw-r--r-- | fluid/Fl_Widget_Type.cxx | 47 | ||||
| -rw-r--r-- | fluid/Fl_Window_Type.cxx | 2 | ||||
| -rw-r--r-- | fluid/code.cxx | 19 | ||||
| -rw-r--r-- | test/Makefile | 38 |
7 files changed, 75 insertions, 47 deletions
diff --git a/FL/Enumerations.H b/FL/Enumerations.H index 7e8127393..257af0eb7 100644 --- a/FL/Enumerations.H +++ b/FL/Enumerations.H @@ -47,7 +47,7 @@ #define FL_MAJOR_VERSION 1 #define FL_MINOR_VERSION 1 -#define FL_PATCH_VERSION 7 +#define FL_PATCH_VERSION 8 #define FL_VERSION ((double)FL_MAJOR_VERSION + \ (double)FL_MINOR_VERSION * 0.01 + \ (double)FL_PATCH_VERSION * 0.0001) diff --git a/configure.in b/configure.in index 2249ee909..61a9a8986 100644 --- a/configure.in +++ b/configure.in @@ -36,7 +36,7 @@ AC_INIT(src/Fl.cxx) dnl FLTK library versions... FL_MAJOR_VERSION=1 FL_MINOR_VERSION=1 -FL_PATCH_VERSION=7 +FL_PATCH_VERSION=8 FL_API_VERSION=${FL_MAJOR_VERSION}.${FL_MINOR_VERSION} AC_SUBST(FL_MAJOR_VERSION) diff --git a/fluid/Fl_Function_Type.cxx b/fluid/Fl_Function_Type.cxx index 6638c235d..4805f0a68 100644 --- a/fluid/Fl_Function_Type.cxx +++ b/fluid/Fl_Function_Type.cxx @@ -340,15 +340,15 @@ void Fl_Function_Type::write_code1() { } void Fl_Function_Type::write_code2() { + Fl_Type *child; + const char *var = "w"; + for (child = next; child && child->level > level; child = child->next) + if (child->is_window() && child->name()) var = child->name(); + if (ismain()) { - if (havewidgets) write_c(" w->show(argc, argv);\n"); + if (havewidgets) write_c(" %s->show(argc, argv);\n", var); write_c(" return Fl::run();\n"); } else if (havewidgets && !constructor && !return_type) { - Fl_Type *child; - const char *var = "w"; - for (child = next; child && child->level > level; child = child->next) - if (child->is_window() && child->name()) var = child->name(); - write_c(" return %s;\n", var); } write_c("}\n"); diff --git a/fluid/Fl_Widget_Type.cxx b/fluid/Fl_Widget_Type.cxx index b5f7441dc..c91e1c311 100644 --- a/fluid/Fl_Widget_Type.cxx +++ b/fluid/Fl_Widget_Type.cxx @@ -1941,6 +1941,8 @@ const char *Fl_Type::callback_name() { return unique_id(this, "cb", name(), label()); } +extern int varused_test, varused; + void Fl_Widget_Type::write_code1() { const char* t = subclassname(this); const char *c = array_name(this); @@ -1958,23 +1960,34 @@ void Fl_Widget_Type::write_code1() { write_h(" static void %s(%s*, %s);\n", cn, t, ut); } // figure out if local variable will be used (prevent compiler warnings): - int oused = !name(); int wused = !name() && is_window(); const char *ptr; - if (!oused) { + varused = wused; + + if (!name() && !varused) { + varused |= is_parent(); + + if (!varused) { + varused_test = 1; + write_widget_code(); + varused_test = 0; + } + } + + if (!varused) { for (int n=0; n < NUM_EXTRA_CODE; n++) if (extra_code(n) && !isdeclare(extra_code(n)) && (ptr = strstr(extra_code(n), "o->")) != NULL && (ptr == extra_code(n) || (!isalnum(ptr[-1] & 255) && ptr[-1] != '_'))) { - oused = 1; + varused = 1; break; } } - write_c(indent()); - if (oused) write_c("{ %s* o = ", t); + write_c("%s{ ", indent()); + if (varused) write_c("%s* o = ", t); if (name()) write_c("%s = ", name()); if (is_window()) { // Handle special case where user is faking a Fl_Group type as a window, @@ -2007,10 +2020,10 @@ void Fl_Widget_Type::write_code1() { } write_c(");\n"); - if (oused) - indentation += 2; + indentation += 2; if (wused) write_c("%sw = o;\n", indent()); + write_widget_code(); } @@ -2195,23 +2208,9 @@ void Fl_Widget_Type::write_extra_code() { } void Fl_Widget_Type::write_block_close() { - int oused = !name(); - const char *ptr; - - if (!oused) { - for (int n=0; n < NUM_EXTRA_CODE; n++) - if (extra_code(n) && !isdeclare(extra_code(n)) && - (ptr = strstr(extra_code(n), "o->")) != NULL && - (ptr == extra_code(n) || - (!isalnum(ptr[-1] & 255) && ptr[-1] != '_'))) { - oused = 1; - break; - } - } - if (oused) { - indentation -= 2; - write_c("%s}\n", indent()); - } + indentation -= 2; + write_c("%s} // %s* %s\n", indent(), subclassname(this), + name() ? name() : "o"); } void Fl_Widget_Type::write_code2() { diff --git a/fluid/Fl_Window_Type.cxx b/fluid/Fl_Window_Type.cxx index b9a7f8188..00f9e22a3 100644 --- a/fluid/Fl_Window_Type.cxx +++ b/fluid/Fl_Window_Type.cxx @@ -1299,7 +1299,7 @@ void Fl_Window_Type::write_code2() { } write_c("%s%s->end();\n", indent(), var); if (((Fl_Window*)o)->resizable() == o) - write_c("%s%s->resizable(o);\n", indent(), var); + write_c("%s%s->resizable(%s);\n", indent(), var, var); write_block_close(); } diff --git a/fluid/code.cxx b/fluid/code.cxx index 597f77ef3..df23e3a75 100644 --- a/fluid/code.cxx +++ b/fluid/code.cxx @@ -153,8 +153,18 @@ int write_declare(const char *format, ...) { //////////////////////////////////////////////////////////////// +// 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; +int varused; + // write an array of C characters (adds a null): void write_cstring(const char *w, int length) { + if (varused_test) { + varused = 1; + return; + } const char *e = w+length; int linelength = 1; putc('\"', code_file); @@ -221,6 +231,10 @@ void write_cstring(const char *w) {write_cstring(w,strlen(w));} // write an array of C binary data (does not add a null): void write_cdata(const char *s, int length) { + if (varused_test) { + varused = 1; + return; + } const unsigned char *w = (const unsigned char *)s; const unsigned char *e = w+length; int linelength = 1; @@ -238,6 +252,10 @@ void write_cdata(const char *s, int length) { } void write_c(const char* format,...) { + if (varused_test) { + varused = 1; + return; + } va_list args; va_start(args, format); vfprintf(code_file, format, args); @@ -245,6 +263,7 @@ void write_c(const char* format,...) { } void write_h(const char* format,...) { + if (varused_test) return; va_list args; va_start(args, format); vfprintf(header_file, format, args); diff --git a/test/Makefile b/test/Makefile index a6f8302e5..aa0b3294a 100644 --- a/test/Makefile +++ b/test/Makefile @@ -171,10 +171,20 @@ depend: $(CPPFILES) include makedepend clean: - -$(RM) $(ALL) $(GLALL) core - -$(RM) *.o core.* *~ *.bck *.bak - -$(RM) checkers.app/Contents/MacOS/checkers - -$(RM) sudoku.app/Contents/MacOS/sudoku + $(RM) $(ALL) $(GLALL) core + $(RM) *.o core.* *~ *.bck *.bak + $(RM) CubeViewUI.cxx + $(RM) fast_slow.cxx + $(RM) inactive.cxx + $(RM) keyboard_ui.cxx + $(RM) mandelbrot_ui.cxx + $(RM) preferences.cxx + $(RM) radio.cxx + $(RM) resize.cxx + $(RM) tabs.cxx + $(RM) valuators.cxx + $(RM) checkers.app/Contents/MacOS/checkers + $(RM) sudoku.app/Contents/MacOS/sudoku install: all echo "Installing example programs to $(DESTDIR)$(docdir)/examples..." @@ -288,7 +298,7 @@ editor$(EXEEXT): editor.o $(POSTBUILD) $@ ../FL/mac.r fast_slow$(EXEEXT): fast_slow.o -fast_slow.cxx: fast_slow.fl +fast_slow.cxx: fast_slow.fl ../fluid/fluid$(EXEEXT) file_chooser$(EXEEXT): file_chooser.o ../lib/$(IMGLIBNAME) echo Linking $@... @@ -314,7 +324,7 @@ iconize$(EXEEXT): iconize.o image$(EXEEXT): image.o inactive$(EXEEXT): inactive.o -inactive.cxx: inactive.fl +inactive.cxx: inactive.fl ../fluid/fluid$(EXEEXT) input$(EXEEXT): input.o @@ -325,7 +335,7 @@ keyboard$(EXEEXT): keyboard_ui.o keyboard.o $(CXX) $(ARCHFLAGS) $(LDFLAGS) -o $@ keyboard.o keyboard_ui.o $(LINKFLTK) $(LDLIBS) $(POSTBUILD) $@ ../FL/mac.r keyboard_ui.o: keyboard_ui.h -keyboard_ui.cxx: keyboard_ui.fl +keyboard_ui.cxx: keyboard_ui.fl ../fluid/fluid$(EXEEXT) label$(EXEEXT): label.o echo Linking $@... @@ -341,7 +351,7 @@ mandelbrot$(EXEEXT): mandelbrot_ui.o mandelbrot.o $(CXX) $(ARCHFLAGS) $(LDFLAGS) -o $@ mandelbrot.o mandelbrot_ui.o $(LINKFLTK) $(LDLIBS) $(POSTBUILD) $@ ../FL/mac.r mandelbrot_ui.o: mandelbrot_ui.h -mandelbrot_ui.cxx: mandelbrot_ui.fl +mandelbrot_ui.cxx: mandelbrot_ui.fl ../fluid/fluid$(EXEEXT) menubar$(EXEEXT): menubar.o @@ -368,13 +378,13 @@ pixmap_browser$(EXEEXT): pixmap_browser.o ../lib/$(IMGLIBNAME) $(POSTBUILD) $@ ../FL/mac.r preferences$(EXEEXT): preferences.o -preferences.cxx: preferences.fl +preferences.cxx: preferences.fl ../fluid/fluid$(EXEEXT) radio$(EXEEXT): radio.o -radio.cxx: radio.fl +radio.cxx: radio.fl ../fluid/fluid$(EXEEXT) resize$(EXEEXT): resize.o -resize.cxx: resize.fl +resize.cxx: resize.fl ../fluid/fluid$(EXEEXT) resizebox$(EXEEXT): resizebox.o @@ -396,7 +406,7 @@ sudoku.exe: sudoku.o sudoku.rc symbols$(EXEEXT): symbols.o tabs$(EXEEXT): tabs.o -tabs.cxx: tabs.fl +tabs.cxx: tabs.fl ../fluid/fluid$(EXEEXT) threads$(EXEEXT): threads.o # This ensures that we have this dependency even if threads are not @@ -408,7 +418,7 @@ tile$(EXEEXT): tile.o tiled_image$(EXEEXT): tiled_image.o valuators$(EXEEXT): valuators.o -valuators.cxx: valuators.fl +valuators.cxx: valuators.fl ../fluid/fluid$(EXEEXT) # All OpenGL demos depend on the FLTK and FLTK_GL libraries... $(GLALL): ../lib/$(LIBNAME) ../lib/$(GLLIBNAME) @@ -423,7 +433,7 @@ CubeView$(EXEEXT): CubeMain.o CubeView.o CubeViewUI.o CubeMain.o: CubeViewUI.h CubeView.h CubeView.o: CubeView.h CubeViewUI.o: CubeViewUI.h -CubeViewUI.cxx: CubeViewUI.fl +CubeViewUI.cxx: CubeViewUI.fl ../fluid/fluid$(EXEEXT) cube$(EXEEXT): cube.o echo Linking $@... |
