internal Class EnumType() { /* Called by both mscorlib & !mscorlib, so can be either ClassRef or ClassDef */ //systemClasses [ valueTypeIx + 1] -> System.Enum if (systemClasses[valueTypeIx + 1] == null && !PEFile.IsMSCorlib) { ClassRef valType = new ClassRef("System","Enum",metaData); valType.SetParent(this); valType.MakeValueClass(ValueClass.Enum); metaData.AddToTable(MDTable.TypeRef,valType); systemClasses[valueTypeIx + 1] = valType; } return systemClasses[valueTypeIx + 1]; }
/// <summary> /// Add a value class to this external assembly /// </summary> /// <param name="nsName">name space name</param> /// <param name="name">class name</param> /// <returns></returns> public override ClassRef AddValueClass(string nsName, string name) { if (nsName.CompareTo(systemName) == 0) { int hash = name.GetHashCode(); if ((hash == specialNames[valueTypeIx]) || (hash == specialNames[valueTypeIx+1])) { return GetValueClass(name,hash); } } ClassRef aClass = new ClassRef(nsName,name,metaData); metaData.AddToTable(MDTable.TypeRef,aClass); aClass.SetParent(this); aClass.MakeValueClass(ValueClass.ValueType); return aClass; }
internal Class ValueType() { if (systemClasses[valueTypeIx] == null && !PEFile.IsMSCorlib) { ClassRef valType = new ClassRef("System","ValueType",metaData); valType.SetParent(this); valType.MakeValueClass(ValueClass.ValueType); metaData.AddToTable(MDTable.TypeRef,valType); systemClasses[valueTypeIx] = valType; } return systemClasses[valueTypeIx]; }
/// <summary> /// Add a value class to this external assembly /// </summary> /// <param name="nsName">name space name</param> /// <param name="name">class name</param> /// <returns></returns> public virtual ClassRef AddValueClass(string nsName, string name) { ClassRef aClass = new ClassRef(nsName,name,metaData); metaData.AddToTable(MDTable.TypeRef,aClass); aClass.SetParent(this); aClass.MakeValueClass(ValueClass.ValueType); return aClass; }
/// <summary> /// Add a class to this external module. This is a class declared in /// another module of THIS assembly. /// </summary> /// <param name="nsName">name space name</param> /// <param name="name">class name</param> /// <returns>a descriptor for this class in another module</returns> public ClassRef AddClass(string nsName, string name) { ClassRef aClass = new ClassRef(nsName,name,metaData); metaData.AddToTable(MDTable.TypeRef,aClass); aClass.SetParent(this); return aClass; }
internal ClassRef EnumType() { //systemClasses [ valueTypeIx + 1] -> System.Enum if (systemClasses[valueTypeIx + 1] == null) { ClassRef valType = new ClassRef("System","Enum",metaData); valType.SetParent(this); valType.MakeValueClass(ValueClass.Enum); metaData.AddToTable(MDTable.TypeRef,valType); systemClasses[valueTypeIx + 1] = valType; } return systemClasses[valueTypeIx + 1]; }
/// <summary> /// Add a class to the mscorlib assembly /// </summary> /// <param name="nsName">name space name</param> /// <param name="name">class name</param> /// <returns></returns> public override ClassRef AddClass(string nsName, string name) { ClassRef aClass = GetSpecialClass(nsName,name); if (aClass == null) { aClass = new ClassRef(nsName,name,metaData); metaData.AddToTable(MDTable.TypeRef,aClass); aClass.SetParent(this); } return aClass; }