BasicData ReadBitFlags(BitflagsSchema bitflagsSchema, ReadingContext context) { if (Document.Basics.TryGetValue(bitflagsSchema.Storage, out var basicSchema)) { return(ReadBasicFunc(basicSchema, context)); } throw new Exception(); }
EnumBuilder BuildBitflagType(ModuleBuilder moduleBuilder, BitflagsSchema schema, SchemaDocument document) { var name = schema.Name.ToPascalCase(); var attr = TypeAttributes.Public; var underlyingTypeDescription = BasicTypeDescriptions .BasicDescriptions[document.Basics[schema.Storage]]; Type flagsAttributeType = typeof(FlagsAttribute); ConstructorInfo attributeConstructor = flagsAttributeType.GetConstructor(new Type[] { }); var underlingType = underlyingTypeDescription.UnderlyingType; var bitflagBuilder = moduleBuilder.DefineEnum(name, attr, underlingType); //bitflagBuilder.SetCustomAttribute(attributeConstructor, new byte[] { 01, 00, 01 }); return(bitflagBuilder); }