SharpGen/Transform/TypeRegistry.Primitives.cs (128 lines of code) (raw):
using System;
using System.Collections.Generic;
using SharpGen.Model;
namespace SharpGen.Transform
{
public partial class TypeRegistry
{
public static readonly CsFundamentalType Void = new(
typeof(void), new PrimitiveTypeIdentity(PrimitiveTypeCode.Void), "void"
);
public static readonly CsFundamentalType VoidPtr = new(
typeof(void*), new PrimitiveTypeIdentity(PrimitiveTypeCode.Void, 1), "void*"
);
public static readonly CsFundamentalType Int32 = new(
typeof(int), new PrimitiveTypeIdentity(PrimitiveTypeCode.Int32), "int"
);
public static readonly CsFundamentalType Int16 = new(
typeof(short), new PrimitiveTypeIdentity(PrimitiveTypeCode.Int16), "short"
);
public static readonly CsFundamentalType Float = new(
typeof(float), new PrimitiveTypeIdentity(PrimitiveTypeCode.Float), "float"
);
public static readonly CsFundamentalType Double = new(
typeof(double), new PrimitiveTypeIdentity(PrimitiveTypeCode.Double), "double"
);
public static readonly CsFundamentalType Int64 = new(
typeof(long), new PrimitiveTypeIdentity(PrimitiveTypeCode.Int64), "long"
);
public static readonly CsFundamentalType UInt32 = new(
typeof(uint), new PrimitiveTypeIdentity(PrimitiveTypeCode.UInt32), "uint"
);
public static readonly CsFundamentalType UInt64 = new(
typeof(ulong), new PrimitiveTypeIdentity(PrimitiveTypeCode.UInt64), "ulong"
);
public static readonly CsFundamentalType UInt16 = new(
typeof(ushort), new PrimitiveTypeIdentity(PrimitiveTypeCode.UInt16), "ushort"
);
public static readonly CsFundamentalType UInt8 = new(
typeof(byte), new PrimitiveTypeIdentity(PrimitiveTypeCode.UInt8), "byte"
);
public static readonly CsFundamentalType Int8 = new(
typeof(sbyte), new PrimitiveTypeIdentity(PrimitiveTypeCode.Int8), "sbyte"
);
public static readonly CsFundamentalType Boolean = new(
typeof(bool), new PrimitiveTypeIdentity(PrimitiveTypeCode.Boolean), "bool"
);
public static readonly CsFundamentalType Char = new(
typeof(char), new PrimitiveTypeIdentity(PrimitiveTypeCode.Char), "char"
);
public static readonly CsFundamentalType Decimal = new(
typeof(decimal), new PrimitiveTypeIdentity(PrimitiveTypeCode.Decimal), "decimal"
);
public static readonly CsFundamentalType String = new(
typeof(string), new PrimitiveTypeIdentity(PrimitiveTypeCode.String), "string"
);
public static readonly CsFundamentalType IntPtr = new(
typeof(IntPtr), new PrimitiveTypeIdentity(PrimitiveTypeCode.IntPtr), "System.IntPtr"
);
public static readonly CsFundamentalType UIntPtr = new(
typeof(UIntPtr), new PrimitiveTypeIdentity(PrimitiveTypeCode.UIntPtr), "System.UIntPtr"
);
private static readonly Dictionary<PrimitiveTypeIdentity, CsFundamentalType> PrimitiveTypeEntriesByIdentity =
new()
{
// ReSharper disable PossibleInvalidOperationException
[Void.PrimitiveTypeIdentity.Value] = Void,
[VoidPtr.PrimitiveTypeIdentity.Value] = VoidPtr,
[Int32.PrimitiveTypeIdentity.Value] = Int32,
[Int16.PrimitiveTypeIdentity.Value] = Int16,
[Float.PrimitiveTypeIdentity.Value] = Float,
[Double.PrimitiveTypeIdentity.Value] = Double,
[Int64.PrimitiveTypeIdentity.Value] = Int64,
[UInt32.PrimitiveTypeIdentity.Value] = UInt32,
[UInt64.PrimitiveTypeIdentity.Value] = UInt64,
[UInt16.PrimitiveTypeIdentity.Value] = UInt16,
[UInt8.PrimitiveTypeIdentity.Value] = UInt8,
[Int8.PrimitiveTypeIdentity.Value] = Int8,
[Boolean.PrimitiveTypeIdentity.Value] = Boolean,
[Char.PrimitiveTypeIdentity.Value] = Char,
[Decimal.PrimitiveTypeIdentity.Value] = Decimal,
[String.PrimitiveTypeIdentity.Value] = String,
[IntPtr.PrimitiveTypeIdentity.Value] = IntPtr,
[UIntPtr.PrimitiveTypeIdentity.Value] = UIntPtr,
// ReSharper restore PossibleInvalidOperationException
};
private static readonly Dictionary<string, CsFundamentalType> PrimitiveTypeEntriesByName = new()
{
["void"] = Void,
["void*"] = VoidPtr,
["int"] = Int32,
["short"] = Int16,
["float"] = Float,
["double"] = Double,
["long"] = Int64,
["uint"] = UInt32,
["ulong"] = UInt64,
["ushort"] = UInt16,
["byte"] = UInt8,
["sbyte"] = Int8,
["bool"] = Boolean,
["char"] = Char,
["decimal"] = Decimal,
["string"] = String,
["IntPtr"] = IntPtr,
["UIntPtr"] = UIntPtr,
["System.IntPtr"] = IntPtr,
["System.UIntPtr"] = UIntPtr,
};
private static readonly Dictionary<PrimitiveTypeCode, Type> PrimitiveRuntimeTypesByCode = new()
{
[PrimitiveTypeCode.Void] = typeof(void),
[PrimitiveTypeCode.Int32] = typeof(int),
[PrimitiveTypeCode.Int16] = typeof(short),
[PrimitiveTypeCode.Float] = typeof(float),
[PrimitiveTypeCode.Double] = typeof(double),
[PrimitiveTypeCode.Int64] = typeof(long),
[PrimitiveTypeCode.UInt32] = typeof(uint),
[PrimitiveTypeCode.UInt64] = typeof(ulong),
[PrimitiveTypeCode.UInt16] = typeof(ushort),
[PrimitiveTypeCode.UInt8] = typeof(byte),
[PrimitiveTypeCode.Int8] = typeof(sbyte),
[PrimitiveTypeCode.Boolean] = typeof(bool),
[PrimitiveTypeCode.Char] = typeof(char),
[PrimitiveTypeCode.Decimal] = typeof(decimal),
[PrimitiveTypeCode.String] = typeof(string),
[PrimitiveTypeCode.IntPtr] = typeof(IntPtr),
[PrimitiveTypeCode.UIntPtr] = typeof(UIntPtr),
};
}
}