public SchemaInheritanceBuilder(SchemaTypeBuilder schemaType) { SchemaTypes = schemaType; ParentsBySchema = schemaType .NiObjectTypes .ToDictionary(kvp => kvp.Key, kvp => SetParentBySchema(kvp.Value, kvp.Key)); }
public SchemaEnumBuilder(SchemaTypeBuilder schemaTypes) { SchemaTypes = schemaTypes; OptionsByEnum = schemaTypes.EnumTypes .Select(kvp => (kvp.Key, kvp.Key.Options.Select(option => (option, BuildEnumOption(kvp.Value, option))) .ToDictionary(k => k.option.Name, k => k.Item2))) .ToDictionary(k => k.Key, k => k.Item2); OptionsByBitflags = schemaTypes.BitflagsTypes .Select(kvp => (kvp.Key, kvp.Key.Options.Select(option => (option, BuildBitflagsOption(kvp.Value, option))) .ToDictionary(k => k.option.Name, k => k.Item2))) .ToDictionary(k => k.Key, k => k.Item2); }
public SchemaConstructorBuilder(SchemaDocument doc, SchemaTypeBuilder types, SchemaFieldBuilder fields, SchemaBasicReaderBuilder basic) { Doc = doc; Types = types; Fields = fields; Basic = basic; CompoundConstructors = Types.CompoundTypes .ToDictionary( kvp => kvp.Key, kvp => WriteCompoundConstructor(kvp.Value) ); //NiObjectConstructors = Types.NiObjectTypes // .ToDictionary( // kvp => kvp.Key, // kvp => kvp.Value.DefineDefaultConstructor(MethodAttributes.Public) // ); }
/// <summary> /// Writes types for each niObject, compound, enum, bitflag and bitfield /// into a reflection module, as well as building constructors for each /// type. /// </summary> /// <param name="moduleBuilder">The module to write the types to</param> /// <param name="document">The base schema document that described the types in NIF.xml/BlockStructure format</param> /// <param name="basics">A map of basic type names to their primitive values</param> /// <param name="version">The specific version of the document to use</param> public SchemaDocumentBuilder(ModuleBuilder moduleBuilder, SchemaDocument document, Dictionary <string, Type> basics, VersionKey version) { Document = document; SchemaBasicReader = new SchemaBasicReaderBuilder(moduleBuilder, document, basics); SchemaTypes = new SchemaTypeBuilder(document, moduleBuilder, SchemaBasicReader); SchemaFields = new SchemaFieldBuilder(this, version); SchemaInheritance = new SchemaInheritanceBuilder(SchemaTypes); SchemaEnum = new SchemaEnumBuilder(SchemaTypes); SchemaConstructors = new SchemaConstructorBuilder(document, SchemaTypes, SchemaFields, SchemaBasicReader); SchemaILBuilder = new SchemaConstructorILBuilder(this); foreach (var enumBuilder in SchemaTypes.BuiltEnumsByName.Values) { enumBuilder.CreateTypeInfo(); } foreach (var typeBuilder in SchemaTypes.BuiltTypesByName.Values) { typeBuilder.CreateTypeInfo(); } }