public static CsFundamentalType ImportPrimitiveType()

in SharpGen/Transform/TypeRegistry.cs [77:132]


        public static CsFundamentalType ImportPrimitiveType(string typeName)
        {
            if (typeName == null)
                return null;

            typeName = typeName.Trim();

            if (typeName.Length == 0)
                return null;

            if (PrimitiveTypeEntriesByName.TryGetValue(typeName, out var entry))
                return entry;

            var typeNameParts = typeName.Split(new[] {'*'}, 2, StringSplitOptions.RemoveEmptyEntries);

            var baseTypeName = typeNameParts[0].Trim();

            var pointerCountInt = typeName.Count(x => x == '*');
            var pointerCount = checked((byte) pointerCountInt);

            CsFundamentalType FindOrCreate(PrimitiveTypeCode typeCode)
            {
                PrimitiveTypeIdentity identity = new(typeCode, pointerCount);
                return FindPrimitiveTypeImpl(identity, baseTypeName, typeName);
            }

            switch (pointerCount)
            {
                case 0:
                    break;
                case 1 when typeName == "void*":
                    throw new Exception(
                        $"void* is supposed to have been found in {nameof(PrimitiveTypeEntriesByName)}"
                    );
                default:
                    if (PrimitiveTypeEntriesByName.TryGetValue(baseTypeName, out var baseEntry))
                    {
                        // ReSharper disable once PossibleInvalidOperationException
                        entry = FindOrCreate(baseEntry.PrimitiveTypeIdentity.Value.Type);
                    }

                    break;
            }

            if (entry == null)
            {
                var type = Type.GetType(baseTypeName);

                var baseEntry = PrimitiveRuntimeTypesByCode.Where(x => x.Value == type).Take(1).ToArray();

                if (baseEntry.Length == 1)
                    entry = FindOrCreate(baseEntry[0].Key);
            }

            return entry;
        }