00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __CEL_TOOLS_EXPRESSION__
00021 #define __CEL_TOOLS_EXPRESSION__
00022
00023 #include "cstypes.h"
00024 #include "csutil/scf.h"
00025 #include "csutil/stringarray.h"
00026
00027 #include "physicallayer/datatype.h"
00028
00029 class csVector2;
00030 class csVector3;
00031 class csColor;
00032 struct iCelParameterBlock;
00033
00037 struct iCelExpression : virtual public iBase
00038 {
00039 SCF_INTERFACE (iCelExpression, 0, 0, 1);
00040
00049 virtual bool Execute (iCelEntity* entity, celData& ret, iCelParameterBlock* params = 0) = 0;
00050
00055 virtual size_t FindLocalVariable (const char* name) const = 0;
00056
00060 virtual const csStringArray& GetLocalVariables () const = 0;
00061
00063 virtual void SetLocalVariable (size_t idx, const celData& value) = 0;
00065 virtual void SetLocalVariableLong (size_t idx, int32 value) = 0;
00067 virtual void SetLocalVariableULong (size_t idx, uint32 value) = 0;
00069 virtual void SetLocalVariableFloat (size_t idx, float value) = 0;
00071 virtual void SetLocalVariableBool (size_t idx, bool value) = 0;
00073 virtual void SetLocalVariableString (size_t idx, const char* value) = 0;
00075 virtual void SetLocalVariableVector2 (size_t idx, const csVector2& value) = 0;
00077 virtual void SetLocalVariableVector3 (size_t idx, const csVector3& value) = 0;
00079 virtual void SetLocalVariableColor (size_t idx, const csColor& value) = 0;
00080 };
00081
00082
00087 struct iCelExpressionParser : virtual public iBase
00088 {
00089 SCF_INTERFACE (iCelExpressionParser, 0, 0, 1);
00090
00095 virtual csPtr<iCelExpression> Parse (const char* string) = 0;
00096 };
00097
00098 #endif // __CEL_TOOLS_EXPRESSION__
00099