xref: /trunk/main/connectivity/source/inc/ado/Aolevariant.hxx (revision 1ecadb572e7010ff3b3382ad9bf179dbc6efadbb)
1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 #ifndef _CONNECTIVITY_ADO_AOLEVARIANT_HXX_
28 #define _CONNECTIVITY_ADO_AOLEVARIANT_HXX_
29 
30 #include <sal/types.h>
31 #ifdef __MINGW32__
32 #include <windows.h>
33 #endif
34 #include <rtl/ustring.hxx>
35 #include <com/sun/star/uno/Sequence.hxx>
36 
37 #include "ado_pre_sys_include.h"
38 #include <oaidl.h>
39 #include "ado_post_sys_include.h"
40 
41 namespace com
42 {
43     namespace sun
44     {
45         namespace star
46         {
47             namespace util
48             {
49                 struct Date;
50                 struct Time;
51                 struct DateTime;
52             }
53         }
54     }
55 }
56 namespace connectivity
57 {
58     namespace ado
59     {
60         class OLEString
61         {
62             BSTR m_sStr;
63         public:
64             OLEString();
65             OLEString(const BSTR& _sBStr);
66             OLEString(const ::rtl::OUString& _sBStr);
67             OLEString(const OLEString& _rRh)
68             {
69                 OLEString::operator=(_rRh);
70             }
71             ~OLEString();
72             OLEString& operator=(const ::rtl::OUString& _rSrc);
73             OLEString& operator=(const BSTR& _rSrc);
74             OLEString& operator=(const OLEString& _rSrc);
75             operator ::rtl::OUString() const;
76             operator BSTR() const;
77             BSTR* operator &();
78             sal_Int32 length() const;
79         };
80 
81         class OLEVariant    :   public ::tagVARIANT
82         {
83         public:
84             OLEVariant();
85             OLEVariant(const VARIANT& varSrc);
86             OLEVariant(const OLEVariant& varSrc)    ;
87             OLEVariant(sal_Bool x)  ;
88             OLEVariant(sal_Int8 n)  ;
89             OLEVariant(sal_Int16 n) ;
90             OLEVariant(sal_Int32 n) ;
91             OLEVariant(sal_Int64 x) ;
92 
93             OLEVariant(const rtl::OUString& us) ;
94             ~OLEVariant()                   ;
95             OLEVariant(const ::com::sun::star::util::Date& x );
96             OLEVariant(const ::com::sun::star::util::Time& x );
97             OLEVariant(const ::com::sun::star::util::DateTime& x );
98             OLEVariant(const float &x);
99             OLEVariant(const double &x);
100             OLEVariant(IDispatch* pDispInterface);
101             OLEVariant(const ::com::sun::star::uno::Sequence< sal_Int8 >& x);
102             OLEVariant& operator=(const OLEVariant& varSrc);
103             // Assign a const VARIANT& (::VariantCopy handles everything)
104             //
105             OLEVariant& operator=(const tagVARIANT& varSrc);
106             // Assign a const VARIANT* (::VariantCopy handles everything)
107             //
108             OLEVariant& operator=(const VARIANT* pSrc);
109             void setByte(sal_uInt8 n)               ;
110             void setInt16(sal_Int16 n)              ;
111             void setInt32(sal_Int32 n)              ;
112             void setFloat(float f)                  ;
113             void setDouble(double d)                ;
114             void setDate(DATE d)                    ;
115             void setChar(unsigned char a)           ;
116             void setCurrency(double aCur)           ;
117             void setBool(sal_Bool b)                ;
118             void setString(const rtl::OUString& us) ;
119             void setNoArg()                         ;
120 
121             void setIDispatch(IDispatch* pDispInterface);
122             void setNull()   ;
123             void setEmpty()  ;
124 
125             void setUI1SAFEARRAYPtr(SAFEARRAY* pSafeAr);
126             void setArray(SAFEARRAY* pSafeArray, VARTYPE vtType);
127             sal_Bool isNull() const  ;
128             sal_Bool isEmpty() const ;
129 
130             VARTYPE getType() const ;
131             void ChangeType(VARTYPE vartype, const OLEVariant* pSrc);
132 
133 
134             operator ::rtl::OUString() const;
135 
136             operator sal_Bool()     const { return getBool();   }
137             operator sal_Int8()     const { return getInt8();   }
138             operator sal_Int16()    const { return getInt16();  }
139             operator sal_Int32()    const { return getInt32();  }
140             operator float()        const { return getFloat();  }
141             operator double()       const { return getDouble(); }
142 
143             operator ::com::sun::star::uno::Sequence< sal_Int8 >() const;
144             operator ::com::sun::star::util::Date() const ;
145             operator ::com::sun::star::util::Time() const ;
146             operator ::com::sun::star::util::DateTime()const ;
147             ::rtl::OUString getString()     const;
148             sal_Bool        getBool()       const;
149             IUnknown*       getIUnknown()   const;
150             IDispatch*      getIDispatch()  const;
151             sal_uInt8       getByte()       const;
152             sal_Int16       getInt16()      const;
153             sal_Int8        getInt8()       const;
154             sal_Int32       getInt32()      const;
155             sal_uInt32      getUInt32()     const;
156             float           getFloat()      const;
157             double          getDouble()     const;
158             double          getDate()       const;
159             CY              getCurrency()   const;
160             SAFEARRAY*      getUI1SAFEARRAYPtr() const;
161             ::com::sun::star::uno::Any makeAny() const;
162 
163             static VARIANT_BOOL VariantBool(sal_Bool bEinBoolean);
164 
165         private:
166             void CHS();
167 
168             void set(double n);
169 
170         };
171     }
172 }
173 
174 #endif // _CONNECTIVITY_ADO_AOLEVARIANT_HXX_
175 
176