/* * $Id: function.h,v 1.9 2005/01/26 20:40:08 lordjaxom Exp $ */ #ifndef VDR_TEXT2SKIN_XML_FUNCTION_H #define VDR_TEXT2SKIN_XML_FUNCTION_H #include "xml/string.h" #include <string> #define STRING 0x01000000 #define NUMBER 0x02000000 #define INTERNAL 0x04000000 #define MAXPARAMETERS 512 class cxObject; class cxSkin; class cxFunction { public: enum eType { undefined_function, string = STRING, number = NUMBER, fun_not = INTERNAL + 1, fun_and = INTERNAL + 2, fun_or = INTERNAL + 3, fun_eq = INTERNAL + 4, fun_file = INTERNAL + 5, fun_trans = INTERNAL + 6, fun_plugin = INTERNAL + 7, fun_gt = INTERNAL + 8, fun_lt = INTERNAL + 9, fun_ge = INTERNAL + 10, fun_le = INTERNAL + 11, fun_ne = INTERNAL + 12, }; private: cxObject *mObject; cxSkin *mSkin; eType mType; cxString mString; int mNumber; cxFunction *mParams[MAXPARAMETERS]; uint mNumParams; protected: cxType FunFile (const cxType &Param) const; cxType FunPlugin(const cxType &Param) const; public: cxFunction(cxObject *Parent); cxFunction(const cxString &String); cxFunction(const cxFunction &Src); ~cxFunction(); bool Parse(const std::string &Text); cxType Evaluate(void) const; void SetListIndex(uint Index, int Tab); }; inline void cxFunction::SetListIndex(uint Index, int Tab) { mString.SetListIndex(Index, Tab); for (uint i = 0; i < mNumParams; ++i) mParams[i]->SetListIndex(Index, Tab); } #endif // VDR_TEXT2SKIN_XML_FUNCTION_H