13#if __DCL_HAVE_ALLOC_DEBUG
14#undef __DCL_ALLOC_LEVEL
15#define __DCL_ALLOC_LEVEL __DCL_ALLOC_INTERNAL
25#if __DCL_HAVE_THIS_FILE__
41 : __name(_name), __errorCode(_errorCode)
46 const String& _driverSummary)
47 : __name(_name), __errorCode(_errorCode), __driverSummary(_driverSummary)
53 StringBuilder
r = __name;
61 switch (__errorCode) {
62 case eInvalidDriverModule:
63 r +=
__T(
"Invalid Driver Module");
66 r +=
__T(
"Invalid DCL_SQL_VERSION");
69 r +=
__T(
"Initialize callback fail!");
72 r +=
__T(
"cleanup callback falil");
78 if (!__driverSummary.isEmpty())
79 r +=
__T(
" :") + __driverSummary;
127 StringBuilder filename = _name
138#elif defined(__APPLE__)
145 int flags = Dll::DEFAULT
152 Dll::open(filename.toString(), flags);
170 SQLDriverException::eInvalidDriverModule);
176 SQLDriverException::eInvalidVersion);
183 SQLDriverException::eInvalidDriverModule);
188 SQLDriverException::eInitializeFail
225 SQLDriverException::eCleanupFail,
254 return pNewConnection;
270 r +=
__T(
", DCLCVersion:");
276 r +=
__T(
", SQLVersion:");
290 r += L
", pfnInitialize: (null)";
292 r += L
", pfnCleanup: (null)";
294 r += L
", pfnCreateConnectionInstance: (null)";
297 r += L
", FileVersion:";
302 r += L
", ServerTitle:";
307 r += L
", Description:";
317 PointerArray __drivers;
326 bool isEmpty()
const {
return __drivers.isEmpty(); }
334 String name = _name.trim();
338 for (PointerArray::Iterator it = __drivers.begin();
339 it != __drivers.end(); it++) {
340 if (!((
SQLDriver*)(*it))->driverName().compareNoCase(name)) {
349 __T(
"Open New SQLDriver: %ls, Prev-Count: %d\n"),
355 __drivers.add(driver);
365 for(PointerArray::Iterator it = __drivers.begin();
366 it != __drivers.end(); it++) {
375 driver->fileName().data()
395 PointerArray::Iterator it = __drivers.find(driver);
404 driver->driverName().data(),
405 driver->fileName().data()
423static void cleanupDriverContext()
425 if (__DriverPool__ ==
NULL)
430 __DriverPool__->clearAll();
431 delete __DriverPool__;
432 __DriverPool__ =
NULL;
445 if (__DriverPool__ ==
NULL) {
451 r = __DriverPool__->getDriver(_name);
476 __DriverPool__->clear(_driver);
#define DCL_DSO_ENTRY_POINT_STRING
__DCL_BEGIN_NAMESPACE LibState * __LibState__
#define __DCL_TRACE1(fmt, arg1)
#define __DCL_TRACE3(fmt, arg1, arg2, arg3)
#define DECLARE_CLASSINFO(class_name)
#define __DCL_ASSERT(expr)
#define IMPLEMENT_CLASSINFO(class_name, base_class_name)
#define __DCL_TRACE2(fmt, arg1, arg2)
virtual String toString() const
const Exception * cause() const
virtual String toString() const
SQLDriverException(const String &_name, Exception *_cause)
static SQLDriver * getDriver(const String &_name) __DCL_THROWS1(SQLDriverException *)
SQL::Connection * createConnection()
static void closeDriver(SQLDriver *_pSQLDriver) __DCL_THROWS1(SQLDriverException *)
void close() __DCL_THROWS1(SQLDriverException *)
String getDriverSummary() const
SQLDriver(const String &_name) __DCL_THROWS1(SQLDriverException *)
SQL::DRIVER_MODULE * __pModuleEntryPoint
const String & driverName() const
void destroyConnection(SQL::Connection *pConnection)
void open(const String &_name) __DCL_THROWS1(SQLDriverException *)
SQLDriver * getDriver(const String &_name) __DCL_THROWS1(SQLDriverException *)
void clear(SQLDriver *pDriver) __DCL_THROWS1(SQLDriverException *)
static long incrementAndGet(volatile long &_n)
static long decrementAndGet(volatile long &_n)
#define __VERSION_MINOR(_x)
#define __VERSION_MAJOR(_x)
#define __VERSION_MAJOR_MINOR(_x)
Connection *(* pfnCreateConnectionInstance)()