blob: a24d6eaa94479d9872ce5b4424e3f75c5218b7cb (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
#ifndef _QV_NODE_
#define _QV_NODE_
#include <QvString.h>
class QvChildList;
class QvDict;
class QvFieldData;
class QvInput;
class QvNodeList;
class QvState;
class QvNode {
public:
enum Stage {
FIRST_INSTANCE, // First real instance being constructed
PROTO_INSTANCE, // Prototype instance being constructed
OTHER_INSTANCE, // Subsequent instance being constructed
};
QvFieldData *fieldData;
QvChildList *children;
QvBool isBuiltIn;
QvName *objName;
QvNode();
virtual ~QvNode();
const QvName & getName() const;
void setName(const QvName &name);
static void init();
static QvBool read(QvInput *in, QvNode *&node);
virtual QvFieldData *getFieldData() = 0;
virtual void traverse(QvState *state) = 0;
protected:
virtual QvBool readInstance(QvInput *in);
private:
static QvDict *nameDict;
static void addName(QvNode *, const char *);
static void removeName(QvNode *, const char *);
static QvNode * readReference(QvInput *in);
static QvBool readNode(QvInput *in, QvName &className,QvNode *&node);
static QvBool readNodeInstance(QvInput *in, const QvName &className,
const QvName &refName, QvNode *&node);
static QvNode * createInstance(QvInput *in, const QvName &className);
static QvNode * createInstanceFromName(const QvName &className);
static void flushInput(QvInput *in);
};
#endif /* _QV_NODE_ */
|