GP-3938 PrototypeModel rules

This commit is contained in:
caheckman 2023-05-30 11:07:08 -04:00
parent dae07c1900
commit 191371675a
55 changed files with 6000 additions and 1016 deletions

View file

@ -290,7 +290,8 @@
<optional> <attribute name="maxsize"/> </optional>
<optional> <attribute name="minsize"/> </optional>
<optional> <attribute name="align"/> </optional>
<optional> <attribute name="metatype"/> </optional>
<optional> <attribute name="storage"/> </optional>
<optional> <attribute name="metatype"/> </optional> <!-- deprecated -->
<optional> <attribute name="extension"/> </optional>
<!--
THIS IS THE WEAK ADDR TYPE. Attribute size is not required.
@ -341,6 +342,81 @@
</choice>
</define>
<define name="model_datatype_type">
<attribute name="name"/>
<optional><attribute name="minsize"/></optional>
<optional><attribute name="maxsize"/></optional>
</define>
<define name="modelrule_type">
<element name="datatype">
<ref name="model_datatype_type"/>
</element>
<interleave>
<optional>
<element name="varargs">
<empty/>
</element>
</optional>
<optional>
<element name="position">
<attribute name="index"/>
</element>
</optional>
<zeroOrMore>
<element name="datatype_at">
<attribute name="index"/>
<element name="datatype">
<ref name="model_datatype_type"/>
</element>
</element>
</zeroOrMore>
</interleave>
<choice>
<element name="consume">
<attribute name="storage"/>
</element>
<element name="convert_to_ptr">
<empty/>
</element>
<element name="goto_stack">
<empty/>
</element>
<element name="join">
<optional>
<attribute name="reversejustify">
<ref name="boolean_type"/>
</attribute>
</optional>
<optional>
<attribute name="align">
<ref name="boolean_type"/>
</attribute>
</optional>
<optional>
<attribute name="storage"/>
</optional>
</element>
<element name="hidden_return">
<optional>
<attribute name="voidlock">
<ref name="boolean_type"/>
</attribute>
</optional>
</element>
<element name="join_per_primitive">
<optional>
<attribute name="storage"/>
</optional>
</element>
</choice>
<zeroOrMore>
<element name="consume_extra">
<attribute name="storage"/>
</element>
</zeroOrMore>
</define>
<define name="prototype_type">
<attribute name="extrapop"/>
<attribute name="stackshift"/>
@ -377,6 +453,11 @@
</element>
</zeroOrMore>
</interleave>
<zeroOrMore>
<element name="rule">
<ref name="modelrule_type"/>
</element>
</zeroOrMore>
</element>
<element name="output">
@ -386,6 +467,11 @@
<ref name="pentry_type"/>
</element>
</zeroOrMore>
<zeroOrMore>
<element name="rule">
<ref name="modelrule_type"/>
</element>
</zeroOrMore>
</element>
<!--