public MonoBuiltinTypeInfo(MonoSymbolFile corlib, TargetMemoryAccess memory)
{
this.Corlib = corlib;
MonoLanguageBackend mono = corlib.MonoLanguage;
ObjectType = MonoObjectType.Create (corlib, memory);
VoidType = MonoVoidType.Create (corlib, memory);
StringType = MonoStringType.Create (corlib, memory);
BooleanType = MonoFundamentalType.Create (
corlib, memory, FundamentalKind.Boolean);
CharType = MonoFundamentalType.Create (
corlib, memory, FundamentalKind.Char);
ByteType = MonoFundamentalType.Create (
corlib, memory, FundamentalKind.Byte);
SByteType = MonoFundamentalType.Create (
corlib, memory, FundamentalKind.SByte);
Int16Type = MonoFundamentalType.Create (
corlib, memory, FundamentalKind.Int16);
UInt16Type = MonoFundamentalType.Create (
corlib, memory, FundamentalKind.UInt16);
Int32Type = MonoFundamentalType.Create (
corlib, memory, FundamentalKind.Int32);
UInt32Type = MonoFundamentalType.Create (
corlib, memory, FundamentalKind.UInt32);
Int64Type = MonoFundamentalType.Create (
corlib, memory, FundamentalKind.Int64);
UInt64Type = MonoFundamentalType.Create (
corlib, memory, FundamentalKind.UInt64);
SingleType = MonoFundamentalType.Create (
corlib, memory, FundamentalKind.Single);
DoubleType = MonoFundamentalType.Create (
corlib, memory, FundamentalKind.Double);
IntType = MonoFundamentalType.Create (
corlib, memory, FundamentalKind.IntPtr);
UIntType = MonoFundamentalType.Create (
corlib, memory, FundamentalKind.UIntPtr);
DecimalType = MonoFundamentalType.Create (
corlib, memory, FundamentalKind.Decimal);
Cecil.TypeDefinition decimal_type = corlib.ModuleDefinition.GetType ("System.Decimal");
corlib.AddType (decimal_type, DecimalType);
TargetAddress klass = corlib.MonoLanguage.MetadataHelper.GetArrayClass (memory);
Cecil.TypeDefinition array_type = corlib.ModuleDefinition.GetType ("System.Array");
ArrayType = mono.CreateCoreType (corlib, array_type, memory, klass);
mono.AddCoreType (array_type, ArrayType, ArrayType, klass);
klass = corlib.MonoLanguage.MetadataHelper.GetDelegateClass (memory);
Cecil.TypeDefinition delegate_type = corlib.ModuleDefinition.GetType ("System.Delegate");
DelegateType = new MonoClassType (corlib, delegate_type);
mono.AddCoreType (delegate_type, DelegateType, DelegateType, klass);
klass = corlib.MonoLanguage.MetadataHelper.GetExceptionClass (memory);
Cecil.TypeDefinition exception_type = corlib.ModuleDefinition.GetType ("System.Exception");
ExceptionType = mono.CreateCoreType (corlib, exception_type, memory, klass);
mono.AddCoreType (exception_type, ExceptionType, ExceptionType, klass);
}