Fix constructors for VC++ DLL builds (STR #2645).

git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@8736 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
This commit is contained in:
Albrecht Schlosser
2011-05-24 20:00:56 +00:00
parent 203f4d8c7e
commit 9846e7879c
4 changed files with 48 additions and 6 deletions
+6 -2
View File
@@ -50,8 +50,12 @@ public:
The constructor specializes Fl_Browser() by setting the type to FL_HOLD_BROWSER. The constructor specializes Fl_Browser() by setting the type to FL_HOLD_BROWSER.
The destructor destroys the widget and frees all memory that has been allocated. The destructor destroys the widget and frees all memory that has been allocated.
*/ */
Fl_Hold_Browser(int X,int Y,int W,int H,const char *l=0) #if defined(FL_DLL) // implementation in src/Fl_Browser.cxx
: Fl_Browser(X,Y,W,H,l) {type(FL_HOLD_BROWSER);} Fl_Hold_Browser(int X,int Y,int W,int H,const char *L=0);
#else
Fl_Hold_Browser(int X,int Y,int W,int H,const char *L=0)
: Fl_Browser(X,Y,W,H,L) {type(FL_HOLD_BROWSER);}
#endif
}; };
#endif #endif
+4
View File
@@ -51,8 +51,12 @@ public:
The constructor specializes Fl_Browser() by setting the type to FL_MULTI_BROWSER. The constructor specializes Fl_Browser() by setting the type to FL_MULTI_BROWSER.
The destructor destroys the widget and frees all memory that has been allocated. The destructor destroys the widget and frees all memory that has been allocated.
*/ */
#if defined(FL_DLL) // implementation in src/Fl_Browser.cxx
Fl_Multi_Browser(int X,int Y,int W,int H,const char *L=0);
#else
Fl_Multi_Browser(int X,int Y,int W,int H,const char *L=0) Fl_Multi_Browser(int X,int Y,int W,int H,const char *L=0)
: Fl_Browser(X,Y,W,H,L) {type(FL_MULTI_BROWSER);} : Fl_Browser(X,Y,W,H,L) {type(FL_MULTI_BROWSER);}
#endif
}; };
#endif #endif
+6 -2
View File
@@ -49,8 +49,12 @@ public:
The constructor specializes Fl_Browser() by setting the type to FL_SELECT_BROWSER. The constructor specializes Fl_Browser() by setting the type to FL_SELECT_BROWSER.
The destructor destroys the widget and frees all memory that has been allocated. The destructor destroys the widget and frees all memory that has been allocated.
*/ */
Fl_Select_Browser(int X,int Y,int W,int H,const char *l=0) #if defined(FL_DLL) // implementation in src/Fl_Browser.cxx
: Fl_Browser(X,Y,W,H,l) {type(FL_SELECT_BROWSER);} Fl_Select_Browser(int X,int Y,int W,int H,const char *L=0);
#else
Fl_Select_Browser(int X,int Y,int W,int H,const char *L=0)
: Fl_Browser(X,Y,W,H,L) {type(FL_SELECT_BROWSER);}
#endif
}; };
#endif #endif
+30
View File
@@ -32,6 +32,12 @@
#include <stdlib.h> #include <stdlib.h>
#include <math.h> #include <math.h>
#if defined(FL_DLL) // really needed for c'tors for MS VC++ only
#include <FL/Fl_Hold_Browser.H>
#include <FL/Fl_Multi_Browser.H>
#include <FL/Fl_Select_Browser.H>
#endif
// I modified this from the original Forms data to use a linked list // I modified this from the original Forms data to use a linked list
// so that the number of items in the browser and size of those items // so that the number of items in the browser and size of those items
// is unlimited. The only problem is that the old browser used an // is unlimited. The only problem is that the old browser used an
@@ -914,6 +920,30 @@ void Fl_Browser::remove_icon(int line) {
icon(line,0); icon(line,0);
} }
/*
The following constructors must not be in the header file(s) if we
build a shared object (DLL). Instead they are defined here to force
the constructor (and default destructor as well) to be defined in
the DLL and exported (STR #2632, #2645).
Note: if you change any of them, do the same changes in the specific
header file as well. This redundant definition was chosen to enable
inline constructors in the header files (for static linking) as well
as those here for dynamic linking (Windows DLL).
*/
#if defined(FL_DLL)
Fl_Hold_Browser::Fl_Hold_Browser(int X,int Y,int W,int H,const char *L)
: Fl_Browser(X,Y,W,H,L) {type(FL_HOLD_BROWSER);}
Fl_Multi_Browser::Fl_Multi_Browser(int X,int Y,int W,int H,const char *L)
: Fl_Browser(X,Y,W,H,L) {type(FL_MULTI_BROWSER);}
Fl_Select_Browser::Fl_Select_Browser(int X,int Y,int W,int H,const char *L)
: Fl_Browser(X,Y,W,H,L) {type(FL_SELECT_BROWSER);}
#endif // FL_DLL
// //
// End of "$Id$". // End of "$Id$".
// //