(file) Return to CQLFactory.cpp CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / CQL

  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.14 		_CQLObjectPtr._ptr = new CQLChainedIdentifier(obj->_rep->_CQLChainId);
249 humberto 1.1.2.11 		_getObjectChainedIdentifiers.append(_CQLObjectPtr);
250                   		return _getObjectChainedIdentifiers[_getObjectChainedIdentifiers.size()-1]._ptr;
251 humberto 1.1.2.10 	  case Identifier:
252 humberto 1.1.2.14 		return getObject(&(obj->_rep->_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 humberto 1.1.2.14 		predicate->_rep->_simplePredicate._rep->_leftSide._rep->_CQLTerms[0]._rep->_Factors[0]._rep->_CQLVal._rep->_CQLChainId = *((CQLChainedIdentifier*)obj);
384 humberto 1.1.2.10 		break;
385                   	  case Identifier:
386                   		break;
387 humberto 1.1.2.5  	  default:
388                   		break;
389                   	}
390                   } 
391 humberto 1.1      PEGASUS_NAMESPACE_END

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2