public ClassDef AddDefinition(string name_space, string name, TypeAttr attr, Class parent, Location location) { string full_name; if (name_space != null) { full_name = String.Format("{0}.{1}", name_space, name); } else { full_name = name; } ClassTableItem item = (ClassTableItem)table[full_name]; if (item == null) { ClassDef klass = pefile.AddClass(attr, name_space, name, parent); AddDefined(full_name, klass, location); return(klass); } /// TODO: Need to set parent, will need to modify PEAPI for this. item.Class.AddAttribute(attr); item.Defined = true; return(item.Class); }
public ClassDef AddDefinition(string name_space, string name, TypeAttr attr, Location location) { string full_name; if (name_space != null) { full_name = String.Format("{0}.{1}", name_space, name); } else { full_name = name; } ClassTableItem item = (ClassTableItem)table[full_name]; if (item == null) { ClassDef klass = pefile.AddClass(attr, name_space, name); AddDefined(full_name, klass, location); return(klass); } item.Class.AddAttribute(attr); item.Defined = true; return(item.Class); }
/// <summary> /// If a type is allready defined throw an Error /// </summary> protected void CheckExists(string full_name) { ClassTableItem item = table[full_name] as ClassTableItem; if ((item != null) && (item.Defined)) { Report.Error(String.Format("Class: {0} defined in multiple locations.", full_name)); } }
public Class Get(string full_name) { ClassTableItem item = table[full_name] as ClassTableItem; if (item == null) { return(null); } return(item.Class); }
protected void AddReference(string full_name, ClassDef klass, Location location) { if (table.Contains(full_name)) { return; } ClassTableItem item = new ClassTableItem(klass, location); table[full_name] = item; }
/// <summary> /// When there is no code left to compile, check to make sure referenced types where defined /// TODO: Proper error reporting /// </summary> public void CheckForUndefined() { foreach (DictionaryEntry dic_entry in table) { ClassTableItem table_item = (ClassTableItem)dic_entry.Value; if (table_item.CheckDefined()) { continue; } Report.Error(String.Format("Type: {0} is not defined.", dic_entry.Key)); } }
public FieldTable GetFieldTable(string full_name, Location location) { ClassTableItem item = table[full_name] as ClassTableItem; if (item == null) { GetReference(full_name, location); return(GetFieldTable(full_name, location)); } return(item.FieldTable); }
protected void AddDefined(string full_name, ClassDef klass, Location location) { if (table.Contains(full_name)) { return; } ClassTableItem item = new ClassTableItem(klass, location); item.Defined = true; table[full_name] = item; }
public Class GetReference(string full_name, Location location) { ClassTableItem item = table[full_name] as ClassTableItem; if (item != null) { item.LocationList.Add(location); return(item.Class); } string name_space, name; GetNameAndNamespace(full_name, out name_space, out name); ClassDef klass = pefile.AddClass(DefaultAttr, name_space, name); AddReference(full_name, klass, location); return(klass); }
protected void AddReference (string full_name, ClassDef klass, Location location) { if (table.Contains (full_name)) return; ClassTableItem item = new ClassTableItem (klass, location); table[full_name] = item; }
protected void AddDefined (string full_name, ClassDef klass, Location location) { if (table.Contains (full_name)) return; ClassTableItem item = new ClassTableItem (klass, location); item.Defined = true; table[full_name] = item; }