1 #ifndef COIN_SCXMLEVALUATOR_H
2 #define COIN_SCXMLEVALUATOR_H
36 #include <Inventor/scxml/ScXMLObject.h>
37 #include <Inventor/tools/SbLazyPimplPtr.h>
57 virtual ScXMLDataObj * evaluate(
const char * expression)
const = 0;
59 virtual SbBool setAtLocation(
const char * location,
ScXMLDataObj * obj) = 0;
60 virtual ScXMLDataObj * locate(
const char * location)
const = 0;
62 virtual void clearTemporaryVariables(
void);
70 SbLazyPimplPtr<PImpl> pimpl;
88 ScXMLObject * getContainer(
void)
const {
return this->container; }
99 static void initClass(
void);
100 static void cleanClass(
void);
103 virtual void convertToString(
SbString & str)
const = 0;
109 SCXML_OBJECT_HEADER(ScXMLStringDataObj)
112 static
void initClass(
void);
113 static
void cleanClass(
void);
117 ScXMLStringDataObj(
void);
118 ScXMLStringDataObj(const
char * value);
119 virtual ~ScXMLStringDataObj(
void);
121 void setString(const
char * value);
122 const
char * getString(
void)
const {
return this->value; }
125 virtual void convertToString(
SbString & str)
const;
134 SCXML_OBJECT_HEADER(ScXMLRealDataObj)
137 static
void initClass(
void);
138 static
void cleanClass(
void);
142 ScXMLRealDataObj(
void);
143 ScXMLRealDataObj(
double value);
144 virtual ~ScXMLRealDataObj(
void);
146 void setReal(
double value);
147 double getReal(
void)
const {
return this->value; }
150 virtual void convertToString(
SbString & str)
const;
159 SCXML_OBJECT_HEADER(ScXMLBoolDataObj)
162 static
void initClass(
void);
163 static
void cleanClass(
void);
167 ScXMLBoolDataObj(
void);
168 ScXMLBoolDataObj(SbBool value);
169 virtual ~ScXMLBoolDataObj(
void);
171 void setBool(SbBool value);
172 SbBool getBool(
void)
const {
return this->value; }
175 virtual void convertToString(
SbString & str)
const;
184 SCXML_OBJECT_HEADER(ScXMLSbDataObj)
187 static
void initClass(
void);
188 static
void cleanClass(
void);
192 ScXMLSbDataObj(
void);
193 ScXMLSbDataObj(const
char * value);
194 virtual ~ScXMLSbDataObj(
void);
196 void setSbValue(const
char * value);
197 const
char * getSbValue(
void)
const {
return this->value; }
200 virtual void convertToString(
SbString & str)
const;
208 class COIN_DLL_API ScXMLXMLDataObj :
public ScXMLDataObj {
209 SCXML_OBJECT_HEADER(ScXMLXMLDataObj)
212 static
void initClass(
void);
213 static
void cleanClass(
void);
215 ScXMLXMLDataObj(
void);
216 virtual ~ScXMLXMLDataObj(
void);
223 class COIN_DLL_API ScXMLExprDataObj : public
ScXMLDataObj {
224 SCXML_OBJECT_ABSTRACT_HEADER(ScXMLExprDataObj)
225 typedef ScXMLDataObj inherited;
227 static
void initClass(
void);
228 static
void cleanClass(
void);
230 ScXMLExprDataObj(
void);
231 virtual ~ScXMLExprDataObj(
void);
236 virtual SbBool evaluateNow(
ScXMLStateMachine * sm, ScXMLDataObj *& pointer) const = 0;
239 ScXMLDataObj * result;
246 typedef ScXMLExprDataObj inherited;
248 static void initClass(
void);
249 static void cleanClass(
void);
251 static ScXMLDataObj * createFor(
const char * reference);
257 void setReference(
const char * reference);
258 const char * getReference(
void)
const {
return this->reference; }
260 virtual SbBool evaluateNow(
ScXMLStateMachine * sm, ScXMLDataObj *& pointer)
const;
273 typedef ScXMLExprDataObj inherited;
275 static void initClass(
void);
276 static void cleanClass(
void);
278 static ScXMLDataObj * createFor(ScXMLDataObj * lhs, ScXMLDataObj * rhs);
284 void setLHS(ScXMLDataObj * lhs);
285 const ScXMLDataObj * getLHS(
void)
const {
return this->lhs; }
286 void setRHS(ScXMLDataObj * rhs);
287 const ScXMLDataObj * getRHS(
void)
const {
return this->rhs; }
290 virtual SbBool evaluateNow(
ScXMLStateMachine * sm, ScXMLDataObj *& pointer)
const;
293 ScXMLDataObj * lhs, * rhs;
298 class COIN_DLL_API ScXMLOrOpExprDataObj :
public ScXMLExprDataObj {
299 SCXML_OBJECT_HEADER(ScXMLOrOpExprDataObj)
300 typedef ScXMLExprDataObj inherited;
302 static
void initClass(
void);
303 static
void cleanClass(
void);
305 static ScXMLDataObj * createFor(ScXMLDataObj * lhs, ScXMLDataObj * rhs);
307 ScXMLOrOpExprDataObj(
void);
308 ScXMLOrOpExprDataObj(ScXMLDataObj * lhs, ScXMLDataObj * rhs);
309 virtual ~ScXMLOrOpExprDataObj(
void);
311 void setLHS(ScXMLDataObj * lhs);
312 const ScXMLDataObj * getLHS(
void)
const {
return this->lhs; }
313 void setRHS(ScXMLDataObj * rhs);
314 const ScXMLDataObj * getRHS(
void)
const {
return this->rhs; }
317 virtual SbBool evaluateNow(
ScXMLStateMachine * sm, ScXMLDataObj *& pointer)
const;
320 ScXMLDataObj * lhs, * rhs;
325 class COIN_DLL_API ScXMLNotOpExprDataObj :
public ScXMLExprDataObj {
326 SCXML_OBJECT_HEADER(ScXMLNotOpExprDataObj)
327 typedef ScXMLExprDataObj inherited;
329 static
void initClass(
void);
330 static
void cleanClass(
void);
332 static ScXMLDataObj * createFor(ScXMLDataObj * rhs);
334 ScXMLNotOpExprDataObj(
void);
335 ScXMLNotOpExprDataObj(ScXMLDataObj * rhs);
336 virtual ~ScXMLNotOpExprDataObj(
void);
338 void setRHS(ScXMLDataObj * rhs);
339 const ScXMLDataObj * getRHS(
void)
const {
return this->rhs; }
342 virtual SbBool evaluateNow(
ScXMLStateMachine * sm, ScXMLDataObj *& pointer)
const;
350 class COIN_DLL_API ScXMLEqualsOpExprDataObj :
public ScXMLExprDataObj {
351 SCXML_OBJECT_HEADER(ScXMLEqualsOpExprDataObj)
352 typedef ScXMLExprDataObj inherited;
354 static
void initClass(
void);
355 static
void cleanClass(
void);
357 static ScXMLDataObj * createFor(ScXMLDataObj * lhs, ScXMLDataObj * rhs);
359 ScXMLEqualsOpExprDataObj(
void);
360 ScXMLEqualsOpExprDataObj(ScXMLDataObj * lhs, ScXMLDataObj * rhs);
361 virtual ~ScXMLEqualsOpExprDataObj(
void);
363 void setLHS(ScXMLDataObj * lhs);
364 const ScXMLDataObj * getLHS(
void)
const {
return this->lhs; }
365 void setRHS(ScXMLDataObj * rhs);
366 const ScXMLDataObj * getRHS(
void)
const {
return this->rhs; }
369 virtual SbBool evaluateNow(
ScXMLStateMachine * sm, ScXMLDataObj *& pointer)
const;
372 ScXMLDataObj * lhs, * rhs;
380 class COIN_DLL_API ScXMLAddOpExprDataObj :
public ScXMLExprDataObj {
381 SCXML_OBJECT_HEADER(ScXMLAddOpExprDataObj)
382 typedef ScXMLExprDataObj inherited;
384 static
void initClass(
void);
385 static
void cleanClass(
void);
387 static ScXMLDataObj * createFor(ScXMLDataObj * lhs, ScXMLDataObj * rhs);
389 ScXMLAddOpExprDataObj(
void);
390 ScXMLAddOpExprDataObj(ScXMLDataObj * lhs, ScXMLDataObj * rhs);
391 virtual ~ScXMLAddOpExprDataObj(
void);
393 void setLHS(ScXMLDataObj * lhs);
394 const ScXMLDataObj * getLHS(
void)
const {
return this->lhs; }
395 void setRHS(ScXMLDataObj * rhs);
396 const ScXMLDataObj * getRHS(
void)
const {
return this->rhs; }
399 virtual SbBool evaluateNow(
ScXMLStateMachine * sm, ScXMLDataObj *& pointer)
const;
402 ScXMLDataObj * lhs, * rhs;
407 class COIN_DLL_API ScXMLSubtractOpExprDataObj :
public ScXMLExprDataObj {
408 SCXML_OBJECT_HEADER(ScXMLSubtractOpExprDataObj)
409 typedef ScXMLExprDataObj inherited;
411 static
void initClass(
void);
412 static
void cleanClass(
void);
414 static ScXMLDataObj * createFor(ScXMLDataObj * lhs, ScXMLDataObj * rhs);
416 ScXMLSubtractOpExprDataObj(
void);
417 ScXMLSubtractOpExprDataObj(ScXMLDataObj * lhs, ScXMLDataObj * rhs);
418 virtual ~ScXMLSubtractOpExprDataObj(
void);
420 void setLHS(ScXMLDataObj * lhs);
421 const ScXMLDataObj * getLHS(
void)
const {
return this->lhs; }
422 void setRHS(ScXMLDataObj * rhs);
423 const ScXMLDataObj * getRHS(
void)
const {
return this->rhs; }
426 virtual SbBool evaluateNow(
ScXMLStateMachine * sm, ScXMLDataObj *& pointer)
const;
429 ScXMLDataObj * lhs, * rhs;
434 class COIN_DLL_API ScXMLMultiplyOpExprDataObj :
public ScXMLExprDataObj {
435 SCXML_OBJECT_HEADER(ScXMLMultiplyOpExprDataObj)
436 typedef ScXMLExprDataObj inherited;
438 static
void initClass(
void);
439 static
void cleanClass(
void);
441 static ScXMLDataObj * createFor(ScXMLDataObj * lhs, ScXMLDataObj * rhs);
443 ScXMLMultiplyOpExprDataObj(
void);
444 ScXMLMultiplyOpExprDataObj(ScXMLDataObj * lhs, ScXMLDataObj * rhs);
445 virtual ~ScXMLMultiplyOpExprDataObj(
void);
447 void setLHS(ScXMLDataObj * lhs);
448 const ScXMLDataObj * getLHS(
void)
const {
return this->lhs; }
449 void setRHS(ScXMLDataObj * rhs);
450 const ScXMLDataObj * getRHS(
void)
const {
return this->rhs; }
453 virtual SbBool evaluateNow(
ScXMLStateMachine * sm, ScXMLDataObj *& pointer)
const;
456 ScXMLDataObj * lhs, * rhs;
461 class COIN_DLL_API ScXMLDivideOpExprDataObj :
public ScXMLExprDataObj {
462 SCXML_OBJECT_HEADER(ScXMLDivideOpExprDataObj)
463 typedef ScXMLExprDataObj inherited;
465 static
void initClass(
void);
466 static
void cleanClass(
void);
468 static ScXMLDataObj * createFor(ScXMLDataObj * lhs, ScXMLDataObj * rhs);
470 ScXMLDivideOpExprDataObj(
void);
471 ScXMLDivideOpExprDataObj(ScXMLDataObj * lhs, ScXMLDataObj * rhs);
472 virtual ~ScXMLDivideOpExprDataObj(
void);
474 void setLHS(ScXMLDataObj * lhs);
475 const ScXMLDataObj * getLHS(
void)
const {
return this->lhs; }
476 void setRHS(ScXMLDataObj * rhs);
477 const ScXMLDataObj * getRHS(
void)
const {
return this->rhs; }
480 virtual SbBool evaluateNow(
ScXMLStateMachine * sm, ScXMLDataObj *& pointer)
const;
483 ScXMLDataObj * lhs, * rhs;
488 class COIN_DLL_API ScXMLNegateOpExprDataObj :
public ScXMLExprDataObj {
489 SCXML_OBJECT_HEADER(ScXMLNegateOpExprDataObj)
490 typedef ScXMLExprDataObj inherited;
492 static
void initClass(
void);
493 static
void cleanClass(
void);
495 static ScXMLDataObj * createFor(ScXMLDataObj * rhs);
497 ScXMLNegateOpExprDataObj(
void);
498 ScXMLNegateOpExprDataObj(ScXMLDataObj * rhs);
499 virtual ~ScXMLNegateOpExprDataObj(
void);
501 void setRHS(ScXMLDataObj * rhs);
502 const ScXMLDataObj * getRHS(
void)
const {
return this->rhs; }
505 virtual SbBool evaluateNow(
ScXMLStateMachine * sm, ScXMLDataObj *& pointer)
const;
513 #endif // !COIN_SCXMLEVALUATOR_H