2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
5 // Licensed under the Apache License, Version 2.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://www.apache.org/licenses/LICENSE-2.0/
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 <FGrpFloatPoint3.h>
34 #include <FGrpFloatVector4.h>
35 #include <FBaseSysLog.h>
36 #include "FUi_VariantImpl.h"
38 using namespace Tizen::Base;
39 using namespace Tizen::Ui;
40 using namespace Tizen::Graphics;
42 namespace Tizen { namespace Ui
45 _VariantImpl::_VariantImpl(void)
47 , __type(VARIANT_TYPE_NONE)
49 __data.valueLongLong = 0;
52 _VariantImpl::~_VariantImpl(void)
58 _VariantImpl::AddRef(void)
64 _VariantImpl::Release(void)
77 _VariantImpl::Clear(void)
79 if (unlikely(__type == VARIANT_TYPE_NONE))
81 __data.valueDouble = 0;
87 case VARIANT_TYPE_NONE:
90 case VARIANT_TYPE_INT:
94 case VARIANT_TYPE_UINT:
98 case VARIANT_TYPE_BOOL:
99 __data.valueBool = false;
102 case VARIANT_TYPE_FLOAT:
103 __data.valueFloat = 0;
106 case VARIANT_TYPE_DOUBLE:
107 __data.valueDouble = 0;
110 case VARIANT_TYPE_LONG:
111 __data.valueLong = 0;
114 case VARIANT_TYPE_ULONG:
115 __data.valueULong = 0;
118 case VARIANT_TYPE_LONGLONG:
119 __data.valueLongLong = 0;
122 case VARIANT_TYPE_ULONGLONG:
123 __data.valueULongLong = 0;
126 case VARIANT_TYPE_STRING:
128 delete __data.pString;
129 __data.pString = null;
133 case VARIANT_TYPE_DATETIME:
135 delete __data.pDateTime;
136 __data.pDateTime = null;
140 case VARIANT_TYPE_COLOR:
142 delete __data.pColor;
143 __data.pColor = null;
147 case VARIANT_TYPE_POINT:
149 delete __data.pPoint;
150 __data.pPoint = null;
154 case VARIANT_TYPE_FLOAT_POINT:
156 delete __data.pFloatPoint;
157 __data.pFloatPoint = null;
161 case VARIANT_TYPE_RECTANGLE:
168 case VARIANT_TYPE_FLOAT_RECTANGLE:
170 delete __data.pRectf;
171 __data.pRectf = null;
175 case VARIANT_TYPE_DIMENSION:
177 delete __data.pDimension;
178 __data.pDimension = null;
182 case VARIANT_TYPE_FLOAT_DIMENSION:
184 delete __data.pFloatDimension;
185 __data.pFloatDimension = null;
189 case VARIANT_TYPE_FLOAT_MATRIX4:
191 delete __data.pFloatMatrix4;
192 __data.pFloatMatrix4 = null;
196 case VARIANT_TYPE_FLOAT_POINT3:
198 delete __data.pFloatPoint3;
199 __data.pFloatPoint3 = null;
203 case VARIANT_TYPE_FLOAT_VECTOR4:
205 delete __data.pFloatVector4;
206 __data.pFloatVector4 = null;
214 __type = VARIANT_TYPE_NONE;
218 _VariantImpl::Copy(const Variant& rhs)
220 const _VariantImpl* pImpl = rhs.GetVariantImpl();
221 __type = pImpl->__type;
223 switch (pImpl->__type)
225 case VARIANT_TYPE_NONE:
228 case VARIANT_TYPE_INT:
229 __data.valueInt = pImpl->__data.valueInt;
232 case VARIANT_TYPE_UINT:
233 __data.valueUInt = pImpl->__data.valueUInt;
236 case VARIANT_TYPE_BOOL:
237 __data.valueBool = pImpl->__data.valueBool;
240 case VARIANT_TYPE_FLOAT:
241 __data.valueFloat = pImpl->__data.valueFloat;
244 case VARIANT_TYPE_DOUBLE:
245 __data.valueDouble = pImpl->__data.valueDouble;
248 case VARIANT_TYPE_LONG:
249 __data.valueLong = pImpl->__data.valueLong;
252 case VARIANT_TYPE_ULONG:
253 __data.valueULong = pImpl->__data.valueULong;
256 case VARIANT_TYPE_LONGLONG:
257 __data.valueLongLong = pImpl->__data.valueLongLong;
260 case VARIANT_TYPE_ULONGLONG:
261 __data.valueULongLong = pImpl->__data.valueULongLong;
264 case VARIANT_TYPE_STRING:
265 __data.pString = new (std::nothrow) String(*pImpl->__data.pString);
268 case VARIANT_TYPE_DATETIME:
269 __data.pDateTime = new (std::nothrow) DateTime(*pImpl->__data.pDateTime);
272 case VARIANT_TYPE_COLOR:
273 __data.pColor = new (std::nothrow) Color(*pImpl->__data.pColor);
276 case VARIANT_TYPE_POINT:
277 __data.pPoint = new (std::nothrow) Point(*pImpl->__data.pPoint);
280 case VARIANT_TYPE_FLOAT_POINT:
281 __data.pFloatPoint = new (std::nothrow) FloatPoint(*pImpl->__data.pFloatPoint);
284 case VARIANT_TYPE_RECTANGLE:
285 __data.pRect = new (std::nothrow) Rectangle(*pImpl->__data.pRect);
288 case VARIANT_TYPE_FLOAT_RECTANGLE:
289 __data.pRectf = new (std::nothrow) FloatRectangle(*pImpl->__data.pRectf);
292 case VARIANT_TYPE_DIMENSION:
293 __data.pDimension = new (std::nothrow) Dimension(*pImpl->__data.pDimension);
296 case VARIANT_TYPE_FLOAT_DIMENSION:
297 __data.pFloatDimension = new (std::nothrow) FloatDimension(*pImpl->__data.pFloatDimension);
300 case VARIANT_TYPE_FLOAT_MATRIX4:
301 __data.pFloatMatrix4 = new (std::nothrow) FloatMatrix4(*pImpl->__data.pFloatMatrix4);
304 case VARIANT_TYPE_FLOAT_POINT3:
305 __data.pFloatPoint3 = new (std::nothrow) FloatPoint3(*pImpl->__data.pFloatPoint3);
308 case VARIANT_TYPE_FLOAT_VECTOR4:
309 __data.pFloatVector4 = new (std::nothrow) FloatVector4(*pImpl->__data.pFloatVector4);
318 _VariantImpl::SetVariantType(VariantType type)
327 _VariantImpl::IsSameType(VariantType type) const
329 return(__type == type);