Compare commits
No commits in common. "master" and "v6.1.1" have entirely different histories.
|
@ -1,9 +1,3 @@
|
|||
## v7.1.0
|
||||
- Using a shared helper method to streamline the generated code
|
||||
|
||||
## v7.0.0
|
||||
- Using a dedicated wrapper for i18n strings to streamline the generated code
|
||||
|
||||
## v6.1.0
|
||||
- Removed redundant accessor interface declarations in generated slices
|
||||
|
||||
|
|
|
@ -137,9 +137,9 @@ function _add_twig_support(\Twig\Environment $twig)
|
|||
}
|
||||
));
|
||||
$twig->addFilter(new \Twig\TwigFilter('cs_type',
|
||||
function($type, $fld = null)
|
||||
function($type)
|
||||
{
|
||||
return cs_type($type, $fld);
|
||||
return cs_type($type);
|
||||
}
|
||||
));
|
||||
$twig->addFilter(new \Twig\TwigFilter('cs_simple_type',
|
||||
|
@ -213,14 +213,10 @@ function _add_twig_support(\Twig\Environment $twig)
|
|||
));
|
||||
}
|
||||
|
||||
function cs_type(\mtgType $type, $fld = null)
|
||||
function cs_type(\mtgType $type)
|
||||
{
|
||||
if($type instanceof \mtgBuiltinType || $type instanceof \mtgUserType)
|
||||
{
|
||||
if($fld != null && $fld->hasToken("flt_i18n"))
|
||||
return "MetaI18NString";
|
||||
return cs_simple_type($type);
|
||||
}
|
||||
else if($type instanceof \mtgArrType)
|
||||
return "List<" . cs_simple_type($type->getValue()) . ">";
|
||||
else
|
||||
|
@ -455,10 +451,7 @@ function var_sync($fname, \mtgType $type, $buf, array $tokens, $opts)
|
|||
$str = '';
|
||||
if($type instanceof \mtgBuiltinType)
|
||||
{
|
||||
if($type->isString() && array_key_exists('flt_i18n', $tokens))
|
||||
$str .= "$fname.SyncSingular({$buf}, \"{$key_name}\", {$opts});\n"; //TODO: plurals support
|
||||
else
|
||||
$str .= "MetaIO.Sync({$buf}, ref {$fname}, \"{$key_name}\", {$opts});\n";
|
||||
$str .= "MetaIO.Sync({$buf}, ref {$fname}, \"{$key_name}\", {$opts});\n";
|
||||
}
|
||||
else if($type instanceof \mtgMetaStruct)
|
||||
{
|
||||
|
@ -612,11 +605,6 @@ class AccessorInterfaceField
|
|||
return $this->field->getName();
|
||||
}
|
||||
|
||||
function hasToken($token)
|
||||
{
|
||||
return $this->field->hasToken($token);
|
||||
}
|
||||
|
||||
function getCamelFieldName()
|
||||
{
|
||||
$name_parts = explode("_", $this->field->getName());
|
||||
|
|
|
@ -156,19 +156,20 @@ public FieldsMask fields_mask;
|
|||
|
||||
{%- macro decl_struct_field(o, f) -%}
|
||||
{{_self.attributes(f)}}
|
||||
public {{f.type|cs_type(f)|obscure_type(f)}} {{f.name}} {% if not has_token(o, 'POD') -%} {{_self.decl_init_value(f)}} {%- endif -%};
|
||||
{% if has_token(f, 'flt_i18n') -%}
|
||||
{{f.type}} _{{f.name}} = "";
|
||||
List<{{f.type}}> __{{f.name}} = new List<{{f.type}}>();
|
||||
{%- endif ~%}
|
||||
public {{f.type|cs_type|obscure_type(f)}} {{f.name}} {% if not has_token(o, 'POD') -%} {{_self.decl_init_value(f)}} {%- endif -%} {% if not has_token(f, 'flt_i18n') -%};{%- endif -%}
|
||||
{%- endmacro -%}
|
||||
|
||||
{% macro decl_init_value(f) %}
|
||||
{%- if f.type is instanceof('\\mtgBuiltinType') -%}
|
||||
{%- if f.type.isstring -%}
|
||||
{% if has_token(f, 'flt_i18n') -%}
|
||||
{%- if has_token(f, 'default') -%}
|
||||
= new({{token(f, 'default')}})
|
||||
{%- else -%}
|
||||
= new()
|
||||
{%- endif -%}
|
||||
{%- else -%}
|
||||
{% if has_token(f, 'flt_i18n') -%}
|
||||
{get{return plural_{{f.name}}(double.NaN);}set{_{{f.name}}=value;}}
|
||||
{{f.type}} plural_{{f.name}}(double force_n){return MetaI18N.I18NPick(_{{f.name}},__{{f.name}},"#",force_n);}
|
||||
{%- else -%}
|
||||
= ""
|
||||
{%- endif ~%}
|
||||
{%- endif -%}
|
||||
|
@ -176,7 +177,7 @@ public {{f.type|cs_type(f)|obscure_type(f)}} {{f.name}} {% if not has_token(o, '
|
|||
{%- if has_token(f, 'default') and token(f, 'default') == 'null' -%}
|
||||
/*null*/
|
||||
{%- else -%}
|
||||
= new {{f.type|cs_type(f)}}()
|
||||
= new {{f.type|cs_type}}()
|
||||
{%- endif -%}
|
||||
{%- endif -%}
|
||||
{% endmacro %}
|
||||
|
@ -186,11 +187,12 @@ public {{f.type|cs_type(f)|obscure_type(f)}} {{f.name}} {% if not has_token(o, '
|
|||
base.Reset();
|
||||
{%- endif -%}
|
||||
{%- for f in o.fields ~%}
|
||||
{% set fname = f.name %}
|
||||
{% if has_token(f, 'flt_i18n') -%}
|
||||
{{f.name}}?.Reset();
|
||||
{%- else ~%}
|
||||
{{var_reset(f.name, f.type, token_or(f, 'default', null))}}
|
||||
{% set fname = '_' ~ f.name %}
|
||||
if(_{{fname}} == null) _{{fname}} = new(); else _{{fname}}.Clear();
|
||||
{%- endif ~%}
|
||||
{{var_reset(fname, f.type, token_or(f, 'default', null))}}
|
||||
{%- endfor -%}
|
||||
{%- if has_token(o, 'bitfields') ~%}
|
||||
ResetFieldMask();
|
||||
|
@ -289,7 +291,11 @@ bitctx.SyncMaskHeader();
|
|||
base.SyncFields(ctx);
|
||||
{%- endif -%}
|
||||
{%- for f in o.fields ~%}
|
||||
{{var_sync(f.name, f.type, 'ctx', f.tokens, get_sync_opts(o, 'bitctx'))}}
|
||||
{% set fname = f.name %}
|
||||
{% if has_token(f, 'flt_i18n') -%}
|
||||
{% set fname = '_' ~ f.name %}
|
||||
{%- endif -%}
|
||||
{{var_sync(fname, f.type, 'ctx', f.tokens, get_sync_opts(o, 'bitctx'))}}
|
||||
{%- endfor -%}
|
||||
{%- endmacro -%}
|
||||
|
||||
|
@ -319,7 +325,14 @@ base.SyncFields(ctx);
|
|||
int fields_amount = {{fields_count(o)}};
|
||||
var primary_id_mask = FieldsMask.MakeClean(fields_amount);
|
||||
SetPrimaryFieldsChanged(ref primary_id_mask);
|
||||
return FieldsMask.CheckContentsChanged(fields_amount, ref primary_id_mask, ref fields_mask);
|
||||
for(int i = 0; i < fields_amount; i++)
|
||||
{
|
||||
bool is_primary_id = primary_id_mask.IsDirty(i);
|
||||
if(!is_primary_id && fields_mask.IsDirty(i))
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public void SetDirtyMask()
|
||||
|
@ -737,12 +750,12 @@ public interface {{ai.interfacename}}
|
|||
{
|
||||
{%- for aif in ai.fields ~%}
|
||||
{% if aif.is_accessor -%}
|
||||
{{aif.field.type|cs_type(aif)}} Get{{aif.camelfieldname}}();
|
||||
void Set{{aif.camelfieldname}}({{aif.field.type|cs_type(aif)}} v);
|
||||
{{aif.field.type|cs_type}} Get{{aif.camelfieldname}}();
|
||||
void Set{{aif.camelfieldname}}({{aif.field.type|cs_type}} v);
|
||||
{% endif -%}
|
||||
|
||||
{%- if aif.is_propget -%}
|
||||
{{aif.field.type|cs_type(aif)}} {{aif.camelfieldname}} {
|
||||
{{aif.field.type|cs_type}} {{aif.camelfieldname}} {
|
||||
{%- if aif.is_propget -%}
|
||||
get;
|
||||
{%- endif %}
|
||||
|
@ -759,18 +772,18 @@ public interface {{ai.interfacename}}
|
|||
{%- for ai in get_accessor_interfaces(o) ~%}
|
||||
{%- for aif in ai.fields ~%}
|
||||
{% if aif.is_accessor %}
|
||||
public {{aif.field.type|cs_type(aif)}} Get{{aif.camelfieldname}}()
|
||||
public {{aif.field.type|cs_type}} Get{{aif.camelfieldname}}()
|
||||
{
|
||||
return {{aif.field.name}};
|
||||
}
|
||||
public void Set{{aif.camelfieldname}}({{aif.field.type|cs_type(aif)}} v)
|
||||
public void Set{{aif.camelfieldname}}({{aif.field.type|cs_type}} v)
|
||||
{
|
||||
this.{{aif.field.name}} = v;
|
||||
}
|
||||
{% endif %}
|
||||
|
||||
{% if aif.is_propget or aif.is_propset %}
|
||||
public {{aif.field.type|cs_type(aif)}} {{aif.camelfieldname}} {
|
||||
public {{aif.field.type|cs_type}} {{aif.camelfieldname}} {
|
||||
{%- if aif.is_propget -%}
|
||||
get => this.{{aif.field.name}};
|
||||
{%- endif -%}
|
||||
|
|
Loading…
Reference in New Issue