#ifndef __TOKENCONTAINER_H #define __TOKENCONTAINER_H #include #include #include #include #include #include #include #include using namespace std; namespace skindesignerapi { class cTokenContainer { private: int numIntTokens; int numStringTokens; vector numLoopTokens; //token containers char **stringTokens; int *intTokens; vector loopTokens; //mapping id --> name string *stNames; string *itNames; vector< vector > ltNames; //mapping name --> id map stringTokenNames; map intTokenNames; vector< map > loopTokenNames; //get token name from id string GetStringTokenName(int id); string GetIntTokenName(int id); string GetLoopTokenName(int loop, int id); //looptoken management string LoopName(string &loopToken); map loopNameMapping; void DeleteLoopTokenContainer(void); public: cTokenContainer(void); cTokenContainer(const cTokenContainer &other); ~cTokenContainer(void); void CreateContainers(void); void CreateLoopTokenContainer(vector *loopInfo); void DefineStringToken (string name, int index); void DefineIntToken (string name, int index); void DefineLoopToken (string name, int index); int GetNumDefinedIntTokens(void); int LoopIndex (string name, bool createNew = false); int StringTokenIndex (string name); int IntTokenIndex (string name); int LoopTokenIndex (string name); void AddIntToken (int index, int value); void AddStringToken (int index, const char *value); void AddLoopToken (int loopIndex, int row, int index, const char *value); char *StringToken (int index) { return stringTokens[index]; }; int IntToken (int index) { return intTokens[index]; }; char *LoopToken (int i, int j, int k) { return loopTokens[i][j][k]; }; int NumLoops (int loopIndex); void SetTokens (cTokenContainer *other); void Clear(void); void Debug(void); }; } #endif //__TOKENCONTAINER_H