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 return NULL;
151 default:
152 return NULL;
153 }
154 }
155
156 humberto 1.1.2.3 void* CQLFactory::getObject(CQLFactor* obj, FactoryType target){
157 switch(target){
158 case Function:
|
159 humberto 1.1.2.5 _function = obj->getCQLFunction();
160 return &_function;
|
161 humberto 1.1.2.3 default:
162 return NULL;
163 break;
164 }
165 }
166
167
168 void* CQLFactory::getObject(CQLTerm* obj, FactoryType target){
169 switch(target){
170 case Factor:
|
171 humberto 1.1.2.5 _factor = obj->getFactors()[0];
172 return &_factor;
|
173 humberto 1.1.2.3 case Function:
|
174 humberto 1.1.2.5 _factor = obj->getFactors()[0];
175 return getObject(&_factor,target);
|
176 humberto 1.1.2.3 default:
177 return NULL;
178 break;
179 }
180 }
181
182 void* CQLFactory::getObject(CQLExpression* obj, FactoryType target){
183 switch(target){
184 case Term:
|
185 humberto 1.1.2.5 _term = obj->getTerms()[0];
186 return &_term;
|
187 humberto 1.1.2.3 case Factor:
188 case Function:
|
189 humberto 1.1.2.5 _term = obj->getTerms()[0];
190 return getObject(&_term, target);
|
191 humberto 1.1.2.3 default:
192 return NULL;
193 break;
194 }
195 }
196
197 void* CQLFactory::getObject(CQLSimplePredicate* obj, FactoryType target){
198 switch(target){
199 case Expression:
|
200 humberto 1.1.2.5 _expression = obj->getLeftExpression();
|
201 humberto 1.1.2.3 case Term:
202 case Factor:
203 case Function:
|
204 humberto 1.1.2.5 _expression = obj->getLeftExpression();
205 return getObject(&_expression, target);
|
206 humberto 1.1.2.3 default:
207 return NULL;
208 break;
209 }
210 }
211
212 void* CQLFactory::getObject(CQLPredicate* obj, FactoryType target){
213 switch(target){
214 case SimplePredicate:
|
215 humberto 1.1.2.5 _simplePredicate = obj->getSimplePredicate();
216 return &_simplePredicate;
|
217 humberto 1.1.2.3 break;
218 case Expression:
219 case Term:
220 case Factor:
221 case Function:
|
222 humberto 1.1.2.5 _simplePredicate = obj->getSimplePredicate();
223 return getObject(&_simplePredicate, target);
|
224 humberto 1.1.2.3 default:
225 return NULL;
226 break;
227 }
228 }
229
|
230 humberto 1.1.2.5 void CQLFactory::setObject(CQLPredicate* predicate, void* obj, FactoryType objType){
231 switch(objType){
232 case SimplePredicate:
233 predicate->_rep->_simplePredicate = *((CQLSimplePredicate*)obj);
234 break;
235 case Expression:
236 predicate->_rep->_simplePredicate._rep->_leftSide = *((CQLExpression*)obj);
237 break;
238 case Term:
239 predicate->_rep->_simplePredicate._rep->_leftSide._rep->_CQLTerms[0] =
240 *((CQLTerm*)obj);
241 break;
242 case Factor:
243 predicate->_rep->_simplePredicate._rep->_leftSide._rep->_CQLTerms[0]._rep->_Factors[0] =
244 *((CQLFactor*)obj);
245 break;
246 case Function:
247 predicate->_rep->_simplePredicate._rep->_leftSide._rep->_CQLTerms[0]._rep->_Factors[0]._rep->_CQLFunct =
248 *((CQLFunction*)obj);
249 break;
250 case Value:
251 humberto 1.1.2.5 predicate->_rep->_simplePredicate._rep->_leftSide._rep->_CQLTerms[0]._rep->_Factors[0]._rep->_CQLVal =
252 *((CQLValue*)obj);
253 break;
254 default:
255 break;
256 }
257 }
258
|
259 humberto 1.1 PEGASUS_NAMESPACE_END
|