public void Read(BinaryReader reader) { Name = reader.ReadString(); Comment = BindingsGenerator.Read(reader, Comment); Value = BindingsGenerator.Read(reader, Value); Attributes = BindingsGenerator.Read(reader, Attributes); }
public override void Init(Builder.BuildData buildData) { base.Init(buildData); // Cache if it it Scripting Object type if (InBuildScriptingObjectTypes.Contains(Name)) { _isScriptingObject = true; } else if (BaseType == null) { _isScriptingObject = false; } else if (InBuildScriptingObjectTypes.Contains(BaseType.Type)) { _isScriptingObject = true; } else { var baseApiTypeInfo = BindingsGenerator.FindApiTypeInfo(buildData, BaseType, this); if (baseApiTypeInfo != null) { if (!baseApiTypeInfo.IsInited) { baseApiTypeInfo.Init(buildData); } _isScriptingObject = baseApiTypeInfo.IsScriptingObject; } else { _isScriptingObject = false; } } }
public override void Write(BinaryWriter writer) { writer.Write(IsAlias); BindingsGenerator.Write(writer, Type); base.Write(writer); }
/// <summary> /// Gets a value indicating whether this type is POD (plain old data). /// </summary> public bool IsPod(Builder.BuildData buildData, ApiTypeInfo caller) { var apiType = BindingsGenerator.FindApiTypeInfo(buildData, this, caller); if (apiType != null) { if (!apiType.IsInited) { apiType.Init(buildData); } return(apiType.IsPod); } if (IsPtr || IsRef) { return(true); } // Hardcoded cases if (Type == "String" || Type == "Array") { return(false); } // Fallback to default return(true); }
public List <TypeInfo> Inheritance; // Data from parsing, used to interfaces and base type construct in Init public override void Init(Builder.BuildData buildData) { base.Init(buildData); if (BaseType == null && Interfaces == null && Inheritance != null) { // Extract base class and interfaces from inheritance info for (int i = 0; i < Inheritance.Count; i++) { var apiTypeInfo = BindingsGenerator.FindApiTypeInfo(buildData, Inheritance[i], Parent); if (apiTypeInfo is InterfaceInfo interfaceInfo) { if (Interfaces == null) { Interfaces = new List <InterfaceInfo>(); } Interfaces.Add(interfaceInfo); } else if (apiTypeInfo is ClassStructInfo otherInfo) { if (otherInfo == this) { throw new Exception($"Type '{Name}' inherits from itself."); } if (BaseType != null) { throw new Exception($"Invalid '{Name}' inheritance (only single base class is allowed for scripting types, excluding interfaces)."); } BaseType = otherInfo; } } } BaseType?.EnsureInited(buildData); }
public void Write(BinaryWriter writer) { writer.Write(Name); BindingsGenerator.Write(writer, Comment); BindingsGenerator.Write(writer, Value); BindingsGenerator.Write(writer, Attributes); }
public override void Read(BinaryReader reader) { IsAlias = reader.ReadBoolean(); Type = BindingsGenerator.Read(reader, Type); base.Read(reader); }
public override void Write(BinaryWriter writer) { writer.Write((byte)Access); BindingsGenerator.Write(writer, UnderlyingType); BindingsGenerator.Write(writer, Entries); base.Write(writer); }
public override void Read(BinaryReader reader) { Type = BindingsGenerator.Read(reader, Type); Getter = BindingsGenerator.Read(reader, Getter); Setter = BindingsGenerator.Read(reader, Setter); base.Read(reader); }
public virtual void Read(BinaryReader reader) { Name = reader.ReadString(); Comment = BindingsGenerator.Read(reader, Comment); IsStatic = reader.ReadBoolean(); Access = (AccessLevel)reader.ReadByte(); Attributes = BindingsGenerator.Read(reader, Attributes); }
public override void Read(BinaryReader reader) { Access = (AccessLevel)reader.ReadByte(); UnderlyingType = BindingsGenerator.Read(reader, UnderlyingType); Entries = BindingsGenerator.Read(reader, Entries); base.Read(reader); }
public override void Write(BinaryWriter writer) { BindingsGenerator.Write(writer, Type); BindingsGenerator.Write(writer, Getter); BindingsGenerator.Write(writer, Setter); base.Write(writer); }
public virtual void Write(BinaryWriter writer) { writer.Write(Name); BindingsGenerator.Write(writer, Comment); writer.Write(IsStatic); writer.Write((byte)Access); BindingsGenerator.Write(writer, Attributes); }
public override void Read(BinaryReader reader) { Access = (AccessLevel)reader.ReadByte(); BaseTypeInheritance = (AccessLevel)reader.ReadByte(); BaseType = BindingsGenerator.Read(reader, BaseType); InterfaceNames = BindingsGenerator.Read(reader, InterfaceNames); base.Read(reader); }
public override void Write(BinaryWriter writer) { BindingsGenerator.Write(writer, Fields); BindingsGenerator.Write(writer, Functions); writer.Write(IsAutoSerialization); writer.Write(ForceNoPod); base.Write(writer); }
public override void Read(BinaryReader reader) { Fields = BindingsGenerator.Read(reader, Fields); Functions = BindingsGenerator.Read(reader, Functions); IsAutoSerialization = reader.ReadBoolean(); ForceNoPod = reader.ReadBoolean(); base.Read(reader); }
public override void Write(BinaryWriter writer) { writer.Write((byte)Access); writer.Write((byte)BaseTypeInheritance); BindingsGenerator.Write(writer, BaseType); BindingsGenerator.Write(writer, InterfaceNames); base.Write(writer); }
public override void Write(BinaryWriter writer) { writer.Write(Module.Name); writer.Write(Module.FilePath); BindingsGenerator.Write(writer, Module.BinaryModuleName); writer.Write(Module.BuildNativeCode); writer.Write(Module.BuildCSharp); base.Write(writer); }
public override void Write(BinaryWriter writer) { BindingsGenerator.Write(writer, Type); // TODO: convert into flags writer.Write(IsReadOnly); writer.Write(NoArray); BindingsGenerator.Write(writer, DefaultValue); base.Write(writer); }
public override void Read(BinaryReader reader) { Type = BindingsGenerator.Read(reader, Type); // TODO: convert into flags IsReadOnly = reader.ReadBoolean(); NoArray = reader.ReadBoolean(); DefaultValue = BindingsGenerator.Read(reader, DefaultValue); base.Read(reader); }
public virtual void Write(BinaryWriter writer) { BindingsGenerator.Write(writer, NativeName); BindingsGenerator.Write(writer, Name); BindingsGenerator.Write(writer, Namespace); BindingsGenerator.Write(writer, Attributes); BindingsGenerator.Write(writer, Comment); writer.Write(IsInBuild); BindingsGenerator.Write(writer, Children); }
public void Read(BinaryReader reader) { Name = reader.ReadString(); Type = BindingsGenerator.Read(reader, Type); DefaultValue = BindingsGenerator.Read(reader, DefaultValue); Attributes = BindingsGenerator.Read(reader, Attributes); // TODO: convert into flags IsRef = reader.ReadBoolean(); IsOut = reader.ReadBoolean(); }
public void Write(BinaryWriter writer) { writer.Write(Name); BindingsGenerator.Write(writer, Type); BindingsGenerator.Write(writer, DefaultValue); BindingsGenerator.Write(writer, Attributes); // TODO: convert into flags writer.Write(IsRef); writer.Write(IsOut); }
public virtual void Write(BinaryWriter writer) { writer.Write(Name); BindingsGenerator.Write(writer, Comment); writer.Write(IsStatic); writer.Write(IsConstexpr); writer.Write(IsDeprecated); writer.Write(IsHidden); writer.Write((byte)Access); BindingsGenerator.Write(writer, Attributes); }
public override void Read(BinaryReader reader) { Access = (AccessLevel)reader.ReadByte(); BaseTypeInheritance = (AccessLevel)reader.ReadByte(); IsTemplate = reader.ReadBoolean(); BaseType = BindingsGenerator.Read(reader, BaseType); Inheritance = BindingsGenerator.Read(reader, Inheritance); Functions = BindingsGenerator.Read(reader, Functions); base.Read(reader); }
public override void Read(BinaryReader reader) { ReturnType = BindingsGenerator.Read(reader, ReturnType); Parameters = BindingsGenerator.Read(reader, Parameters); // TODO: convert into flags IsVirtual = reader.ReadBoolean(); IsConst = reader.ReadBoolean(); NoProxy = reader.ReadBoolean(); base.Read(reader); }
public override void Write(BinaryWriter writer) { BindingsGenerator.Write(writer, ReturnType); BindingsGenerator.Write(writer, Parameters); // TODO: convert into flags writer.Write(IsVirtual); writer.Write(IsConst); writer.Write(NoProxy); base.Write(writer); }
public override void Write(BinaryWriter writer) { writer.Write((byte)Access); writer.Write((byte)BaseTypeInheritance); writer.Write(IsTemplate); BindingsGenerator.Write(writer, BaseType); BindingsGenerator.Write(writer, Inheritance); BindingsGenerator.Write(writer, Functions); base.Write(writer); }
public override void Init(Builder.BuildData buildData) { base.Init(buildData); if (ForceNoPod || (Interfaces != null && Interfaces.Count != 0)) { _isPod = false; return; } // Structure is POD (plain old data) only if all of it's fields are (and has no base type ro base type is also POD) _isPod = BaseType == null || (BaseType?.IsPod ?? false); for (int i = 0; _isPod && i < Fields.Count; i++) { var field = Fields[i]; if (!field.IsStatic && !field.IsPod(buildData, this)) { _isPod = false; } } foreach (var fieldInfo in Fields) { if (fieldInfo.Type.IsBitField) { throw new NotImplementedException($"TODO: support bit-fields in structure fields (found field {fieldInfo} in structure {Name})"); } // Pointers are fine if (fieldInfo.Type.IsPtr) { continue; } // In-build types if (BindingsGenerator.CSharpNativeToManagedBasicTypes.ContainsKey(fieldInfo.Type.Type)) { continue; } if (BindingsGenerator.CSharpNativeToManagedDefault.ContainsKey(fieldInfo.Type.Type)) { continue; } // Find API type info for this field type var apiType = BindingsGenerator.FindApiTypeInfo(buildData, fieldInfo.Type, this); if (apiType != null) { continue; } throw new Exception($"Unknown field type '{fieldInfo.Type} {fieldInfo.Name}' in structure '{Name}'."); } }
public override void Write(BinaryWriter writer) { writer.Write(Module.Name); writer.Write(Module.FilePath); BindingsGenerator.Write(writer, Module.BinaryModuleName); writer.Write(Module.BuildNativeCode); writer.Write(Module.BuildCSharp); writer.Write(Globals.Project.Name); writer.Write(Globals.Project.Version.ToString()); base.Write(writer); }