Made AttributeBuilder not a singleton, replaced multiple methods per attribute with a single method that returns all the attributes in a single sweep.
This commit is contained in:
@@ -54,10 +54,11 @@ namespace CodeGenerator {
|
||||
}
|
||||
|
||||
private static CodeNamespace GenerateTypes(out CodeNamespace additionalNs) {
|
||||
//Initialize the namespaces
|
||||
CodeNamespace rootNs = new CodeNamespace(Namespace);
|
||||
rootNs.Types.Add(GenerateDnaFieldAttributeType());
|
||||
rootNs.Types.Add(GenerateDnaClassAttributeType());
|
||||
CodeNamespace ns = new CodeNamespace(Namespace+".DNA");
|
||||
//Fill the attribute types then add them to the namespaces
|
||||
rootNs.Types.AddRange(GenerateTypeDeclarations());
|
||||
ns.Imports.Add(new(rootNs.Name));
|
||||
|
||||
_customTypes = new();
|
||||
@@ -136,32 +137,30 @@ namespace CodeGenerator {
|
||||
return ns;
|
||||
}
|
||||
|
||||
private static CodeTypeDeclaration GenerateDnaFieldAttributeType() {
|
||||
var attributeBuilder = AttributeBuilder.Instance;
|
||||
private static CodeTypeDeclaration[] GenerateTypeDeclarations() {
|
||||
var attributeBuilder = new AttributeBuilder();
|
||||
|
||||
return attributeBuilder.New("DNAFieldAttribute")
|
||||
.SetAttributeUsage(new (new CodeSnippetExpression("AttributeTargets.Field")))
|
||||
.AddAutoProperty(typeof(int), "Size")
|
||||
.AddAutoProperty(typeof(string), "OriginalType")
|
||||
.AddAutoProperty(typeof(string), "OriginalName")
|
||||
.AddAutoProperty(typeof(int), "OriginalIndex")
|
||||
.AddAutoProperty(typeof(string), "UnderlyingType")
|
||||
.AddAutoProperty(typeof(bool), "IsPointer")
|
||||
.AddAutoProperty(typeof(int), "MemoryOffset")
|
||||
.AddPropertiesConstructor()
|
||||
.Build();
|
||||
}
|
||||
|
||||
private static CodeTypeDeclaration GenerateDnaClassAttributeType() {
|
||||
var attributeBuilder = AttributeBuilder.Instance;
|
||||
|
||||
return attributeBuilder.New("DNAClassAttribute")
|
||||
.SetAttributeUsage(new (new CodeSnippetExpression("AttributeTargets.Class | AttributeTargets.Struct")))
|
||||
.AddAutoProperty(typeof(int), "OriginalIndex")
|
||||
.AddAutoProperty(typeof(string), "OriginalName")
|
||||
.AddAutoProperty(typeof(int), "Size")
|
||||
.AddPropertiesConstructor()
|
||||
.Build();
|
||||
var typeDeclarations = new CodeTypeDeclaration[] {
|
||||
attributeBuilder.New().SetName("DNAFieldAttribute")
|
||||
.SetAttributeUsage(new (new CodeSnippetExpression("AttributeTargets.Field")))
|
||||
.AddAutoProperty(typeof(int), "Size")
|
||||
.AddAutoProperty(typeof(string), "OriginalType")
|
||||
.AddAutoProperty(typeof(string), "OriginalName")
|
||||
.AddAutoProperty(typeof(int), "OriginalIndex")
|
||||
.AddAutoProperty(typeof(string), "UnderlyingType")
|
||||
.AddAutoProperty(typeof(bool), "IsPointer")
|
||||
.AddAutoProperty(typeof(int), "MemoryOffset")
|
||||
.AddPropertiesConstructor()
|
||||
.Build(),
|
||||
attributeBuilder.New().SetName("DNAClassAttribute")
|
||||
.SetAttributeUsage(new (new CodeSnippetExpression("AttributeTargets.Class | AttributeTargets.Struct")))
|
||||
.AddAutoProperty(typeof(int), "OriginalIndex")
|
||||
.AddAutoProperty(typeof(string), "OriginalName")
|
||||
.AddAutoProperty(typeof(int), "Size")
|
||||
.AddPropertiesConstructor()
|
||||
.Build()
|
||||
};
|
||||
return typeDeclarations;
|
||||
}
|
||||
|
||||
private static CodeAttributeDeclaration GenerateDnaFieldAttribute(int index, BlendFile.DnaField field,
|
||||
|
||||
Reference in New Issue
Block a user