this.attr |= PEAPI.TypeAttr.Abstract;
}
+ public bool NoAutoInherit { get; set; }
+
public string Name {
get { return name; }
}
if (IsValueType (parent.PeapiClass.nameSpace, parent.PeapiClass.name))
is_value_class = true;
- else if (IsEnumType (parent.PeapiClass.nameSpace, parent.PeapiClass.name))
+ else if (IsEnumType (parent.PeapiClass.nameSpace, parent.PeapiClass.name)) {
is_enum_class = true;
+ is_value_class = false;
+ }
if (!IsValueType (name_space, name) && !IsEnumType (name_space, name) &&
- is_value_class && !is_enum_class && (attr & PEAPI.TypeAttr.Sealed) == 0) {
+ is_value_class && (attr & PEAPI.TypeAttr.Sealed) == 0) {
attr |= PEAPI.TypeAttr.Sealed;
}
name_space, name);
}
}
- if (FullName == "System.Object")
+ if (FullName == "System.Object" || NoAutoInherit)
classdef.SpecialNoSuper ();
}
{
ArrayList fielddef_list = new ArrayList ();
foreach (FieldDef fielddef in field_list) {
+ if (is_enum_class && fielddef.Name == "value__") {
+ fielddef.Attributes |= PEAPI.FieldAttr.SpecialName | PEAPI.FieldAttr.RTSpecialName;
+ }
+
fielddef.Define (code_gen, classdef);
fielddef_list.Add (fielddef.PeapiFieldDef);
}