xref: /AOO41X/main/connectivity/source/inc/ado/Aolevariant.hxx (revision caf5cd79edad04a48dcaf209068b3b89eae4622e)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 #ifndef _CONNECTIVITY_ADO_AOLEVARIANT_HXX_
24 #define _CONNECTIVITY_ADO_AOLEVARIANT_HXX_
25 
26 #include <sal/types.h>
27 #ifdef __MINGW32__
28 #include <windows.h>
29 #endif
30 #include <rtl/ustring.hxx>
31 #include <com/sun/star/uno/Sequence.hxx>
32 
33 #include "ado_pre_sys_include.h"
34 #include <oaidl.h>
35 #include "ado_post_sys_include.h"
36 
37 namespace com
38 {
39     namespace sun
40     {
41         namespace star
42         {
43             namespace util
44             {
45                 struct Date;
46                 struct Time;
47                 struct DateTime;
48             }
49         }
50     }
51 }
52 namespace connectivity
53 {
54     namespace ado
55     {
56         class OLEString
57         {
58             BSTR m_sStr;
59         public:
60             OLEString();
61             OLEString(const BSTR& _sBStr);
62             OLEString(const ::rtl::OUString& _sBStr);
OLEString(const OLEString & _rRh)63             OLEString(const OLEString& _rRh)
64             {
65                 OLEString::operator=(_rRh);
66             }
67             ~OLEString();
68             OLEString& operator=(const ::rtl::OUString& _rSrc);
69             OLEString& operator=(const BSTR& _rSrc);
70             OLEString& operator=(const OLEString& _rSrc);
71             operator ::rtl::OUString() const;
72             operator BSTR() const;
73             BSTR* operator &();
74             sal_Int32 length() const;
75         };
76 
77         class OLEVariant    :   public ::tagVARIANT
78         {
79         public:
80             OLEVariant();
81             OLEVariant(const VARIANT& varSrc);
82             OLEVariant(const OLEVariant& varSrc)    ;
83             OLEVariant(sal_Bool x)  ;
84             OLEVariant(sal_Int8 n)  ;
85             OLEVariant(sal_Int16 n) ;
86             OLEVariant(sal_Int32 n) ;
87             OLEVariant(sal_Int64 x) ;
88 
89             OLEVariant(const rtl::OUString& us) ;
90             ~OLEVariant()                   ;
91             OLEVariant(const ::com::sun::star::util::Date& x );
92             OLEVariant(const ::com::sun::star::util::Time& x );
93             OLEVariant(const ::com::sun::star::util::DateTime& x );
94             OLEVariant(const float &x);
95             OLEVariant(const double &x);
96             OLEVariant(IDispatch* pDispInterface);
97             OLEVariant(const ::com::sun::star::uno::Sequence< sal_Int8 >& x);
98             OLEVariant& operator=(const OLEVariant& varSrc);
99             // Assign a const VARIANT& (::VariantCopy handles everything)
100             //
101             OLEVariant& operator=(const tagVARIANT& varSrc);
102             // Assign a const VARIANT* (::VariantCopy handles everything)
103             //
104             OLEVariant& operator=(const VARIANT* pSrc);
105             void setByte(sal_uInt8 n)               ;
106             void setInt16(sal_Int16 n)              ;
107             void setInt32(sal_Int32 n)              ;
108             void setFloat(float f)                  ;
109             void setDouble(double d)                ;
110             void setDate(DATE d)                    ;
111             void setChar(unsigned char a)           ;
112             void setCurrency(double aCur)           ;
113             void setBool(sal_Bool b)                ;
114             void setString(const rtl::OUString& us) ;
115             void setNoArg()                         ;
116 
117             void setIDispatch(IDispatch* pDispInterface);
118             void setNull()   ;
119             void setEmpty()  ;
120 
121             void setUI1SAFEARRAYPtr(SAFEARRAY* pSafeAr);
122             void setArray(SAFEARRAY* pSafeArray, VARTYPE vtType);
123             sal_Bool isNull() const  ;
124             sal_Bool isEmpty() const ;
125 
126             VARTYPE getType() const ;
127             void ChangeType(VARTYPE vartype, const OLEVariant* pSrc);
128 
129 
130             operator ::rtl::OUString() const;
131 
operator sal_Bool() const132             operator sal_Bool()     const { return getBool();   }
operator sal_Int8() const133             operator sal_Int8()     const { return getInt8();   }
operator sal_Int16() const134             operator sal_Int16()    const { return getInt16();  }
operator sal_Int32() const135             operator sal_Int32()    const { return getInt32();  }
operator float() const136             operator float()        const { return getFloat();  }
operator double() const137             operator double()       const { return getDouble(); }
138 
139             operator ::com::sun::star::uno::Sequence< sal_Int8 >() const;
140             operator ::com::sun::star::util::Date() const ;
141             operator ::com::sun::star::util::Time() const ;
142             operator ::com::sun::star::util::DateTime()const ;
143             ::rtl::OUString getString()     const;
144             sal_Bool        getBool()       const;
145             IUnknown*       getIUnknown()   const;
146             IDispatch*      getIDispatch()  const;
147             sal_uInt8       getByte()       const;
148             sal_Int16       getInt16()      const;
149             sal_Int8        getInt8()       const;
150             sal_Int32       getInt32()      const;
151             sal_uInt32      getUInt32()     const;
152             float           getFloat()      const;
153             double          getDouble()     const;
154             double          getDate()       const;
155             CY              getCurrency()   const;
156             SAFEARRAY*      getUI1SAFEARRAYPtr() const;
157             ::com::sun::star::uno::Any makeAny() const;
158 
159             static VARIANT_BOOL VariantBool(sal_Bool bEinBoolean);
160 
161         private:
162             void CHS();
163 
164             void set(double n);
165 
166         };
167     }
168 }
169 
170 #endif // _CONNECTIVITY_ADO_AOLEVARIANT_HXX_
171 
172