2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
5 // Licensed under the Flora License, Version 1.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
9 // http://floralicense.org/license/
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an AS IS BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
18 * @file FUi_VariantImpl.cpp
19 * @brief This is the implementation file for _VariantImpl class.
22 #include <FBaseDateTime.h>
23 #include <FBaseString.h>
24 #include <FBaseStringComparer.h>
25 #include <FGrpFloatMatrix4.h>
26 #include <FGrpRectangle.h>
27 #include <FGrpDimension.h>
28 #include <FGrpPoint.h>
29 #include <FGrpColor.h>
30 #include <FGrpFloatPoint.h>
31 #include <FGrpFloatRectangle.h>
32 #include <FGrpFloatDimension.h>
33 #include <FBaseSysLog.h>
34 #include "FUi_VariantImpl.h"
36 using namespace Tizen::Base;
37 using namespace Tizen::Ui;
38 using namespace Tizen::Graphics;
40 namespace Tizen { namespace Ui
43 _VariantImpl::_VariantImpl(void)
45 , __type(VARIANT_TYPE_NONE)
47 __data.valueLongLong = 0;
50 _VariantImpl::~_VariantImpl(void)
56 _VariantImpl::AddRef(void)
62 _VariantImpl::Release(void)
75 _VariantImpl::Clear(void)
77 if (unlikely(__type == VARIANT_TYPE_NONE))
79 __data.valueDouble = 0;
85 case VARIANT_TYPE_NONE:
88 case VARIANT_TYPE_INT:
92 case VARIANT_TYPE_UINT:
96 case VARIANT_TYPE_BOOL:
97 __data.valueBool = false;
100 case VARIANT_TYPE_FLOAT:
101 __data.valueFloat = 0;
104 case VARIANT_TYPE_DOUBLE:
105 __data.valueDouble = 0;
108 case VARIANT_TYPE_LONG:
109 __data.valueLong = 0;
112 case VARIANT_TYPE_ULONG:
113 __data.valueULong = 0;
116 case VARIANT_TYPE_LONGLONG:
117 __data.valueLongLong = 0;
120 case VARIANT_TYPE_ULONGLONG:
121 __data.valueULongLong = 0;
124 case VARIANT_TYPE_STRING:
126 delete __data.pString;
127 __data.pString = null;
131 case VARIANT_TYPE_DATETIME:
133 delete __data.pDateTime;
134 __data.pDateTime = null;
138 case VARIANT_TYPE_COLOR:
140 delete __data.pColor;
141 __data.pColor = null;
145 case VARIANT_TYPE_POINT:
147 delete __data.pPoint;
148 __data.pPoint = null;
152 case VARIANT_TYPE_FLOAT_POINT:
154 delete __data.pFloatPoint;
155 __data.pFloatPoint = null;
159 case VARIANT_TYPE_RECTANGLE:
166 case VARIANT_TYPE_FLOAT_RECTANGLE:
168 delete __data.pRectf;
169 __data.pRectf = null;
173 case VARIANT_TYPE_DIMENSION:
175 delete __data.pDimension;
176 __data.pDimension = null;
180 case VARIANT_TYPE_FLOAT_DIMENSION:
182 delete __data.pFloatDimension;
183 __data.pFloatDimension = null;
187 case VARIANT_TYPE_FLOAT_MATRIX4:
189 delete __data.pFloatMatrix4;
190 __data.pFloatMatrix4 = null;
198 __type = VARIANT_TYPE_NONE;
202 _VariantImpl::Copy(const Variant& rhs)
204 const _VariantImpl* pImpl = rhs.GetVariantImpl();
205 __type = pImpl->__type;
207 switch (pImpl->__type)
209 case VARIANT_TYPE_NONE:
212 case VARIANT_TYPE_INT:
213 __data.valueInt = pImpl->__data.valueInt;
216 case VARIANT_TYPE_UINT:
217 __data.valueUInt = pImpl->__data.valueUInt;
220 case VARIANT_TYPE_BOOL:
221 __data.valueBool = pImpl->__data.valueBool;
224 case VARIANT_TYPE_FLOAT:
225 __data.valueFloat = pImpl->__data.valueFloat;
228 case VARIANT_TYPE_DOUBLE:
229 __data.valueDouble = pImpl->__data.valueDouble;
232 case VARIANT_TYPE_LONG:
233 __data.valueLong = pImpl->__data.valueLong;
236 case VARIANT_TYPE_ULONG:
237 __data.valueULong = pImpl->__data.valueULong;
240 case VARIANT_TYPE_LONGLONG:
241 __data.valueLongLong = pImpl->__data.valueLongLong;
244 case VARIANT_TYPE_ULONGLONG:
245 __data.valueULongLong = pImpl->__data.valueULongLong;
248 case VARIANT_TYPE_STRING:
249 __data.pString = new (std::nothrow) String(*pImpl->__data.pString);
252 case VARIANT_TYPE_DATETIME:
253 __data.pDateTime = new (std::nothrow) DateTime(*pImpl->__data.pDateTime);
256 case VARIANT_TYPE_COLOR:
257 __data.pColor = new (std::nothrow) Color(*pImpl->__data.pColor);
260 case VARIANT_TYPE_POINT:
261 __data.pPoint = new (std::nothrow) Point(*pImpl->__data.pPoint);
264 case VARIANT_TYPE_FLOAT_POINT:
265 __data.pFloatPoint = new (std::nothrow) FloatPoint(*pImpl->__data.pFloatPoint);
268 case VARIANT_TYPE_RECTANGLE:
269 __data.pRect = new (std::nothrow) Rectangle(*pImpl->__data.pRect);
272 case VARIANT_TYPE_FLOAT_RECTANGLE:
273 __data.pRectf = new (std::nothrow) FloatRectangle(*pImpl->__data.pRectf);
276 case VARIANT_TYPE_DIMENSION:
277 __data.pDimension = new (std::nothrow) Dimension(*pImpl->__data.pDimension);
280 case VARIANT_TYPE_FLOAT_DIMENSION:
281 __data.pFloatDimension = new (std::nothrow) FloatDimension(*pImpl->__data.pFloatDimension);
284 case VARIANT_TYPE_FLOAT_MATRIX4:
285 __data.pFloatMatrix4 = new (std::nothrow) FloatMatrix4(*pImpl->__data.pFloatMatrix4);
294 _VariantImpl::SetVariantType(VariantType type)
303 _VariantImpl::IsSameType(VariantType type) const
305 return(__type == type);