1 humberto 1.1 #include "CQLFactory.h"
2
3 PEGASUS_NAMESPACE_BEGIN
4
5 void* CQLFactory::makeObject(CQLIdentifier* obj, FactoryType target){
6 switch(target){
7 case ChainedIdentifier:
8 return new CQLChainedIdentifier(*obj);
9 break;
10 case Identifier:
11 return NULL;
12 break;
13 default:
14 return makeObject(new CQLChainedIdentifier(*obj), target);
15 break;
16 }
17 }
18 void* CQLFactory::makeObject(CQLChainedIdentifier* obj, FactoryType target){
19 switch(target){
20 case Value:
21 return new CQLValue(*obj);
22 humberto 1.1 break;
23 case ChainedIdentifier:
24 return NULL;
25 break;
26 default:
27 return makeObject(new CQLValue(*obj), target);
28 break;
29 }
30
31 }
32 void* CQLFactory::makeObject(CQLValue* obj, FactoryType target){
33 switch(target){
34 case Factor:
35 return new CQLFactor(*obj);
36 break;
37 case Value:
38 return NULL;
39 break;
40 default:
41 return makeObject(new CQLFactor(*obj), target);
42 break;
43 humberto 1.1 }
44
45 }
46 void* CQLFactory::makeObject(CQLFactor* obj, FactoryType target){
47 switch(target){
48 case Term:
49 return new CQLTerm(*obj);
50 break;
51 case Factor:
52 return NULL;
53 break;
54 default:
55 return makeObject(new CQLTerm(*obj), target);
56 break;
57 }
58
59 }
60 void* CQLFactory::makeObject(CQLTerm* obj, FactoryType target){
61 switch(target){
62 case Expression:
63 return new CQLExpression(*obj);
64 humberto 1.1 break;
65 case Term:
66 return NULL;
67 break;
68 default:
69 return makeObject(new CQLExpression(*obj), target);
70 break;
71 }
72
73 }
74 void* CQLFactory::makeObject(CQLExpression* obj, FactoryType target){
75 switch(target){
76 case SimplePredicate:
77 return new CQLSimplePredicate(*obj);
78 break;
79 case Expression:
80 return NULL;
81 break;
82 default:
83 return makeObject(new CQLSimplePredicate(*obj), target);
84 break;
85 humberto 1.1 }
86
87 }
88 void* CQLFactory::makeObject(CQLSimplePredicate* obj, FactoryType target){
89 switch(target){
90 case Predicate:
91 return new CQLPredicate(*obj);
92 break;
93 default:
94 return NULL;
95 break;
96 }
|
97 humberto 1.1.2.2 }
98
99 CQLValue CQLFactory::getValue(CQLFactor* obj){
100 if(obj->isSimpleValue()){
101 return obj->getValue();
102 }
103 return CQLValue();
104 }
105
106 CQLValue CQLFactory::getValue(CQLTerm* obj){
107 if(obj->isSimpleValue()){
108 _factor = obj->getFactors()[0];
109 return getValue(&_factor);
110 }
111 return CQLValue();
112 }
113
114 CQLValue CQLFactory::getValue(CQLExpression* obj){
115 if(obj->isSimpleValue()){
116 _term = (obj->getTerms())[0];
117 return getValue(&_term);
118 humberto 1.1.2.2 }
119 return CQLValue();
120 }
|
121 humberto 1.1
|
122 humberto 1.1.2.2 CQLValue CQLFactory::getValue(CQLSimplePredicate* obj){
123 _expression = obj->getLeftExpression();
124 return getValue(&_expression);
|
125 humberto 1.1 }
126
|
127 humberto 1.1.2.2 CQLValue CQLFactory::getValue(CQLPredicate* obj){
128 if(obj->isSimple()){
129 _simplePredicate = obj->getSimplePredicate();
130 return getValue(&_simplePredicate);
131 }
132 return CQLValue();
133 }
|
134 humberto 1.1.2.5
|
135 humberto 1.1.2.3 void* CQLFactory::getObject(void* inObject, FactoryType inObjectType, FactoryType targetType){
136 switch(inObjectType){
137 case Predicate:
138 return getObject(((CQLPredicate*)inObject),targetType);
139 case SimplePredicate:
140 return getObject(((CQLSimplePredicate*)inObject),targetType);
141 case Expression:
142 return getObject(((CQLExpression*)inObject),targetType);
143 case Term:
144 return getObject(((CQLTerm*)inObject),targetType);
145 case Factor:
146 return getObject(((CQLFactor*)inObject),targetType);
147 case Function:
148 return NULL;
149 case Value:
|
150 humberto 1.1.2.6 return getObject(((CQLValue*)inObject),targetType);
151 case ChainedIdentifier:
152 return getObject(((CQLChainedIdentifier*)inObject),targetType);
|
153 humberto 1.1.2.3 default:
154 return NULL;
155 }
156 }
157
|
158 humberto 1.1.2.6 void* CQLFactory::getObject(CQLChainedIdentifier* obj, FactoryType target){
159 switch(target){
160 case Identifier:
161 if(obj->_rep->_subIdentifiers.size() > 0){
162 _identifier = obj->_rep->_subIdentifiers[0];
163 return &_identifier;
164 }
165 return NULL;
166 default:
167 return NULL;
168 }
169 }
170
171 void* CQLFactory::getObject(CQLValue* obj, FactoryType target){
172 switch(target){
173 case ChainedIdentifier:
174 _chainedIdentifier = obj->getChainedIdentifier();
175 return &_chainedIdentifier;
176 default:
177 return NULL;
178 break;
179 humberto 1.1.2.6 }
180 }
181
|
182 humberto 1.1.2.3 void* CQLFactory::getObject(CQLFactor* obj, FactoryType target){
183 switch(target){
184 case Function:
|
185 humberto 1.1.2.5 _function = obj->getCQLFunction();
186 return &_function;
|
187 humberto 1.1.2.3 default:
188 return NULL;
189 break;
190 }
191 }
192
193
194 void* CQLFactory::getObject(CQLTerm* obj, FactoryType target){
195 switch(target){
196 case Factor:
|
197 humberto 1.1.2.5 _factor = obj->getFactors()[0];
198 return &_factor;
|
199 humberto 1.1.2.3 case Function:
|
200 humberto 1.1.2.5 _factor = obj->getFactors()[0];
201 return getObject(&_factor,target);
|
202 humberto 1.1.2.3 default:
203 return NULL;
204 break;
205 }
206 }
207
208 void* CQLFactory::getObject(CQLExpression* obj, FactoryType target){
209 switch(target){
210 case Term:
|
211 humberto 1.1.2.5 _term = obj->getTerms()[0];
212 return &_term;
|
213 humberto 1.1.2.3 case Factor:
214 case Function:
|
215 humberto 1.1.2.5 _term = obj->getTerms()[0];
216 return getObject(&_term, target);
|
217 humberto 1.1.2.3 default:
218 return NULL;
219 break;
220 }
221 }
222
223 void* CQLFactory::getObject(CQLSimplePredicate* obj, FactoryType target){
224 switch(target){
225 case Expression:
|
226 humberto 1.1.2.5 _expression = obj->getLeftExpression();
|
227 humberto 1.1.2.3 case Term:
228 case Factor:
229 case Function:
|
230 humberto 1.1.2.5 _expression = obj->getLeftExpression();
231 return getObject(&_expression, target);
|
232 humberto 1.1.2.3 default:
233 return NULL;
234 break;
235 }
236 }
237
238 void* CQLFactory::getObject(CQLPredicate* obj, FactoryType target){
239 switch(target){
240 case SimplePredicate:
|
241 humberto 1.1.2.5 _simplePredicate = obj->getSimplePredicate();
242 return &_simplePredicate;
|
243 humberto 1.1.2.3 break;
244 case Expression:
245 case Term:
246 case Factor:
247 case Function:
|
248 humberto 1.1.2.5 _simplePredicate = obj->getSimplePredicate();
249 return getObject(&_simplePredicate, target);
|
250 humberto 1.1.2.3 default:
251 return NULL;
252 break;
253 }
254 }
255
|
256 humberto 1.1.2.5 void CQLFactory::setObject(CQLPredicate* predicate, void* obj, FactoryType objType){
257 switch(objType){
258 case SimplePredicate:
259 predicate->_rep->_simplePredicate = *((CQLSimplePredicate*)obj);
260 break;
261 case Expression:
262 predicate->_rep->_simplePredicate._rep->_leftSide = *((CQLExpression*)obj);
263 break;
264 case Term:
265 predicate->_rep->_simplePredicate._rep->_leftSide._rep->_CQLTerms[0] =
266 *((CQLTerm*)obj);
267 break;
268 case Factor:
269 predicate->_rep->_simplePredicate._rep->_leftSide._rep->_CQLTerms[0]._rep->_Factors[0] =
270 *((CQLFactor*)obj);
271 break;
272 case Function:
273 predicate->_rep->_simplePredicate._rep->_leftSide._rep->_CQLTerms[0]._rep->_Factors[0]._rep->_CQLFunct =
274 *((CQLFunction*)obj);
275 break;
276 case Value:
277 humberto 1.1.2.5 predicate->_rep->_simplePredicate._rep->_leftSide._rep->_CQLTerms[0]._rep->_Factors[0]._rep->_CQLVal =
278 *((CQLValue*)obj);
279 break;
280 default:
281 break;
282 }
283 }
284
|
285 humberto 1.1 PEGASUS_NAMESPACE_END
|