1 humberto 1.1 #include "CQLFactory.h"
2
3 PEGASUS_NAMESPACE_BEGIN
|
4 humberto 1.1.2.11
5 struct CQLObjectPtr {
6 void* _ptr;
7 }_CQLObjectPtr;
8
9 #define PEGASUS_ARRAY_T CQLObjectPtr
10 #include <Pegasus/Common/ArrayImpl.h>
11 #undef PEGASUS_ARRAY_T
12
|
13 humberto 1.1.2.9 /*
14 CQLFactory::CQLFactory(){
|
15 humberto 1.1
|
16 humberto 1.1.2.9 }
|
17 humberto 1.1.2.13 */
|
18 humberto 1.1.2.9 CQLFactory::~CQLFactory(){
|
19 humberto 1.1.2.13 cleanup();
20 }
21
22 void CQLFactory::cleanup(){
23 cleanupArray(_makeObjectIdentifiers, Identifier);
24 cleanupArray(_makeObjectChainedIdentifiers, ChainedIdentifier);
25 cleanupArray(_makeObjectValues, Value);
26 cleanupArray(_makeObjectFunctions, Function);
27 cleanupArray(_makeObjectFactors, Factor);
28 cleanupArray(_makeObjectTerms, Term);
29 cleanupArray(_makeObjectExpressions, Expression);
30 cleanupArray(_makeObjectSimplePredicates, SimplePredicate);
31 cleanupArray(_makeObjectPredicates, Predicate);
32 cleanupArray(_getObjectIdentifiers, Identifier);
33 cleanupArray(_getObjectChainedIdentifiers, ChainedIdentifier);
34 cleanupArray(_getObjectValues, Value);
35 cleanupArray(_getObjectFunctions, Function);
36 cleanupArray(_getObjectFactors, Factor);
37 cleanupArray(_getObjectTerms, Term);
38 cleanupArray(_getObjectExpressions, Expression);
39 cleanupArray(_getObjectSimplePredicates, SimplePredicate);
40 humberto 1.1.2.13 cleanupArray(_getObjectPredicates, Predicate);
41 }
42 void CQLFactory::cleanupArray(Array<CQLObjectPtr>& arr, FactoryType type){
43 for(Uint32 i=0;i < arr.size(); i++){
44 if(arr[i]._ptr){
45 switch(type){
46 case Predicate:
47 delete (CQLPredicate*)(arr[i]._ptr);
48 break;
49 case SimplePredicate:
50 delete (CQLSimplePredicate*)(arr[i]._ptr);
51 break;
52 case Expression:
53 delete (CQLExpression*)(arr[i]._ptr);
54 break;
55 case Term:
56 delete (CQLTerm*)(arr[i]._ptr);
57 break;
58 case Factor:
59 delete (CQLFactor*)(arr[i]._ptr);
60 break;
61 humberto 1.1.2.13 case Function:
62 delete (CQLFunction*)(arr[i]._ptr);
63 break;
64 case Value:
65 delete (CQLValue*)(arr[i]._ptr);
66 break;
67 case ChainedIdentifier:
68 delete (CQLChainedIdentifier*)(arr[i]._ptr);
69 break;
70 case Identifier:
71 delete (CQLIdentifier*)(arr[i]._ptr);
72 break;
73 }
74 }
|
75 humberto 1.1.2.9 }
76 }
|
77 humberto 1.1.2.13
|
78 humberto 1.1 void* CQLFactory::makeObject(CQLIdentifier* obj, FactoryType target){
|
79 humberto 1.1.2.9 printf("CQLFactory::makeObject(identifier)\n");
|
80 humberto 1.1.2.11 _CQLObjectPtr._ptr = new CQLChainedIdentifier(*obj);
81 _makeObjectChainedIdentifiers.append(_CQLObjectPtr);
|
82 humberto 1.1 switch(target){
83 case ChainedIdentifier:
|
84 humberto 1.1.2.11 return _makeObjectChainedIdentifiers[_makeObjectChainedIdentifiers.size()-1]._ptr;
|
85 humberto 1.1 break;
86 case Identifier:
87 return NULL;
88 break;
89 default:
|
90 humberto 1.1.2.11 return makeObject((CQLChainedIdentifier*)(_CQLObjectPtr._ptr), target);
|
91 humberto 1.1 break;
92 }
93 }
94 void* CQLFactory::makeObject(CQLChainedIdentifier* obj, FactoryType target){
|
95 humberto 1.1.2.9 printf("CQLFactory::makeObject(chainedidentifier)\n");
|
96 humberto 1.1.2.11 _CQLObjectPtr._ptr = new CQLValue(*obj);
97 _makeObjectValues.append(_CQLObjectPtr);
|
98 humberto 1.1 switch(target){
99 case Value:
|
100 humberto 1.1.2.11 return _makeObjectValues[_makeObjectValues.size()-1]._ptr;
|
101 humberto 1.1 break;
102 case ChainedIdentifier:
103 return NULL;
104 break;
105 default:
|
106 humberto 1.1.2.11 return makeObject((CQLValue*)(_CQLObjectPtr._ptr), target);
|
107 humberto 1.1 break;
108 }
109
110 }
111 void* CQLFactory::makeObject(CQLValue* obj, FactoryType target){
|
112 humberto 1.1.2.9 printf("CQLFactory::makeObject(value)\n");
|
113 humberto 1.1.2.11 _CQLObjectPtr._ptr = new CQLFactor(*obj);
114 _makeObjectFactors.append(_CQLObjectPtr);
|
115 humberto 1.1 switch(target){
116 case Factor:
|
117 humberto 1.1.2.11 return _makeObjectFactors[_makeObjectFactors.size()-1]._ptr;
|
118 humberto 1.1 break;
119 case Value:
120 return NULL;
121 break;
122 default:
|
123 humberto 1.1.2.11 return makeObject((CQLFactor*)(_CQLObjectPtr._ptr), target);
|
124 humberto 1.1 break;
125 }
126
127 }
|
128 humberto 1.1.2.7 void* CQLFactory::makeObject(CQLFunction* obj, FactoryType target){
|
129 humberto 1.1.2.9 printf("CQLFactory::makeObject(function)\n");
|
130 humberto 1.1.2.11 _CQLObjectPtr._ptr = new CQLFactor(*obj);
131 _makeObjectFactors.append(_CQLObjectPtr);
|
132 humberto 1.1.2.7 switch(target){
133 case Factor:
|
134 humberto 1.1.2.11 return _makeObjectFactors[_makeObjectFactors.size()-1]._ptr;
|
135 humberto 1.1.2.7 break;
136 default:
|
137 humberto 1.1.2.11 return makeObject((CQLFactor*)(_CQLObjectPtr._ptr), target);
|
138 humberto 1.1.2.7 break;
139 }
140 }
|
141 humberto 1.1 void* CQLFactory::makeObject(CQLFactor* obj, FactoryType target){
|
142 humberto 1.1.2.9 printf("CQLFactory::makeObject(factor)\n");
|
143 humberto 1.1.2.11 _CQLObjectPtr._ptr = new CQLTerm(*obj);
144 _makeObjectTerms.append(_CQLObjectPtr);
|
145 humberto 1.1 switch(target){
146 case Term:
|
147 humberto 1.1.2.11 return _makeObjectTerms[_makeObjectTerms.size()-1]._ptr;
|
148 humberto 1.1 break;
149 case Factor:
150 return NULL;
151 break;
152 default:
|
153 humberto 1.1.2.11 return makeObject((CQLTerm*)(_CQLObjectPtr._ptr), target);
|
154 humberto 1.1 break;
155 }
156
157 }
158 void* CQLFactory::makeObject(CQLTerm* obj, FactoryType target){
|
159 humberto 1.1.2.9 printf("CQLFactory::makeObject(term)\n");
|
160 humberto 1.1.2.11 _CQLObjectPtr._ptr = new CQLExpression(*obj);
161 _makeObjectExpressions.append(_CQLObjectPtr);
|
162 humberto 1.1 switch(target){
163 case Expression:
|
164 humberto 1.1.2.11 return _makeObjectExpressions[_makeObjectExpressions.size()-1]._ptr;
|
165 humberto 1.1 break;
166 case Term:
167 return NULL;
168 break;
169 default:
|
170 humberto 1.1.2.11 return makeObject((CQLExpression*)(_CQLObjectPtr._ptr), target);
|
171 humberto 1.1 break;
172 }
173
174 }
175 void* CQLFactory::makeObject(CQLExpression* obj, FactoryType target){
|
176 humberto 1.1.2.9 printf("CQLFactory::makeObject(expression)\n");
|
177 humberto 1.1.2.11 _CQLObjectPtr._ptr = new CQLSimplePredicate(*obj);
178 _makeObjectSimplePredicates.append(_CQLObjectPtr);
|
179 humberto 1.1 switch(target){
180 case SimplePredicate:
|
181 humberto 1.1.2.11 return _makeObjectSimplePredicates[_makeObjectSimplePredicates.size()-1]._ptr;
|
182 humberto 1.1 break;
183 case Expression:
184 return NULL;
185 break;
186 default:
|
187 humberto 1.1.2.11 return makeObject((CQLSimplePredicate*)(_CQLObjectPtr._ptr), target);
|
188 humberto 1.1 break;
189 }
190
191 }
192 void* CQLFactory::makeObject(CQLSimplePredicate* obj, FactoryType target){
|
193 humberto 1.1.2.9 printf("CQLFactory::makeObject(simplepredicate)\n");
|
194 humberto 1.1.2.11 _CQLObjectPtr._ptr = new CQLPredicate(*obj);
195 _makeObjectPredicates.append(_CQLObjectPtr);
|
196 humberto 1.1 switch(target){
197 case Predicate:
|
198 humberto 1.1.2.11 return _makeObjectPredicates[_makeObjectPredicates.size()-1]._ptr;
|
199 humberto 1.1 break;
200 default:
201 return NULL;
202 break;
203 }
|
204 humberto 1.1.2.2 }
|
205 humberto 1.1
|
206 humberto 1.1.2.3 void* CQLFactory::getObject(void* inObject, FactoryType inObjectType, FactoryType targetType){
207 switch(inObjectType){
208 case Predicate:
209 return getObject(((CQLPredicate*)inObject),targetType);
210 case SimplePredicate:
211 return getObject(((CQLSimplePredicate*)inObject),targetType);
212 case Expression:
213 return getObject(((CQLExpression*)inObject),targetType);
214 case Term:
215 return getObject(((CQLTerm*)inObject),targetType);
216 case Factor:
217 return getObject(((CQLFactor*)inObject),targetType);
218 case Function:
219 return NULL;
220 case Value:
|
221 humberto 1.1.2.6 return getObject(((CQLValue*)inObject),targetType);
222 case ChainedIdentifier:
223 return getObject(((CQLChainedIdentifier*)inObject),targetType);
|
224 humberto 1.1.2.3 default:
225 return NULL;
226 }
227 }
228
|
229 humberto 1.1.2.6 void* CQLFactory::getObject(CQLChainedIdentifier* obj, FactoryType target){
|
230 humberto 1.1.2.10 printf("CQLFactory::getObject(CQLChainedIdentifier* obj)\n");
|
231 humberto 1.1.2.6 switch(target){
232 case Identifier:
233 if(obj->_rep->_subIdentifiers.size() > 0){
|
234 humberto 1.1.2.11 _CQLObjectPtr._ptr = new CQLIdentifier(obj->_rep->_subIdentifiers[0]);
235 _getObjectIdentifiers.append(_CQLObjectPtr);
236 return _getObjectIdentifiers[_getObjectIdentifiers.size()-1]._ptr;
|
237 humberto 1.1.2.6 }
238 return NULL;
239 default:
240 return NULL;
241 }
242 }
243
244 void* CQLFactory::getObject(CQLValue* obj, FactoryType target){
|
245 humberto 1.1.2.10 printf("CQLFactory::getObject(CQLValue* obj)\n");
|
246 humberto 1.1.2.6 switch(target){
247 case ChainedIdentifier:
|
248 humberto 1.1.2.11 _CQLObjectPtr._ptr = new CQLChainedIdentifier(obj->_CQLChainId);
249 _getObjectChainedIdentifiers.append(_CQLObjectPtr);
250 return _getObjectChainedIdentifiers[_getObjectChainedIdentifiers.size()-1]._ptr;
|
251 humberto 1.1.2.10 case Identifier:
252 return getObject(&(obj->_CQLChainId),target);
|
253 humberto 1.1.2.6 default:
254 return NULL;
255 break;
256 }
257 }
258
|
259 humberto 1.1.2.3 void* CQLFactory::getObject(CQLFactor* obj, FactoryType target){
|
260 humberto 1.1.2.10 printf("CQLFactory::getObject(CQLFactor* obj)\n");
|
261 humberto 1.1.2.3 switch(target){
262 case Function:
|
263 humberto 1.1.2.11 _CQLObjectPtr._ptr = new CQLFunction(obj->_rep->_CQLFunct);
264 _getObjectFunctions.append(_CQLObjectPtr);
265 return _getObjectFunctions[_getObjectFunctions.size()-1]._ptr;
|
266 humberto 1.1.2.10 case Value:
|
267 humberto 1.1.2.11 _CQLObjectPtr._ptr = new CQLValue(obj->_rep->_CQLVal);
268 _getObjectValues.append(_CQLObjectPtr);
269 return _getObjectValues[_getObjectValues.size()-1]._ptr;
|
270 humberto 1.1.2.10 case ChainedIdentifier:
271 case Identifier:
272 return getObject(&(obj->_rep->_CQLVal),target);
|
273 humberto 1.1.2.3 default:
274 return NULL;
275 break;
276 }
277 }
278
279
280 void* CQLFactory::getObject(CQLTerm* obj, FactoryType target){
|
281 humberto 1.1.2.10 printf("CQLFactory::getObject(CQLTerm* obj)\n");
|
282 humberto 1.1.2.3 switch(target){
283 case Factor:
|
284 humberto 1.1.2.11 _CQLObjectPtr._ptr = new CQLFactor(obj->getFactors()[0]);
285 _getObjectFactors.append(_CQLObjectPtr);
286 return _getObjectFactors[_getObjectFactors.size()-1]._ptr;
|
287 humberto 1.1.2.10 case Function:
288 case Value:
289 case ChainedIdentifier:
290 case Identifier:
|
291 humberto 1.1.2.9 return getObject(&(obj->getFactors()[0]),target);
|
292 humberto 1.1.2.3 default:
293 return NULL;
294 break;
295 }
296 }
297
298 void* CQLFactory::getObject(CQLExpression* obj, FactoryType target){
|
299 humberto 1.1.2.10 printf("CQLFactory::getObject(CQLExpression* obj)\n");
|
300 humberto 1.1.2.3 switch(target){
301 case Term:
|
302 humberto 1.1.2.11 _CQLObjectPtr._ptr = new CQLTerm(obj->getTerms()[0]);
303 _getObjectTerms.append(_CQLObjectPtr);
304 return _getObjectTerms[_getObjectTerms.size()-1]._ptr;
|
305 humberto 1.1.2.3 case Factor:
306 case Function:
|
307 humberto 1.1.2.10 case Value:
308 case ChainedIdentifier:
309 case Identifier:
|
310 humberto 1.1.2.9 return getObject(&(obj->getTerms()[0]), target);
|
311 humberto 1.1.2.3 default:
312 return NULL;
313 break;
314 }
315 }
316
317 void* CQLFactory::getObject(CQLSimplePredicate* obj, FactoryType target){
|
318 humberto 1.1.2.10 printf("CQLFactory::getObject(CQLSimplePredicate* obj)\n");
|
319 humberto 1.1.2.3 switch(target){
320 case Expression:
|
321 humberto 1.1.2.11 _CQLObjectPtr._ptr = new CQLExpression(obj->_rep->_leftSide);
322 _getObjectExpressions.append(_CQLObjectPtr);
323 return _getObjectExpressions[_getObjectExpressions.size()-1]._ptr;
|
324 humberto 1.1.2.3 case Term:
325 case Factor:
326 case Function:
|
327 humberto 1.1.2.10 case Value:
328 case ChainedIdentifier:
329 case Identifier:
|
330 humberto 1.1.2.9 return getObject(&(obj->_rep->_leftSide), target);
|
331 humberto 1.1.2.3 default:
332 return NULL;
333 break;
334 }
335 }
336
337 void* CQLFactory::getObject(CQLPredicate* obj, FactoryType target){
|
338 humberto 1.1.2.10 printf("CQLFactory::getObject(CQLPredicate* obj)\n");
|
339 humberto 1.1.2.3 switch(target){
340 case SimplePredicate:
|
341 humberto 1.1.2.11 _CQLObjectPtr._ptr = new CQLSimplePredicate(obj->_rep->_simplePredicate);
342 _getObjectSimplePredicates.append(_CQLObjectPtr);
343 return _getObjectSimplePredicates[_getObjectSimplePredicates.size()-1]._ptr;
|
344 humberto 1.1.2.3 case Expression:
345 case Term:
346 case Factor:
347 case Function:
|
348 humberto 1.1.2.10 case Value:
349 case ChainedIdentifier:
350 case Identifier:
|
351 humberto 1.1.2.9 return getObject(&(obj->_rep->_simplePredicate), target);
|
352 humberto 1.1.2.3 default:
353 return NULL;
354 break;
355 }
356 }
357
|
358 humberto 1.1.2.5 void CQLFactory::setObject(CQLPredicate* predicate, void* obj, FactoryType objType){
359 switch(objType){
360 case SimplePredicate:
361 predicate->_rep->_simplePredicate = *((CQLSimplePredicate*)obj);
362 break;
363 case Expression:
364 predicate->_rep->_simplePredicate._rep->_leftSide = *((CQLExpression*)obj);
365 break;
366 case Term:
367 predicate->_rep->_simplePredicate._rep->_leftSide._rep->_CQLTerms[0] =
368 *((CQLTerm*)obj);
369 break;
370 case Factor:
371 predicate->_rep->_simplePredicate._rep->_leftSide._rep->_CQLTerms[0]._rep->_Factors[0] =
372 *((CQLFactor*)obj);
373 break;
374 case Function:
375 predicate->_rep->_simplePredicate._rep->_leftSide._rep->_CQLTerms[0]._rep->_Factors[0]._rep->_CQLFunct =
376 *((CQLFunction*)obj);
377 break;
378 case Value:
379 humberto 1.1.2.5 predicate->_rep->_simplePredicate._rep->_leftSide._rep->_CQLTerms[0]._rep->_Factors[0]._rep->_CQLVal =
380 *((CQLValue*)obj);
381 break;
|
382 humberto 1.1.2.10 case ChainedIdentifier:
383 predicate->_rep->_simplePredicate._rep->_leftSide._rep->_CQLTerms[0]._rep->_Factors[0]._rep->_CQLVal._CQLChainId = *((CQLChainedIdentifier*)obj);
384 break;
385 case Identifier:
386 break;
|
387 humberto 1.1.2.5 default:
388 break;
389 }
390 }
|
391 humberto 1.1 PEGASUS_NAMESPACE_END
|