internal Builder([DisallowNull] ES_InterfaceData *data, ES_AccessModifier accessMod, ES_FullyQualifiedName fullyQualifiedName, ArrayPointer <byte> sourceUnit ) { InterfaceData = data; data->TypeInfo = new ES_TypeInfo(ES_TypeTag.Interface, accessMod, ES_TypeFlag.NoNew, sourceUnit, fullyQualifiedName); }
public ES_ArrayTypeData(ES_FullyQualifiedName fullyQualifiedName, [NotNull] ES_TypeInfo *elemType, int dims) { TypeInfo = new (ES_TypeTag.Array, ES_AccessModifier.Public, ES_TypeFlag.None, ArrayPointer <byte> .Null, fullyQualifiedName); TypeInfo.RuntimeSize = sizeof(void *) + sizeof(int); elementType = elemType; dimCount = dims; }
public ES_ConstData( ES_FullyQualifiedName fullyQualifiedName, ES_TypeInfo *innerType, bool immutable ) { var tag = immutable ? ES_TypeTag.Immutable : ES_TypeTag.Const; TypeInfo = new ES_TypeInfo(tag, ES_AccessModifier.Public, ES_TypeFlag.None, ArrayPointer <byte> .Null, fullyQualifiedName); InnerType = innerType; }
public ES_FunctionPrototypeData(ES_AccessModifier accessMod, ES_TypeInfo *retType, ArrayPointer <ES_FunctionPrototypeArgData> argsList, ES_FullyQualifiedName fullyQualifiedName, ArrayPointer <byte> sourceUnit ) { TypeInfo = new (ES_TypeTag.Function, accessMod, ES_TypeFlag.NoNew, sourceUnit, fullyQualifiedName); TypeInfo.RuntimeSize = IntPtr.Size; returnType = retType; argumentsList = argsList; }
private Pointer <ES_TypeInfo> GenerateBuiltinTypes_Simple(ReadOnlySpan <char> name, ES_TypeTag tag, int runtimeSize) { var voidDataPtr = EnvironmentBuilder !.MemoryManager.GetMemory <ES_TypeInfo> (); var namePtr = Environment !.IdPool.GetIdentifier(name); var fqn = new ES_FullyQualifiedName(Environment.GlobalTypesNamespace, namePtr); *voidDataPtr = new ES_TypeInfo(tag, ES_AccessModifier.Public, ES_TypeFlag.NoRefs | ES_TypeFlag.NoNew, ArrayPointer <byte> .Null, fqn); voidDataPtr->RuntimeSize = runtimeSize; return(new Pointer <ES_TypeInfo> (voidDataPtr)); }
public ES_ReferenceData( ES_FullyQualifiedName fullyQualifiedName, ES_TypeInfo *pointedType ) { TypeInfo = new (ES_TypeTag.Reference, ES_AccessModifier.Public, ES_TypeFlag.None, ArrayPointer <byte> .Null, fullyQualifiedName) { RuntimeSize = sizeof(void *) }; PointedType = pointedType; } #endregion }
public ES_FloatTypeData( ES_AccessModifier accessMod, ArrayPointer <byte> sourceUnit, ES_FullyQualifiedName fullyQualifiedName, ES_FloatSize size ) { TypeInfo = new ES_TypeInfo(ES_TypeTag.Float, accessMod, ES_TypeFlag.NoRefs, sourceUnit, fullyQualifiedName); FloatSize = size; TypeInfo.RuntimeSize = size switch { ES_FloatSize.Single => 4, ES_FloatSize.Double => 8, _ => throw new NotImplementedException("Size not implemented."), }; }
public ES_IntTypeData( ES_AccessModifier accessMod, ArrayPointer <byte> sourceUnit, ES_FullyQualifiedName fullyQualifiedName, ES_IntSize size, bool unsigned ) { TypeInfo = new ES_TypeInfo(ES_TypeTag.Int, accessMod, ES_TypeFlag.NoRefs, sourceUnit, fullyQualifiedName); IntSize = size; Unsigned = unsigned; TypeInfo.RuntimeSize = size switch { ES_IntSize.Int8 => 1, ES_IntSize.Int16 => 2, ES_IntSize.Int32 => 4, ES_IntSize.Int64 => 8, _ => throw new NotImplementedException("Size not implemented."), }; }