1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*************************************************************************
4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
6 * Copyright 2000, 2010 Oracle and/or its affiliates.
8 * OpenOffice.org - a multi-platform office productivity suite
10 * This file is part of OpenOffice.org.
12 * OpenOffice.org is free software: you can redistribute it and/or modify
13 * it under the terms of the GNU Lesser General Public License version 3
14 * only, as published by the Free Software Foundation.
16 * OpenOffice.org is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU Lesser General Public License version 3 for more details
20 * (a copy is included in the LICENSE file that accompanied this code).
22 * You should have received a copy of the GNU Lesser General Public License
23 * version 3 along with OpenOffice.org. If not, see
24 * <http://www.openoffice.org/license.html>
25 * for a copy of the LGPLv3 License.
27 ************************************************************************/
29 #ifndef _DBAUI_ODBC_CONFIG_HXX_
30 #define _DBAUI_ODBC_CONFIG_HXX_
32 #include "commontypes.hxx"
34 #if defined(WNT) || defined (UNX)
35 #define HAVE_ODBC_SUPPORT
38 #if defined(WNT) && defined(HAVE_ODBC_SUPPORT)
39 #define HAVE_ODBC_ADMINISTRATION
42 #include <tools/link.hxx>
43 #include <osl/module.h>
47 //.........................................................................
50 //.........................................................................
52 //=========================================================================
54 //=========================================================================
55 /** base for helper classes wrapping functionality from an ODBC library
59 oslModule m_pOdbcLib
; // the library handle
60 ::rtl::OUString m_sLibPath
; // the path to the library
63 #ifdef HAVE_ODBC_SUPPORT
64 sal_Bool
isLoaded() const { return NULL
!= m_pOdbcLib
; }
66 sal_Bool
isLoaded() const { return sal_False
; }
68 ::rtl::OUString
getLibraryName() const { return m_sLibPath
; }
71 #ifndef HAVE_ODBC_SUPPORT
72 OOdbcLibWrapper() : m_pOdbcLib(NULL
) { }
78 oslGenericFunction
loadSymbol(const sal_Char
* _pFunctionName
);
81 sal_Bool
load(const sal_Char
* _pLibPath
);
86 //=========================================================================
88 //=========================================================================
90 class OOdbcEnumeration
: public OOdbcLibWrapper
92 #ifdef HAVE_ODBC_SUPPORT
93 // entry points for ODBC administration
94 oslGenericFunction m_pAllocHandle
;
95 oslGenericFunction m_pFreeHandle
;
96 oslGenericFunction m_pSetEnvAttr
;
97 oslGenericFunction m_pDataSources
;
100 OdbcTypesImpl
* m_pImpl
;
101 // needed because we can't have a member of type SQLHANDLE: this would require us to include the respective
102 // ODBC file, which would lead to a lot of conflicts with other includes
108 void getDatasourceNames(StringBag
& _rNames
);
111 /// ensure that an ODBC environment is allocated
113 /// free any allocated ODBC environment
117 //=========================================================================
119 //=========================================================================
120 #ifdef HAVE_ODBC_ADMINISTRATION
121 class ProcessTerminationWait
;
122 class OOdbcManagement
124 ::std::auto_ptr
< ProcessTerminationWait
> m_pProcessWait
;
125 Link m_aAsyncFinishCallback
;
128 OOdbcManagement( const Link
& _rAsyncFinishCallback
);
131 bool manageDataSources_async();
132 bool isRunning() const;
136 //.........................................................................
138 //.........................................................................
140 #endif // _DBAUI_ODBC_CONFIG_HXX_
142 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */