Browse Source

Add FL_EXPORT to several classes to fix MS VC++ dll builds (STR #2632).

Remove FL_EXPORT from fl_clip_region() since this is an inline function
on all platforms (and issued a warning when building fltkdll with MS VC++).


git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@8726 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
pull/49/head
Albrecht Schlosser 14 years ago
parent
commit
0c8f264df0
  1. 13
      FL/Fl_Float_Input.H
  2. 22
      FL/Fl_Hor_Slider.H
  3. 12
      FL/Fl_Int_Input.H
  4. 9
      FL/Fl_Multiline_Input.H
  5. 14
      FL/Fl_Multiline_Output.H
  6. 9
      FL/Fl_Output.H
  7. 18
      FL/Fl_Secret_Input.H
  8. 2
      FL/win32.H
  9. 56
      src/Fl_Input.cxx
  10. 25
      src/Fl_Slider.cxx

13
FL/Fl_Float_Input.H

@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
//
// Floating point input header file for the Fast Light Tool Kit (FLTK).
//
// Copyright 1998-2010 by Bill Spitzak and others.
// Copyright 1998-2011 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
@ -39,15 +39,20 @@ @@ -39,15 +39,20 @@
that only allows the user to type floating point numbers (sign,
digits, decimal point, more digits, 'E' or 'e', sign, digits).
*/
class Fl_Float_Input : public Fl_Input { // don't use FL_EXPORT here !
class FL_EXPORT Fl_Float_Input : public Fl_Input {
public:
/**
Creates a new Fl_Float_Input widget using the given position,
Creates a new Fl_Float_Input widget using the given position,
size, and label string. The default boxtype is FL_DOWN_BOX.
<P> Inherited destructor destroys the widget and any value associated with it
Inherited destructor destroys the widget and any value associated with it.
*/
#if defined(FL_DLL) // implementation in src/Fl_Input.cxx
Fl_Float_Input(int X,int Y,int W,int H,const char *l = 0);
#else
Fl_Float_Input(int X,int Y,int W,int H,const char *l = 0)
: Fl_Input(X,Y,W,H,l) {type(FL_FLOAT_INPUT);}
#endif
};
#endif

22
FL/Fl_Hor_Slider.H

@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
//
// Horizontal slider header file for the Fast Light Tool Kit (FLTK).
//
// Copyright 1998-2010 by Bill Spitzak and others.
// Copyright 1998-2011 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
@ -33,10 +33,24 @@ @@ -33,10 +33,24 @@
#include "Fl_Slider.H"
class Fl_Hor_Slider : public Fl_Slider {
/** Horizontal Slider class.
\see class Fl_Slider.
*/
class FL_EXPORT Fl_Hor_Slider : public Fl_Slider {
public:
Fl_Hor_Slider(int X,int Y,int W,int H,const char *l=0)
: Fl_Slider(X,Y,W,H,l) {type(FL_HOR_SLIDER);}
/**
Creates a new Fl_Hor_Slider widget using the given position,
size, and label string.
*/
#if defined(FL_DLL) // implementation in src/Fl_Slider.cxx
Fl_Hor_Slider(int X,int Y,int W,int H,const char *l=0);
#else
Fl_Hor_Slider(int X,int Y,int W,int H,const char *l=0)
: Fl_Slider(X,Y,W,H,l) { type(FL_HOR_SLIDER); }
#endif
};
#endif

12
FL/Fl_Int_Input.H

@ -34,18 +34,24 @@ @@ -34,18 +34,24 @@
#include "Fl_Input.H"
/**
The Fl_Int_Input class is a subclass of Fl_Input
that only allows the user to type decimal digits (or hex numbers of the form 0xaef).
The Fl_Int_Input class is a subclass of Fl_Input that only allows
the user to type decimal digits (or hex numbers of the form 0xaef).
*/
class FL_EXPORT Fl_Int_Input : public Fl_Input {
public:
/**
Creates a new Fl_Int_Input widget using the given position,
size, and label string. The default boxtype is FL_DOWN_BOX.
<P>Inherited destructor Destroys the widget and any value associated with it.
Inherited destructor destroys the widget and any value associated with it.
*/
#if defined(FL_DLL) // implementation in src/Fl_Input.cxx
Fl_Int_Input(int X,int Y,int W,int H,const char *l = 0);
#else
Fl_Int_Input(int X,int Y,int W,int H,const char *l = 0)
: Fl_Input(X,Y,W,H,l) {type(FL_INT_INPUT);}
#endif
};
#endif

9
FL/Fl_Multiline_Input.H

@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
//
// Multiline input header file for the Fast Light Tool Kit (FLTK).
//
// Copyright 1998-2010 by Bill Spitzak and others.
// Copyright 1998-2011 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
@ -57,10 +57,15 @@ public: @@ -57,10 +57,15 @@ public:
/**
Creates a new Fl_Multiline_Input widget using the given
position, size, and label string. The default boxtype is FL_DOWN_BOX.
<P>Inherited destructor destroys the widget and any value associated with it.
Inherited destructor destroys the widget and any value associated with it.
*/
#if defined(FL_DLL) // implementation in src/Fl_Input.cxx
Fl_Multiline_Input(int X,int Y,int W,int H,const char *l = 0);
#else
Fl_Multiline_Input(int X,int Y,int W,int H,const char *l = 0)
: Fl_Input(X,Y,W,H,l) {type(FL_MULTILINE_INPUT);}
#endif
};
#endif

14
FL/Fl_Multiline_Output.H

@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
//
// Multi line output header file for the Fast Light Tool Kit (FLTK).
//
// Copyright 1998-2010 by Bill Spitzak and others.
// Copyright 1998-2011 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
@ -48,13 +48,19 @@ @@ -48,13 +48,19 @@
*/
class FL_EXPORT Fl_Multiline_Output : public Fl_Output {
public:
/**
Creates a new Fl_Multiline_Output widget using the given
position, size, and label string. The default boxtype is FL_DOWN_BOX
<P> Inherited destructor destroys the widget and any value associated with it.
Creates a new Fl_Multiline_Output widget using the given position,
size, and label string. The default boxtype is FL_DOWN_BOX.
Inherited destructor destroys the widget and any value associated with it.
*/
#if defined(FL_DLL) // implementation in src/Fl_Input.cxx
Fl_Multiline_Output(int X,int Y,int W,int H,const char *l = 0);
#else
Fl_Multiline_Output(int X,int Y,int W,int H,const char *l = 0)
: Fl_Output(X,Y,W,H,l) {type(FL_MULTILINE_OUTPUT);}
#endif
};
#endif

9
FL/Fl_Output.H

@ -53,16 +53,21 @@ @@ -53,16 +53,21 @@
and \\nnn notation for unprintable characters with the high bit set. It
assumes the font can draw any characters in the ISO-Latin1 character set.
*/
class Fl_Output : public Fl_Input { // don't use FL_EXPORT here !
class FL_EXPORT Fl_Output : public Fl_Input {
public:
/**
Creates a new Fl_Output widget using the given position,
size, and label string. The default boxtype is FL_DOWN_BOX.
Inherited destrucor destroys the widget and any value associated with it.
Inherited destructor destroys the widget and any value associated with it.
*/
#if defined(FL_DLL) // implementation in src/Fl_Input.cxx
Fl_Output(int X,int Y,int W,int H, const char *l = 0);
#else
Fl_Output(int X,int Y,int W,int H, const char *l = 0)
: Fl_Input(X, Y, W, H, l) {type(FL_NORMAL_OUTPUT);}
#endif
};
#endif

18
FL/Fl_Secret_Input.H

@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
//
// Secret input header file for the Fast Light Tool Kit (FLTK).
//
// Copyright 1998-2010 by Bill Spitzak and others.
// Copyright 1998-2011 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
@ -34,19 +34,27 @@ @@ -34,19 +34,27 @@
#include "Fl_Input.H"
/**
The Fl_Secret_Input class is a subclass of Fl_Input
that displays its input as a string of asterisks. This subclass is
usually used to receive passwords and other "secret" information.
The Fl_Secret_Input class is a subclass of Fl_Input that displays its
input as a string of placeholders. Depending on the platform this
placeholder is either the asterisk ('*') or the Unicode bullet
character (U+2022).
This subclass is usually used to receive passwords and other "secret" information.
*/
class FL_EXPORT Fl_Secret_Input : public Fl_Input {
public:
/**
Creates a new Fl_Secret_Input widget using the given
position, size, and label string. The default boxtype is FL_DOWN_BOX.
<P>Inherited destructor destroys the widget and any value associated with it.
Inherited destructor destroys the widget and any value associated with it.
*/
#if defined(FL_DLL) // implementation in src/Fl_Input.cxx
Fl_Secret_Input(int X,int Y,int W,int H,const char *l = 0);
#else
Fl_Secret_Input(int X,int Y,int W,int H,const char *l = 0)
: Fl_Input(X,Y,W,H,l) {type(FL_SECRET_INPUT);}
#endif
};
#endif

2
FL/win32.H

@ -110,7 +110,7 @@ FL_EXPORT Window fl_xid_(const Fl_Window* w); @@ -110,7 +110,7 @@ FL_EXPORT Window fl_xid_(const Fl_Window* w);
#endif // FL_LIBRARY || FL_INTERNALS
FL_EXPORT Fl_Window* fl_find(Window xid);
FL_EXPORT void fl_clip_region(Fl_Region);
void fl_clip_region(Fl_Region);
// most recent fl_color() or fl_rgbcolor() points at one of these:
extern FL_EXPORT struct Fl_XMap {

56
src/Fl_Input.cxx

@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
//
// Input widget for the Fast Light Tool Kit (FLTK).
//
// Copyright 1998-2010 by Bill Spitzak and others.
// Copyright 1998-2011 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
@ -40,6 +40,15 @@ @@ -40,6 +40,15 @@
#include <FL/fl_ask.H>
#include "flstring.h"
#if defined(FL_DLL) // really needed for c'tors for MS VC++ only
#include <FL/Fl_Float_Input.H>
#include <FL/Fl_Int_Input.H>
#include <FL/Fl_Multiline_Input.H>
#include <FL/Fl_Output.H>
#include <FL/Fl_Multiline_Output.H>
#include <FL/Fl_Secret_Input.H>
#endif
#ifdef HAVE_LOCALE_H
# include <locale.h>
#endif
@ -763,6 +772,51 @@ Fl_Input::Fl_Input(int X, int Y, int W, int H, const char *l) @@ -763,6 +772,51 @@ Fl_Input::Fl_Input(int X, int Y, int W, int H, const char *l)
: Fl_Input_(X, Y, W, H, l) {
}
/*
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).
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_Float_Input::Fl_Float_Input(int X,int Y,int W,int H,const char *l)
: Fl_Input(X,Y,W,H,l) {
type(FL_FLOAT_INPUT);
}
Fl_Int_Input::Fl_Int_Input(int X,int Y,int W,int H,const char *l)
: Fl_Input(X,Y,W,H,l) {
type(FL_INT_INPUT);
}
Fl_Multiline_Input::Fl_Multiline_Input(int X,int Y,int W,int H,const char *l)
: Fl_Input(X,Y,W,H,l) {
type(FL_MULTILINE_INPUT);
}
Fl_Output::Fl_Output(int X,int Y,int W,int H, const char *l)
: Fl_Input(X, Y, W, H, l) {
type(FL_NORMAL_OUTPUT);
}
Fl_Multiline_Output::Fl_Multiline_Output(int X,int Y,int W,int H,const char *l)
: Fl_Output(X,Y,W,H,l) {
type(FL_MULTILINE_OUTPUT);
}
Fl_Secret_Input::Fl_Secret_Input(int X,int Y,int W,int H,const char *l)
: Fl_Input(X,Y,W,H,l) {
type(FL_SECRET_INPUT);
}
#endif // FL_DLL
//
// End of "$Id$".
//

25
src/Fl_Slider.cxx

@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
//
// Slider widget for the Fast Light Tool Kit (FLTK).
//
// Copyright 1998-2010 by Bill Spitzak and others.
// Copyright 1998-2011 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
@ -31,6 +31,10 @@ @@ -31,6 +31,10 @@
#include <math.h>
#include "flstring.h"
#if defined(FL_DLL) // really needed for c'tors for MS VC++ only
#include <FL/Fl_Hor_Slider.H>
#endif
void Fl_Slider::_Fl_Slider() {
slider_size_ = 0;
slider_ = 0; // FL_UP_BOX;
@ -364,6 +368,25 @@ int Fl_Slider::handle(int event) { @@ -364,6 +368,25 @@ int Fl_Slider::handle(int event) {
h()-Fl::box_dh(box()));
}
/*
The following constructor must not be in the header file if we
build a shared object (DLL). Instead it is defined here to force
the constructor (and default destructor as well) to be defined
in the DLL and exported (STR #2632).
Note: if you the ctor here, 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 the one here for dynamic linking (Windows DLL).
*/
#if defined(FL_DLL)
Fl_Hor_Slider::Fl_Hor_Slider(int X,int Y,int W,int H,const char *l)
: Fl_Slider(X,Y,W,H,l) {type(FL_HOR_SLIDER);}
#endif // FL_DLL
//
// End of "$Id$".
//

Loading…
Cancel
Save