-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathSymbolDef.cs
85 lines (73 loc) · 2.49 KB
/
SymbolDef.cs
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.Diagnostics;
namespace spb2xml
{
[Serializable]
public class SymbolDef : DefinitionElement
{
private string mVersion;
public string version
{
get { return mVersion; }
set { mVersion = value; }
}
List<PropertyDef> properties = new List<PropertyDef>();
List<SetDef> sets = new List<SetDef>();
List<TypeDef> types = new List<TypeDef>();
public SymbolDef(string dirName, XmlNode node)
: base(node)
{
SymbolBank bank = SymbolBank.Instance;
foreach (XmlNode son in node.ChildNodes)
{
string sonName = son.Name;
if (sonName.Equals("SymbolInclude"))
{
string symbolFile = son.Attributes["filename"].Value;
bank.AddSymbolDefinitionFile(dirName + "\\" + symbolFile);
}
if (sonName.Equals("TypeDefs"))
{
// parse types
foreach (XmlNode typeNode in son.ChildNodes)
{
if (typeNode.Name.Equals("TypeDef"))
{
TypeDef type = new TypeDef(typeNode);
bank.AddType(type);
}
}
}
if (sonName.Equals("PropertyDefs"))
{
// parse properties
foreach (XmlNode propNode in son.ChildNodes)
{
if (propNode.Name.Equals("PropertyDef"))
{
PropertyDef prop = new PropertyDef(propNode);
prop.SymbolContext = this;
bank.AddProperty(prop);
}
}
}
if (sonName.Equals("SetDefs"))
{
// parse types
foreach (XmlNode setNode in son.ChildNodes)
{
if (setNode.Name.Equals("SetDef"))
{
SetDef set = new SetDef(setNode);
set.Parent = this;
bank.AddSet(set);
}
}
}
}
}
}
}