wxAny initial commit (closes #10932)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61971 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
19
Makefile.in
19
Makefile.in
@@ -310,6 +310,7 @@ WXSCINTILLA_OBJECTS = \
|
|||||||
PLUGINS_INST_DIR = $(libdir)/wx/$(PLUGIN_VERSION0)
|
PLUGINS_INST_DIR = $(libdir)/wx/$(PLUGIN_VERSION0)
|
||||||
ALL_BASE_HEADERS = \
|
ALL_BASE_HEADERS = \
|
||||||
wx/afterstd.h \
|
wx/afterstd.h \
|
||||||
|
wx/any.h \
|
||||||
wx/anystr.h \
|
wx/anystr.h \
|
||||||
wx/app.h \
|
wx/app.h \
|
||||||
wx/apptrait.h \
|
wx/apptrait.h \
|
||||||
@@ -470,6 +471,7 @@ ALL_HEADERS = \
|
|||||||
$(ALL_GUI_HEADERS)
|
$(ALL_GUI_HEADERS)
|
||||||
ALL_PORTS_BASE_HEADERS = \
|
ALL_PORTS_BASE_HEADERS = \
|
||||||
wx/afterstd.h \
|
wx/afterstd.h \
|
||||||
|
wx/any.h \
|
||||||
wx/anystr.h \
|
wx/anystr.h \
|
||||||
wx/app.h \
|
wx/app.h \
|
||||||
wx/apptrait.h \
|
wx/apptrait.h \
|
||||||
@@ -665,6 +667,7 @@ ALL_PORTS_BASE_HEADERS = \
|
|||||||
wx/xml/xml.h \
|
wx/xml/xml.h \
|
||||||
wx/xtixml.h
|
wx/xtixml.h
|
||||||
ALL_BASE_SOURCES = \
|
ALL_BASE_SOURCES = \
|
||||||
|
src/common/any.cpp \
|
||||||
src/common/appbase.cpp \
|
src/common/appbase.cpp \
|
||||||
src/common/arcall.cpp \
|
src/common/arcall.cpp \
|
||||||
src/common/arcfind.cpp \
|
src/common/arcfind.cpp \
|
||||||
@@ -855,6 +858,7 @@ MONODLL_OBJCXXFLAGS = $(__monodll_PCH_INC) -D__WX$(TOOLKIT)__ \
|
|||||||
-I$(top_srcdir)/src/stc/scintilla/src -D__WX__ -DSCI_LEXER -DLINK_LEXERS \
|
-I$(top_srcdir)/src/stc/scintilla/src -D__WX__ -DSCI_LEXER -DLINK_LEXERS \
|
||||||
$(PIC_FLAG) $(CPPFLAGS) $(OBJCXXFLAGS)
|
$(PIC_FLAG) $(CPPFLAGS) $(OBJCXXFLAGS)
|
||||||
MONODLL_OBJECTS = \
|
MONODLL_OBJECTS = \
|
||||||
|
monodll_any.o \
|
||||||
monodll_appbase.o \
|
monodll_appbase.o \
|
||||||
monodll_arcall.o \
|
monodll_arcall.o \
|
||||||
monodll_arcfind.o \
|
monodll_arcfind.o \
|
||||||
@@ -982,6 +986,7 @@ MONOLIB_OBJCXXFLAGS = $(__monolib_PCH_INC) -D__WX$(TOOLKIT)__ \
|
|||||||
-I$(top_srcdir)/src/stc/scintilla/src -D__WX__ -DSCI_LEXER -DLINK_LEXERS \
|
-I$(top_srcdir)/src/stc/scintilla/src -D__WX__ -DSCI_LEXER -DLINK_LEXERS \
|
||||||
$(CPPFLAGS) $(OBJCXXFLAGS)
|
$(CPPFLAGS) $(OBJCXXFLAGS)
|
||||||
MONOLIB_OBJECTS = \
|
MONOLIB_OBJECTS = \
|
||||||
|
monolib_any.o \
|
||||||
monolib_appbase.o \
|
monolib_appbase.o \
|
||||||
monolib_arcall.o \
|
monolib_arcall.o \
|
||||||
monolib_arcfind.o \
|
monolib_arcfind.o \
|
||||||
@@ -1104,6 +1109,7 @@ BASEDLL_OBJCXXFLAGS = $(__basedll_PCH_INC) -D__WX$(TOOLKIT)__ \
|
|||||||
-DwxUSE_BASE=1 $(PIC_FLAG) $(CPPFLAGS) $(OBJCXXFLAGS)
|
-DwxUSE_BASE=1 $(PIC_FLAG) $(CPPFLAGS) $(OBJCXXFLAGS)
|
||||||
BASEDLL_OBJECTS = \
|
BASEDLL_OBJECTS = \
|
||||||
$(__basedll___win32rc) \
|
$(__basedll___win32rc) \
|
||||||
|
basedll_any.o \
|
||||||
basedll_appbase.o \
|
basedll_appbase.o \
|
||||||
basedll_arcall.o \
|
basedll_arcall.o \
|
||||||
basedll_arcfind.o \
|
basedll_arcfind.o \
|
||||||
@@ -1209,6 +1215,7 @@ BASELIB_OBJCXXFLAGS = $(__baselib_PCH_INC) -D__WX$(TOOLKIT)__ \
|
|||||||
$(__INC_REGEX_p) $(__INC_EXPAT_p) -DwxUSE_GUI=0 -DwxUSE_BASE=1 $(CPPFLAGS) \
|
$(__INC_REGEX_p) $(__INC_EXPAT_p) -DwxUSE_GUI=0 -DwxUSE_BASE=1 $(CPPFLAGS) \
|
||||||
$(OBJCXXFLAGS)
|
$(OBJCXXFLAGS)
|
||||||
BASELIB_OBJECTS = \
|
BASELIB_OBJECTS = \
|
||||||
|
baselib_any.o \
|
||||||
baselib_appbase.o \
|
baselib_appbase.o \
|
||||||
baselib_arcall.o \
|
baselib_arcall.o \
|
||||||
baselib_arcfind.o \
|
baselib_arcfind.o \
|
||||||
@@ -14203,6 +14210,9 @@ wxscintilla_WindowAccessor.o: $(srcdir)/src/stc/scintilla/src/WindowAccessor.cxx
|
|||||||
wxscintilla_XPM.o: $(srcdir)/src/stc/scintilla/src/XPM.cxx
|
wxscintilla_XPM.o: $(srcdir)/src/stc/scintilla/src/XPM.cxx
|
||||||
$(CXXC) -c -o $@ $(WXSCINTILLA_CXXFLAGS) $(srcdir)/src/stc/scintilla/src/XPM.cxx
|
$(CXXC) -c -o $@ $(WXSCINTILLA_CXXFLAGS) $(srcdir)/src/stc/scintilla/src/XPM.cxx
|
||||||
|
|
||||||
|
monodll_any.o: $(srcdir)/src/common/any.cpp $(MONODLL_ODEP)
|
||||||
|
$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/any.cpp
|
||||||
|
|
||||||
monodll_appbase.o: $(srcdir)/src/common/appbase.cpp $(MONODLL_ODEP)
|
monodll_appbase.o: $(srcdir)/src/common/appbase.cpp $(MONODLL_ODEP)
|
||||||
$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/appbase.cpp
|
$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/appbase.cpp
|
||||||
|
|
||||||
@@ -18940,6 +18950,9 @@ monodll_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONODLL_ODEP)
|
|||||||
monodll_version_rc.o: $(srcdir)/src/msw/version.rc $(MONODLL_ODEP)
|
monodll_version_rc.o: $(srcdir)/src/msw/version.rc $(MONODLL_ODEP)
|
||||||
$(WINDRES) -i$< -o$@ --define __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_62) $(__DEBUG_DEFINE_p_61) $(__EXCEPTIONS_DEFINE_p_61) $(__RTTI_DEFINE_p_61) $(__THREAD_DEFINE_p_61) --define WXBUILDING --define WXDLLNAME=$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG) $(__RCDEFDIR_p) --include-dir $(top_srcdir)/include $(__INC_TIFF_BUILD_p_62) $(__INC_TIFF_p_62) $(__INC_JPEG_p_62) $(__INC_PNG_p_61) $(__INC_ZLIB_p_63) $(__INC_REGEX_p_61) $(__INC_EXPAT_p_61) --define wxUSE_BASE=1 --define WXMAKINGDLL --include-dir $(top_srcdir)/src/stc/scintilla/include --include-dir $(top_srcdir)/src/stc/scintilla/src --define __WX__ --define SCI_LEXER --define LINK_LEXERS
|
$(WINDRES) -i$< -o$@ --define __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_62) $(__DEBUG_DEFINE_p_61) $(__EXCEPTIONS_DEFINE_p_61) $(__RTTI_DEFINE_p_61) $(__THREAD_DEFINE_p_61) --define WXBUILDING --define WXDLLNAME=$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG) $(__RCDEFDIR_p) --include-dir $(top_srcdir)/include $(__INC_TIFF_BUILD_p_62) $(__INC_TIFF_p_62) $(__INC_JPEG_p_62) $(__INC_PNG_p_61) $(__INC_ZLIB_p_63) $(__INC_REGEX_p_61) $(__INC_EXPAT_p_61) --define wxUSE_BASE=1 --define WXMAKINGDLL --include-dir $(top_srcdir)/src/stc/scintilla/include --include-dir $(top_srcdir)/src/stc/scintilla/src --define __WX__ --define SCI_LEXER --define LINK_LEXERS
|
||||||
|
|
||||||
|
monolib_any.o: $(srcdir)/src/common/any.cpp $(MONOLIB_ODEP)
|
||||||
|
$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/any.cpp
|
||||||
|
|
||||||
monolib_appbase.o: $(srcdir)/src/common/appbase.cpp $(MONOLIB_ODEP)
|
monolib_appbase.o: $(srcdir)/src/common/appbase.cpp $(MONOLIB_ODEP)
|
||||||
$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/appbase.cpp
|
$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/appbase.cpp
|
||||||
|
|
||||||
@@ -23677,6 +23690,9 @@ monolib_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONOLIB_ODEP)
|
|||||||
basedll_version_rc.o: $(srcdir)/src/msw/version.rc $(BASEDLL_ODEP)
|
basedll_version_rc.o: $(srcdir)/src/msw/version.rc $(BASEDLL_ODEP)
|
||||||
$(WINDRES) -i$< -o$@ --define __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_62) $(__DEBUG_DEFINE_p_61) $(__EXCEPTIONS_DEFINE_p_61) $(__RTTI_DEFINE_p_61) $(__THREAD_DEFINE_p_61) --define WXBUILDING --define WXDLLNAME=$(WXDLLNAMEPREFIX)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG) $(__RCDEFDIR_p) --include-dir $(top_srcdir)/include $(__INC_TIFF_BUILD_p_62) $(__INC_TIFF_p_62) $(__INC_JPEG_p_62) $(__INC_PNG_p_61) $(__INC_ZLIB_p_63) $(__INC_REGEX_p_61) $(__INC_EXPAT_p_61) --define wxUSE_GUI=0 --define WXMAKINGDLL_BASE --define wxUSE_BASE=1
|
$(WINDRES) -i$< -o$@ --define __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_62) $(__DEBUG_DEFINE_p_61) $(__EXCEPTIONS_DEFINE_p_61) $(__RTTI_DEFINE_p_61) $(__THREAD_DEFINE_p_61) --define WXBUILDING --define WXDLLNAME=$(WXDLLNAMEPREFIX)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG) $(__RCDEFDIR_p) --include-dir $(top_srcdir)/include $(__INC_TIFF_BUILD_p_62) $(__INC_TIFF_p_62) $(__INC_JPEG_p_62) $(__INC_PNG_p_61) $(__INC_ZLIB_p_63) $(__INC_REGEX_p_61) $(__INC_EXPAT_p_61) --define wxUSE_GUI=0 --define WXMAKINGDLL_BASE --define wxUSE_BASE=1
|
||||||
|
|
||||||
|
basedll_any.o: $(srcdir)/src/common/any.cpp $(BASEDLL_ODEP)
|
||||||
|
$(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/common/any.cpp
|
||||||
|
|
||||||
basedll_appbase.o: $(srcdir)/src/common/appbase.cpp $(BASEDLL_ODEP)
|
basedll_appbase.o: $(srcdir)/src/common/appbase.cpp $(BASEDLL_ODEP)
|
||||||
$(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/common/appbase.cpp
|
$(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/common/appbase.cpp
|
||||||
|
|
||||||
@@ -24148,6 +24164,9 @@ basedll_cocoa_utils.o: $(srcdir)/src/osx/cocoa/utils.mm $(BASEDLL_ODEP)
|
|||||||
@COND_PLATFORM_MACOSX_1@basedll_utilsunx.o: $(srcdir)/src/unix/utilsunx.cpp $(BASEDLL_ODEP)
|
@COND_PLATFORM_MACOSX_1@basedll_utilsunx.o: $(srcdir)/src/unix/utilsunx.cpp $(BASEDLL_ODEP)
|
||||||
@COND_PLATFORM_MACOSX_1@ $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/unix/utilsunx.cpp
|
@COND_PLATFORM_MACOSX_1@ $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/unix/utilsunx.cpp
|
||||||
|
|
||||||
|
baselib_any.o: $(srcdir)/src/common/any.cpp $(BASELIB_ODEP)
|
||||||
|
$(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/common/any.cpp
|
||||||
|
|
||||||
baselib_appbase.o: $(srcdir)/src/common/appbase.cpp $(BASELIB_ODEP)
|
baselib_appbase.o: $(srcdir)/src/common/appbase.cpp $(BASELIB_ODEP)
|
||||||
$(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/common/appbase.cpp
|
$(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/common/appbase.cpp
|
||||||
|
|
||||||
|
@@ -304,6 +304,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
|
|||||||
<!-- Common -->
|
<!-- Common -->
|
||||||
<!-- =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- -->
|
<!-- =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- -->
|
||||||
<set var="BASE_CMN_SRC" hints="files">
|
<set var="BASE_CMN_SRC" hints="files">
|
||||||
|
src/common/any.cpp
|
||||||
src/common/appbase.cpp
|
src/common/appbase.cpp
|
||||||
src/common/arcall.cpp
|
src/common/arcall.cpp
|
||||||
src/common/arcfind.cpp
|
src/common/arcfind.cpp
|
||||||
@@ -392,6 +393,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
|
|||||||
</set>
|
</set>
|
||||||
<set var="BASE_CMN_HDR" hints="files">
|
<set var="BASE_CMN_HDR" hints="files">
|
||||||
wx/afterstd.h
|
wx/afterstd.h
|
||||||
|
wx/any.h
|
||||||
wx/anystr.h
|
wx/anystr.h
|
||||||
wx/app.h
|
wx/app.h
|
||||||
wx/apptrait.h
|
wx/apptrait.h
|
||||||
|
@@ -308,6 +308,7 @@ MONODLL_CXXFLAGS = $(__RUNTIME_LIBS) -I$(BCCDIR)\include $(__DEBUGINFO) \
|
|||||||
$(CXXFLAGS)
|
$(CXXFLAGS)
|
||||||
MONODLL_OBJECTS = \
|
MONODLL_OBJECTS = \
|
||||||
$(OBJS)\monodll_dummy.obj \
|
$(OBJS)\monodll_dummy.obj \
|
||||||
|
$(OBJS)\monodll_any.obj \
|
||||||
$(OBJS)\monodll_appbase.obj \
|
$(OBJS)\monodll_appbase.obj \
|
||||||
$(OBJS)\monodll_arcall.obj \
|
$(OBJS)\monodll_arcall.obj \
|
||||||
$(OBJS)\monodll_arcfind.obj \
|
$(OBJS)\monodll_arcfind.obj \
|
||||||
@@ -448,6 +449,7 @@ MONOLIB_CXXFLAGS = $(__RUNTIME_LIBS) -I$(BCCDIR)\include $(__DEBUGINFO) \
|
|||||||
$(CXXFLAGS)
|
$(CXXFLAGS)
|
||||||
MONOLIB_OBJECTS = \
|
MONOLIB_OBJECTS = \
|
||||||
$(OBJS)\monolib_dummy.obj \
|
$(OBJS)\monolib_dummy.obj \
|
||||||
|
$(OBJS)\monolib_any.obj \
|
||||||
$(OBJS)\monolib_appbase.obj \
|
$(OBJS)\monolib_appbase.obj \
|
||||||
$(OBJS)\monolib_arcall.obj \
|
$(OBJS)\monolib_arcall.obj \
|
||||||
$(OBJS)\monolib_arcfind.obj \
|
$(OBJS)\monolib_arcfind.obj \
|
||||||
@@ -585,6 +587,7 @@ BASEDLL_CXXFLAGS = $(__RUNTIME_LIBS) -I$(BCCDIR)\include $(__DEBUGINFO) \
|
|||||||
-DwxUSE_BASE=1 -Hu -H=$(OBJS)\wxprec_basedll.csm $(CPPFLAGS) $(CXXFLAGS)
|
-DwxUSE_BASE=1 -Hu -H=$(OBJS)\wxprec_basedll.csm $(CPPFLAGS) $(CXXFLAGS)
|
||||||
BASEDLL_OBJECTS = \
|
BASEDLL_OBJECTS = \
|
||||||
$(OBJS)\basedll_dummy.obj \
|
$(OBJS)\basedll_dummy.obj \
|
||||||
|
$(OBJS)\basedll_any.obj \
|
||||||
$(OBJS)\basedll_appbase.obj \
|
$(OBJS)\basedll_appbase.obj \
|
||||||
$(OBJS)\basedll_arcall.obj \
|
$(OBJS)\basedll_arcall.obj \
|
||||||
$(OBJS)\basedll_arcfind.obj \
|
$(OBJS)\basedll_arcfind.obj \
|
||||||
@@ -707,6 +710,7 @@ BASELIB_CXXFLAGS = $(__RUNTIME_LIBS) -I$(BCCDIR)\include $(__DEBUGINFO) \
|
|||||||
-H=$(OBJS)\wxprec_baselib.csm $(CPPFLAGS) $(CXXFLAGS)
|
-H=$(OBJS)\wxprec_baselib.csm $(CPPFLAGS) $(CXXFLAGS)
|
||||||
BASELIB_OBJECTS = \
|
BASELIB_OBJECTS = \
|
||||||
$(OBJS)\baselib_dummy.obj \
|
$(OBJS)\baselib_dummy.obj \
|
||||||
|
$(OBJS)\baselib_any.obj \
|
||||||
$(OBJS)\baselib_appbase.obj \
|
$(OBJS)\baselib_appbase.obj \
|
||||||
$(OBJS)\baselib_arcall.obj \
|
$(OBJS)\baselib_arcall.obj \
|
||||||
$(OBJS)\baselib_arcfind.obj \
|
$(OBJS)\baselib_arcfind.obj \
|
||||||
@@ -5495,6 +5499,9 @@ $(OBJS)\wxscintilla_XPM.obj: ..\..\src\stc\scintilla\src\XPM.cxx
|
|||||||
$(OBJS)\monodll_dummy.obj: ..\..\src\common\dummy.cpp
|
$(OBJS)\monodll_dummy.obj: ..\..\src\common\dummy.cpp
|
||||||
$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) -H ..\..\src\common\dummy.cpp
|
$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) -H ..\..\src\common\dummy.cpp
|
||||||
|
|
||||||
|
$(OBJS)\monodll_any.obj: ..\..\src\common\any.cpp
|
||||||
|
$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\common\any.cpp
|
||||||
|
|
||||||
$(OBJS)\monodll_appbase.obj: ..\..\src\common\appbase.cpp
|
$(OBJS)\monodll_appbase.obj: ..\..\src\common\appbase.cpp
|
||||||
$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\common\appbase.cpp
|
$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\common\appbase.cpp
|
||||||
|
|
||||||
@@ -7732,6 +7739,9 @@ $(OBJS)\monodll_version.res: ..\..\src\msw\version.rc
|
|||||||
$(OBJS)\monolib_dummy.obj: ..\..\src\common\dummy.cpp
|
$(OBJS)\monolib_dummy.obj: ..\..\src\common\dummy.cpp
|
||||||
$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) -H ..\..\src\common\dummy.cpp
|
$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) -H ..\..\src\common\dummy.cpp
|
||||||
|
|
||||||
|
$(OBJS)\monolib_any.obj: ..\..\src\common\any.cpp
|
||||||
|
$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\common\any.cpp
|
||||||
|
|
||||||
$(OBJS)\monolib_appbase.obj: ..\..\src\common\appbase.cpp
|
$(OBJS)\monolib_appbase.obj: ..\..\src\common\appbase.cpp
|
||||||
$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\common\appbase.cpp
|
$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\common\appbase.cpp
|
||||||
|
|
||||||
@@ -9969,6 +9979,9 @@ $(OBJS)\basedll_dummy.obj: ..\..\src\common\dummy.cpp
|
|||||||
$(OBJS)\basedll_version.res: ..\..\src\msw\version.rc
|
$(OBJS)\basedll_version.res: ..\..\src\msw\version.rc
|
||||||
brcc32 -32 -r -fo$@ -i$(BCCDIR)\include -d__WXMSW__ $(__WXUNIV_DEFINE_p_62) $(__DEBUG_DEFINE_p_61) $(__EXCEPTIONS_DEFINE_p_61) $(__RTTI_DEFINE_p_61) $(__THREAD_DEFINE_p_61) $(__UNICODE_DEFINE_p_62) $(__MSLU_DEFINE_p_61) $(__GFXCTX_DEFINE_p_61) -i$(SETUPHDIR) -i..\..\include -dWXBUILDING -dWXDLLNAME=wxbase$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_bcc$(VENDORTAG) -i..\..\src\tiff\libtiff -i..\..\src\jpeg -i..\..\src\png -i..\..\src\zlib -i..\..\src\regex -i..\..\src\expat\lib -dwxUSE_GUI=0 -dWXMAKINGDLL_BASE -dwxUSE_BASE=1 ..\..\src\msw\version.rc
|
brcc32 -32 -r -fo$@ -i$(BCCDIR)\include -d__WXMSW__ $(__WXUNIV_DEFINE_p_62) $(__DEBUG_DEFINE_p_61) $(__EXCEPTIONS_DEFINE_p_61) $(__RTTI_DEFINE_p_61) $(__THREAD_DEFINE_p_61) $(__UNICODE_DEFINE_p_62) $(__MSLU_DEFINE_p_61) $(__GFXCTX_DEFINE_p_61) -i$(SETUPHDIR) -i..\..\include -dWXBUILDING -dWXDLLNAME=wxbase$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_bcc$(VENDORTAG) -i..\..\src\tiff\libtiff -i..\..\src\jpeg -i..\..\src\png -i..\..\src\zlib -i..\..\src\regex -i..\..\src\expat\lib -dwxUSE_GUI=0 -dWXMAKINGDLL_BASE -dwxUSE_BASE=1 ..\..\src\msw\version.rc
|
||||||
|
|
||||||
|
$(OBJS)\basedll_any.obj: ..\..\src\common\any.cpp
|
||||||
|
$(CXX) -q -c -P -o$@ $(BASEDLL_CXXFLAGS) ..\..\src\common\any.cpp
|
||||||
|
|
||||||
$(OBJS)\basedll_appbase.obj: ..\..\src\common\appbase.cpp
|
$(OBJS)\basedll_appbase.obj: ..\..\src\common\appbase.cpp
|
||||||
$(CXX) -q -c -P -o$@ $(BASEDLL_CXXFLAGS) ..\..\src\common\appbase.cpp
|
$(CXX) -q -c -P -o$@ $(BASEDLL_CXXFLAGS) ..\..\src\common\appbase.cpp
|
||||||
|
|
||||||
@@ -10284,6 +10297,9 @@ $(OBJS)\basedll_volume.obj: ..\..\src\msw\volume.cpp
|
|||||||
$(OBJS)\baselib_dummy.obj: ..\..\src\common\dummy.cpp
|
$(OBJS)\baselib_dummy.obj: ..\..\src\common\dummy.cpp
|
||||||
$(CXX) -q -c -P -o$@ $(BASELIB_CXXFLAGS) -H ..\..\src\common\dummy.cpp
|
$(CXX) -q -c -P -o$@ $(BASELIB_CXXFLAGS) -H ..\..\src\common\dummy.cpp
|
||||||
|
|
||||||
|
$(OBJS)\baselib_any.obj: ..\..\src\common\any.cpp
|
||||||
|
$(CXX) -q -c -P -o$@ $(BASELIB_CXXFLAGS) ..\..\src\common\any.cpp
|
||||||
|
|
||||||
$(OBJS)\baselib_appbase.obj: ..\..\src\common\appbase.cpp
|
$(OBJS)\baselib_appbase.obj: ..\..\src\common\appbase.cpp
|
||||||
$(CXX) -q -c -P -o$@ $(BASELIB_CXXFLAGS) ..\..\src\common\appbase.cpp
|
$(CXX) -q -c -P -o$@ $(BASELIB_CXXFLAGS) ..\..\src\common\appbase.cpp
|
||||||
|
|
||||||
|
@@ -295,6 +295,7 @@ MONODLL_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(__THREADSFLAG) \
|
|||||||
-Wno-ctor-dtor-privacy $(CPPFLAGS) $(CXXFLAGS)
|
-Wno-ctor-dtor-privacy $(CPPFLAGS) $(CXXFLAGS)
|
||||||
MONODLL_OBJECTS = \
|
MONODLL_OBJECTS = \
|
||||||
$(OBJS)\monodll_dummy.o \
|
$(OBJS)\monodll_dummy.o \
|
||||||
|
$(OBJS)\monodll_any.o \
|
||||||
$(OBJS)\monodll_appbase.o \
|
$(OBJS)\monodll_appbase.o \
|
||||||
$(OBJS)\monodll_arcall.o \
|
$(OBJS)\monodll_arcall.o \
|
||||||
$(OBJS)\monodll_arcfind.o \
|
$(OBJS)\monodll_arcfind.o \
|
||||||
@@ -436,6 +437,7 @@ MONOLIB_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(__THREADSFLAG) \
|
|||||||
-Wno-ctor-dtor-privacy $(CPPFLAGS) $(CXXFLAGS)
|
-Wno-ctor-dtor-privacy $(CPPFLAGS) $(CXXFLAGS)
|
||||||
MONOLIB_OBJECTS = \
|
MONOLIB_OBJECTS = \
|
||||||
$(OBJS)\monolib_dummy.o \
|
$(OBJS)\monolib_dummy.o \
|
||||||
|
$(OBJS)\monolib_any.o \
|
||||||
$(OBJS)\monolib_appbase.o \
|
$(OBJS)\monolib_appbase.o \
|
||||||
$(OBJS)\monolib_arcall.o \
|
$(OBJS)\monolib_arcall.o \
|
||||||
$(OBJS)\monolib_arcfind.o \
|
$(OBJS)\monolib_arcfind.o \
|
||||||
@@ -575,6 +577,7 @@ BASEDLL_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(__THREADSFLAG) \
|
|||||||
BASEDLL_OBJECTS = \
|
BASEDLL_OBJECTS = \
|
||||||
$(OBJS)\basedll_dummy.o \
|
$(OBJS)\basedll_dummy.o \
|
||||||
$(OBJS)\basedll_version_rc.o \
|
$(OBJS)\basedll_version_rc.o \
|
||||||
|
$(OBJS)\basedll_any.o \
|
||||||
$(OBJS)\basedll_appbase.o \
|
$(OBJS)\basedll_appbase.o \
|
||||||
$(OBJS)\basedll_arcall.o \
|
$(OBJS)\basedll_arcall.o \
|
||||||
$(OBJS)\basedll_arcfind.o \
|
$(OBJS)\basedll_arcfind.o \
|
||||||
@@ -697,6 +700,7 @@ BASELIB_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(__THREADSFLAG) \
|
|||||||
$(CXXFLAGS)
|
$(CXXFLAGS)
|
||||||
BASELIB_OBJECTS = \
|
BASELIB_OBJECTS = \
|
||||||
$(OBJS)\baselib_dummy.o \
|
$(OBJS)\baselib_dummy.o \
|
||||||
|
$(OBJS)\baselib_any.o \
|
||||||
$(OBJS)\baselib_appbase.o \
|
$(OBJS)\baselib_appbase.o \
|
||||||
$(OBJS)\baselib_arcall.o \
|
$(OBJS)\baselib_arcall.o \
|
||||||
$(OBJS)\baselib_arcfind.o \
|
$(OBJS)\baselib_arcfind.o \
|
||||||
@@ -5653,6 +5657,9 @@ $(OBJS)\wxscintilla_XPM.o: ../../src/stc/scintilla/src/XPM.cxx
|
|||||||
$(OBJS)\monodll_dummy.o: ../../src/common/dummy.cpp
|
$(OBJS)\monodll_dummy.o: ../../src/common/dummy.cpp
|
||||||
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
|
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
|
||||||
|
|
||||||
|
$(OBJS)\monodll_any.o: ../../src/common/any.cpp
|
||||||
|
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
|
||||||
|
|
||||||
$(OBJS)\monodll_appbase.o: ../../src/common/appbase.cpp
|
$(OBJS)\monodll_appbase.o: ../../src/common/appbase.cpp
|
||||||
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
|
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
|
||||||
|
|
||||||
@@ -8002,6 +8009,9 @@ $(OBJS)\monodll_version_rc.o: ../../src/msw/version.rc
|
|||||||
$(OBJS)\monolib_dummy.o: ../../src/common/dummy.cpp
|
$(OBJS)\monolib_dummy.o: ../../src/common/dummy.cpp
|
||||||
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
|
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
|
||||||
|
|
||||||
|
$(OBJS)\monolib_any.o: ../../src/common/any.cpp
|
||||||
|
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
|
||||||
|
|
||||||
$(OBJS)\monolib_appbase.o: ../../src/common/appbase.cpp
|
$(OBJS)\monolib_appbase.o: ../../src/common/appbase.cpp
|
||||||
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
|
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
|
||||||
|
|
||||||
@@ -10351,6 +10361,9 @@ $(OBJS)\basedll_dummy.o: ../../src/common/dummy.cpp
|
|||||||
$(OBJS)\basedll_version_rc.o: ../../src/msw/version.rc
|
$(OBJS)\basedll_version_rc.o: ../../src/msw/version.rc
|
||||||
windres --use-temp-file -i$< -o$@ --define __WXMSW__ $(__WXUNIV_DEFINE_p_62) $(__DEBUG_DEFINE_p_61) $(__EXCEPTIONS_DEFINE_p_61) $(__RTTI_DEFINE_p_61) $(__THREAD_DEFINE_p_61) $(__UNICODE_DEFINE_p_62) $(__MSLU_DEFINE_p_61) $(__GFXCTX_DEFINE_p_61) --include-dir $(SETUPHDIR) --include-dir ../../include --define WXBUILDING --define WXDLLNAME=wxbase$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_gcc$(VENDORTAG) --include-dir ../../src/tiff/libtiff --include-dir ../../src/jpeg --include-dir ../../src/png --include-dir ../../src/zlib --include-dir ../../src/regex --include-dir ../../src/expat/lib --define wxUSE_GUI=0 --define WXMAKINGDLL_BASE --define wxUSE_BASE=1
|
windres --use-temp-file -i$< -o$@ --define __WXMSW__ $(__WXUNIV_DEFINE_p_62) $(__DEBUG_DEFINE_p_61) $(__EXCEPTIONS_DEFINE_p_61) $(__RTTI_DEFINE_p_61) $(__THREAD_DEFINE_p_61) $(__UNICODE_DEFINE_p_62) $(__MSLU_DEFINE_p_61) $(__GFXCTX_DEFINE_p_61) --include-dir $(SETUPHDIR) --include-dir ../../include --define WXBUILDING --define WXDLLNAME=wxbase$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_gcc$(VENDORTAG) --include-dir ../../src/tiff/libtiff --include-dir ../../src/jpeg --include-dir ../../src/png --include-dir ../../src/zlib --include-dir ../../src/regex --include-dir ../../src/expat/lib --define wxUSE_GUI=0 --define WXMAKINGDLL_BASE --define wxUSE_BASE=1
|
||||||
|
|
||||||
|
$(OBJS)\basedll_any.o: ../../src/common/any.cpp
|
||||||
|
$(CXX) -c -o $@ $(BASEDLL_CXXFLAGS) $(CPPDEPS) $<
|
||||||
|
|
||||||
$(OBJS)\basedll_appbase.o: ../../src/common/appbase.cpp
|
$(OBJS)\basedll_appbase.o: ../../src/common/appbase.cpp
|
||||||
$(CXX) -c -o $@ $(BASEDLL_CXXFLAGS) $(CPPDEPS) $<
|
$(CXX) -c -o $@ $(BASEDLL_CXXFLAGS) $(CPPDEPS) $<
|
||||||
|
|
||||||
@@ -10666,6 +10679,9 @@ $(OBJS)\basedll_volume.o: ../../src/msw/volume.cpp
|
|||||||
$(OBJS)\baselib_dummy.o: ../../src/common/dummy.cpp
|
$(OBJS)\baselib_dummy.o: ../../src/common/dummy.cpp
|
||||||
$(CXX) -c -o $@ $(BASELIB_CXXFLAGS) $(CPPDEPS) $<
|
$(CXX) -c -o $@ $(BASELIB_CXXFLAGS) $(CPPDEPS) $<
|
||||||
|
|
||||||
|
$(OBJS)\baselib_any.o: ../../src/common/any.cpp
|
||||||
|
$(CXX) -c -o $@ $(BASELIB_CXXFLAGS) $(CPPDEPS) $<
|
||||||
|
|
||||||
$(OBJS)\baselib_appbase.o: ../../src/common/appbase.cpp
|
$(OBJS)\baselib_appbase.o: ../../src/common/appbase.cpp
|
||||||
$(CXX) -c -o $@ $(BASELIB_CXXFLAGS) $(CPPDEPS) $<
|
$(CXX) -c -o $@ $(BASELIB_CXXFLAGS) $(CPPDEPS) $<
|
||||||
|
|
||||||
|
@@ -311,6 +311,7 @@ MONODLL_CXXFLAGS = /M$(__RUNTIME_LIBS_100)$(__DEBUGRUNTIME) /DWIN32 \
|
|||||||
/Fp"$(OBJS)\wxprec_monodll.pch" $(CPPFLAGS) $(CXXFLAGS)
|
/Fp"$(OBJS)\wxprec_monodll.pch" $(CPPFLAGS) $(CXXFLAGS)
|
||||||
MONODLL_OBJECTS = \
|
MONODLL_OBJECTS = \
|
||||||
$(OBJS)\monodll_dummy.obj \
|
$(OBJS)\monodll_dummy.obj \
|
||||||
|
$(OBJS)\monodll_any.obj \
|
||||||
$(OBJS)\monodll_appbase.obj \
|
$(OBJS)\monodll_appbase.obj \
|
||||||
$(OBJS)\monodll_arcall.obj \
|
$(OBJS)\monodll_arcall.obj \
|
||||||
$(OBJS)\monodll_arcfind.obj \
|
$(OBJS)\monodll_arcfind.obj \
|
||||||
@@ -456,6 +457,7 @@ MONOLIB_CXXFLAGS = /M$(__RUNTIME_LIBS_113)$(__DEBUGRUNTIME) /DWIN32 \
|
|||||||
/Fp"$(OBJS)\wxprec_monolib.pch" $(CPPFLAGS) $(CXXFLAGS)
|
/Fp"$(OBJS)\wxprec_monolib.pch" $(CPPFLAGS) $(CXXFLAGS)
|
||||||
MONOLIB_OBJECTS = \
|
MONOLIB_OBJECTS = \
|
||||||
$(OBJS)\monolib_dummy.obj \
|
$(OBJS)\monolib_dummy.obj \
|
||||||
|
$(OBJS)\monolib_any.obj \
|
||||||
$(OBJS)\monolib_appbase.obj \
|
$(OBJS)\monolib_appbase.obj \
|
||||||
$(OBJS)\monolib_arcall.obj \
|
$(OBJS)\monolib_arcall.obj \
|
||||||
$(OBJS)\monolib_arcfind.obj \
|
$(OBJS)\monolib_arcfind.obj \
|
||||||
@@ -599,6 +601,7 @@ BASEDLL_CXXFLAGS = /M$(__RUNTIME_LIBS_127)$(__DEBUGRUNTIME) /DWIN32 \
|
|||||||
BASEDLL_OBJECTS = \
|
BASEDLL_OBJECTS = \
|
||||||
$(OBJS)\basedll_dummy.obj \
|
$(OBJS)\basedll_dummy.obj \
|
||||||
$(OBJS)\basedll_version.res \
|
$(OBJS)\basedll_version.res \
|
||||||
|
$(OBJS)\basedll_any.obj \
|
||||||
$(OBJS)\basedll_appbase.obj \
|
$(OBJS)\basedll_appbase.obj \
|
||||||
$(OBJS)\basedll_arcall.obj \
|
$(OBJS)\basedll_arcall.obj \
|
||||||
$(OBJS)\basedll_arcfind.obj \
|
$(OBJS)\basedll_arcfind.obj \
|
||||||
@@ -726,6 +729,7 @@ BASELIB_CXXFLAGS = /M$(__RUNTIME_LIBS_140)$(__DEBUGRUNTIME) /DWIN32 \
|
|||||||
/Fp"$(OBJS)\wxprec_baselib.pch" $(CPPFLAGS) $(CXXFLAGS)
|
/Fp"$(OBJS)\wxprec_baselib.pch" $(CPPFLAGS) $(CXXFLAGS)
|
||||||
BASELIB_OBJECTS = \
|
BASELIB_OBJECTS = \
|
||||||
$(OBJS)\baselib_dummy.obj \
|
$(OBJS)\baselib_dummy.obj \
|
||||||
|
$(OBJS)\baselib_any.obj \
|
||||||
$(OBJS)\baselib_appbase.obj \
|
$(OBJS)\baselib_appbase.obj \
|
||||||
$(OBJS)\baselib_arcall.obj \
|
$(OBJS)\baselib_arcall.obj \
|
||||||
$(OBJS)\baselib_arcfind.obj \
|
$(OBJS)\baselib_arcfind.obj \
|
||||||
@@ -5861,6 +5865,9 @@ $(OBJS)\wxscintilla_XPM.obj: ..\..\src\stc\scintilla\src\XPM.cxx
|
|||||||
$(OBJS)\monodll_dummy.obj: ..\..\src\common\dummy.cpp
|
$(OBJS)\monodll_dummy.obj: ..\..\src\common\dummy.cpp
|
||||||
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) /Ycwx/wxprec.h ..\..\src\common\dummy.cpp
|
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) /Ycwx/wxprec.h ..\..\src\common\dummy.cpp
|
||||||
|
|
||||||
|
$(OBJS)\monodll_any.obj: ..\..\src\common\any.cpp
|
||||||
|
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\common\any.cpp
|
||||||
|
|
||||||
$(OBJS)\monodll_appbase.obj: ..\..\src\common\appbase.cpp
|
$(OBJS)\monodll_appbase.obj: ..\..\src\common\appbase.cpp
|
||||||
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\common\appbase.cpp
|
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\common\appbase.cpp
|
||||||
|
|
||||||
@@ -8098,6 +8105,9 @@ $(OBJS)\monodll_version.res: ..\..\src\msw\version.rc
|
|||||||
$(OBJS)\monolib_dummy.obj: ..\..\src\common\dummy.cpp
|
$(OBJS)\monolib_dummy.obj: ..\..\src\common\dummy.cpp
|
||||||
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) /Ycwx/wxprec.h ..\..\src\common\dummy.cpp
|
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) /Ycwx/wxprec.h ..\..\src\common\dummy.cpp
|
||||||
|
|
||||||
|
$(OBJS)\monolib_any.obj: ..\..\src\common\any.cpp
|
||||||
|
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\common\any.cpp
|
||||||
|
|
||||||
$(OBJS)\monolib_appbase.obj: ..\..\src\common\appbase.cpp
|
$(OBJS)\monolib_appbase.obj: ..\..\src\common\appbase.cpp
|
||||||
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\common\appbase.cpp
|
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\common\appbase.cpp
|
||||||
|
|
||||||
@@ -10335,6 +10345,9 @@ $(OBJS)\basedll_dummy.obj: ..\..\src\common\dummy.cpp
|
|||||||
$(OBJS)\basedll_version.res: ..\..\src\msw\version.rc
|
$(OBJS)\basedll_version.res: ..\..\src\msw\version.rc
|
||||||
rc /fo$@ /d WIN32 $(____DEBUGRUNTIME_4) $(__NO_VC_CRTDBG_p_68) /d __WXMSW__ $(__WXUNIV_DEFINE_p_62) $(__DEBUG_DEFINE_p_61) $(__EXCEPTIONS_DEFINE_p_61) $(__RTTI_DEFINE_p_61) $(__THREAD_DEFINE_p_61) $(__UNICODE_DEFINE_p_62) $(__MSLU_DEFINE_p_61) $(__GFXCTX_DEFINE_p_61) /i $(SETUPHDIR) /i ..\..\include /d WXBUILDING /d WXDLLNAME=wxbase$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_vc$(VENDORTAG) /i ..\..\src\tiff\libtiff /i ..\..\src\jpeg /i ..\..\src\png /i ..\..\src\zlib /i ..\..\src\regex /i ..\..\src\expat\lib /d wxUSE_GUI=0 /d WXMAKINGDLL_BASE /d wxUSE_BASE=1 ..\..\src\msw\version.rc
|
rc /fo$@ /d WIN32 $(____DEBUGRUNTIME_4) $(__NO_VC_CRTDBG_p_68) /d __WXMSW__ $(__WXUNIV_DEFINE_p_62) $(__DEBUG_DEFINE_p_61) $(__EXCEPTIONS_DEFINE_p_61) $(__RTTI_DEFINE_p_61) $(__THREAD_DEFINE_p_61) $(__UNICODE_DEFINE_p_62) $(__MSLU_DEFINE_p_61) $(__GFXCTX_DEFINE_p_61) /i $(SETUPHDIR) /i ..\..\include /d WXBUILDING /d WXDLLNAME=wxbase$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_vc$(VENDORTAG) /i ..\..\src\tiff\libtiff /i ..\..\src\jpeg /i ..\..\src\png /i ..\..\src\zlib /i ..\..\src\regex /i ..\..\src\expat\lib /d wxUSE_GUI=0 /d WXMAKINGDLL_BASE /d wxUSE_BASE=1 ..\..\src\msw\version.rc
|
||||||
|
|
||||||
|
$(OBJS)\basedll_any.obj: ..\..\src\common\any.cpp
|
||||||
|
$(CXX) /c /nologo /TP /Fo$@ $(BASEDLL_CXXFLAGS) ..\..\src\common\any.cpp
|
||||||
|
|
||||||
$(OBJS)\basedll_appbase.obj: ..\..\src\common\appbase.cpp
|
$(OBJS)\basedll_appbase.obj: ..\..\src\common\appbase.cpp
|
||||||
$(CXX) /c /nologo /TP /Fo$@ $(BASEDLL_CXXFLAGS) ..\..\src\common\appbase.cpp
|
$(CXX) /c /nologo /TP /Fo$@ $(BASEDLL_CXXFLAGS) ..\..\src\common\appbase.cpp
|
||||||
|
|
||||||
@@ -10650,6 +10663,9 @@ $(OBJS)\basedll_volume.obj: ..\..\src\msw\volume.cpp
|
|||||||
$(OBJS)\baselib_dummy.obj: ..\..\src\common\dummy.cpp
|
$(OBJS)\baselib_dummy.obj: ..\..\src\common\dummy.cpp
|
||||||
$(CXX) /c /nologo /TP /Fo$@ $(BASELIB_CXXFLAGS) /Ycwx/wxprec.h ..\..\src\common\dummy.cpp
|
$(CXX) /c /nologo /TP /Fo$@ $(BASELIB_CXXFLAGS) /Ycwx/wxprec.h ..\..\src\common\dummy.cpp
|
||||||
|
|
||||||
|
$(OBJS)\baselib_any.obj: ..\..\src\common\any.cpp
|
||||||
|
$(CXX) /c /nologo /TP /Fo$@ $(BASELIB_CXXFLAGS) ..\..\src\common\any.cpp
|
||||||
|
|
||||||
$(OBJS)\baselib_appbase.obj: ..\..\src\common\appbase.cpp
|
$(OBJS)\baselib_appbase.obj: ..\..\src\common\appbase.cpp
|
||||||
$(CXX) /c /nologo /TP /Fo$@ $(BASELIB_CXXFLAGS) ..\..\src\common\appbase.cpp
|
$(CXX) /c /nologo /TP /Fo$@ $(BASELIB_CXXFLAGS) ..\..\src\common\appbase.cpp
|
||||||
|
|
||||||
|
@@ -3439,6 +3439,7 @@ MONODLL_CXXFLAGS = -bd $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(__THREADSFLAG) &
|
|||||||
$(__EXCEPTIONSFLAG) $(CPPFLAGS) $(CXXFLAGS)
|
$(__EXCEPTIONSFLAG) $(CPPFLAGS) $(CXXFLAGS)
|
||||||
MONODLL_OBJECTS = &
|
MONODLL_OBJECTS = &
|
||||||
$(OBJS)\monodll_dummy.obj &
|
$(OBJS)\monodll_dummy.obj &
|
||||||
|
$(OBJS)\monodll_any.obj &
|
||||||
$(OBJS)\monodll_appbase.obj &
|
$(OBJS)\monodll_appbase.obj &
|
||||||
$(OBJS)\monodll_arcall.obj &
|
$(OBJS)\monodll_arcall.obj &
|
||||||
$(OBJS)\monodll_arcfind.obj &
|
$(OBJS)\monodll_arcfind.obj &
|
||||||
@@ -3579,6 +3580,7 @@ MONOLIB_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(__THREADSFLAG) &
|
|||||||
$(CPPFLAGS) $(CXXFLAGS)
|
$(CPPFLAGS) $(CXXFLAGS)
|
||||||
MONOLIB_OBJECTS = &
|
MONOLIB_OBJECTS = &
|
||||||
$(OBJS)\monolib_dummy.obj &
|
$(OBJS)\monolib_dummy.obj &
|
||||||
|
$(OBJS)\monolib_any.obj &
|
||||||
$(OBJS)\monolib_appbase.obj &
|
$(OBJS)\monolib_appbase.obj &
|
||||||
$(OBJS)\monolib_arcall.obj &
|
$(OBJS)\monolib_arcall.obj &
|
||||||
$(OBJS)\monolib_arcfind.obj &
|
$(OBJS)\monolib_arcfind.obj &
|
||||||
@@ -3717,6 +3719,7 @@ BASEDLL_CXXFLAGS = -bd $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(__THREADSFLAG) &
|
|||||||
$(CPPFLAGS) $(CXXFLAGS)
|
$(CPPFLAGS) $(CXXFLAGS)
|
||||||
BASEDLL_OBJECTS = &
|
BASEDLL_OBJECTS = &
|
||||||
$(OBJS)\basedll_dummy.obj &
|
$(OBJS)\basedll_dummy.obj &
|
||||||
|
$(OBJS)\basedll_any.obj &
|
||||||
$(OBJS)\basedll_appbase.obj &
|
$(OBJS)\basedll_appbase.obj &
|
||||||
$(OBJS)\basedll_arcall.obj &
|
$(OBJS)\basedll_arcall.obj &
|
||||||
$(OBJS)\basedll_arcfind.obj &
|
$(OBJS)\basedll_arcfind.obj &
|
||||||
@@ -3839,6 +3842,7 @@ BASELIB_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(__THREADSFLAG) &
|
|||||||
$(CPPFLAGS) $(CXXFLAGS)
|
$(CPPFLAGS) $(CXXFLAGS)
|
||||||
BASELIB_OBJECTS = &
|
BASELIB_OBJECTS = &
|
||||||
$(OBJS)\baselib_dummy.obj &
|
$(OBJS)\baselib_dummy.obj &
|
||||||
|
$(OBJS)\baselib_any.obj &
|
||||||
$(OBJS)\baselib_appbase.obj &
|
$(OBJS)\baselib_appbase.obj &
|
||||||
$(OBJS)\baselib_arcall.obj &
|
$(OBJS)\baselib_arcall.obj &
|
||||||
$(OBJS)\baselib_arcfind.obj &
|
$(OBJS)\baselib_arcfind.obj &
|
||||||
@@ -5920,6 +5924,9 @@ $(OBJS)\wxscintilla_XPM.obj : .AUTODEPEND ..\..\src\stc\scintilla\src\XPM.cxx
|
|||||||
$(OBJS)\monodll_dummy.obj : .AUTODEPEND ..\..\src\common\dummy.cpp
|
$(OBJS)\monodll_dummy.obj : .AUTODEPEND ..\..\src\common\dummy.cpp
|
||||||
$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
|
$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
|
||||||
|
|
||||||
|
$(OBJS)\monodll_any.obj : .AUTODEPEND ..\..\src\common\any.cpp
|
||||||
|
$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
|
||||||
|
|
||||||
$(OBJS)\monodll_appbase.obj : .AUTODEPEND ..\..\src\common\appbase.cpp
|
$(OBJS)\monodll_appbase.obj : .AUTODEPEND ..\..\src\common\appbase.cpp
|
||||||
$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
|
$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
|
||||||
|
|
||||||
@@ -8269,6 +8276,9 @@ $(OBJS)\monodll_version.res : .AUTODEPEND ..\..\src\msw\version.rc
|
|||||||
$(OBJS)\monolib_dummy.obj : .AUTODEPEND ..\..\src\common\dummy.cpp
|
$(OBJS)\monolib_dummy.obj : .AUTODEPEND ..\..\src\common\dummy.cpp
|
||||||
$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
|
$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
|
||||||
|
|
||||||
|
$(OBJS)\monolib_any.obj : .AUTODEPEND ..\..\src\common\any.cpp
|
||||||
|
$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
|
||||||
|
|
||||||
$(OBJS)\monolib_appbase.obj : .AUTODEPEND ..\..\src\common\appbase.cpp
|
$(OBJS)\monolib_appbase.obj : .AUTODEPEND ..\..\src\common\appbase.cpp
|
||||||
$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
|
$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
|
||||||
|
|
||||||
@@ -10618,6 +10628,9 @@ $(OBJS)\basedll_dummy.obj : .AUTODEPEND ..\..\src\common\dummy.cpp
|
|||||||
$(OBJS)\basedll_version.res : .AUTODEPEND ..\..\src\msw\version.rc
|
$(OBJS)\basedll_version.res : .AUTODEPEND ..\..\src\msw\version.rc
|
||||||
wrc -q -ad -bt=nt -r -fo=$^@ -d__WXMSW__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) $(__UNICODE_DEFINE_p) $(__GFXCTX_DEFINE_p) -i=$(SETUPHDIR) -i=..\..\include -dWXBUILDING -dWXDLLNAME=wxbase$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_wat$(VENDORTAG) -i=..\..\src\tiff\libtiff -i=..\..\src\jpeg -i=..\..\src\png -i=..\..\src\zlib -i=..\..\src\regex -i=..\..\src\expat\lib -dwxUSE_GUI=0 -dWXMAKINGDLL_BASE -dwxUSE_BASE=1 $<
|
wrc -q -ad -bt=nt -r -fo=$^@ -d__WXMSW__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) $(__UNICODE_DEFINE_p) $(__GFXCTX_DEFINE_p) -i=$(SETUPHDIR) -i=..\..\include -dWXBUILDING -dWXDLLNAME=wxbase$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_wat$(VENDORTAG) -i=..\..\src\tiff\libtiff -i=..\..\src\jpeg -i=..\..\src\png -i=..\..\src\zlib -i=..\..\src\regex -i=..\..\src\expat\lib -dwxUSE_GUI=0 -dWXMAKINGDLL_BASE -dwxUSE_BASE=1 $<
|
||||||
|
|
||||||
|
$(OBJS)\basedll_any.obj : .AUTODEPEND ..\..\src\common\any.cpp
|
||||||
|
$(CXX) -bt=nt -zq -fo=$^@ $(BASEDLL_CXXFLAGS) $<
|
||||||
|
|
||||||
$(OBJS)\basedll_appbase.obj : .AUTODEPEND ..\..\src\common\appbase.cpp
|
$(OBJS)\basedll_appbase.obj : .AUTODEPEND ..\..\src\common\appbase.cpp
|
||||||
$(CXX) -bt=nt -zq -fo=$^@ $(BASEDLL_CXXFLAGS) $<
|
$(CXX) -bt=nt -zq -fo=$^@ $(BASEDLL_CXXFLAGS) $<
|
||||||
|
|
||||||
@@ -10933,6 +10946,9 @@ $(OBJS)\basedll_volume.obj : .AUTODEPEND ..\..\src\msw\volume.cpp
|
|||||||
$(OBJS)\baselib_dummy.obj : .AUTODEPEND ..\..\src\common\dummy.cpp
|
$(OBJS)\baselib_dummy.obj : .AUTODEPEND ..\..\src\common\dummy.cpp
|
||||||
$(CXX) -bt=nt -zq -fo=$^@ $(BASELIB_CXXFLAGS) $<
|
$(CXX) -bt=nt -zq -fo=$^@ $(BASELIB_CXXFLAGS) $<
|
||||||
|
|
||||||
|
$(OBJS)\baselib_any.obj : .AUTODEPEND ..\..\src\common\any.cpp
|
||||||
|
$(CXX) -bt=nt -zq -fo=$^@ $(BASELIB_CXXFLAGS) $<
|
||||||
|
|
||||||
$(OBJS)\baselib_appbase.obj : .AUTODEPEND ..\..\src\common\appbase.cpp
|
$(OBJS)\baselib_appbase.obj : .AUTODEPEND ..\..\src\common\appbase.cpp
|
||||||
$(CXX) -bt=nt -zq -fo=$^@ $(BASELIB_CXXFLAGS) $<
|
$(CXX) -bt=nt -zq -fo=$^@ $(BASELIB_CXXFLAGS) $<
|
||||||
|
|
||||||
|
@@ -244,6 +244,10 @@ LIB32=link.exe -lib
|
|||||||
# PROP Default_Filter ""
|
# PROP Default_Filter ""
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\..\src\common\any.cpp
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
SOURCE=..\..\src\common\appbase.cpp
|
SOURCE=..\..\src\common\appbase.cpp
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
@@ -1039,6 +1043,10 @@ SOURCE=..\..\include\wx\afterstd.h
|
|||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\..\include\wx\any.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
SOURCE=..\..\include\wx\anystr.h
|
SOURCE=..\..\include\wx\anystr.h
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
@@ -524,6 +524,9 @@
|
|||||||
<Filter
|
<Filter
|
||||||
Name="Common Sources"
|
Name="Common Sources"
|
||||||
UniqueIdentifier="{A6A5C30D-BDB6-5050-906D-10A96065136C}">
|
UniqueIdentifier="{A6A5C30D-BDB6-5050-906D-10A96065136C}">
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\src\common\any.cpp">
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\src\common\appbase.cpp">
|
RelativePath="..\..\src\common\appbase.cpp">
|
||||||
</File>
|
</File>
|
||||||
@@ -1205,6 +1208,9 @@
|
|||||||
<File
|
<File
|
||||||
RelativePath="..\..\include\wx\afterstd.h">
|
RelativePath="..\..\include\wx\afterstd.h">
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\include\wx\any.h">
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\include\wx\anystr.h">
|
RelativePath="..\..\include\wx\anystr.h">
|
||||||
</File>
|
</File>
|
||||||
|
@@ -734,6 +734,10 @@
|
|||||||
Name="Common Sources"
|
Name="Common Sources"
|
||||||
UniqueIdentifier="{A6A5C30D-BDB6-5050-906D-10A96065136C}"
|
UniqueIdentifier="{A6A5C30D-BDB6-5050-906D-10A96065136C}"
|
||||||
>
|
>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\src\common\any.cpp"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\src\common\appbase.cpp"
|
RelativePath="..\..\src\common\appbase.cpp"
|
||||||
>
|
>
|
||||||
@@ -1627,6 +1631,10 @@
|
|||||||
RelativePath="..\..\include\wx\afterstd.h"
|
RelativePath="..\..\include\wx\afterstd.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\include\wx\any.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\include\wx\anystr.h"
|
RelativePath="..\..\include\wx\anystr.h"
|
||||||
>
|
>
|
||||||
|
@@ -730,6 +730,10 @@
|
|||||||
Name="Common Sources"
|
Name="Common Sources"
|
||||||
UniqueIdentifier="{A6A5C30D-BDB6-5050-906D-10A96065136C}"
|
UniqueIdentifier="{A6A5C30D-BDB6-5050-906D-10A96065136C}"
|
||||||
>
|
>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\src\common\any.cpp"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\src\common\appbase.cpp"
|
RelativePath="..\..\src\common\appbase.cpp"
|
||||||
>
|
>
|
||||||
@@ -1623,6 +1627,10 @@
|
|||||||
RelativePath="..\..\include\wx\afterstd.h"
|
RelativePath="..\..\include\wx\afterstd.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\include\wx\any.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\include\wx\anystr.h"
|
RelativePath="..\..\include\wx\anystr.h"
|
||||||
>
|
>
|
||||||
|
54
configure
vendored
54
configure
vendored
@@ -1,5 +1,5 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
# From configure.in Id.
|
# From configure.in Id: configure.in 61944 2009-09-16 12:06:02Z PJC .
|
||||||
# Guess values for system-dependent variables and create Makefiles.
|
# Guess values for system-dependent variables and create Makefiles.
|
||||||
# Generated by GNU Autoconf 2.61 for wxWidgets 2.9.1.
|
# Generated by GNU Autoconf 2.61 for wxWidgets 2.9.1.
|
||||||
#
|
#
|
||||||
@@ -1711,6 +1711,7 @@ Optional Features:
|
|||||||
--enable-baseevtloop use event loop in console programs too
|
--enable-baseevtloop use event loop in console programs too
|
||||||
--enable-epollloop use wxEpollDispatcher class (Linux only)
|
--enable-epollloop use wxEpollDispatcher class (Linux only)
|
||||||
--enable-selectloop use wxSelectDispatcher class
|
--enable-selectloop use wxSelectDispatcher class
|
||||||
|
--enable-any use wxAny class
|
||||||
--enable-apple_ieee use the Apple IEEE codec
|
--enable-apple_ieee use the Apple IEEE codec
|
||||||
--enable-arcstream use wxArchive streams
|
--enable-arcstream use wxArchive streams
|
||||||
--enable-base64 use base64 encoding/decoding functions
|
--enable-base64 use base64 encoding/decoding functions
|
||||||
@@ -6274,6 +6275,50 @@ echo "${ECHO_T}$result" >&6; }
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
enablestring=
|
||||||
|
defaultval=$wxUSE_ALL_FEATURES
|
||||||
|
if test -z "$defaultval"; then
|
||||||
|
if test x"$enablestring" = xdisable; then
|
||||||
|
defaultval=yes
|
||||||
|
else
|
||||||
|
defaultval=no
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
{ echo "$as_me:$LINENO: checking for --${enablestring:-enable}-any" >&5
|
||||||
|
echo $ECHO_N "checking for --${enablestring:-enable}-any... $ECHO_C" >&6; }
|
||||||
|
# Check whether --enable-any was given.
|
||||||
|
if test "${enable_any+set}" = set; then
|
||||||
|
enableval=$enable_any;
|
||||||
|
if test "$enableval" = yes; then
|
||||||
|
wx_cv_use_any='wxUSE_ANY=yes'
|
||||||
|
else
|
||||||
|
wx_cv_use_any='wxUSE_ANY=no'
|
||||||
|
fi
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
wx_cv_use_any='wxUSE_ANY=${'DEFAULT_wxUSE_ANY":-$defaultval}"
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
eval "$wx_cv_use_any"
|
||||||
|
|
||||||
|
if test x"$enablestring" = xdisable; then
|
||||||
|
if test $wxUSE_ANY = no; then
|
||||||
|
result=yes
|
||||||
|
else
|
||||||
|
result=no
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
result=$wxUSE_ANY
|
||||||
|
fi
|
||||||
|
|
||||||
|
{ echo "$as_me:$LINENO: result: $result" >&5
|
||||||
|
echo "${ECHO_T}$result" >&6; }
|
||||||
|
|
||||||
|
|
||||||
enablestring=
|
enablestring=
|
||||||
defaultval=$wxUSE_ALL_FEATURES
|
defaultval=$wxUSE_ALL_FEATURES
|
||||||
if test -z "$defaultval"; then
|
if test -z "$defaultval"; then
|
||||||
@@ -42260,6 +42305,13 @@ _ACEOF
|
|||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if test "$wxUSE_ANY" = "yes"; then
|
||||||
|
cat >>confdefs.h <<\_ACEOF
|
||||||
|
#define wxUSE_ANY 1
|
||||||
|
_ACEOF
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
if test "$wxUSE_APPLE_IEEE" = "yes"; then
|
if test "$wxUSE_APPLE_IEEE" = "yes"; then
|
||||||
cat >>confdefs.h <<\_ACEOF
|
cat >>confdefs.h <<\_ACEOF
|
||||||
#define wxUSE_APPLE_IEEE 1
|
#define wxUSE_APPLE_IEEE 1
|
||||||
|
@@ -728,6 +728,7 @@ WX_ARG_FEATURE(epollloop, [ --enable-epollloop use wxEpollDispatcher c
|
|||||||
WX_ARG_FEATURE(selectloop, [ --enable-selectloop use wxSelectDispatcher class], wxUSE_SELECT_DISPATCHER)
|
WX_ARG_FEATURE(selectloop, [ --enable-selectloop use wxSelectDispatcher class], wxUSE_SELECT_DISPATCHER)
|
||||||
|
|
||||||
dnl please keep the settings below in alphabetical order
|
dnl please keep the settings below in alphabetical order
|
||||||
|
WX_ARG_FEATURE(any, [ --enable-any use wxAny class], wxUSE_ANY)
|
||||||
WX_ARG_FEATURE(apple_ieee, [ --enable-apple_ieee use the Apple IEEE codec], wxUSE_APPLE_IEEE)
|
WX_ARG_FEATURE(apple_ieee, [ --enable-apple_ieee use the Apple IEEE codec], wxUSE_APPLE_IEEE)
|
||||||
WX_ARG_FEATURE(arcstream, [ --enable-arcstream use wxArchive streams], wxUSE_ARCHIVE_STREAMS)
|
WX_ARG_FEATURE(arcstream, [ --enable-arcstream use wxArchive streams], wxUSE_ARCHIVE_STREAMS)
|
||||||
WX_ARG_FEATURE(base64, [ --enable-base64 use base64 encoding/decoding functions], wxUSE_BASE64)
|
WX_ARG_FEATURE(base64, [ --enable-base64 use base64 encoding/decoding functions], wxUSE_BASE64)
|
||||||
@@ -5473,6 +5474,10 @@ if test "$wxUSE_EXTENDED_RTTI" = "yes"; then
|
|||||||
AC_DEFINE(wxUSE_EXTENDED_RTTI)
|
AC_DEFINE(wxUSE_EXTENDED_RTTI)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if test "$wxUSE_ANY" = "yes"; then
|
||||||
|
AC_DEFINE(wxUSE_ANY)
|
||||||
|
fi
|
||||||
|
|
||||||
if test "$wxUSE_APPLE_IEEE" = "yes"; then
|
if test "$wxUSE_APPLE_IEEE" = "yes"; then
|
||||||
AC_DEFINE(wxUSE_APPLE_IEEE)
|
AC_DEFINE(wxUSE_APPLE_IEEE)
|
||||||
fi
|
fi
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
wxWidgets Change Log
|
wxWidgets Change Log
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
@@ -391,6 +391,8 @@ All:
|
|||||||
- Fix bug with position argument in wxImage::Size() (Byron Sorgdrager).
|
- Fix bug with position argument in wxImage::Size() (Byron Sorgdrager).
|
||||||
- Fix bug with parsing concatenated switches in wxCmdLineParser (Mike Funduc).
|
- Fix bug with parsing concatenated switches in wxCmdLineParser (Mike Funduc).
|
||||||
- Added wxMBConv::cMB2WC(wxCharBuffer) and cWC2MB(wxWCharBuffer) overloads.
|
- Added wxMBConv::cMB2WC(wxCharBuffer) and cWC2MB(wxWCharBuffer) overloads.
|
||||||
|
- Added wxAny class; a modern, backwards-incompatible replacement for
|
||||||
|
wxVariant.
|
||||||
|
|
||||||
All (GUI):
|
All (GUI):
|
||||||
|
|
||||||
|
@@ -624,6 +624,7 @@ Related overview: @ref overview_log
|
|||||||
|
|
||||||
These are the data structure classes supported by wxWidgets.
|
These are the data structure classes supported by wxWidgets.
|
||||||
|
|
||||||
|
@li wxAny: A class for storing arbitrary types that may change at run-time
|
||||||
@li wxCmdLineParser: Command line parser class
|
@li wxCmdLineParser: Command line parser class
|
||||||
@li wxDateSpan: A logical time interval.
|
@li wxDateSpan: A logical time interval.
|
||||||
@li wxDateTime: A class for date/time manipulations
|
@li wxDateTime: A class for date/time manipulations
|
||||||
|
@@ -67,6 +67,7 @@ library:
|
|||||||
@itemdef{wxUSE_ACCEL, Use wxAcceleratorTable/Entry classes and support for them in wxMenu, wxMenuBar.}
|
@itemdef{wxUSE_ACCEL, Use wxAcceleratorTable/Entry classes and support for them in wxMenu, wxMenuBar.}
|
||||||
@itemdef{wxUSE_AFM_FOR_POSTSCRIPT, In wxPostScriptDC class use AFM (adobe font metrics) file for character widths.}
|
@itemdef{wxUSE_AFM_FOR_POSTSCRIPT, In wxPostScriptDC class use AFM (adobe font metrics) file for character widths.}
|
||||||
@itemdef{wxUSE_ANIMATIONCTRL, Use wxAnimationCtrl class.}
|
@itemdef{wxUSE_ANIMATIONCTRL, Use wxAnimationCtrl class.}
|
||||||
|
@itemdef{wxUSE_ANY, Use wxAny class.}
|
||||||
@itemdef{wxUSE_APPLE_IEEE, IEEE Extended to/from double routines; see src/common/extended.c file.}
|
@itemdef{wxUSE_APPLE_IEEE, IEEE Extended to/from double routines; see src/common/extended.c file.}
|
||||||
@itemdef{wxUSE_ARCHIVE_STREAMS, Enable streams for archive formats.}
|
@itemdef{wxUSE_ARCHIVE_STREAMS, Enable streams for archive formats.}
|
||||||
@itemdef{wxUSE_AUI, Use AUI (dockable windows) library.}
|
@itemdef{wxUSE_AUI, Use AUI (dockable windows) library.}
|
||||||
|
@@ -7,6 +7,8 @@ ignored_methods = {
|
|||||||
# these classes are either replaced by different data types in bindings, or have equivalent / better
|
# these classes are either replaced by different data types in bindings, or have equivalent / better
|
||||||
# functionality provided by the target language.
|
# functionality provided by the target language.
|
||||||
excluded_classes = [
|
excluded_classes = [
|
||||||
|
"wxAny",
|
||||||
|
"wxAnyValueType",
|
||||||
"wxArchiveClassFactory",
|
"wxArchiveClassFactory",
|
||||||
"wxArchiveEntry",
|
"wxArchiveEntry",
|
||||||
"wxArchiveInputStream",
|
"wxArchiveInputStream",
|
||||||
|
794
include/wx/any.h
Normal file
794
include/wx/any.h
Normal file
@@ -0,0 +1,794 @@
|
|||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Name: wx/any.h
|
||||||
|
// Purpose: wxAny class
|
||||||
|
// Author: Jaakko Salli
|
||||||
|
// Modified by:
|
||||||
|
// Created: 07/05/2009
|
||||||
|
// RCS-ID: $Id$
|
||||||
|
// Copyright: (c) wxWidgets team
|
||||||
|
// Licence: wxWindows licence
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#ifndef _WX_ANY_H_
|
||||||
|
#define _WX_ANY_H_
|
||||||
|
|
||||||
|
#include "wx/defs.h"
|
||||||
|
|
||||||
|
#if wxUSE_ANY
|
||||||
|
|
||||||
|
#include "wx/string.h"
|
||||||
|
#include "wx/meta/movable.h"
|
||||||
|
#include "wx/meta/if.h"
|
||||||
|
|
||||||
|
|
||||||
|
// Size of the wxAny value buffer.
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
WX_ANY_VALUE_BUFFER_SIZE = 16
|
||||||
|
};
|
||||||
|
|
||||||
|
union wxAnyValueBuffer
|
||||||
|
{
|
||||||
|
void* m_ptr;
|
||||||
|
wxByte m_buffer[WX_ANY_VALUE_BUFFER_SIZE];
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef void (*wxAnyClassInfo)();
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// wxAnyValueType is base class for value type functionality for C++ data
|
||||||
|
// types used with wxAny. Usually the default template (wxAnyValueTypeImpl<>)
|
||||||
|
// will create a satisfactory wxAnyValueType implementation for a data type.
|
||||||
|
//
|
||||||
|
class WXDLLIMPEXP_BASE wxAnyValueType
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
Default constructor.
|
||||||
|
*/
|
||||||
|
wxAnyValueType();
|
||||||
|
|
||||||
|
/**
|
||||||
|
Destructor.
|
||||||
|
*/
|
||||||
|
virtual ~wxAnyValueType()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
This function is used for internal type matching.
|
||||||
|
*/
|
||||||
|
virtual wxAnyClassInfo GetClassInfo() const = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
This function is used for internal type matching.
|
||||||
|
*/
|
||||||
|
virtual bool IsSameType(const wxAnyValueType* otherType) const = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
This function is called every time the data in wxAny
|
||||||
|
buffer needs to be freed.
|
||||||
|
*/
|
||||||
|
virtual void DeleteValue(wxAnyValueBuffer& buf) const = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Implement this for buffer-to-buffer copy. src.m_ptr can
|
||||||
|
be expected to be NULL if value type of previously stored
|
||||||
|
data was different.
|
||||||
|
*/
|
||||||
|
virtual void CopyBuffer(const wxAnyValueBuffer& src,
|
||||||
|
wxAnyValueBuffer& dst) const = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Convert value into buffer of different type. Return false if
|
||||||
|
not possible.
|
||||||
|
*/
|
||||||
|
virtual bool ConvertValue(const wxAnyValueBuffer& src,
|
||||||
|
wxAnyValueType* dstType,
|
||||||
|
wxAnyValueBuffer& dst) const = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Use this template function for checking if wxAnyValueType represents
|
||||||
|
a specific C++ data type.
|
||||||
|
|
||||||
|
@remarks This template function does not work on some older compilers
|
||||||
|
(such as Visual C++ 6.0). For full compiler ccompatibility
|
||||||
|
please use wxANY_VALUE_TYPE_CHECK_TYPE(valueTypePtr, T) macro
|
||||||
|
instead.
|
||||||
|
|
||||||
|
@see wxAny::CheckType()
|
||||||
|
*/
|
||||||
|
// FIXME-VC6: remove this hack when VC6 is no longer supported
|
||||||
|
template <typename T>
|
||||||
|
bool CheckType(T* reserved = NULL);
|
||||||
|
private:
|
||||||
|
};
|
||||||
|
|
||||||
|
//
|
||||||
|
// This method of checking the type is compatible with VC6
|
||||||
|
#define wxANY_VALUE_TYPE_CHECK_TYPE(valueTypePtr, T) \
|
||||||
|
wxAnyValueTypeImpl<T>::IsSameClass(valueTypePtr)
|
||||||
|
|
||||||
|
//valueTypePtr->CheckType(static_cast<T*>(NULL))
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
Helper macro for defining user value types.
|
||||||
|
|
||||||
|
NB: We really cannot compare sm_classInfo directly in IsSameClass(),
|
||||||
|
but instead call sm_instance->GetClassInfo(). The former technique
|
||||||
|
broke at least on GCC 4.2 (but worked on VC8 shared build).
|
||||||
|
*/
|
||||||
|
#define WX_DECLARE_ANY_VALUE_TYPE(CLS) \
|
||||||
|
friend class wxAny; \
|
||||||
|
public: \
|
||||||
|
static void sm_classInfo() {} \
|
||||||
|
\
|
||||||
|
virtual wxAnyClassInfo GetClassInfo() const \
|
||||||
|
{ \
|
||||||
|
return sm_classInfo; \
|
||||||
|
} \
|
||||||
|
static bool IsSameClass(const wxAnyValueType* otherType) \
|
||||||
|
{ \
|
||||||
|
return sm_instance->GetClassInfo() == otherType->GetClassInfo(); \
|
||||||
|
} \
|
||||||
|
virtual bool IsSameType(const wxAnyValueType* otherType) const \
|
||||||
|
{ \
|
||||||
|
return IsSameClass(otherType); \
|
||||||
|
} \
|
||||||
|
private: \
|
||||||
|
static CLS* sm_instance; \
|
||||||
|
public: \
|
||||||
|
static wxAnyValueType* GetInstance() \
|
||||||
|
{ \
|
||||||
|
return sm_instance; \
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#define WX_IMPLEMENT_ANY_VALUE_TYPE(CLS) \
|
||||||
|
CLS* CLS::sm_instance = new CLS();
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __VISUALC6__
|
||||||
|
// "non dll-interface class 'xxx' used as base interface
|
||||||
|
#pragma warning (push)
|
||||||
|
#pragma warning (disable:4275)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
Following are helper classes for the wxAnyValueTypeImplBase.
|
||||||
|
*/
|
||||||
|
namespace wxPrivate
|
||||||
|
{
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
class wxAnyValueTypeOpsMovable
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static void DeleteValue(wxAnyValueBuffer& buf)
|
||||||
|
{
|
||||||
|
wxUnusedVar(buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void SetValue(const T& value,
|
||||||
|
wxAnyValueBuffer& buf)
|
||||||
|
{
|
||||||
|
memcpy(buf.m_buffer, &value, sizeof(T));
|
||||||
|
}
|
||||||
|
|
||||||
|
static const T& GetValue(const wxAnyValueBuffer& buf)
|
||||||
|
{
|
||||||
|
return *(reinterpret_cast<const T*>(&buf.m_buffer[0]));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
class wxAnyValueTypeOpsGeneric
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
template<typename T2>
|
||||||
|
class DataHolder
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
DataHolder(const T2& value)
|
||||||
|
{
|
||||||
|
m_value = value;
|
||||||
|
}
|
||||||
|
virtual ~DataHolder() { }
|
||||||
|
|
||||||
|
T2 m_value;
|
||||||
|
private:
|
||||||
|
wxDECLARE_NO_COPY_CLASS(DataHolder);
|
||||||
|
};
|
||||||
|
|
||||||
|
static void DeleteValue(wxAnyValueBuffer& buf)
|
||||||
|
{
|
||||||
|
DataHolder<T>* holder = static_cast<DataHolder<T>*>(buf.m_ptr);
|
||||||
|
delete holder;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void SetValue(const T& value,
|
||||||
|
wxAnyValueBuffer& buf)
|
||||||
|
{
|
||||||
|
DataHolder<T>* holder = new DataHolder<T>(value);
|
||||||
|
buf.m_ptr = holder;
|
||||||
|
}
|
||||||
|
|
||||||
|
static const T& GetValue(const wxAnyValueBuffer& buf)
|
||||||
|
{
|
||||||
|
DataHolder<T>* holder = static_cast<DataHolder<T>*>(buf.m_ptr);
|
||||||
|
return holder->m_value;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace wxPrivate
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
Intermediate template for the generic value type implementation.
|
||||||
|
We can derive from this same value type for multiple actual types
|
||||||
|
(for instance, we can have wxAnyValueTypeImplInt for all signed
|
||||||
|
integer types), and also easily implement specialized templates
|
||||||
|
with specific dynamic type conversion.
|
||||||
|
*/
|
||||||
|
template<typename T>
|
||||||
|
class wxAnyValueTypeImplBase : public wxAnyValueType
|
||||||
|
{
|
||||||
|
typedef typename wxIf< wxIsMovable<T>::value &&
|
||||||
|
sizeof(T) <= WX_ANY_VALUE_BUFFER_SIZE,
|
||||||
|
wxPrivate::wxAnyValueTypeOpsMovable<T>,
|
||||||
|
wxPrivate::wxAnyValueTypeOpsGeneric<T> >::value
|
||||||
|
Ops;
|
||||||
|
|
||||||
|
public:
|
||||||
|
wxAnyValueTypeImplBase() : wxAnyValueType() { }
|
||||||
|
virtual ~wxAnyValueTypeImplBase() { }
|
||||||
|
|
||||||
|
virtual void DeleteValue(wxAnyValueBuffer& buf) const
|
||||||
|
{
|
||||||
|
Ops::DeleteValue(buf);
|
||||||
|
buf.m_ptr = NULL; // This is important
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual void CopyBuffer(const wxAnyValueBuffer& src,
|
||||||
|
wxAnyValueBuffer& dst) const
|
||||||
|
{
|
||||||
|
Ops::DeleteValue(dst);
|
||||||
|
Ops::SetValue(Ops::GetValue(src), dst);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
It is important to reimplement this in any specialized template
|
||||||
|
classes that inherit from wxAnyValueTypeImplBase.
|
||||||
|
*/
|
||||||
|
static void SetValue(const T& value,
|
||||||
|
wxAnyValueBuffer& buf)
|
||||||
|
{
|
||||||
|
Ops::SetValue(value, buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
It is important to reimplement this in any specialized template
|
||||||
|
classes that inherit from wxAnyValueTypeImplBase.
|
||||||
|
*/
|
||||||
|
static const T& GetValue(const wxAnyValueBuffer& buf)
|
||||||
|
{
|
||||||
|
return Ops::GetValue(buf);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Generic value type template. Note that bulk of the implementation
|
||||||
|
resides in wxAnyValueTypeImplBase.
|
||||||
|
*/
|
||||||
|
template<typename T>
|
||||||
|
class wxAnyValueTypeImpl : public wxAnyValueTypeImplBase<T>
|
||||||
|
{
|
||||||
|
WX_DECLARE_ANY_VALUE_TYPE(wxAnyValueTypeImpl<T>)
|
||||||
|
public:
|
||||||
|
wxAnyValueTypeImpl() : wxAnyValueTypeImplBase<T>() { }
|
||||||
|
virtual ~wxAnyValueTypeImpl() { }
|
||||||
|
|
||||||
|
virtual bool ConvertValue(const wxAnyValueBuffer& src,
|
||||||
|
wxAnyValueType* dstType,
|
||||||
|
wxAnyValueBuffer& dst) const
|
||||||
|
{
|
||||||
|
wxUnusedVar(src);
|
||||||
|
wxUnusedVar(dstType);
|
||||||
|
wxUnusedVar(dst);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
wxAnyValueTypeImpl<T>* wxAnyValueTypeImpl<T>::sm_instance =
|
||||||
|
new wxAnyValueTypeImpl<T>();
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// Helper macro for using same base value type implementation for multiple
|
||||||
|
// actual C++ data types.
|
||||||
|
//
|
||||||
|
#define WX_ANY_DEFINE_SUB_TYPE(T, CLSTYPE) \
|
||||||
|
template<> \
|
||||||
|
class wxAnyValueTypeImpl<T> : public wxAnyValueTypeImpl##CLSTYPE \
|
||||||
|
{ \
|
||||||
|
typedef wxAnyBase##CLSTYPE##Type UseDataType; \
|
||||||
|
public: \
|
||||||
|
wxAnyValueTypeImpl() : wxAnyValueTypeImpl##CLSTYPE() { } \
|
||||||
|
virtual ~wxAnyValueTypeImpl() { } \
|
||||||
|
static void SetValue(const T& value, wxAnyValueBuffer& buf) \
|
||||||
|
{ \
|
||||||
|
*(reinterpret_cast<UseDataType*>(&buf.m_buffer[0])) = \
|
||||||
|
static_cast<UseDataType>(value); \
|
||||||
|
} \
|
||||||
|
static T GetValue(const wxAnyValueBuffer& buf) \
|
||||||
|
{ \
|
||||||
|
return static_cast<T>( \
|
||||||
|
*(reinterpret_cast<const UseDataType*>(&buf.m_buffer[0]))); \
|
||||||
|
} \
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// Integer value types
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifdef wxLongLong_t
|
||||||
|
typedef wxLongLong_t wxAnyBaseIntType;
|
||||||
|
typedef wxULongLong_t wxAnyBaseUintType;
|
||||||
|
#else
|
||||||
|
typedef long wxAnyBaseIntType;
|
||||||
|
typedef unsigned long wxAnyBaseUintType;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
class WXDLLIMPEXP_BASE wxAnyValueTypeImplInt :
|
||||||
|
public wxAnyValueTypeImplBase<wxAnyBaseIntType>
|
||||||
|
{
|
||||||
|
WX_DECLARE_ANY_VALUE_TYPE(wxAnyValueTypeImplInt)
|
||||||
|
public:
|
||||||
|
wxAnyValueTypeImplInt() :
|
||||||
|
wxAnyValueTypeImplBase<wxAnyBaseIntType>() { }
|
||||||
|
virtual ~wxAnyValueTypeImplInt() { }
|
||||||
|
|
||||||
|
virtual bool ConvertValue(const wxAnyValueBuffer& src,
|
||||||
|
wxAnyValueType* dstType,
|
||||||
|
wxAnyValueBuffer& dst) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
class WXDLLIMPEXP_BASE wxAnyValueTypeImplUint :
|
||||||
|
public wxAnyValueTypeImplBase<wxAnyBaseUintType>
|
||||||
|
{
|
||||||
|
WX_DECLARE_ANY_VALUE_TYPE(wxAnyValueTypeImplUint)
|
||||||
|
public:
|
||||||
|
wxAnyValueTypeImplUint() :
|
||||||
|
wxAnyValueTypeImplBase<wxAnyBaseUintType>() { }
|
||||||
|
virtual ~wxAnyValueTypeImplUint() { }
|
||||||
|
|
||||||
|
virtual bool ConvertValue(const wxAnyValueBuffer& src,
|
||||||
|
wxAnyValueType* dstType,
|
||||||
|
wxAnyValueBuffer& dst) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
WX_ANY_DEFINE_SUB_TYPE(signed long, Int)
|
||||||
|
WX_ANY_DEFINE_SUB_TYPE(signed int, Int)
|
||||||
|
WX_ANY_DEFINE_SUB_TYPE(signed short, Int)
|
||||||
|
WX_ANY_DEFINE_SUB_TYPE(signed char, Int)
|
||||||
|
#ifdef wxLongLong_t
|
||||||
|
WX_ANY_DEFINE_SUB_TYPE(wxLongLong_t, Int)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
WX_ANY_DEFINE_SUB_TYPE(unsigned long, Uint)
|
||||||
|
WX_ANY_DEFINE_SUB_TYPE(unsigned int, Uint)
|
||||||
|
WX_ANY_DEFINE_SUB_TYPE(unsigned short, Uint)
|
||||||
|
WX_ANY_DEFINE_SUB_TYPE(unsigned char, Uint)
|
||||||
|
#ifdef wxLongLong_t
|
||||||
|
WX_ANY_DEFINE_SUB_TYPE(wxULongLong_t, Uint)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// String value type
|
||||||
|
//
|
||||||
|
class WXDLLIMPEXP_BASE wxAnyValueTypeImplString :
|
||||||
|
public wxAnyValueTypeImplBase<wxString>
|
||||||
|
{
|
||||||
|
WX_DECLARE_ANY_VALUE_TYPE(wxAnyValueTypeImplString)
|
||||||
|
public:
|
||||||
|
wxAnyValueTypeImplString() :
|
||||||
|
wxAnyValueTypeImplBase<wxString>() { }
|
||||||
|
virtual ~wxAnyValueTypeImplString() { }
|
||||||
|
|
||||||
|
/**
|
||||||
|
Convert value into buffer of different type. Return false if
|
||||||
|
not possible.
|
||||||
|
*/
|
||||||
|
virtual bool ConvertValue(const wxAnyValueBuffer& src,
|
||||||
|
wxAnyValueType* dstType,
|
||||||
|
wxAnyValueBuffer& dst) const;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
template<>
|
||||||
|
class wxAnyValueTypeImpl<wxString> : public wxAnyValueTypeImplString
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
wxAnyValueTypeImpl() : wxAnyValueTypeImplString() { }
|
||||||
|
virtual ~wxAnyValueTypeImpl() { }
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// Bool value type
|
||||||
|
//
|
||||||
|
template<>
|
||||||
|
class WXDLLIMPEXP_BASE wxAnyValueTypeImpl<bool> :
|
||||||
|
public wxAnyValueTypeImplBase<bool>
|
||||||
|
{
|
||||||
|
WX_DECLARE_ANY_VALUE_TYPE(wxAnyValueTypeImpl<bool>)
|
||||||
|
public:
|
||||||
|
wxAnyValueTypeImpl() :
|
||||||
|
wxAnyValueTypeImplBase<bool>() { }
|
||||||
|
virtual ~wxAnyValueTypeImpl() { }
|
||||||
|
|
||||||
|
virtual bool ConvertValue(const wxAnyValueBuffer& src,
|
||||||
|
wxAnyValueType* dstType,
|
||||||
|
wxAnyValueBuffer& dst) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
//
|
||||||
|
// Floating point value type
|
||||||
|
//
|
||||||
|
class WXDLLIMPEXP_BASE wxAnyValueTypeImplDouble :
|
||||||
|
public wxAnyValueTypeImplBase<double>
|
||||||
|
{
|
||||||
|
WX_DECLARE_ANY_VALUE_TYPE(wxAnyValueTypeImplDouble)
|
||||||
|
public:
|
||||||
|
wxAnyValueTypeImplDouble() :
|
||||||
|
wxAnyValueTypeImplBase<double>() { }
|
||||||
|
virtual ~wxAnyValueTypeImplDouble() { }
|
||||||
|
|
||||||
|
virtual bool ConvertValue(const wxAnyValueBuffer& src,
|
||||||
|
wxAnyValueType* dstType,
|
||||||
|
wxAnyValueBuffer& dst) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
// WX_ANY_DEFINE_SUB_TYPE requires this
|
||||||
|
typedef double wxAnyBaseDoubleType;
|
||||||
|
|
||||||
|
WX_ANY_DEFINE_SUB_TYPE(float, Double)
|
||||||
|
WX_ANY_DEFINE_SUB_TYPE(double, Double)
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __VISUALC6__
|
||||||
|
// Re-enable useless VC6 warnings
|
||||||
|
#pragma warning (pop)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Let's define a discrete Null value so we don't have to really
|
||||||
|
ever check if wxAny.m_type pointer is NULL or not. This is an
|
||||||
|
optimization, mostly. Implementation of this value type is
|
||||||
|
"hidden" in the source file.
|
||||||
|
*/
|
||||||
|
extern WXDLLIMPEXP_DATA_BASE(wxAnyValueType*) wxAnyNullValueType;
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// We need to implement custom signed/unsigned int equals operators
|
||||||
|
// for signed/unsigned (eg. wxAny(128UL) == 128L) comparisons to work.
|
||||||
|
#define WXANY_IMPLEMENT_INT_EQ_OP(TS, TUS) \
|
||||||
|
bool operator==(TS value) const \
|
||||||
|
{ \
|
||||||
|
if ( wxAnyValueTypeImpl<TS>::IsSameClass(m_type) ) \
|
||||||
|
return (value == static_cast<TS> \
|
||||||
|
(wxAnyValueTypeImpl<TS>::GetValue(m_buffer))); \
|
||||||
|
if ( wxAnyValueTypeImpl<TUS>::IsSameClass(m_type) ) \
|
||||||
|
return (value == static_cast<TS> \
|
||||||
|
(wxAnyValueTypeImpl<TUS>::GetValue(m_buffer))); \
|
||||||
|
return false; \
|
||||||
|
} \
|
||||||
|
bool operator==(TUS value) const \
|
||||||
|
{ \
|
||||||
|
if ( wxAnyValueTypeImpl<TUS>::IsSameClass(m_type) ) \
|
||||||
|
return (value == static_cast<TUS> \
|
||||||
|
(wxAnyValueTypeImpl<TUS>::GetValue(m_buffer))); \
|
||||||
|
if ( wxAnyValueTypeImpl<TS>::IsSameClass(m_type) ) \
|
||||||
|
return (value == static_cast<TUS> \
|
||||||
|
(wxAnyValueTypeImpl<TS>::GetValue(m_buffer))); \
|
||||||
|
return false; \
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// The wxAny class represents a container for any type. A variant's value
|
||||||
|
// can be changed at run time, possibly to a different type of value.
|
||||||
|
//
|
||||||
|
// As standard, wxAny can store value of almost any type, in a fairly
|
||||||
|
// optimal manner even.
|
||||||
|
//
|
||||||
|
class WXDLLIMPEXP_BASE wxAny
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
Default constructor.
|
||||||
|
*/
|
||||||
|
wxAny()
|
||||||
|
{
|
||||||
|
m_type = wxAnyNullValueType;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Destructor.
|
||||||
|
*/
|
||||||
|
~wxAny()
|
||||||
|
{
|
||||||
|
m_type->DeleteValue(m_buffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
//@{
|
||||||
|
/**
|
||||||
|
Various constructors.
|
||||||
|
*/
|
||||||
|
wxAny(const char* value)
|
||||||
|
{
|
||||||
|
m_type = wxAnyNullValueType;
|
||||||
|
Assign(wxString(value));
|
||||||
|
}
|
||||||
|
wxAny(const wchar_t* value)
|
||||||
|
{
|
||||||
|
m_type = wxAnyNullValueType;
|
||||||
|
Assign(wxString(value));
|
||||||
|
}
|
||||||
|
|
||||||
|
wxAny(const wxAny& any)
|
||||||
|
{
|
||||||
|
m_type = wxAnyNullValueType;
|
||||||
|
AssignAny(any);
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
wxAny(const T& value)
|
||||||
|
{
|
||||||
|
m_type = wxAnyValueTypeImpl<T>::sm_instance;
|
||||||
|
wxAnyValueTypeImpl<T>::SetValue(value, m_buffer);
|
||||||
|
}
|
||||||
|
//@}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Use this template function for checking if this wxAny holds
|
||||||
|
a specific C++ data type.
|
||||||
|
|
||||||
|
@remarks This template function does not work on some older compilers
|
||||||
|
(such as Visual C++ 6.0). For full compiler ccompatibility
|
||||||
|
please use wxANY_CHECK_TYPE(any, T) macro instead.
|
||||||
|
|
||||||
|
@see wxAnyValueType::CheckType()
|
||||||
|
*/
|
||||||
|
// FIXME-VC6: remove this hack when VC6 is no longer supported
|
||||||
|
template <typename T>
|
||||||
|
bool CheckType(T* = NULL)
|
||||||
|
{
|
||||||
|
return m_type->CheckType<T>();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Returns the value type as wxAnyValueType instance.
|
||||||
|
|
||||||
|
@remarks You cannot reliably test whether two wxAnys are of
|
||||||
|
same value type by simply comparing return values
|
||||||
|
of wxAny::GetType(). Instead use
|
||||||
|
wxAnyValueType::CheckType<T>() template function.
|
||||||
|
*/
|
||||||
|
const wxAnyValueType* GetType() const
|
||||||
|
{
|
||||||
|
return m_type;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Tests if wxAny is null (that is, whether there is data).
|
||||||
|
*/
|
||||||
|
bool IsNull() const
|
||||||
|
{
|
||||||
|
return (m_type == wxAnyNullValueType);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Makes wxAny null (that is, clears it).
|
||||||
|
*/
|
||||||
|
void MakeNull()
|
||||||
|
{
|
||||||
|
m_type->DeleteValue(m_buffer);
|
||||||
|
m_type = wxAnyNullValueType;
|
||||||
|
}
|
||||||
|
|
||||||
|
//@{
|
||||||
|
/**
|
||||||
|
Assignment operators.
|
||||||
|
*/
|
||||||
|
wxAny& operator=(const wxAny &any)
|
||||||
|
{
|
||||||
|
AssignAny(any);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
wxAny& operator=(const T &value)
|
||||||
|
{
|
||||||
|
m_type->DeleteValue(m_buffer);
|
||||||
|
m_type = wxAnyValueTypeImpl<T>::sm_instance;
|
||||||
|
wxAnyValueTypeImpl<T>::SetValue(value, m_buffer);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
wxAny& operator=(const char* value)
|
||||||
|
{ Assign(wxString(value)); return *this; }
|
||||||
|
wxAny& operator=(const wchar_t* value)
|
||||||
|
{ Assign(wxString(value)); return *this; }
|
||||||
|
//@}
|
||||||
|
|
||||||
|
//@{
|
||||||
|
/**
|
||||||
|
Equality operators.
|
||||||
|
*/
|
||||||
|
bool operator==(const wxString& value) const
|
||||||
|
{
|
||||||
|
if ( !wxAnyValueTypeImpl<wxString>::IsSameClass(m_type) )
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return value ==
|
||||||
|
static_cast<wxString>
|
||||||
|
(wxAnyValueTypeImpl<wxString>::GetValue(m_buffer));
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator==(const char* value) const
|
||||||
|
{ return (*this) == wxString(value); }
|
||||||
|
bool operator==(const wchar_t* value) const
|
||||||
|
{ return (*this) == wxString(value); }
|
||||||
|
|
||||||
|
//
|
||||||
|
// We need to implement custom signed/unsigned int equals operators
|
||||||
|
// for signed/unsigned (eg. wxAny(128UL) == 128L) comparisons to work.
|
||||||
|
WXANY_IMPLEMENT_INT_EQ_OP(signed char, unsigned char)
|
||||||
|
WXANY_IMPLEMENT_INT_EQ_OP(signed short, unsigned short)
|
||||||
|
WXANY_IMPLEMENT_INT_EQ_OP(signed int, unsigned int)
|
||||||
|
WXANY_IMPLEMENT_INT_EQ_OP(signed long, unsigned long)
|
||||||
|
#ifdef wxLongLong_t
|
||||||
|
WXANY_IMPLEMENT_INT_EQ_OP(wxLongLong_t, wxULongLong_t)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
bool operator==(float value) const
|
||||||
|
{
|
||||||
|
if ( !wxAnyValueTypeImpl<float>::IsSameClass(m_type) )
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return value ==
|
||||||
|
static_cast<float>
|
||||||
|
(wxAnyValueTypeImpl<float>::GetValue(m_buffer));
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator==(double value) const
|
||||||
|
{
|
||||||
|
if ( !wxAnyValueTypeImpl<double>::IsSameClass(m_type) )
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return value ==
|
||||||
|
static_cast<double>
|
||||||
|
(wxAnyValueTypeImpl<double>::GetValue(m_buffer));
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator==(bool value) const
|
||||||
|
{
|
||||||
|
if ( !wxAnyValueTypeImpl<bool>::IsSameClass(m_type) )
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return value == (wxAnyValueTypeImpl<bool>::GetValue(m_buffer));
|
||||||
|
}
|
||||||
|
|
||||||
|
//@}
|
||||||
|
|
||||||
|
//@{
|
||||||
|
/**
|
||||||
|
Inequality operators (implement as template).
|
||||||
|
*/
|
||||||
|
template<typename T>
|
||||||
|
bool operator!=(const T& value) const
|
||||||
|
{ return !((*this) == value); }
|
||||||
|
//@}
|
||||||
|
|
||||||
|
/**
|
||||||
|
This template function converts wxAny into given type. No dynamic
|
||||||
|
conversion is performed, so if the type is incorrect an assertion
|
||||||
|
failure will occur in debug builds, and a bogus value is returned
|
||||||
|
in release ones.
|
||||||
|
|
||||||
|
@remarks This template function does not work on some older compilers
|
||||||
|
(such as Visual C++ 6.0). For full compiler ccompatibility
|
||||||
|
please use wxANY_AS(any, T) macro instead.
|
||||||
|
*/
|
||||||
|
// FIXME-VC6: remove this hack when VC6 is no longer supported
|
||||||
|
template<typename T>
|
||||||
|
T As(T* = NULL) const
|
||||||
|
{
|
||||||
|
if ( !wxAnyValueTypeImpl<T>::IsSameClass(m_type) )
|
||||||
|
wxFAIL_MSG("Incorrect or non-convertible data type");
|
||||||
|
return static_cast<T>(wxAnyValueTypeImpl<T>::GetValue(m_buffer));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Template function that etrieves and converts the value of this
|
||||||
|
variant to the type that T* value is.
|
||||||
|
|
||||||
|
@return Returns @true if conversion was succesfull.
|
||||||
|
*/
|
||||||
|
template<typename T>
|
||||||
|
bool GetAs(T* value) const
|
||||||
|
{
|
||||||
|
if ( !wxAnyValueTypeImpl<T>::IsSameClass(m_type) )
|
||||||
|
{
|
||||||
|
wxAnyValueType* otherType =
|
||||||
|
wxAnyValueTypeImpl<T>::sm_instance;
|
||||||
|
wxAnyValueBuffer temp_buf;
|
||||||
|
|
||||||
|
if ( !m_type->ConvertValue(m_buffer, otherType, temp_buf) )
|
||||||
|
return false;
|
||||||
|
|
||||||
|
*value =
|
||||||
|
static_cast<T>(wxAnyValueTypeImpl<T>::GetValue(temp_buf));
|
||||||
|
otherType->DeleteValue(temp_buf);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
*value = static_cast<T>(wxAnyValueTypeImpl<T>::GetValue(m_buffer));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
// Assignment functions
|
||||||
|
void AssignAny(const wxAny &any);
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
void Assign(const T &value)
|
||||||
|
{
|
||||||
|
m_type->DeleteValue(m_buffer);
|
||||||
|
m_type = wxAnyValueTypeImpl<T>::sm_instance;
|
||||||
|
wxAnyValueTypeImpl<T>::SetValue(value, m_buffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Data
|
||||||
|
wxAnyValueType* m_type;
|
||||||
|
wxAnyValueBuffer m_buffer;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// This method of checking the type is compatible with VC6
|
||||||
|
#define wxANY_CHECK_TYPE(any, T) \
|
||||||
|
wxANY_VALUE_TYPE_CHECK_TYPE(any.GetType(), T)
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// This method of getting the value is compatible with VC6
|
||||||
|
#define wxANY_AS(any, T) \
|
||||||
|
any.As(static_cast<T*>(NULL))
|
||||||
|
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
inline bool wxAnyValueType::CheckType(T* reserved)
|
||||||
|
{
|
||||||
|
wxUnusedVar(reserved);
|
||||||
|
return wxAnyValueTypeImpl<T>::IsSameClass(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif // wxUSE_ANY
|
||||||
|
|
||||||
|
#endif // _WX_ANY_H_
|
@@ -68,6 +68,14 @@
|
|||||||
please keep the options in alphabetical order!
|
please keep the options in alphabetical order!
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifndef wxUSE_ANY
|
||||||
|
# ifdef wxABORT_ON_CONFIG_ERROR
|
||||||
|
# error "wxUSE_ANY must be defined."
|
||||||
|
# else
|
||||||
|
# define wxUSE_ANY 0
|
||||||
|
# endif
|
||||||
|
#endif /* wxUSE_ANY */
|
||||||
|
|
||||||
#ifndef wxUSE_CONSOLE_EVENTLOOP
|
#ifndef wxUSE_CONSOLE_EVENTLOOP
|
||||||
# ifdef wxABORT_ON_CONFIG_ERROR
|
# ifdef wxABORT_ON_CONFIG_ERROR
|
||||||
# error "wxUSE_CONSOLE_EVENTLOOP must be defined."
|
# error "wxUSE_CONSOLE_EVENTLOOP must be defined."
|
||||||
|
@@ -570,6 +570,14 @@
|
|||||||
// possible in which case setting this to 0 can gain up to 100KB.
|
// possible in which case setting this to 0 can gain up to 100KB.
|
||||||
#define wxUSE_VARIANT 1
|
#define wxUSE_VARIANT 1
|
||||||
|
|
||||||
|
// Support for wxAny class, the successor for wxVariant.
|
||||||
|
//
|
||||||
|
// Default is 1.
|
||||||
|
//
|
||||||
|
// Recommended setting: 1 unless you want to reduce the library size by a small amount,
|
||||||
|
// or your compiler cannot for some reason cope with complexity of templates used.
|
||||||
|
#define wxUSE_ANY 1
|
||||||
|
|
||||||
// Support for regular expression matching via wxRegEx class: enable this to
|
// Support for regular expression matching via wxRegEx class: enable this to
|
||||||
// use POSIX regular expressions in your code. You need to compile regex
|
// use POSIX regular expressions in your code. You need to compile regex
|
||||||
// library from src/regex to use it under Windows.
|
// library from src/regex to use it under Windows.
|
||||||
|
@@ -570,6 +570,14 @@
|
|||||||
// possible in which case setting this to 0 can gain up to 100KB.
|
// possible in which case setting this to 0 can gain up to 100KB.
|
||||||
#define wxUSE_VARIANT 1
|
#define wxUSE_VARIANT 1
|
||||||
|
|
||||||
|
// Support for wxAny class, the successor for wxVariant.
|
||||||
|
//
|
||||||
|
// Default is 1.
|
||||||
|
//
|
||||||
|
// Recommended setting: 1 unless you want to reduce the library size by a small amount,
|
||||||
|
// or your compiler cannot for some reason cope with complexity of templates used.
|
||||||
|
#define wxUSE_ANY 1
|
||||||
|
|
||||||
// Support for regular expression matching via wxRegEx class: enable this to
|
// Support for regular expression matching via wxRegEx class: enable this to
|
||||||
// use POSIX regular expressions in your code. You need to compile regex
|
// use POSIX regular expressions in your code. You need to compile regex
|
||||||
// library from src/regex to use it under Windows.
|
// library from src/regex to use it under Windows.
|
||||||
|
@@ -570,6 +570,14 @@
|
|||||||
// possible in which case setting this to 0 can gain up to 100KB.
|
// possible in which case setting this to 0 can gain up to 100KB.
|
||||||
#define wxUSE_VARIANT 1
|
#define wxUSE_VARIANT 1
|
||||||
|
|
||||||
|
// Support for wxAny class, the successor for wxVariant.
|
||||||
|
//
|
||||||
|
// Default is 1.
|
||||||
|
//
|
||||||
|
// Recommended setting: 1 unless you want to reduce the library size by a small amount,
|
||||||
|
// or your compiler cannot for some reason cope with complexity of templates used.
|
||||||
|
#define wxUSE_ANY 1
|
||||||
|
|
||||||
// Support for regular expression matching via wxRegEx class: enable this to
|
// Support for regular expression matching via wxRegEx class: enable this to
|
||||||
// use POSIX regular expressions in your code. You need to compile regex
|
// use POSIX regular expressions in your code. You need to compile regex
|
||||||
// library from src/regex to use it under Windows.
|
// library from src/regex to use it under Windows.
|
||||||
|
@@ -571,6 +571,14 @@
|
|||||||
// possible in which case setting this to 0 can gain up to 100KB.
|
// possible in which case setting this to 0 can gain up to 100KB.
|
||||||
#define wxUSE_VARIANT 1
|
#define wxUSE_VARIANT 1
|
||||||
|
|
||||||
|
// Support for wxAny class, the successor for wxVariant.
|
||||||
|
//
|
||||||
|
// Default is 1.
|
||||||
|
//
|
||||||
|
// Recommended setting: 1 unless you want to reduce the library size by a small amount,
|
||||||
|
// or your compiler cannot for some reason cope with complexity of templates used.
|
||||||
|
#define wxUSE_ANY 1
|
||||||
|
|
||||||
// Support for regular expression matching via wxRegEx class: enable this to
|
// Support for regular expression matching via wxRegEx class: enable this to
|
||||||
// use POSIX regular expressions in your code. You need to compile regex
|
// use POSIX regular expressions in your code. You need to compile regex
|
||||||
// library from src/regex to use it under Windows.
|
// library from src/regex to use it under Windows.
|
||||||
|
@@ -570,6 +570,14 @@
|
|||||||
// possible in which case setting this to 0 can gain up to 100KB.
|
// possible in which case setting this to 0 can gain up to 100KB.
|
||||||
#define wxUSE_VARIANT 1
|
#define wxUSE_VARIANT 1
|
||||||
|
|
||||||
|
// Support for wxAny class, the successor for wxVariant.
|
||||||
|
//
|
||||||
|
// Default is 1.
|
||||||
|
//
|
||||||
|
// Recommended setting: 1 unless you want to reduce the library size by a small amount,
|
||||||
|
// or your compiler cannot for some reason cope with complexity of templates used.
|
||||||
|
#define wxUSE_ANY 1
|
||||||
|
|
||||||
// Support for regular expression matching via wxRegEx class: enable this to
|
// Support for regular expression matching via wxRegEx class: enable this to
|
||||||
// use POSIX regular expressions in your code. You need to compile regex
|
// use POSIX regular expressions in your code. You need to compile regex
|
||||||
// library from src/regex to use it under Windows.
|
// library from src/regex to use it under Windows.
|
||||||
|
@@ -566,6 +566,14 @@
|
|||||||
// possible in which case setting this to 0 can gain up to 100KB.
|
// possible in which case setting this to 0 can gain up to 100KB.
|
||||||
#define wxUSE_VARIANT 1
|
#define wxUSE_VARIANT 1
|
||||||
|
|
||||||
|
// Support for wxAny class, the successor for wxVariant.
|
||||||
|
//
|
||||||
|
// Default is 1.
|
||||||
|
//
|
||||||
|
// Recommended setting: 1 unless you want to reduce the library size by a small amount,
|
||||||
|
// or your compiler cannot for some reason cope with complexity of templates used.
|
||||||
|
#define wxUSE_ANY 1
|
||||||
|
|
||||||
// Support for regular expression matching via wxRegEx class: enable this to
|
// Support for regular expression matching via wxRegEx class: enable this to
|
||||||
// use POSIX regular expressions in your code. You need to compile regex
|
// use POSIX regular expressions in your code. You need to compile regex
|
||||||
// library from src/regex to use it under Windows.
|
// library from src/regex to use it under Windows.
|
||||||
|
@@ -569,6 +569,14 @@
|
|||||||
// possible in which case setting this to 0 can gain up to 100KB.
|
// possible in which case setting this to 0 can gain up to 100KB.
|
||||||
#define wxUSE_VARIANT 1
|
#define wxUSE_VARIANT 1
|
||||||
|
|
||||||
|
// Support for wxAny class, the successor for wxVariant.
|
||||||
|
//
|
||||||
|
// Default is 1.
|
||||||
|
//
|
||||||
|
// Recommended setting: 1 unless you want to reduce the library size by a small amount,
|
||||||
|
// or your compiler cannot for some reason cope with complexity of templates used.
|
||||||
|
#define wxUSE_ANY 1
|
||||||
|
|
||||||
// Support for regular expression matching via wxRegEx class: enable this to
|
// Support for regular expression matching via wxRegEx class: enable this to
|
||||||
// use POSIX regular expressions in your code. You need to compile regex
|
// use POSIX regular expressions in your code. You need to compile regex
|
||||||
// library from src/regex to use it under Windows.
|
// library from src/regex to use it under Windows.
|
||||||
|
425
interface/wx/any.h
Normal file
425
interface/wx/any.h
Normal file
@@ -0,0 +1,425 @@
|
|||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Name: any.h
|
||||||
|
// Purpose: interface of wxAny
|
||||||
|
// Author: wxWidgets team
|
||||||
|
// RCS-ID: $Id$
|
||||||
|
// Licence: wxWindows license
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
@class wxAny
|
||||||
|
|
||||||
|
The wxAny class represents a container for any type. Its value
|
||||||
|
can be changed at run time, possibly to a different type of value.
|
||||||
|
|
||||||
|
wxAny is successor class for wxVariant, essentially doing the same thing
|
||||||
|
in a more modern, template-based manner and with transparent support
|
||||||
|
for any user data type.
|
||||||
|
|
||||||
|
Some pseudo-code'ish example of use with arbitrary user data:
|
||||||
|
|
||||||
|
@code
|
||||||
|
void SomeFunction()
|
||||||
|
{
|
||||||
|
MyClass myObject;
|
||||||
|
wxAny any = myObject;
|
||||||
|
|
||||||
|
// Do something
|
||||||
|
// ...
|
||||||
|
|
||||||
|
// Let's do a sanity check to make sure that any still holds
|
||||||
|
// data of correct type.
|
||||||
|
if ( any.CheckType<MyClass>() )
|
||||||
|
{
|
||||||
|
// Thank goodness, still a correct type.
|
||||||
|
MyClass myObject2 = any.As<MyClass>();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Something has gone horribly wrong!
|
||||||
|
wxFAIL();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@endcode
|
||||||
|
|
||||||
|
When compared to wxVariant, there are various internal implementation
|
||||||
|
differences as well. For instance, wxAny only allocates separate data
|
||||||
|
object in heap for large (ie. size in bytes more than
|
||||||
|
WX_ANY_VALUE_BUFFER_SIZE) or 'non-movable' data types. Pointers, integers,
|
||||||
|
bools etc. are fitted in the wxAny's own buffer without need for any extra
|
||||||
|
allocation. Use following code to declare your own data type as 'movable':
|
||||||
|
|
||||||
|
@code
|
||||||
|
#include "wx/meta/movable.h"
|
||||||
|
WX_DECLARE_TYPE_MOVABLE(MyClass)
|
||||||
|
@endcode
|
||||||
|
|
||||||
|
However, you must be aware that 'movable' means such data that can be
|
||||||
|
copied with memcpy() without corrupting program integrity. For instance,
|
||||||
|
movable objects usually cannot contain pointers or references to other
|
||||||
|
data. wxRect, wxPoint, and wxSize are good examples of movable classes.
|
||||||
|
|
||||||
|
Note that pointers to any and all classes are already automatically
|
||||||
|
declared as movable data.
|
||||||
|
|
||||||
|
@library{wxbase}
|
||||||
|
@category{data}
|
||||||
|
|
||||||
|
@see wxAnyValueType, wxVariant
|
||||||
|
*/
|
||||||
|
class wxAny
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
Default constructor. It seeds the object with a null value.
|
||||||
|
*/
|
||||||
|
wxAny();
|
||||||
|
|
||||||
|
/**
|
||||||
|
Constructs wxAny from data.
|
||||||
|
*/
|
||||||
|
template<typename T>
|
||||||
|
wxAny(const T& value);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Constructs wxAny from another wxAny.
|
||||||
|
*/
|
||||||
|
wxAny(const wxAny& any);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Destructor.
|
||||||
|
*/
|
||||||
|
~wxAny();
|
||||||
|
|
||||||
|
/**
|
||||||
|
This template function converts wxAny into given type. No dynamic
|
||||||
|
conversion is performed, so if the type is incorrect an assertion
|
||||||
|
failure will occur in debug builds, and a bogus value is returned
|
||||||
|
in release ones.
|
||||||
|
|
||||||
|
@remarks This template function may not work properly with Visual C++
|
||||||
|
6. For full compiler compatibility, please use
|
||||||
|
wxANY_AS(any, T) macro instead.
|
||||||
|
*/
|
||||||
|
template<typename T>
|
||||||
|
T As() const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Use this template function for checking if this wxAny holds
|
||||||
|
a specific C++ data type.
|
||||||
|
|
||||||
|
@remarks This template function may not work properly with Visual C++
|
||||||
|
6. For full compiler compatibility, please use
|
||||||
|
wxANY_CHECK_TYPE(any, T) macro instead.
|
||||||
|
|
||||||
|
@see wxAnyValueType::CheckType()
|
||||||
|
*/
|
||||||
|
template<typename T>
|
||||||
|
bool CheckType();
|
||||||
|
|
||||||
|
/**
|
||||||
|
Template function that retrieves and converts the value of this
|
||||||
|
wxAny to the type that T* value is.
|
||||||
|
|
||||||
|
@return Returns @true if conversion was succesfull.
|
||||||
|
*/
|
||||||
|
template<typename T>
|
||||||
|
bool GetAs(T* value) const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Returns the value type as wxAnyValueType instance.
|
||||||
|
|
||||||
|
@remarks You cannot reliably test whether two wxAnys are of
|
||||||
|
same value type by simply comparing return values
|
||||||
|
of wxAny::GetType(). Instead use
|
||||||
|
wxAnyValueType::CheckType<T>() template function.
|
||||||
|
*/
|
||||||
|
const wxAnyValueType* GetType() const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Tests if wxAny is null (that is, whether there is data).
|
||||||
|
*/
|
||||||
|
bool IsNull() const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Makes wxAny null (that is, clears it).
|
||||||
|
*/
|
||||||
|
void MakeNull();
|
||||||
|
|
||||||
|
//@{
|
||||||
|
/**
|
||||||
|
@name Assignment operators
|
||||||
|
*/
|
||||||
|
template<typename T>
|
||||||
|
wxAny& operator=(const T &value);
|
||||||
|
wxAny& operator=(const wxAny &any);
|
||||||
|
//@}
|
||||||
|
|
||||||
|
//@{
|
||||||
|
/**
|
||||||
|
@name Equality operators
|
||||||
|
|
||||||
|
@remarks Generic template-based comparison operators have not been
|
||||||
|
provided for various code consistency reasons, so for custom
|
||||||
|
data types you have do something like this:
|
||||||
|
|
||||||
|
@code
|
||||||
|
if ( any.CheckType<MyClass*>() &&
|
||||||
|
any.As<MyClass*>() == myObjectPtr )
|
||||||
|
{
|
||||||
|
// Do something if any stores myObjectPtr
|
||||||
|
}
|
||||||
|
@endcode
|
||||||
|
*/
|
||||||
|
bool operator==(signed char value) const;
|
||||||
|
bool operator==(signed short value) const;
|
||||||
|
bool operator==(signed int value) const;
|
||||||
|
bool operator==(signed long value) const;
|
||||||
|
bool operator==(wxLongLong_t value) const;
|
||||||
|
bool operator==(unsigned char value) const;
|
||||||
|
bool operator==(unsigned short value) const;
|
||||||
|
bool operator==(unsigned int value) const;
|
||||||
|
bool operator==(unsigned long value) const;
|
||||||
|
bool operator==(wxULongLong_t value) const;
|
||||||
|
bool operator==(float value) const;
|
||||||
|
bool operator==(double value) const;
|
||||||
|
bool operator==(bool value) const;
|
||||||
|
bool operator==(const char* value) const;
|
||||||
|
bool operator==(const wchar_t* value) const;
|
||||||
|
bool operator==(const wxString& value) const;
|
||||||
|
//@}
|
||||||
|
|
||||||
|
//@{
|
||||||
|
/**
|
||||||
|
@name Inequality operators
|
||||||
|
*/
|
||||||
|
bool operator!=(signed char value) const;
|
||||||
|
bool operator!=(signed short value) const;
|
||||||
|
bool operator!=(signed int value) const;
|
||||||
|
bool operator!=(signed long value) const;
|
||||||
|
bool operator!=(wxLongLong_t value) const;
|
||||||
|
bool operator!=(unsigned char value) const;
|
||||||
|
bool operator!=(unsigned short value) const;
|
||||||
|
bool operator!=(unsigned int value) const;
|
||||||
|
bool operator!=(unsigned long value) const;
|
||||||
|
bool operator!=(wxULongLong_t value) const;
|
||||||
|
bool operator!=(float value) const;
|
||||||
|
bool operator!=(double value) const;
|
||||||
|
bool operator!=(bool value) const;
|
||||||
|
bool operator!=(const char* value) const;
|
||||||
|
bool operator!=(const wchar_t* value) const;
|
||||||
|
bool operator!=(const wxString& value) const;
|
||||||
|
//@}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
This is value getter macro that is more compatible with older
|
||||||
|
compilers, such as Visual C++ 6.0.
|
||||||
|
*/
|
||||||
|
#define wxANY_AS(any, T)
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
This is type checking macro that is more compatible with older
|
||||||
|
compilers, such as Visual C++ 6.0.
|
||||||
|
*/
|
||||||
|
#define wxANY_CHECK_TYPE(any, T)
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
Size of the wxAny value buffer.
|
||||||
|
*/
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
WX_ANY_VALUE_BUFFER_SIZE = 16
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
Type for buffer within wxAny for holding data.
|
||||||
|
*/
|
||||||
|
union wxAnyValueBuffer
|
||||||
|
{
|
||||||
|
void* m_ptr;
|
||||||
|
wxByte m_buffer[WX_ANY_VALUE_BUFFER_SIZE];
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
@class wxAnyValueType
|
||||||
|
|
||||||
|
wxAnyValueType is base class for value type functionality for C++ data
|
||||||
|
types used with wxAny. Usually the default template will create a
|
||||||
|
satisfactory wxAnyValueType implementation for a data type, but
|
||||||
|
sometimes you may need to add some customization. To do this you will need
|
||||||
|
to add specialized template of wxAnyValueTypeImpl<>. Often your only
|
||||||
|
need may be to add dynamic type conversion which would be done like
|
||||||
|
this:
|
||||||
|
|
||||||
|
@code
|
||||||
|
template<>
|
||||||
|
class wxAnyValueTypeImpl<MyClass> :
|
||||||
|
public wxAnyValueTypeImplBase<MyClass>
|
||||||
|
{
|
||||||
|
WX_DECLARE_ANY_VALUE_TYPE(wxAnyValueTypeImpl<MyClass>)
|
||||||
|
public:
|
||||||
|
wxAnyValueTypeImpl() :
|
||||||
|
wxAnyValueTypeImplBase<MyClass>() { }
|
||||||
|
virtual ~wxAnyValueTypeImpl() { }
|
||||||
|
|
||||||
|
virtual bool ConvertValue(const wxAnyValueBuffer& src,
|
||||||
|
wxAnyValueType* dstType,
|
||||||
|
wxAnyValueBuffer& dst) const
|
||||||
|
{
|
||||||
|
// GetValue() is a static member function implemented
|
||||||
|
// in wxAnyValueTypeImplBase<>.
|
||||||
|
MyClass value = GetValue(src);
|
||||||
|
|
||||||
|
// TODO: Convert value from src buffer to destination
|
||||||
|
// type and buffer. If cannot be done, return
|
||||||
|
// false. This is a simple sample.
|
||||||
|
if ( dstType->CheckType<wxString>() )
|
||||||
|
{
|
||||||
|
wxString s = value.ToString();
|
||||||
|
wxAnyValueTypeImpl<wxString>::SetValue(s, dst);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
//
|
||||||
|
// Following must be placed somewhere in your source code
|
||||||
|
WX_IMPLEMENT_ANY_VALUE_TYPE(wxAnyValueTypeImpl<MyClass>)
|
||||||
|
@endcode
|
||||||
|
|
||||||
|
wxAnyValueTypeImplBase<> template, from which we inherit in the above
|
||||||
|
example, contains the bulk of the default wxAnyValueTypeImpl<> template
|
||||||
|
implementation, and as such allows you to easily add some minor
|
||||||
|
customization.
|
||||||
|
|
||||||
|
If you need a have complete control over the type interpretation, you
|
||||||
|
will need to derive a class directly from wxAnyValueType, like this:
|
||||||
|
|
||||||
|
@code
|
||||||
|
template <>
|
||||||
|
class wxAnyValueTypeImpl<MyClass> : public wxAnyValueType
|
||||||
|
{
|
||||||
|
WX_DECLARE_ANY_VALUE_TYPE(wxAnyValueTypeImpl<MyClass>)
|
||||||
|
public:
|
||||||
|
virtual void DeleteValue(wxAnyValueBuffer& buf) const
|
||||||
|
{
|
||||||
|
// TODO: Free the data in buffer
|
||||||
|
// It is important to clear the buffer like this
|
||||||
|
// at the end of DeleteValue().
|
||||||
|
buf.m_ptr = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual void CopyBuffer(const wxAnyValueBuffer& src,
|
||||||
|
wxAnyValueBuffer& dst) const
|
||||||
|
{
|
||||||
|
// TODO: Copy value from one buffer to another.
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual bool ConvertValue(const wxAnyValueBuffer& src,
|
||||||
|
wxAnyValueType* dstType,
|
||||||
|
wxAnyValueBuffer& dst) const
|
||||||
|
{
|
||||||
|
// TODO: Convert value from src buffer to destination
|
||||||
|
// type and buffer.
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Following static functions must be implemented
|
||||||
|
//
|
||||||
|
|
||||||
|
static void SetValue(const T& value,
|
||||||
|
wxAnyValueBuffer& buf)
|
||||||
|
{
|
||||||
|
// TODO: Store value into buf.
|
||||||
|
}
|
||||||
|
|
||||||
|
static const T& GetValue(const wxAnyValueBuffer& buf)
|
||||||
|
{
|
||||||
|
// TODO: Return reference to value stored in buffer.
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
//
|
||||||
|
// Following must be placed somewhere in your source code
|
||||||
|
WX_IMPLEMENT_ANY_VALUE_TYPE(wxAnyValueTypeImpl<MyClass>)
|
||||||
|
|
||||||
|
@endcode
|
||||||
|
|
||||||
|
@library{wxbase}
|
||||||
|
@category{data}
|
||||||
|
|
||||||
|
@see wxAny
|
||||||
|
*/
|
||||||
|
class wxAnyValueType
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
Default constructor.
|
||||||
|
*/
|
||||||
|
wxAnyValueType();
|
||||||
|
|
||||||
|
/**
|
||||||
|
Destructor.
|
||||||
|
*/
|
||||||
|
virtual ~wxAnyValueType();
|
||||||
|
|
||||||
|
/**
|
||||||
|
Use this template function for checking if wxAnyValueType represents
|
||||||
|
a specific C++ data type.
|
||||||
|
|
||||||
|
@remarks This template function does not work on some older compilers
|
||||||
|
(such as Visual C++ 6.0). For full compiler ccompatibility
|
||||||
|
please use wxANY_VALUE_TYPE_CHECK_TYPE(valueTypePtr, T) macro
|
||||||
|
instead.
|
||||||
|
|
||||||
|
@see wxAny::CheckType()
|
||||||
|
*/
|
||||||
|
template <typename T>
|
||||||
|
bool CheckType();
|
||||||
|
|
||||||
|
/**
|
||||||
|
Convert value into buffer of different type. Return false if
|
||||||
|
not possible.
|
||||||
|
*/
|
||||||
|
virtual bool ConvertValue(const wxAnyValueBuffer& src,
|
||||||
|
wxAnyValueType* dstType,
|
||||||
|
wxAnyValueBuffer& dst) const = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Implement this for buffer-to-buffer copy. src.m_ptr can
|
||||||
|
be expected to be NULL if value type of previously stored
|
||||||
|
data was different.
|
||||||
|
*/
|
||||||
|
virtual void CopyBuffer(const wxAnyValueBuffer& src,
|
||||||
|
wxAnyValueBuffer& dst) const = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
This function is called every time the data in wxAny
|
||||||
|
buffer needs to be freed.
|
||||||
|
*/
|
||||||
|
virtual void DeleteValue(wxAnyValueBuffer& buf) const = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
This function is used for internal type matching.
|
||||||
|
*/
|
||||||
|
virtual wxAnyClassInfo GetClassInfo() const = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
This function is used for internal type matching.
|
||||||
|
*/
|
||||||
|
virtual bool IsSameType(const wxAnyValueType* otherType) const = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
This is type checking macro that is more compatible with older
|
||||||
|
compilers, such as Visual C++ 6.0.
|
||||||
|
*/
|
||||||
|
#define wxANY_VALUE_TYPE_CHECK_TYPE(valueTypePtr, T)
|
@@ -294,6 +294,8 @@
|
|||||||
|
|
||||||
#define wxUSE_VARIANT 0
|
#define wxUSE_VARIANT 0
|
||||||
|
|
||||||
|
#define wxUSE_ANY 0
|
||||||
|
|
||||||
#define wxUSE_REGEX 0
|
#define wxUSE_REGEX 0
|
||||||
|
|
||||||
#define wxUSE_SYSTEM_OPTIONS 0
|
#define wxUSE_SYSTEM_OPTIONS 0
|
||||||
|
@@ -315,6 +315,8 @@ typedef pid_t GPid;
|
|||||||
|
|
||||||
#define wxUSE_VARIANT 1
|
#define wxUSE_VARIANT 1
|
||||||
|
|
||||||
|
#define wxUSE_ANY 1
|
||||||
|
|
||||||
#define wxUSE_REGEX 0
|
#define wxUSE_REGEX 0
|
||||||
|
|
||||||
#define wxUSE_SYSTEM_OPTIONS 1
|
#define wxUSE_SYSTEM_OPTIONS 1
|
||||||
|
402
src/common/any.cpp
Normal file
402
src/common/any.cpp
Normal file
@@ -0,0 +1,402 @@
|
|||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Name: src/common/any.cpp
|
||||||
|
// Purpose: wxAny class, container for any type
|
||||||
|
// Author: Jaakko Salli
|
||||||
|
// Modified by:
|
||||||
|
// Created: 07/05/2009
|
||||||
|
// RCS-ID: $Id$
|
||||||
|
// Copyright: (c) wxWidgets team
|
||||||
|
// Licence: wxWindows licence
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
// For compilers that support precompilation, includes "wx/wx.h".
|
||||||
|
#include "wx/wxprec.h"
|
||||||
|
|
||||||
|
#ifdef __BORLANDC__
|
||||||
|
#pragma hdrstop
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "wx/any.h"
|
||||||
|
|
||||||
|
#if wxUSE_ANY
|
||||||
|
|
||||||
|
#ifndef WX_PRECOMP
|
||||||
|
#include "wx/math.h"
|
||||||
|
#include "wx/crt.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "wx/vector.h"
|
||||||
|
#include "wx/module.h"
|
||||||
|
|
||||||
|
using namespace wxPrivate;
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
// wxAnyValueTypeGlobals
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
|
||||||
|
//
|
||||||
|
// Helper class to manage wxAnyValueType instances and other
|
||||||
|
// related global variables.
|
||||||
|
//
|
||||||
|
// NB: We really need to have wxAnyValueType instances allocated
|
||||||
|
// in heap. They are stored as static template member variables,
|
||||||
|
// and with them we just can't be too careful (eg. not allocating
|
||||||
|
// them in heap broke the type identification in GCC).
|
||||||
|
//
|
||||||
|
class wxAnyValueTypeGlobals
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
wxAnyValueTypeGlobals()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
~wxAnyValueTypeGlobals()
|
||||||
|
{
|
||||||
|
for ( size_t i=0; i<m_valueTypes.size(); i++ )
|
||||||
|
delete m_valueTypes[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
void RegisterValueType(wxAnyValueType* valueType)
|
||||||
|
{
|
||||||
|
m_valueTypes.push_back(valueType);
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
wxVector<wxAnyValueType*> m_valueTypes;
|
||||||
|
};
|
||||||
|
|
||||||
|
static wxAnyValueTypeGlobals* g_wxAnyValueTypeGlobals = NULL;
|
||||||
|
|
||||||
|
//
|
||||||
|
// This class is to make sure that wxAnyValueType instances
|
||||||
|
// etc. get freed correctly. We must use a separate wxAnyValueTypeGlobals
|
||||||
|
// because wxModule itself is instantiated too late.
|
||||||
|
//
|
||||||
|
class wxAnyValueTypeGlobalsManager : public wxModule
|
||||||
|
{
|
||||||
|
DECLARE_DYNAMIC_CLASS(wxAnyValueTypeGlobalsManager)
|
||||||
|
public:
|
||||||
|
wxAnyValueTypeGlobalsManager() : wxModule() { }
|
||||||
|
virtual ~wxAnyValueTypeGlobalsManager() { }
|
||||||
|
|
||||||
|
virtual bool OnInit()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
virtual void OnExit()
|
||||||
|
{
|
||||||
|
delete g_wxAnyValueTypeGlobals;
|
||||||
|
g_wxAnyValueTypeGlobals = NULL;
|
||||||
|
}
|
||||||
|
private:
|
||||||
|
};
|
||||||
|
|
||||||
|
IMPLEMENT_DYNAMIC_CLASS(wxAnyValueTypeGlobalsManager, wxModule)
|
||||||
|
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
// wxAnyValueType
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
|
||||||
|
wxAnyValueType::wxAnyValueType()
|
||||||
|
{
|
||||||
|
if ( !g_wxAnyValueTypeGlobals )
|
||||||
|
g_wxAnyValueTypeGlobals = new wxAnyValueTypeGlobals();
|
||||||
|
|
||||||
|
g_wxAnyValueTypeGlobals->RegisterValueType(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
// wxAny
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void wxAny::AssignAny(const wxAny &any)
|
||||||
|
{
|
||||||
|
if ( !any.m_type->IsSameType(m_type) )
|
||||||
|
{
|
||||||
|
m_type->DeleteValue(m_buffer);
|
||||||
|
m_type = any.m_type;
|
||||||
|
}
|
||||||
|
m_type->CopyBuffer(any.m_buffer, m_buffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
// Dynamic conversion member functions
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
|
||||||
|
//
|
||||||
|
// Define integer minimum and maximum as helpers
|
||||||
|
#ifdef wxLongLong_t
|
||||||
|
const wxAnyBaseIntType UseIntMin = wxINT64_MIN;
|
||||||
|
const wxAnyBaseUintType UseIntMax = wxINT64_MAX;
|
||||||
|
const wxAnyBaseUintType UseUintMax = wxUINT64_MAX;
|
||||||
|
#else
|
||||||
|
const wxAnyBaseIntType UseIntMin = LONG_MIN;
|
||||||
|
const wxAnyBaseUintType UseUintMax = ULONG_MAX;
|
||||||
|
const wxAnyBaseUintType UseIntMax = LONG_MAX;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
const double UseIntMinF = static_cast<double>(UseIntMin);
|
||||||
|
#ifndef __VISUALC6__
|
||||||
|
const double UseIntMaxF = static_cast<double>(UseIntMax);
|
||||||
|
const double UseUintMaxF = static_cast<double>(UseUintMax);
|
||||||
|
#else
|
||||||
|
// VC6 doesn't implement conversion from unsigned __int64 to double
|
||||||
|
const wxAnyBaseIntType UseIntMax0 = static_cast<wxAnyBaseIntType>(UseIntMax);
|
||||||
|
const wxAnyBaseIntType UseUintMax0 = static_cast<wxAnyBaseIntType>(UseUintMax);
|
||||||
|
const double UseIntMaxF = static_cast<double>(UseIntMax0);
|
||||||
|
const double UseUintMaxF = static_cast<double>(UseUintMax0);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
bool wxAnyValueTypeImplInt::ConvertValue(const wxAnyValueBuffer& src,
|
||||||
|
wxAnyValueType* dstType,
|
||||||
|
wxAnyValueBuffer& dst) const
|
||||||
|
{
|
||||||
|
wxAnyBaseIntType value = GetValue(src);
|
||||||
|
if ( wxANY_VALUE_TYPE_CHECK_TYPE(dstType, wxString) )
|
||||||
|
{
|
||||||
|
#ifdef wxLongLong_t
|
||||||
|
wxLongLong ll(value);
|
||||||
|
wxString s = ll.ToString();
|
||||||
|
#else
|
||||||
|
wxString s = wxString::Format(wxS("%ld"), (long)value);
|
||||||
|
#endif
|
||||||
|
wxAnyValueTypeImpl<wxString>::SetValue(s, dst);
|
||||||
|
}
|
||||||
|
else if ( wxANY_VALUE_TYPE_CHECK_TYPE(dstType, wxAnyBaseUintType) )
|
||||||
|
{
|
||||||
|
if ( value < 0 )
|
||||||
|
return false;
|
||||||
|
wxAnyBaseUintType ul = (wxAnyBaseUintType) value;
|
||||||
|
wxAnyValueTypeImplUint::SetValue(ul, dst);
|
||||||
|
}
|
||||||
|
else if ( wxANY_VALUE_TYPE_CHECK_TYPE(dstType, double) )
|
||||||
|
{
|
||||||
|
double value2 = static_cast<double>(value);
|
||||||
|
wxAnyValueTypeImplDouble::SetValue(value2, dst);
|
||||||
|
}
|
||||||
|
else if ( wxANY_VALUE_TYPE_CHECK_TYPE(dstType, bool) )
|
||||||
|
{
|
||||||
|
bool value2 = value ? true : false;
|
||||||
|
wxAnyValueTypeImpl<bool>::SetValue(value2, dst);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxAnyValueTypeImplUint::ConvertValue(const wxAnyValueBuffer& src,
|
||||||
|
wxAnyValueType* dstType,
|
||||||
|
wxAnyValueBuffer& dst) const
|
||||||
|
{
|
||||||
|
wxAnyBaseUintType value = GetValue(src);
|
||||||
|
if ( wxANY_VALUE_TYPE_CHECK_TYPE(dstType, wxString) )
|
||||||
|
{
|
||||||
|
#ifdef wxLongLong_t
|
||||||
|
wxULongLong ull(value);
|
||||||
|
wxString s = ull.ToString();
|
||||||
|
#else
|
||||||
|
wxString s = wxString::Format(wxS("%lu"), (long)value);
|
||||||
|
#endif
|
||||||
|
wxAnyValueTypeImpl<wxString>::SetValue(s, dst);
|
||||||
|
}
|
||||||
|
else if ( wxANY_VALUE_TYPE_CHECK_TYPE(dstType, wxAnyBaseIntType) )
|
||||||
|
{
|
||||||
|
if ( value > UseIntMax )
|
||||||
|
return false;
|
||||||
|
wxAnyBaseIntType l = (wxAnyBaseIntType) value;
|
||||||
|
wxAnyValueTypeImplInt::SetValue(l, dst);
|
||||||
|
}
|
||||||
|
else if ( wxANY_VALUE_TYPE_CHECK_TYPE(dstType, double) )
|
||||||
|
{
|
||||||
|
#ifndef __VISUALC6__
|
||||||
|
double value2 = static_cast<double>(value);
|
||||||
|
#else
|
||||||
|
// VC6 doesn't implement conversion from unsigned __int64 to double
|
||||||
|
wxAnyBaseIntType value0 = static_cast<wxAnyBaseIntType>(value);
|
||||||
|
double value2 = static_cast<double>(value0);
|
||||||
|
#endif
|
||||||
|
wxAnyValueTypeImplDouble::SetValue(value2, dst);
|
||||||
|
}
|
||||||
|
else if ( wxANY_VALUE_TYPE_CHECK_TYPE(dstType, bool) )
|
||||||
|
{
|
||||||
|
bool value2 = value ? true : false;
|
||||||
|
wxAnyValueTypeImpl<bool>::SetValue(value2, dst);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxAnyValueTypeImplString::ConvertValue(const wxAnyValueBuffer& src,
|
||||||
|
wxAnyValueType* dstType,
|
||||||
|
wxAnyValueBuffer& dst) const
|
||||||
|
{
|
||||||
|
wxString value = GetValue(src);
|
||||||
|
if ( wxANY_VALUE_TYPE_CHECK_TYPE(dstType, wxAnyBaseIntType) )
|
||||||
|
{
|
||||||
|
wxAnyBaseIntType value2;
|
||||||
|
#ifdef wxLongLong_t
|
||||||
|
if ( !value.ToLongLong(&value2) )
|
||||||
|
#else
|
||||||
|
if ( !value.ToLong(&value2) )
|
||||||
|
#endif
|
||||||
|
return false;
|
||||||
|
wxAnyValueTypeImplInt::SetValue(value2, dst);
|
||||||
|
}
|
||||||
|
else if ( wxANY_VALUE_TYPE_CHECK_TYPE(dstType, wxAnyBaseUintType) )
|
||||||
|
{
|
||||||
|
wxAnyBaseUintType value2;
|
||||||
|
#ifdef wxLongLong_t
|
||||||
|
if ( !value.ToULongLong(&value2) )
|
||||||
|
#else
|
||||||
|
if ( !value.ToULong(&value2) )
|
||||||
|
#endif
|
||||||
|
return false;
|
||||||
|
wxAnyValueTypeImplUint::SetValue(value2, dst);
|
||||||
|
}
|
||||||
|
else if ( wxANY_VALUE_TYPE_CHECK_TYPE(dstType, double) )
|
||||||
|
{
|
||||||
|
double value2;
|
||||||
|
if ( !value.ToDouble(&value2) )
|
||||||
|
return false;
|
||||||
|
wxAnyValueTypeImplDouble::SetValue(value2, dst);
|
||||||
|
}
|
||||||
|
else if ( wxANY_VALUE_TYPE_CHECK_TYPE(dstType, bool) )
|
||||||
|
{
|
||||||
|
bool value2;
|
||||||
|
value.MakeLower();
|
||||||
|
if ( value == wxS("true") ||
|
||||||
|
value == wxS("yes") ||
|
||||||
|
value == wxS('1') )
|
||||||
|
value2 = true;
|
||||||
|
else if ( value == wxS("false") ||
|
||||||
|
value == wxS("no") ||
|
||||||
|
value == wxS('0') )
|
||||||
|
value2 = false;
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
|
||||||
|
wxAnyValueTypeImpl<bool>::SetValue(value2, dst);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxAnyValueTypeImpl<bool>::ConvertValue(const wxAnyValueBuffer& src,
|
||||||
|
wxAnyValueType* dstType,
|
||||||
|
wxAnyValueBuffer& dst) const
|
||||||
|
{
|
||||||
|
bool value = GetValue(src);
|
||||||
|
if ( wxANY_VALUE_TYPE_CHECK_TYPE(dstType, wxAnyBaseIntType) )
|
||||||
|
{
|
||||||
|
wxAnyBaseIntType value2 = static_cast<wxAnyBaseIntType>(value);
|
||||||
|
wxAnyValueTypeImplInt::SetValue(value2, dst);
|
||||||
|
}
|
||||||
|
else if ( wxANY_VALUE_TYPE_CHECK_TYPE(dstType, wxAnyBaseUintType) )
|
||||||
|
{
|
||||||
|
wxAnyBaseIntType value2 = static_cast<wxAnyBaseUintType>(value);
|
||||||
|
wxAnyValueTypeImplUint::SetValue(value2, dst);
|
||||||
|
}
|
||||||
|
else if ( wxANY_VALUE_TYPE_CHECK_TYPE(dstType, wxString) )
|
||||||
|
{
|
||||||
|
wxString s;
|
||||||
|
if ( value )
|
||||||
|
s = wxS("true");
|
||||||
|
else
|
||||||
|
s = wxS("false");
|
||||||
|
wxAnyValueTypeImpl<wxString>::SetValue(s, dst);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxAnyValueTypeImplDouble::ConvertValue(const wxAnyValueBuffer& src,
|
||||||
|
wxAnyValueType* dstType,
|
||||||
|
wxAnyValueBuffer& dst) const
|
||||||
|
{
|
||||||
|
double value = GetValue(src);
|
||||||
|
if ( wxANY_VALUE_TYPE_CHECK_TYPE(dstType, wxAnyBaseIntType) )
|
||||||
|
{
|
||||||
|
if ( value < UseIntMinF || value > UseIntMaxF )
|
||||||
|
return false;
|
||||||
|
wxAnyBaseUintType ul = static_cast<wxAnyBaseUintType>(value);
|
||||||
|
wxAnyValueTypeImplUint::SetValue(ul, dst);
|
||||||
|
}
|
||||||
|
else if ( wxANY_VALUE_TYPE_CHECK_TYPE(dstType, wxAnyBaseUintType) )
|
||||||
|
{
|
||||||
|
if ( value < 0.0 || value > UseUintMaxF )
|
||||||
|
return false;
|
||||||
|
wxAnyBaseUintType ul = static_cast<wxAnyBaseUintType>(value);
|
||||||
|
wxAnyValueTypeImplUint::SetValue(ul, dst);
|
||||||
|
}
|
||||||
|
else if ( wxANY_VALUE_TYPE_CHECK_TYPE(dstType, wxString) )
|
||||||
|
{
|
||||||
|
wxString s = wxString::Format(wxS("%.14g"), value);
|
||||||
|
wxAnyValueTypeImpl<wxString>::SetValue(s, dst);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
WX_IMPLEMENT_ANY_VALUE_TYPE(wxAnyValueTypeImplInt)
|
||||||
|
WX_IMPLEMENT_ANY_VALUE_TYPE(wxAnyValueTypeImplUint)
|
||||||
|
WX_IMPLEMENT_ANY_VALUE_TYPE(wxAnyValueTypeImplString)
|
||||||
|
WX_IMPLEMENT_ANY_VALUE_TYPE(wxAnyValueTypeImpl<bool>)
|
||||||
|
WX_IMPLEMENT_ANY_VALUE_TYPE(wxAnyValueTypeImplDouble)
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
// wxAnyNullValueType implementation
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
|
||||||
|
class wxAnyNullValue
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
void* m_dummy;
|
||||||
|
};
|
||||||
|
|
||||||
|
template <>
|
||||||
|
class wxAnyValueTypeImpl<wxAnyNullValue> : public wxAnyValueType
|
||||||
|
{
|
||||||
|
WX_DECLARE_ANY_VALUE_TYPE(wxAnyValueTypeImpl<wxAnyNullValue>)
|
||||||
|
public:
|
||||||
|
virtual void DeleteValue(wxAnyValueBuffer& buf) const
|
||||||
|
{
|
||||||
|
buf.m_ptr = NULL; // This is important
|
||||||
|
}
|
||||||
|
|
||||||
|
// Dummy implementations
|
||||||
|
virtual void CopyBuffer(const wxAnyValueBuffer& src,
|
||||||
|
wxAnyValueBuffer& dst) const
|
||||||
|
{
|
||||||
|
wxUnusedVar(src);
|
||||||
|
wxUnusedVar(dst);
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual bool ConvertValue(const wxAnyValueBuffer& src,
|
||||||
|
wxAnyValueType* dstType,
|
||||||
|
wxAnyValueBuffer& dst) const
|
||||||
|
{
|
||||||
|
wxUnusedVar(src);
|
||||||
|
wxUnusedVar(dstType);
|
||||||
|
wxUnusedVar(dst);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
};
|
||||||
|
|
||||||
|
WX_IMPLEMENT_ANY_VALUE_TYPE(wxAnyValueTypeImpl<wxAnyNullValue>)
|
||||||
|
|
||||||
|
wxAnyValueType* wxAnyNullValueType =
|
||||||
|
wxAnyValueTypeImpl<wxAnyNullValue>::GetInstance();
|
||||||
|
|
||||||
|
#endif // wxUSE_ANY
|
@@ -212,7 +212,8 @@ OBJECTS2=tbarbase.obj,srchcmn.obj,\
|
|||||||
listctrlcmn.obj,socketiohandler.obj,fdiodispatcher.obj,\
|
listctrlcmn.obj,socketiohandler.obj,fdiodispatcher.obj,\
|
||||||
selectdispatcher.obj,overlaycmn.obj,windowid.obj,sstream.obj,\
|
selectdispatcher.obj,overlaycmn.obj,windowid.obj,sstream.obj,\
|
||||||
wrapsizer.obj,headerctrlcmn.obj,headercolcmn.obj,\
|
wrapsizer.obj,headerctrlcmn.obj,headercolcmn.obj,\
|
||||||
rearrangectrl.obj,spinctrlcmn.obj,datetimefmt.obj,xlocale.obj
|
rearrangectrl.obj,spinctrlcmn.obj,datetimefmt.obj,xlocale.obj,\
|
||||||
|
any.obj
|
||||||
|
|
||||||
OBJECTS_MOTIF=radiocmn.obj,combocmn.obj
|
OBJECTS_MOTIF=radiocmn.obj,combocmn.obj
|
||||||
|
|
||||||
@@ -229,6 +230,7 @@ SOURCES = \
|
|||||||
accelcmn.cpp,\
|
accelcmn.cpp,\
|
||||||
anidecod.cpp,\
|
anidecod.cpp,\
|
||||||
animatecmn.cpp,\
|
animatecmn.cpp,\
|
||||||
|
any.cpp,\
|
||||||
appbase.cpp,\
|
appbase.cpp,\
|
||||||
appcmn.cpp,\
|
appcmn.cpp,\
|
||||||
arrstr.cpp,\
|
arrstr.cpp,\
|
||||||
@@ -459,6 +461,7 @@ $(OBJECTS_MOTIF) : [--.include.wx]setup.h
|
|||||||
accelcmn.obj : accelcmn.cpp
|
accelcmn.obj : accelcmn.cpp
|
||||||
anidecod.obj : anidecod.cpp
|
anidecod.obj : anidecod.cpp
|
||||||
animatecmn.obj : animatecmn.cpp
|
animatecmn.obj : animatecmn.cpp
|
||||||
|
any.obj : any.cpp
|
||||||
appbase.obj : appbase.cpp
|
appbase.obj : appbase.cpp
|
||||||
appcmn.obj : appcmn.cpp
|
appcmn.obj : appcmn.cpp
|
||||||
arrstr.obj : arrstr.cpp
|
arrstr.obj : arrstr.cpp
|
||||||
|
@@ -54,6 +54,7 @@ TEST_CXXFLAGS = $(__test_PCH_INC) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \
|
|||||||
$(CPPUNIT_CFLAGS) $(CXXWARNINGS) $(CPPFLAGS) $(CXXFLAGS)
|
$(CPPUNIT_CFLAGS) $(CXXWARNINGS) $(CPPFLAGS) $(CXXFLAGS)
|
||||||
TEST_OBJECTS = \
|
TEST_OBJECTS = \
|
||||||
test_test.o \
|
test_test.o \
|
||||||
|
test_anytest.o \
|
||||||
test_archivetest.o \
|
test_archivetest.o \
|
||||||
test_ziptest.o \
|
test_ziptest.o \
|
||||||
test_tartest.o \
|
test_tartest.o \
|
||||||
@@ -346,6 +347,9 @@ fr:
|
|||||||
test_test.o: $(srcdir)/test.cpp $(TEST_ODEP)
|
test_test.o: $(srcdir)/test.cpp $(TEST_ODEP)
|
||||||
$(CXXC) -c -o $@ $(TEST_CXXFLAGS) $(srcdir)/test.cpp
|
$(CXXC) -c -o $@ $(TEST_CXXFLAGS) $(srcdir)/test.cpp
|
||||||
|
|
||||||
|
test_anytest.o: $(srcdir)/any/anytest.cpp $(TEST_ODEP)
|
||||||
|
$(CXXC) -c -o $@ $(TEST_CXXFLAGS) $(srcdir)/any/anytest.cpp
|
||||||
|
|
||||||
test_archivetest.o: $(srcdir)/archive/archivetest.cpp $(TEST_ODEP)
|
test_archivetest.o: $(srcdir)/archive/archivetest.cpp $(TEST_ODEP)
|
||||||
$(CXXC) -c -o $@ $(TEST_CXXFLAGS) $(srcdir)/archive/archivetest.cpp
|
$(CXXC) -c -o $@ $(TEST_CXXFLAGS) $(srcdir)/archive/archivetest.cpp
|
||||||
|
|
||||||
|
431
tests/any/anytest.cpp
Normal file
431
tests/any/anytest.cpp
Normal file
@@ -0,0 +1,431 @@
|
|||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Name: tests/any/anytest.cpp
|
||||||
|
// Purpose: Test the wxAny classes
|
||||||
|
// Author: Jaakko Salli
|
||||||
|
// RCS-ID: $Id$
|
||||||
|
// Copyright: (c) the wxWidgets team
|
||||||
|
// Licence: wxWindows licence
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#include "testprec.h"
|
||||||
|
|
||||||
|
#ifdef __BORLANDC__
|
||||||
|
# pragma hdrstop
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if wxUSE_ANY
|
||||||
|
|
||||||
|
#include "wx/any.h"
|
||||||
|
#include "wx/datetime.h"
|
||||||
|
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// test class
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
class wxAnyTestCase : public CppUnit::TestCase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
wxAnyTestCase();
|
||||||
|
|
||||||
|
private:
|
||||||
|
CPPUNIT_TEST_SUITE( wxAnyTestCase );
|
||||||
|
CPPUNIT_TEST( Equality );
|
||||||
|
CPPUNIT_TEST( As );
|
||||||
|
CPPUNIT_TEST( GetAs );
|
||||||
|
CPPUNIT_TEST( Null );
|
||||||
|
CPPUNIT_TEST( CustomTemplateSpecialization );
|
||||||
|
CPPUNIT_TEST_SUITE_END();
|
||||||
|
|
||||||
|
void Equality();
|
||||||
|
void As();
|
||||||
|
void GetAs();
|
||||||
|
void Null();
|
||||||
|
void CustomTemplateSpecialization();
|
||||||
|
|
||||||
|
wxDateTime m_testDateTime;
|
||||||
|
|
||||||
|
wxAny m_anySignedChar1;
|
||||||
|
wxAny m_anySignedShort1;
|
||||||
|
wxAny m_anySignedInt1;
|
||||||
|
wxAny m_anySignedLong1;
|
||||||
|
wxAny m_anySignedLongLong1;
|
||||||
|
wxAny m_anyUnsignedChar1;
|
||||||
|
wxAny m_anyUnsignedShort1;
|
||||||
|
wxAny m_anyUnsignedInt1;
|
||||||
|
wxAny m_anyUnsignedLong1;
|
||||||
|
wxAny m_anyUnsignedLongLong1;
|
||||||
|
wxAny m_anyStringString1;
|
||||||
|
wxAny m_anyCharString1;
|
||||||
|
wxAny m_anyWcharString1;
|
||||||
|
wxAny m_anyBool1;
|
||||||
|
wxAny m_anyFloatDouble1;
|
||||||
|
wxAny m_anyDoubleDouble1;
|
||||||
|
wxAny m_anyWxObjectPtr1;
|
||||||
|
wxAny m_anyVoidPtr1;
|
||||||
|
wxAny m_anyDateTime1;
|
||||||
|
|
||||||
|
wxAny m_anySignedChar2;
|
||||||
|
wxAny m_anySignedShort2;
|
||||||
|
wxAny m_anySignedInt2;
|
||||||
|
wxAny m_anySignedLong2;
|
||||||
|
wxAny m_anySignedLongLong2;
|
||||||
|
wxAny m_anyUnsignedChar2;
|
||||||
|
wxAny m_anyUnsignedShort2;
|
||||||
|
wxAny m_anyUnsignedInt2;
|
||||||
|
wxAny m_anyUnsignedLong2;
|
||||||
|
wxAny m_anyUnsignedLongLong2;
|
||||||
|
wxAny m_anyStringString2;
|
||||||
|
wxAny m_anyCharString2;
|
||||||
|
wxAny m_anyWcharString2;
|
||||||
|
wxAny m_anyBool2;
|
||||||
|
wxAny m_anyFloatDouble2;
|
||||||
|
wxAny m_anyDoubleDouble2;
|
||||||
|
wxAny m_anyWxObjectPtr2;
|
||||||
|
wxAny m_anyVoidPtr2;
|
||||||
|
wxAny m_anyDateTime2;
|
||||||
|
|
||||||
|
DECLARE_NO_COPY_CLASS(wxAnyTestCase)
|
||||||
|
};
|
||||||
|
|
||||||
|
// register in the unnamed registry so that these tests are run by default
|
||||||
|
CPPUNIT_TEST_SUITE_REGISTRATION( wxAnyTestCase );
|
||||||
|
|
||||||
|
// also include in it's own registry so that these tests can be run alone
|
||||||
|
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( wxAnyTestCase, "wxAnyTestCase" );
|
||||||
|
|
||||||
|
// Let's use a number with first digit after decimal dot less than 5,
|
||||||
|
// so that we don't have to worry about whether conversion from float
|
||||||
|
// to int truncates or rounds.
|
||||||
|
const double TEST_FLOAT_CONST = 123.456;
|
||||||
|
|
||||||
|
const double FEQ_DELTA = 0.001;
|
||||||
|
|
||||||
|
wxObject* dummyWxObjectPointer = reinterpret_cast<wxObject*>(1234);
|
||||||
|
void* dummyVoidPointer = reinterpret_cast<void*>(1234);
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// Test both 'creation' methods
|
||||||
|
wxAnyTestCase::wxAnyTestCase()
|
||||||
|
: m_anySignedChar1((signed char)15),
|
||||||
|
m_anySignedShort1((signed short)15),
|
||||||
|
m_anySignedInt1((signed int)15),
|
||||||
|
m_anySignedLong1((signed long)15),
|
||||||
|
#ifdef wxLongLong_t
|
||||||
|
m_anySignedLongLong1((wxLongLong_t)15),
|
||||||
|
#endif
|
||||||
|
m_anyUnsignedChar1((unsigned char)15),
|
||||||
|
m_anyUnsignedShort1((unsigned short)15),
|
||||||
|
m_anyUnsignedInt1((unsigned int)15),
|
||||||
|
m_anyUnsignedLong1((unsigned long)15),
|
||||||
|
#ifdef wxLongLong_t
|
||||||
|
m_anyUnsignedLongLong1((wxULongLong_t)15),
|
||||||
|
#endif
|
||||||
|
m_anyStringString1(wxString("abc")),
|
||||||
|
m_anyCharString1("abc"),
|
||||||
|
m_anyWcharString1(L"abc"),
|
||||||
|
m_anyBool1(true),
|
||||||
|
m_anyFloatDouble1((float)TEST_FLOAT_CONST),
|
||||||
|
m_anyDoubleDouble1((double)TEST_FLOAT_CONST),
|
||||||
|
m_anyWxObjectPtr1(dummyWxObjectPointer),
|
||||||
|
m_anyVoidPtr1(dummyVoidPointer),
|
||||||
|
m_anyDateTime1(wxDateTime::Now())
|
||||||
|
{
|
||||||
|
m_testDateTime = wxDateTime::Now();
|
||||||
|
m_anySignedChar2 = (signed char)15;
|
||||||
|
m_anySignedShort2 = (signed short)15;
|
||||||
|
m_anySignedInt2 = (signed int)15;
|
||||||
|
m_anySignedLong2 = (signed long)15;
|
||||||
|
#ifdef wxLongLong_t
|
||||||
|
m_anySignedLongLong2 = (wxLongLong_t)15;
|
||||||
|
#endif
|
||||||
|
m_anyUnsignedChar2 = (unsigned char)15;
|
||||||
|
m_anyUnsignedShort2 = (unsigned short)15;
|
||||||
|
m_anyUnsignedInt2 = (unsigned int)15;
|
||||||
|
m_anyUnsignedLong2 = (unsigned long)15;
|
||||||
|
#ifdef wxLongLong_t
|
||||||
|
m_anyUnsignedLongLong2 = (wxULongLong_t)15;
|
||||||
|
#endif
|
||||||
|
m_anyStringString2 = wxString("abc");
|
||||||
|
m_anyCharString2 = "abc";
|
||||||
|
m_anyWcharString2 = L"abc";
|
||||||
|
m_anyBool2 = true;
|
||||||
|
m_anyFloatDouble2 = (float)TEST_FLOAT_CONST;
|
||||||
|
m_anyDoubleDouble2 = (double)TEST_FLOAT_CONST;
|
||||||
|
m_anyDateTime2 = m_testDateTime;
|
||||||
|
m_anyWxObjectPtr2 = dummyWxObjectPointer;
|
||||||
|
m_anyVoidPtr2 = dummyVoidPointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxAnyTestCase::Equality()
|
||||||
|
{
|
||||||
|
//
|
||||||
|
// Currently this should work
|
||||||
|
CPPUNIT_ASSERT(m_anyUnsignedLong1 == 15L);
|
||||||
|
CPPUNIT_ASSERT(m_anyUnsignedLong1 != 30L);
|
||||||
|
CPPUNIT_ASSERT(m_anyUnsignedLong1 == 15UL);
|
||||||
|
CPPUNIT_ASSERT(m_anyUnsignedLong1 != 30UL);
|
||||||
|
CPPUNIT_ASSERT(m_anyStringString1 == wxString("abc"));
|
||||||
|
CPPUNIT_ASSERT(m_anyStringString1 != wxString("ABC"));
|
||||||
|
CPPUNIT_ASSERT(m_anyStringString1 == "abc");
|
||||||
|
CPPUNIT_ASSERT(m_anyStringString1 != "ABC");
|
||||||
|
CPPUNIT_ASSERT(m_anyStringString1 == L"abc");
|
||||||
|
CPPUNIT_ASSERT(m_anyStringString1 != L"ABC");
|
||||||
|
CPPUNIT_ASSERT(m_anyBool1 == true);
|
||||||
|
CPPUNIT_ASSERT(m_anyBool1 != false);
|
||||||
|
CPPUNIT_ASSERT_DOUBLES_EQUAL(wxANY_AS(m_anyFloatDouble1, double),
|
||||||
|
wxANY_AS(m_anyDoubleDouble1, double),
|
||||||
|
FEQ_DELTA);
|
||||||
|
CPPUNIT_ASSERT_DOUBLES_EQUAL(wxANY_AS(m_anyFloatDouble1, double),
|
||||||
|
TEST_FLOAT_CONST,
|
||||||
|
FEQ_DELTA);
|
||||||
|
CPPUNIT_ASSERT(m_anyWxObjectPtr1.As<wxObject*>() == dummyWxObjectPointer);
|
||||||
|
CPPUNIT_ASSERT(m_anyVoidPtr1.As<void*>() == dummyVoidPointer);
|
||||||
|
|
||||||
|
CPPUNIT_ASSERT(m_anySignedLong2 == 15);
|
||||||
|
CPPUNIT_ASSERT(m_anyStringString2 == wxString("abc"));
|
||||||
|
CPPUNIT_ASSERT(m_anyStringString2 == "abc");
|
||||||
|
CPPUNIT_ASSERT(m_anyStringString2 == L"abc");
|
||||||
|
CPPUNIT_ASSERT(m_anyBool2 == true);
|
||||||
|
CPPUNIT_ASSERT_DOUBLES_EQUAL(wxANY_AS(m_anyFloatDouble2, double),
|
||||||
|
wxANY_AS(m_anyDoubleDouble2, double),
|
||||||
|
FEQ_DELTA);
|
||||||
|
CPPUNIT_ASSERT_DOUBLES_EQUAL(wxANY_AS(m_anyFloatDouble2, double),
|
||||||
|
TEST_FLOAT_CONST,
|
||||||
|
FEQ_DELTA);
|
||||||
|
CPPUNIT_ASSERT(m_anyWxObjectPtr2.As<wxObject*>() == dummyWxObjectPointer);
|
||||||
|
CPPUNIT_ASSERT(m_anyVoidPtr2.As<void*>() == dummyVoidPointer);
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxAnyTestCase::As()
|
||||||
|
{
|
||||||
|
//
|
||||||
|
// Test getting C++ data from wxAny without dynamic conversion
|
||||||
|
signed char a = wxANY_AS(m_anySignedChar1, signed char);
|
||||||
|
CPPUNIT_ASSERT(a == (signed int)15);
|
||||||
|
signed short b = wxANY_AS(m_anySignedShort1, signed short);
|
||||||
|
CPPUNIT_ASSERT(b == (signed int)15);
|
||||||
|
signed int c = wxANY_AS(m_anySignedInt1, signed int);
|
||||||
|
CPPUNIT_ASSERT(c == (signed int)15);
|
||||||
|
signed long d = wxANY_AS(m_anySignedLong1, signed long);
|
||||||
|
CPPUNIT_ASSERT(d == (signed int)15);
|
||||||
|
#ifdef wxLongLong_t
|
||||||
|
wxLongLong_t e = wxANY_AS(m_anySignedLongLong1, wxLongLong_t);
|
||||||
|
CPPUNIT_ASSERT(e == (signed int)15);
|
||||||
|
#endif
|
||||||
|
unsigned char f = wxANY_AS(m_anyUnsignedChar1, unsigned char);
|
||||||
|
CPPUNIT_ASSERT(f == (unsigned int)15);
|
||||||
|
unsigned short g = wxANY_AS(m_anyUnsignedShort1, unsigned short);
|
||||||
|
CPPUNIT_ASSERT(g == (unsigned int)15);
|
||||||
|
unsigned int h = wxANY_AS(m_anyUnsignedInt1, unsigned int);
|
||||||
|
CPPUNIT_ASSERT(h == (unsigned int)15);
|
||||||
|
unsigned long i = wxANY_AS(m_anyUnsignedLong1, unsigned long);
|
||||||
|
CPPUNIT_ASSERT(i == (unsigned int)15);
|
||||||
|
#ifdef wxLongLong_t
|
||||||
|
wxULongLong_t j = wxANY_AS(m_anyUnsignedLongLong1, wxULongLong_t);
|
||||||
|
CPPUNIT_ASSERT(j == (unsigned int)15);
|
||||||
|
#endif
|
||||||
|
wxString k = wxANY_AS(m_anyStringString1, wxString);
|
||||||
|
CPPUNIT_ASSERT(k == "abc");
|
||||||
|
wxString l = wxANY_AS(m_anyCharString1, wxString);
|
||||||
|
CPPUNIT_ASSERT(l == "abc");
|
||||||
|
wxString m = wxANY_AS(m_anyWcharString1, wxString);
|
||||||
|
CPPUNIT_ASSERT(m == "abc");
|
||||||
|
bool n = wxANY_AS(m_anyBool1, bool);
|
||||||
|
CPPUNIT_ASSERT(n);
|
||||||
|
float o = wxANY_AS(m_anyFloatDouble1, float);
|
||||||
|
CPPUNIT_ASSERT_DOUBLES_EQUAL(o, TEST_FLOAT_CONST, FEQ_DELTA);
|
||||||
|
double p = wxANY_AS(m_anyDoubleDouble1, double);
|
||||||
|
CPPUNIT_ASSERT_DOUBLES_EQUAL(p, TEST_FLOAT_CONST, FEQ_DELTA);
|
||||||
|
wxDateTime q = wxANY_AS(m_anyDateTime1, wxDateTime);
|
||||||
|
CPPUNIT_ASSERT(q == m_testDateTime);
|
||||||
|
wxObject* r = wxANY_AS(m_anyWxObjectPtr1, wxObject*);
|
||||||
|
CPPUNIT_ASSERT(r == dummyWxObjectPointer);
|
||||||
|
void* s = wxANY_AS(m_anyVoidPtr1, void*);
|
||||||
|
CPPUNIT_ASSERT(s == dummyVoidPointer);
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxAnyTestCase::Null()
|
||||||
|
{
|
||||||
|
wxAny a;
|
||||||
|
CPPUNIT_ASSERT(a.IsNull());
|
||||||
|
a = -127;
|
||||||
|
CPPUNIT_ASSERT(a == -127);
|
||||||
|
a.MakeNull();
|
||||||
|
CPPUNIT_ASSERT(a.IsNull());
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxAnyTestCase::GetAs()
|
||||||
|
{
|
||||||
|
//
|
||||||
|
// Test dynamic conversion
|
||||||
|
bool res;
|
||||||
|
long l = 0;
|
||||||
|
unsigned long ul = 0;
|
||||||
|
wxString s;
|
||||||
|
// Let's test against float instead of double, since the former
|
||||||
|
// is not the native underlying type the code converts to, but
|
||||||
|
// should still work, all the same.
|
||||||
|
float f = 0.0;
|
||||||
|
bool b = false;
|
||||||
|
|
||||||
|
// Conversions from signed long type
|
||||||
|
res = m_anySignedLong1.GetAs(&ul);
|
||||||
|
CPPUNIT_ASSERT(res);
|
||||||
|
CPPUNIT_ASSERT_EQUAL(ul, static_cast<unsigned long>(15));
|
||||||
|
res = m_anySignedLong1.GetAs(&s);
|
||||||
|
CPPUNIT_ASSERT(res);
|
||||||
|
CPPUNIT_ASSERT(s == "15");
|
||||||
|
res = m_anySignedLong1.GetAs(&f);
|
||||||
|
CPPUNIT_ASSERT(res);
|
||||||
|
CPPUNIT_ASSERT_DOUBLES_EQUAL(f, 15.0, FEQ_DELTA);
|
||||||
|
res = m_anySignedLong1.GetAs(&b);
|
||||||
|
CPPUNIT_ASSERT(res);
|
||||||
|
CPPUNIT_ASSERT(b == true);
|
||||||
|
|
||||||
|
// Conversions from unsigned long type
|
||||||
|
res = m_anyUnsignedLong1.GetAs(&l);
|
||||||
|
CPPUNIT_ASSERT(res);
|
||||||
|
CPPUNIT_ASSERT(l == static_cast<signed long>(15));
|
||||||
|
res = m_anyUnsignedLong1.GetAs(&s);
|
||||||
|
CPPUNIT_ASSERT(res);
|
||||||
|
CPPUNIT_ASSERT(s == "15");
|
||||||
|
res = m_anyUnsignedLong1.GetAs(&f);
|
||||||
|
CPPUNIT_ASSERT(res);
|
||||||
|
CPPUNIT_ASSERT_DOUBLES_EQUAL(f, 15.0, FEQ_DELTA);
|
||||||
|
res = m_anyUnsignedLong1.GetAs(&b);
|
||||||
|
CPPUNIT_ASSERT(res);
|
||||||
|
CPPUNIT_ASSERT(b == true);
|
||||||
|
|
||||||
|
// Conversions from default "abc" string to other types
|
||||||
|
// should not work.
|
||||||
|
CPPUNIT_ASSERT(!m_anyStringString1.GetAs(&l));
|
||||||
|
CPPUNIT_ASSERT(!m_anyStringString1.GetAs(&ul));
|
||||||
|
CPPUNIT_ASSERT(!m_anyStringString1.GetAs(&f));
|
||||||
|
CPPUNIT_ASSERT(!m_anyStringString1.GetAs(&b));
|
||||||
|
|
||||||
|
// Let's test some other conversions from string that should work.
|
||||||
|
wxAny anyString;
|
||||||
|
|
||||||
|
anyString = "15";
|
||||||
|
res = anyString.GetAs(&l);
|
||||||
|
CPPUNIT_ASSERT(res);
|
||||||
|
CPPUNIT_ASSERT(l == static_cast<signed long>(15));
|
||||||
|
res = anyString.GetAs(&ul);
|
||||||
|
CPPUNIT_ASSERT(res);
|
||||||
|
CPPUNIT_ASSERT_EQUAL(ul, static_cast<unsigned long>(15));
|
||||||
|
res = anyString.GetAs(&f);
|
||||||
|
CPPUNIT_ASSERT(res);
|
||||||
|
CPPUNIT_ASSERT_DOUBLES_EQUAL(f, 15.0, FEQ_DELTA);
|
||||||
|
anyString = "TRUE";
|
||||||
|
res = anyString.GetAs(&b);
|
||||||
|
CPPUNIT_ASSERT(res);
|
||||||
|
CPPUNIT_ASSERT(b == true);
|
||||||
|
anyString = "0";
|
||||||
|
res = anyString.GetAs(&b);
|
||||||
|
CPPUNIT_ASSERT(res);
|
||||||
|
CPPUNIT_ASSERT(b == false);
|
||||||
|
|
||||||
|
// Conversions from bool type
|
||||||
|
res = m_anyBool1.GetAs(&l);
|
||||||
|
CPPUNIT_ASSERT(res);
|
||||||
|
CPPUNIT_ASSERT(l == static_cast<signed long>(1));
|
||||||
|
res = m_anyBool1.GetAs(&ul);
|
||||||
|
CPPUNIT_ASSERT(res);
|
||||||
|
CPPUNIT_ASSERT_EQUAL(ul, static_cast<unsigned long>(1));
|
||||||
|
res = m_anyBool1.GetAs(&s);
|
||||||
|
CPPUNIT_ASSERT(res);
|
||||||
|
CPPUNIT_ASSERT(s == "true");
|
||||||
|
CPPUNIT_ASSERT(!m_anyBool1.GetAs(&f));
|
||||||
|
|
||||||
|
// Conversions from floating point type
|
||||||
|
res = m_anyDoubleDouble1.GetAs(&l);
|
||||||
|
CPPUNIT_ASSERT(res);
|
||||||
|
CPPUNIT_ASSERT(l == static_cast<signed long>(123));
|
||||||
|
res = m_anyDoubleDouble1.GetAs(&ul);
|
||||||
|
CPPUNIT_ASSERT(res);
|
||||||
|
CPPUNIT_ASSERT_EQUAL(ul, static_cast<unsigned long>(123));
|
||||||
|
res = m_anyDoubleDouble1.GetAs(&s);
|
||||||
|
CPPUNIT_ASSERT(res);
|
||||||
|
double d2;
|
||||||
|
res = s.ToDouble(&d2);
|
||||||
|
CPPUNIT_ASSERT(res);
|
||||||
|
CPPUNIT_ASSERT_DOUBLES_EQUAL(d2, TEST_FLOAT_CONST, FEQ_DELTA);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Test user data type specialization of wxAnyValueTypeImpl
|
||||||
|
//
|
||||||
|
|
||||||
|
class MyClass
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
MyClass( int someValue = 32768 )
|
||||||
|
{
|
||||||
|
m_someValue = someValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
wxString ToString()
|
||||||
|
{
|
||||||
|
return wxString::Format("%i", m_someValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
int m_someValue;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
template<>
|
||||||
|
class wxAnyValueTypeImpl<MyClass> :
|
||||||
|
public wxAnyValueTypeImplBase<MyClass>
|
||||||
|
{
|
||||||
|
WX_DECLARE_ANY_VALUE_TYPE(wxAnyValueTypeImpl<MyClass>)
|
||||||
|
public:
|
||||||
|
wxAnyValueTypeImpl() :
|
||||||
|
wxAnyValueTypeImplBase<MyClass>() { }
|
||||||
|
virtual ~wxAnyValueTypeImpl() { }
|
||||||
|
|
||||||
|
virtual bool ConvertValue(const wxAnyValueBuffer& src,
|
||||||
|
wxAnyValueType* dstType,
|
||||||
|
wxAnyValueBuffer& dst) const
|
||||||
|
{
|
||||||
|
MyClass value = GetValue(src);
|
||||||
|
|
||||||
|
if ( wxANY_VALUE_TYPE_CHECK_TYPE(dstType, wxString) )
|
||||||
|
{
|
||||||
|
wxString s = value.ToString();
|
||||||
|
wxAnyValueTypeImpl<wxString>::SetValue(s, dst);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
//
|
||||||
|
// Following must be placed somewhere in your source code
|
||||||
|
WX_IMPLEMENT_ANY_VALUE_TYPE(wxAnyValueTypeImpl<MyClass>)
|
||||||
|
|
||||||
|
void wxAnyTestCase::CustomTemplateSpecialization()
|
||||||
|
{
|
||||||
|
// Do only a minimal CheckType() test, as dynamic type conversion already
|
||||||
|
// uses it a lot.
|
||||||
|
bool res;
|
||||||
|
MyClass myObject;
|
||||||
|
wxAny any = myObject;
|
||||||
|
|
||||||
|
CPPUNIT_ASSERT( wxANY_CHECK_TYPE(any, MyClass) );
|
||||||
|
MyClass myObject2 = wxANY_AS(any, MyClass);
|
||||||
|
wxUnusedVar(myObject2);
|
||||||
|
|
||||||
|
wxString str;
|
||||||
|
res = any.GetAs(&str);
|
||||||
|
CPPUNIT_ASSERT(res);
|
||||||
|
CPPUNIT_ASSERT_EQUAL(str, myObject.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // wxUSE_ANY
|
||||||
|
|
@@ -38,6 +38,7 @@ TEST_CXXFLAGS = $(__RUNTIME_LIBS) -I$(BCCDIR)\include $(__DEBUGINFO) \
|
|||||||
TEST_OBJECTS = \
|
TEST_OBJECTS = \
|
||||||
$(OBJS)\test_dummy.obj \
|
$(OBJS)\test_dummy.obj \
|
||||||
$(OBJS)\test_test.obj \
|
$(OBJS)\test_test.obj \
|
||||||
|
$(OBJS)\test_anytest.obj \
|
||||||
$(OBJS)\test_archivetest.obj \
|
$(OBJS)\test_archivetest.obj \
|
||||||
$(OBJS)\test_ziptest.obj \
|
$(OBJS)\test_ziptest.obj \
|
||||||
$(OBJS)\test_tartest.obj \
|
$(OBJS)\test_tartest.obj \
|
||||||
@@ -378,6 +379,9 @@ $(OBJS)\test_dummy.obj: .\dummy.cpp
|
|||||||
$(OBJS)\test_test.obj: .\test.cpp
|
$(OBJS)\test_test.obj: .\test.cpp
|
||||||
$(CXX) -q -c -P -o$@ $(TEST_CXXFLAGS) .\test.cpp
|
$(CXX) -q -c -P -o$@ $(TEST_CXXFLAGS) .\test.cpp
|
||||||
|
|
||||||
|
$(OBJS)\test_anytest.obj: .\any\anytest.cpp
|
||||||
|
$(CXX) -q -c -P -o$@ $(TEST_CXXFLAGS) .\any\anytest.cpp
|
||||||
|
|
||||||
$(OBJS)\test_archivetest.obj: .\archive\archivetest.cpp
|
$(OBJS)\test_archivetest.obj: .\archive\archivetest.cpp
|
||||||
$(CXX) -q -c -P -o$@ $(TEST_CXXFLAGS) .\archive\archivetest.cpp
|
$(CXX) -q -c -P -o$@ $(TEST_CXXFLAGS) .\archive\archivetest.cpp
|
||||||
|
|
||||||
|
@@ -30,6 +30,7 @@ TEST_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(__THREADSFLAG) $(GCCFLAGS) \
|
|||||||
TEST_OBJECTS = \
|
TEST_OBJECTS = \
|
||||||
$(OBJS)\test_dummy.o \
|
$(OBJS)\test_dummy.o \
|
||||||
$(OBJS)\test_test.o \
|
$(OBJS)\test_test.o \
|
||||||
|
$(OBJS)\test_anytest.o \
|
||||||
$(OBJS)\test_archivetest.o \
|
$(OBJS)\test_archivetest.o \
|
||||||
$(OBJS)\test_ziptest.o \
|
$(OBJS)\test_ziptest.o \
|
||||||
$(OBJS)\test_tartest.o \
|
$(OBJS)\test_tartest.o \
|
||||||
@@ -359,6 +360,9 @@ $(OBJS)\test_dummy.o: ./dummy.cpp
|
|||||||
$(OBJS)\test_test.o: ./test.cpp
|
$(OBJS)\test_test.o: ./test.cpp
|
||||||
$(CXX) -c -o $@ $(TEST_CXXFLAGS) $(CPPDEPS) $<
|
$(CXX) -c -o $@ $(TEST_CXXFLAGS) $(CPPDEPS) $<
|
||||||
|
|
||||||
|
$(OBJS)\test_anytest.o: ./any/anytest.cpp
|
||||||
|
$(CXX) -c -o $@ $(TEST_CXXFLAGS) $(CPPDEPS) $<
|
||||||
|
|
||||||
$(OBJS)\test_archivetest.o: ./archive/archivetest.cpp
|
$(OBJS)\test_archivetest.o: ./archive/archivetest.cpp
|
||||||
$(CXX) -c -o $@ $(TEST_CXXFLAGS) $(CPPDEPS) $<
|
$(CXX) -c -o $@ $(TEST_CXXFLAGS) $(CPPDEPS) $<
|
||||||
|
|
||||||
|
@@ -31,6 +31,7 @@ TEST_CXXFLAGS = /M$(__RUNTIME_LIBS_8)$(__DEBUGRUNTIME) /DWIN32 $(__DEBUGINFO) \
|
|||||||
TEST_OBJECTS = \
|
TEST_OBJECTS = \
|
||||||
$(OBJS)\test_dummy.obj \
|
$(OBJS)\test_dummy.obj \
|
||||||
$(OBJS)\test_test.obj \
|
$(OBJS)\test_test.obj \
|
||||||
|
$(OBJS)\test_anytest.obj \
|
||||||
$(OBJS)\test_archivetest.obj \
|
$(OBJS)\test_archivetest.obj \
|
||||||
$(OBJS)\test_ziptest.obj \
|
$(OBJS)\test_ziptest.obj \
|
||||||
$(OBJS)\test_tartest.obj \
|
$(OBJS)\test_tartest.obj \
|
||||||
@@ -461,6 +462,9 @@ $(OBJS)\test_dummy.obj: .\dummy.cpp
|
|||||||
$(OBJS)\test_test.obj: .\test.cpp
|
$(OBJS)\test_test.obj: .\test.cpp
|
||||||
$(CXX) /c /nologo /TP /Fo$@ $(TEST_CXXFLAGS) .\test.cpp
|
$(CXX) /c /nologo /TP /Fo$@ $(TEST_CXXFLAGS) .\test.cpp
|
||||||
|
|
||||||
|
$(OBJS)\test_anytest.obj: .\any\anytest.cpp
|
||||||
|
$(CXX) /c /nologo /TP /Fo$@ $(TEST_CXXFLAGS) .\any\anytest.cpp
|
||||||
|
|
||||||
$(OBJS)\test_archivetest.obj: .\archive\archivetest.cpp
|
$(OBJS)\test_archivetest.obj: .\archive\archivetest.cpp
|
||||||
$(CXX) /c /nologo /TP /Fo$@ $(TEST_CXXFLAGS) .\archive\archivetest.cpp
|
$(CXX) /c /nologo /TP /Fo$@ $(TEST_CXXFLAGS) .\archive\archivetest.cpp
|
||||||
|
|
||||||
|
@@ -259,6 +259,7 @@ TEST_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(__THREADSFLAG) &
|
|||||||
TEST_OBJECTS = &
|
TEST_OBJECTS = &
|
||||||
$(OBJS)\test_dummy.obj &
|
$(OBJS)\test_dummy.obj &
|
||||||
$(OBJS)\test_test.obj &
|
$(OBJS)\test_test.obj &
|
||||||
|
$(OBJS)\test_anytest.obj &
|
||||||
$(OBJS)\test_archivetest.obj &
|
$(OBJS)\test_archivetest.obj &
|
||||||
$(OBJS)\test_ziptest.obj &
|
$(OBJS)\test_ziptest.obj &
|
||||||
$(OBJS)\test_tartest.obj &
|
$(OBJS)\test_tartest.obj &
|
||||||
@@ -416,6 +417,9 @@ $(OBJS)\test_dummy.obj : .AUTODEPEND .\dummy.cpp
|
|||||||
$(OBJS)\test_test.obj : .AUTODEPEND .\test.cpp
|
$(OBJS)\test_test.obj : .AUTODEPEND .\test.cpp
|
||||||
$(CXX) -bt=nt -zq -fo=$^@ $(TEST_CXXFLAGS) $<
|
$(CXX) -bt=nt -zq -fo=$^@ $(TEST_CXXFLAGS) $<
|
||||||
|
|
||||||
|
$(OBJS)\test_anytest.obj : .AUTODEPEND .\any\anytest.cpp
|
||||||
|
$(CXX) -bt=nt -zq -fo=$^@ $(TEST_CXXFLAGS) $<
|
||||||
|
|
||||||
$(OBJS)\test_archivetest.obj : .AUTODEPEND .\archive\archivetest.cpp
|
$(OBJS)\test_archivetest.obj : .AUTODEPEND .\archive\archivetest.cpp
|
||||||
$(CXX) -bt=nt -zq -fo=$^@ $(TEST_CXXFLAGS) $<
|
$(CXX) -bt=nt -zq -fo=$^@ $(TEST_CXXFLAGS) $<
|
||||||
|
|
||||||
|
@@ -29,6 +29,7 @@
|
|||||||
template_append="wx_append_base">
|
template_append="wx_append_base">
|
||||||
<sources>
|
<sources>
|
||||||
test.cpp
|
test.cpp
|
||||||
|
any/anytest.cpp
|
||||||
archive/archivetest.cpp
|
archive/archivetest.cpp
|
||||||
archive/ziptest.cpp
|
archive/ziptest.cpp
|
||||||
archive/tartest.cpp
|
archive/tartest.cpp
|
||||||
|
@@ -235,6 +235,10 @@ LINK32=link.exe
|
|||||||
# PROP Default_Filter ""
|
# PROP Default_Filter ""
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\any\anytest.cpp
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
SOURCE=.\archive\archivetest.cpp
|
SOURCE=.\archive\archivetest.cpp
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
@@ -557,6 +557,9 @@
|
|||||||
Name="Source Files"
|
Name="Source Files"
|
||||||
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
|
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
|
||||||
|
<File
|
||||||
|
RelativePath=".\any\anytest.cpp">
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath=".\archive\archivetest.cpp">
|
RelativePath=".\archive\archivetest.cpp">
|
||||||
</File>
|
</File>
|
||||||
|
@@ -819,6 +819,10 @@
|
|||||||
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
||||||
>
|
>
|
||||||
|
<File
|
||||||
|
RelativePath=".\any\anytest.cpp"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath=".\archive\archivetest.cpp"
|
RelativePath=".\archive\archivetest.cpp"
|
||||||
>
|
>
|
||||||
|
@@ -791,6 +791,10 @@
|
|||||||
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
||||||
>
|
>
|
||||||
|
<File
|
||||||
|
RelativePath=".\any\anytest.cpp"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath=".\archive\archivetest.cpp"
|
RelativePath=".\archive\archivetest.cpp"
|
||||||
>
|
>
|
||||||
|
@@ -206,6 +206,7 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
# --- wxBase headers list begins here ---
|
# --- wxBase headers list begins here ---
|
||||||
cat <<EOF >wxbase-headers.files
|
cat <<EOF >wxbase-headers.files
|
||||||
wx/afterstd.h
|
wx/afterstd.h
|
||||||
|
wx/any.h
|
||||||
wx/anystr.h
|
wx/anystr.h
|
||||||
wx/app.h
|
wx/app.h
|
||||||
wx/apptrait.h
|
wx/apptrait.h
|
||||||
|
@@ -111,6 +111,7 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
# --- wxBase headers list begins here ---
|
# --- wxBase headers list begins here ---
|
||||||
cat <<EOF >wxbase-headers.files
|
cat <<EOF >wxbase-headers.files
|
||||||
wx/afterstd.h
|
wx/afterstd.h
|
||||||
|
wx/any.h
|
||||||
wx/anystr.h
|
wx/anystr.h
|
||||||
wx/app.h
|
wx/app.h
|
||||||
wx/apptrait.h
|
wx/apptrait.h
|
||||||
|
@@ -135,6 +135,7 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
# --- wxBase headers list begins here ---
|
# --- wxBase headers list begins here ---
|
||||||
cat <<EOF >wxbase-headers.files
|
cat <<EOF >wxbase-headers.files
|
||||||
wx/afterstd.h
|
wx/afterstd.h
|
||||||
|
wx/any.h
|
||||||
wx/anystr.h
|
wx/anystr.h
|
||||||
wx/app.h
|
wx/app.h
|
||||||
wx/apptrait.h
|
wx/apptrait.h
|
||||||
|
Reference in New Issue
Block a user