#ifndef __IVNode_H__ #define __IVNode_H__ #include #include enum IVType { IV_INVALID = -1, IV_STRING = 0, IV_INT = 1, IV_REAL = 2 }; class IVField { public: IVField(); ~IVField(); char *name; void *value; IVType typ; int cnt; IVField *next; }; class __declspec(dllexport) IVNode { public: IVNode(); IVNode(const char *s); ~IVNode(); void print(int ident=0); void attachNode(IVNode *child); void addField(const char *name, char *value); void addField(const char *name, void *value, int cnt, IVType typ); IVNode *getParent() { return parent; } char *getName() { return name; } IVNode *getNodeRecursive(const char *name); IVNode *getNextChildNode(bool reset = false); IVField *getField(const char *name); void *getField(const char *name, IVType *typ, int *cnt); private: char *name; IVField *fields; IVNode *parent; IVNode *children; IVNode *next; IVNode *actual; }; #endif