Version 3.6.0.2, tag libreoffice-3.6.0.2
[LibreOffice.git] / dbaccess / source / ui / dlg / odbcconfig.hxx
blob2c950ba5f4737a457fbe24ba598689aee52e53cd
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
36 #endif
38 #if defined(WNT) && defined(HAVE_ODBC_SUPPORT)
39 #define HAVE_ODBC_ADMINISTRATION
40 #endif
42 #include <tools/link.hxx>
43 #include <osl/module.h>
45 #include <memory>
47 //.........................................................................
48 namespace dbaui
50 //.........................................................................
52 //=========================================================================
53 //= OOdbcLibWrapper
54 //=========================================================================
55 /** base for helper classes wrapping functionality from an ODBC library
57 class OOdbcLibWrapper
59 oslModule m_pOdbcLib; // the library handle
60 ::rtl::OUString m_sLibPath; // the path to the library
62 public:
63 #ifdef HAVE_ODBC_SUPPORT
64 sal_Bool isLoaded() const { return NULL != m_pOdbcLib; }
65 #else
66 sal_Bool isLoaded() const { return sal_False; }
67 #endif
68 ::rtl::OUString getLibraryName() const { return m_sLibPath; }
70 protected:
71 #ifndef HAVE_ODBC_SUPPORT
72 OOdbcLibWrapper() : m_pOdbcLib(NULL) { }
73 #else
74 OOdbcLibWrapper();
75 #endif
76 ~OOdbcLibWrapper();
78 oslGenericFunction loadSymbol(const sal_Char* _pFunctionName);
80 /// load the lib
81 sal_Bool load(const sal_Char* _pLibPath);
82 /// unload the lib
83 void unload();
86 //=========================================================================
87 //= OOdbcEnumeration
88 //=========================================================================
89 struct OdbcTypesImpl;
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;
99 #endif
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
104 public:
105 OOdbcEnumeration();
106 ~OOdbcEnumeration();
108 void getDatasourceNames(StringBag& _rNames);
110 protected:
111 /// ensure that an ODBC environment is allocated
112 sal_Bool allocEnv();
113 /// free any allocated ODBC environment
114 void freeEnv();
117 //=========================================================================
118 //= OOdbcManagement
119 //=========================================================================
120 #ifdef HAVE_ODBC_ADMINISTRATION
121 class ProcessTerminationWait;
122 class OOdbcManagement
124 ::std::auto_ptr< ProcessTerminationWait > m_pProcessWait;
125 Link m_aAsyncFinishCallback;
127 public:
128 OOdbcManagement( const Link& _rAsyncFinishCallback );
129 ~OOdbcManagement();
131 bool manageDataSources_async();
132 bool isRunning() const;
134 #endif
136 //.........................................................................
137 } // namespace dbaui
138 //.........................................................................
140 #endif // _DBAUI_ODBC_CONFIG_HXX_
142 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */