bool m_owned;
};
+WXDLLIMPEXP_TEMPLATE_INSTANCE_BASE( wxCharTypeBuffer<char> )
+
class WXDLLIMPEXP_BASE wxCharBuffer : public wxCharTypeBuffer<char>
{
public:
};
#if wxUSE_WCHAR_T
+WXDLLIMPEXP_TEMPLATE_INSTANCE_BASE( wxCharTypeBuffer<wchar_t> )
+
class WXDLLIMPEXP_BASE wxWCharBuffer : public wxCharTypeBuffer<wchar_t>
{
public:
#define WXDLLEXPORT WXDLLIMPEXP_CORE
#define WXDLLEXPORT_DATA WXDLLIMPEXP_DATA_CORE
+/*
+ MSVC up to 6.0 needs to be explicitly told to export template instantiations
+ used by the DLL clients, use this macro to do it like this:
+
+ template <typename T> class Foo { ... };
+ WXDLLIMPEXP_TEMPLATE_INSTANCE_BASE( Foo<int> )
+
+ (notice that currently we only need this for the wxBase library)
+ */
+#if defined(__VISUALC__) && (__VISUALC__ <= 1200)
+ #ifdef WXMAKINGDLL_BASE
+ #define WXDLLIMPEXP_TEMPLATE_INSTANCE_BASE(decl) \
+ template class WXDLLIMPEXP_BASE decl;
+ #else
+ /*
+ We need to disable this warning when using this macro, as
+ recommended by Microsoft itself:
+
+ http://support.microsoft.com/default.aspx?scid=kb%3ben-us%3b168958
+ */
+ #pragma warning(disable:4231)
+
+ #define WXDLLIMPEXP_TEMPLATE_INSTANCE_BASE(decl) \
+ extern template class WXDLLIMPEXP_BASE decl;
+ #endif
+#else /* not VC <= 6 */
+ #define WXDLLIMPEXP_TEMPLATE_INSTANCE_BASE(decl)
+#endif /* VC6/others */
+
#endif /* _WX_DLIMPEXP_H_ */
};
#if wxUSE_STL_BASED_WXSTRING
+
+WXDLLIMPEXP_TEMPLATE_INSTANCE_BASE( wxStringTypeBufferBase<wxStringCharType> )
+
class wxStringInternalBuffer : public wxStringTypeBufferBase<wxStringCharType>
{
public:
DECLARE_NO_COPY_CLASS(wxStringInternalBuffer)
};
-class wxStringInternalBufferLength : public wxStringTypeBufferLengthBase<wxStringCharType>
+WXDLLIMPEXP_TEMPLATE_INSTANCE_BASE(
+ wxStringTypeBufferLengthBase<wxStringCharType> )
+
+class wxStringInternalBufferLength
+ : public wxStringTypeBufferLengthBase<wxStringCharType>
{
public:
wxStringInternalBufferLength(wxString& str, size_t lenWanted = 1024)
typedef wxStringInternalBuffer wxUTF8StringBuffer;
typedef wxStringInternalBufferLength wxUTF8StringBufferLength;
#elif wxUSE_UNICODE_WCHAR
+
+WXDLLIMPEXP_TEMPLATE_INSTANCE_BASE( wxStringTypeBufferBase<char> )
+
class WXDLLIMPEXP_BASE wxUTF8StringBuffer : public wxStringTypeBufferBase<char>
{
public:
DECLARE_NO_COPY_CLASS(wxUTF8StringBuffer)
};
+WXDLLIMPEXP_TEMPLATE_INSTANCE_BASE( wxStringTypeBufferLengthBase<char> )
+
class WXDLLIMPEXP_BASE wxUTF8StringBufferLength
: public wxStringTypeBufferLengthBase<char>
{