Gradually adding support for all features
This commit is contained in:
parent
c28d858f5f
commit
8eeeefb7d9
|
@ -31,6 +31,7 @@ function supported_tokens()
|
|||
'id',
|
||||
'owner',
|
||||
'pkey',
|
||||
'bhl_bind'
|
||||
//TODO:
|
||||
//'obscured',
|
||||
//'bitfields',
|
||||
|
|
|
@ -4,9 +4,9 @@ using metagen;
|
|||
|
||||
{%- import "macro.twig" as macro -%}
|
||||
|
||||
{% if namespace is defined %}
|
||||
{#{% if namespace is defined ~%}
|
||||
namespace {{namespace}} {
|
||||
{% endif %}
|
||||
{% endif %}#}
|
||||
|
||||
{{ macro.decl_units(meta) }}
|
||||
|
||||
|
@ -33,7 +33,7 @@ static public class AutogenBundle
|
|||
switch(class_id)
|
||||
{
|
||||
{%- for u in meta.getunits ~%}
|
||||
{%- if u.object is instanceof('\\mtgMetaEnum') or u.object is instanceof('\\mtgMetaStruct')~%}
|
||||
{%- if u.object is instanceof('\\mtgMetaStruct')~%}
|
||||
case {{u.object.classid}}: { return new {{u.object.name}}(); }
|
||||
{%- endif ~%}
|
||||
{%- endfor ~%}
|
||||
|
@ -49,7 +49,7 @@ static public class AutogenBundle
|
|||
switch(class_id)
|
||||
{
|
||||
{%- for u in meta.getunits ~%}
|
||||
{%- if u.object is instanceof('\\mtgMetaEnum') or u.object is instanceof('\\mtgMetaStruct')~%}
|
||||
{%- if u.object is instanceof('\\mtgMetaStruct')~%}
|
||||
case {{u.object.classid}}: { return typeof({{u.object.name}}); }
|
||||
{%- endif ~%}
|
||||
{%- endfor ~%}
|
||||
|
@ -61,6 +61,6 @@ static public class AutogenBundle
|
|||
}
|
||||
}
|
||||
|
||||
{% if namespace is defined %}
|
||||
{#{% if namespace is defined ~%}
|
||||
} //namespace {{namespace}}
|
||||
{% endif %}
|
||||
{% endif %}#}
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
{%- endif -%}
|
||||
|
||||
{{_self.attributes(o)}}
|
||||
public {{_self.struct_type(o)}} {{o.name}} {{_self.base_class(o)}}
|
||||
public {{_self.struct_type(o)}} {{o.name}} {{_self.base_struct_class(o)}}
|
||||
{
|
||||
{{_self.decl_struct_fields(o)}}
|
||||
|
||||
|
@ -59,8 +59,9 @@ public {{_self.struct_type(o)}} {{o.name}} {{_self.base_class(o)}}
|
|||
reset();
|
||||
syncFields(ctx);
|
||||
ctx.reader.EndContainer();
|
||||
|
||||
{{_self.copy_fields(o)}}
|
||||
{%- if has_token(o, 'bitfields') ~%}
|
||||
fields_mask = other.fields_mask;
|
||||
{%- endif ~%}
|
||||
}
|
||||
|
||||
public {{_self.virtual_clone(o)}} IMetaStruct clone()
|
||||
|
@ -94,6 +95,10 @@ public {{_self.struct_type(o)}} {{o.name}} {{_self.base_class(o)}}
|
|||
{%- if has_token(o, 'bitfields') ~%}
|
||||
{{_self.bitmask_helpers(o)}}
|
||||
{%- endif -%}
|
||||
|
||||
{%- if has_token(o, 'bhl_bind') ~%}
|
||||
{{_self.get_itype(o)}}
|
||||
{%- endif -%}
|
||||
|
||||
{{extra}}
|
||||
}
|
||||
|
@ -111,7 +116,7 @@ public long fields_mask;
|
|||
|
||||
{%- macro decl_struct_field(o, f) -%}
|
||||
{{_self.attributes(f)}}
|
||||
public {{f.type|cs_type}} {{f.name}} {% if not has_token(f, 'POD') -%} {{_self.decl_init_value(f.type)}} {%- endif -%};
|
||||
public {{f.type|cs_type}} {{f.name}} {% if not has_token(o, 'POD') -%} {{_self.decl_init_value(f.type)}} {%- endif -%};
|
||||
{%- endmacro -%}
|
||||
|
||||
{% macro decl_init_value(type) %}
|
||||
|
@ -146,9 +151,13 @@ fields_mask = 0L;
|
|||
{{has_token(o, 'POD') ? 'struct' : 'class'}}
|
||||
{%- endmacro -%}
|
||||
|
||||
{%- macro base_class(o) -%}
|
||||
{%- if not has_token(o, 'POD') -%}
|
||||
: {{o.parent ? o.parent.name : 'BaseMetaStruct'}} {{has_token(o, 'cloneable')?',IMetaCloneable'}}
|
||||
{%- macro base_struct_class(o) -%}
|
||||
{%- if has_token(o, 'POD') -%}
|
||||
: IMetaStruct
|
||||
{%- else -%}
|
||||
: {{o.parent ? o.parent.name : 'BaseMetaStruct'}}
|
||||
{{- has_token(o, 'cloneable') and not o.parent ? ', IMetaCloneable' -}}
|
||||
{{- has_token(o, 'bhl_bind') and not o.parent ? ', bhl.ITyped' -}}
|
||||
{%- endif -%}
|
||||
{%- endmacro -%}
|
||||
|
||||
|
@ -158,6 +167,12 @@ override
|
|||
{%- endif -%}
|
||||
{%- endmacro -%}
|
||||
|
||||
{%- macro virtual(o) -%}
|
||||
{%- if not has_token(o, 'POD') -%}
|
||||
{{o.parent ? 'override' : 'virtual'}}
|
||||
{%- endif -%}
|
||||
{%- endmacro -%}
|
||||
|
||||
{%- macro comment_POD_begin(o) -%}
|
||||
{%- if has_token(o, 'POD') -%}
|
||||
/* commented in POD
|
||||
|
@ -183,18 +198,13 @@ override
|
|||
{%- endmacro -%}
|
||||
|
||||
{%- macro virtual_clone(o) -%}
|
||||
{%- if not has_token(o, 'POD') -%}
|
||||
{%- if o.parent and has_token_in_parent(o.parent, 'cloneable') -%}
|
||||
override
|
||||
{%- else -%}
|
||||
virtual
|
||||
{%- endif -%}
|
||||
{%- endif -%}
|
||||
{%- endmacro -%}
|
||||
|
||||
{%- macro copy_fields(o) -%}
|
||||
{%- if has_token(o, 'POD') ~%}
|
||||
fields_mask = other.fields_mask;
|
||||
{%- if has_token(o, 'cloneable') -%}
|
||||
{%- if has_token(o, 'POD') -%}
|
||||
{%- elseif o.parent and has_token_in_parent(o.parent, 'cloneable') -%}
|
||||
override
|
||||
{%- else -%}
|
||||
virtual
|
||||
{%- endif -%}
|
||||
{%- endif -%}
|
||||
{%- endmacro -%}
|
||||
|
||||
|
@ -253,6 +263,15 @@ base.syncFields(ctx);
|
|||
|
||||
{%- endmacro -%}
|
||||
|
||||
|
||||
{% macro get_itype(o) %}
|
||||
|
||||
public {{_self.virtual(o)}} bhl.IType GetIType()
|
||||
{
|
||||
return bhl.BHL_Types.Type_{{o.name}};
|
||||
}
|
||||
{%- endmacro -%}
|
||||
|
||||
{% macro decl_enum(o) %}
|
||||
{{_self.attributes(o)}}
|
||||
public enum {{o.name}}
|
||||
|
|
Loading…
Reference in New Issue