X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d77df9f7d023b026a7bbe995ddd36cfdbe07e3d5..040d3c2ebf2dd5f9eacc07a398fa82a8b1aad151:/include/wx/persist.h diff --git a/include/wx/persist.h b/include/wx/persist.h index ff2aabab10..24cd503142 100644 --- a/include/wx/persist.h +++ b/include/wx/persist.h @@ -215,5 +215,23 @@ private: DECLARE_NO_COPY_CLASS(wxPersistentObject) }; +// FIXME-VC6: VC6 has troubles with template methods of DLL-exported classes, +// apparently it believes they should be defined in the DLL (which +// is, of course, impossible as the DLL doesn't know for which types +// will they be instantiated) instead of compiling them when +// building the main application itself. Because of this problem +// (which only arises in debug build!) we can't use the usual +// RegisterAndRestore(obj) with it and need to explicitly create the +// persistence adapter. To hide this ugliness we define a global +// function which does it for us. +template +inline bool wxPersistentRegisterAndRestore(T *obj) +{ + wxPersistentObject * const pers = wxCreatePersistentObject(obj); + + return wxPersistenceManager::Get().RegisterAndRestore(obj, pers); + +} + #endif // _WX_PERSIST_H_