summaryrefslogtreecommitdiff
path: root/connectivity/source/inc/ado/Aolewrap.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'connectivity/source/inc/ado/Aolewrap.hxx')
-rw-r--r--connectivity/source/inc/ado/Aolewrap.hxx247
1 files changed, 0 insertions, 247 deletions
diff --git a/connectivity/source/inc/ado/Aolewrap.hxx b/connectivity/source/inc/ado/Aolewrap.hxx
deleted file mode 100644
index dbfb0a7145..0000000000
--- a/connectivity/source/inc/ado/Aolewrap.hxx
+++ /dev/null
@@ -1,247 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-#ifndef _CONNECTIVITY_ADO_AOLEWRAP_HXX_
-#define _CONNECTIVITY_ADO_AOLEWRAP_HXX_
-
-#include <osl/diagnose.h>
-#include <osl/thread.h>
-#include <map>
-#include <vector>
-#include "connectivity/StdTypeDefs.hxx"
-
-namespace rtl
-{
- class OUString;
-}
-namespace connectivity
-{
- namespace ado
- {
- class OLEVariant;
- class WpBase
- {
- protected:
- IDispatch* pIUnknown;
-
- void setIDispatch(IDispatch* _pIUnknown);
- public:
- WpBase();
- WpBase(IDispatch* pInt);
- //inline
- WpBase& operator=(const WpBase& rhs);
- WpBase& operator=(IDispatch* rhs);
- WpBase(const WpBase& aWrapper);
- virtual ~WpBase();
- void clear();
-
-
- sal_Bool IsValid() const;
- operator IDispatch*();
-
- };
- //////////////////////////////////////////////////////////////////////////
- //
- // Template-Klasse WpOLEBase<class T>
- // ==================================
- //
- // Objekte dieser Klasse haelt einen Zeiger auf ein Interface vom Typ T.
- // Es gibt Konstruktoren und Zuweisungsoperator die sicherstellen, dass
- // AddRef() und Release() entsprechend den COM-Konventionen gerufen werden.
- // Ein Objekt kann auch keinen Zeiger halten (Nullzeiger), dann ergibt
- // der Aufruf von IsValid() FALSE.
- //
- // Um effizientes pass-by-value machen zu koennen, ist diese (ebenso wie die
- // abgeleiteten Klassen) eine ganz schmale Wrapper-Klasse unter Vermeidung
- // virtueller Methoden und mit Inlining.
-
- //------------------------------------------------------------------------
- template<class T> class WpOLEBase : public WpBase
- {
- protected:
- T* pInterface;
-
- public:
- WpOLEBase(T* pInt = NULL) : WpBase(pInt),pInterface(pInt){}
-
-
- //inline
- WpOLEBase<T>& operator=(const WpOLEBase<T>& rhs)
- {
- WpBase::operator=(rhs);
- pInterface = rhs.pInterface;
- return *this;
- };
-
- WpOLEBase<T>& operator=(T* rhs)
- {
- WpBase::operator=(rhs);
- pInterface = rhs.pInterface;
- return *this;
- }
-
- WpOLEBase(const WpOLEBase<T>& aWrapper)
- {
- operator=(aWrapper);
- }
-
- virtual ~WpOLEBase()
- {
- }
-
- operator T*() const { return static_cast<T*>(pInterface); }
- void setWithOutAddRef(T* _pInterface)
- {
- pInterface = _pInterface;
- WpBase::setIDispatch(_pInterface);
- }
- };
-
-
- //////////////////////////////////////////////////////////////////////////
- //
- // Template-Klasse WpOLECollection<class Ts, class T, class WrapT>
- // ===============================================================
- //
- // Diese Klasse, welche sich von WpOLEBase<Ts> ableitet, abstrahiert die
- // den DAO-Collections gemeinsamen Eigenschaften:
- //
- // Sie werden ueber ein Interface Ts (etwa: DAOFields) angesprochen
- // und koennen ueber get_Item (hier:GetItem) Items des Typs T (genauer:
- // mit Interface T, etwa DAOField) herausgeben.
- //
- // Diese Wrapperklasse gibt aber nicht ein Interface T heraus,
- // sondern ein Objekt der Klasse WrapT. Dieses muss eine Konstruktion
- // durch T zulassen, vorzugsweise ist es von WpOLEBase<T> abgeleitet.
- //
-
- //------------------------------------------------------------------------
- template<class Ts, class T, class WrapT> class WpOLECollection : public WpOLEBase<Ts>
- {
- public:
- using WpOLEBase<Ts>::pInterface;
- using WpOLEBase<Ts>::IsValid;
- // Konstruktoren, operator=
- // diese rufen nur die Oberklasse
- WpOLECollection(Ts* pInt=NULL):WpOLEBase<Ts>(pInt){}
- WpOLECollection(const WpOLECollection& rhs){operator=(rhs);}
- inline WpOLECollection& operator=(const WpOLECollection& rhs)
- {WpOLEBase<Ts>::operator=(rhs); return *this;};
-
- //////////////////////////////////////////////////////////////////////
-
- inline void Refresh(){pInterface->Refresh();}
-
- inline sal_Int32 GetItemCount() const
- {
- sal_Int32 nCount = 0;
- return pInterface ? (SUCCEEDED(pInterface->get_Count(&nCount)) ? nCount : sal_Int32(0)) : sal_Int32(0);
- }
-
- inline WrapT GetItem(sal_Int32 index) const
- {
- OSL_ENSURE(index >= 0 && index<GetItemCount(),"Wrong index for field!");
- T* pT = NULL;
- WrapT aRet(NULL);
- if(SUCCEEDED(pInterface->get_Item(OLEVariant(index), &pT)))
- aRet.setWithOutAddRef(pT);
- return aRet;
- }
-
- inline WrapT GetItem(const OLEVariant& index) const
- {
- T* pT = NULL;
- WrapT aRet(NULL);
- if(SUCCEEDED(pInterface->get_Item(index, &pT)))
- aRet.setWithOutAddRef(pT);
- return aRet;
- }
-
- inline WrapT GetItem(const ::rtl::OUString& sStr) const
- {
- WrapT aRet(NULL);
- T* pT = NULL;
- if (FAILED(pInterface->get_Item(OLEVariant(sStr), &pT)))
- {
-#if OSL_DEBUG_LEVEL > 0
- ::rtl::OString sTemp("Unknown Item: ");
- sTemp += ::rtl::OString(sStr.getStr(),sStr.getLength(),osl_getThreadTextEncoding());
- OSL_FAIL(sTemp);
-#endif
- }
- else
- aRet.setWithOutAddRef(pT);
- return aRet;
- }
- inline void fillElementNames(TStringVector& _rVector)
- {
- if(IsValid())
- {
- Refresh();
- sal_Int32 nCount = GetItemCount();
- _rVector.reserve(nCount);
- for(sal_Int32 i=0;i< nCount;++i)
- {
- WrapT aElement = GetItem(i);
- if(aElement.IsValid())
- _rVector.push_back(aElement.get_Name());
- }
- }
- }
- };
-
- template<class Ts, class T, class WrapT> class WpOLEAppendCollection:
- public WpOLECollection<Ts,T,WrapT>
- {
-
- public:
- // Konstruktoren, operator=
- // diese rufen nur die Oberklasse
- using WpOLEBase<Ts>::pInterface;
- WpOLEAppendCollection(Ts* pInt=NULL):WpOLECollection<Ts,T,WrapT>(pInt){}
- WpOLEAppendCollection(const WpOLEAppendCollection& rhs){ operator=(rhs); }
- inline WpOLEAppendCollection& operator=(const WpOLEAppendCollection& rhs)
- {WpOLEBase<Ts>::operator=(rhs); return *this;};
- //////////////////////////////////////////////////////////////////////
-
- inline sal_Bool Append(const WrapT& aWrapT)
- {
- return SUCCEEDED(pInterface->Append(OLEVariant((T*)aWrapT)));
- };
-
- inline sal_Bool Delete(const ::rtl::OUString& sName)
- {
- return SUCCEEDED(pInterface->Delete(OLEVariant(sName)));
- };
-
-
- };
- }
-}
-#endif // _CONNECTIVITY_ADO_AOLEWRAP_HXX_
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */