|
|
@@ -44,6 +44,12 @@
|
|
|
#include "Poco/Data/Connector.h"
|
|
|
|
|
|
|
|
|
+// Note: to avoid static (de)initialization problems,
|
|
|
+// during connector automatic (un)registration, it is
|
|
|
+// best to have this as a macro.
|
|
|
+#define POCO_DATA_ODBC_CONNECTOR_NAME "odbc"
|
|
|
+
|
|
|
+
|
|
|
namespace Poco {
|
|
|
namespace Data {
|
|
|
namespace ODBC {
|
|
|
@@ -83,11 +89,63 @@ public:
|
|
|
|
|
|
inline const std::string& Connector::name() const
|
|
|
{
|
|
|
- return KEY;
|
|
|
+ static const std::string n(POCO_DATA_ODBC_CONNECTOR_NAME);
|
|
|
+ return n;
|
|
|
}
|
|
|
|
|
|
|
|
|
} } } // namespace Poco::Data::ODBC
|
|
|
|
|
|
|
|
|
+//
|
|
|
+// Automatic Connector registration
|
|
|
+//
|
|
|
+
|
|
|
+struct ODBC_API ODBCConnectorRegistrator
|
|
|
+ /// Connector registering class.
|
|
|
+ /// A global instance of this class is instantiated
|
|
|
+ /// with sole purpose to automatically register the
|
|
|
+ /// ODBC connector with central Poco Data registry.
|
|
|
+{
|
|
|
+ ODBCConnectorRegistrator()
|
|
|
+ /// Calls Poco::Data::ODBC::registerConnector();
|
|
|
+ {
|
|
|
+ Poco::Data::ODBC::Connector::registerConnector();
|
|
|
+ }
|
|
|
+
|
|
|
+ ~ODBCConnectorRegistrator()
|
|
|
+ /// Calls Poco::Data::ODBC::unregisterConnector();
|
|
|
+ {
|
|
|
+ Poco::Data::ODBC::Connector::unregisterConnector();
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+
|
|
|
+#if !defined(POCO_NO_AUTOMATIC_LIB_INIT)
|
|
|
+ #if defined(POCO_OS_FAMILY_WINDOWS)
|
|
|
+ extern "C" const struct ODBC_API ODBCConnectorRegistrator pocoODBCConnectorRegistrator;
|
|
|
+ #if defined(ODBC_EXPORTS)
|
|
|
+ #if defined(_WIN64)
|
|
|
+ #define POCO_DATA_ODBC_FORCE_SYMBOL(s) __pragma(comment (linker, "/export:"#s))
|
|
|
+ #elif defined(_WIN32)
|
|
|
+ #define POCO_DATA_ODBC_FORCE_SYMBOL(s) __pragma(comment (linker, "/export:_"#s))
|
|
|
+ #endif
|
|
|
+ #else // !ODBC_EXPORTS
|
|
|
+ #if defined(_WIN64)
|
|
|
+ #define POCO_DATA_ODBC_FORCE_SYMBOL(s) __pragma(comment (linker, "/include:"#s))
|
|
|
+ #elif defined(_WIN32)
|
|
|
+ #define POCO_DATA_ODBC_FORCE_SYMBOL(s) __pragma(comment (linker, "/include:_"#s))
|
|
|
+ #endif
|
|
|
+ #endif // ODBC_EXPORTS
|
|
|
+ #else // !POCO_OS_FAMILY_WINDOWS
|
|
|
+ #define POCO_DATA_ODBC_FORCE_SYMBOL(s) extern "C" const struct ODBCConnectorRegistrator s;
|
|
|
+ #endif // POCO_OS_FAMILY_WINDOWS
|
|
|
+ POCO_DATA_ODBC_FORCE_SYMBOL(pocoODBCConnectorRegistrator)
|
|
|
+#endif // POCO_NO_AUTOMATIC_LIB_INIT
|
|
|
+
|
|
|
+//
|
|
|
+// End automatic Connector registration
|
|
|
+//
|
|
|
+
|
|
|
+
|
|
|
#endif // Data_ODBC_Connector_INCLUDED
|