public Def CreatePureDef(CBrace type, string name) { return new PureDef( type, InnerName(name) ); }
public Def CreateTypedef(CBrace type, string name) { return new Typedef( type, InnerName(name), TypedefArgs(type, name) ); }
public Def CreateMixedTypedef(CBrace type, string name) { return new MixedTypedef( type, MixedInnerName(type, name), TypedefArgs(type, name) ); }
private string TypedefArgs(CBrace type, string name) { if (type is CEnum || !IsFullCapital(name)) { return name; } else { return name + ", *P" + name; } }
private string MixedInnerName(CBrace type, string name) { if (type is CEnum) { return ""; } else { return InnerName(name); } }
public int AddUnnamed(CBrace type) { int curNum = ++_unnamedNum; AddGroup(_unnamed, type, "id", curNum); return curNum; }
public void AddNamed(CBrace type, string name) { AddGroup(_named, type, "name", name); }
private void AddGroup(XmlElement elem, CBrace type, string key, object val) { XmlElement group = MakeElem(type.Keyword); AddChild(elem, group); AddAttr(group, key, val); if (type is CEnum) { foreach (CEnum.Entry entry in ((CEnum)type).Entries) { AddChild(group, MakeConstEntry(entry.Name, entry.Val)); } } else { CTree tree = (CTree)type; foreach (CTree.Entry member in tree.Members) { AddChild(group, MakeFieldEntry(member.Type, member.Name, member.Offset)); } } }
public MixedTypedef(CBrace type, string innerName, string args) : base(type, innerName, args) { }
public PureDef(CBrace type, string innerName) : base(type) { _innerName = innerName; }
public Typedef(CBrace type, string innerName, string args) : base(type) { _innerName = innerName; _args = args; }
public Def(CBrace type) { _type = type; }