<!--Weave of 'Inform Annotations' generated by 7-->
<ulclass="crumbs"><li><ahref="../index.html">Home</a></li><li><ahref="../compiler.html">Compiler Tools</a></li><li><ahref="index.html">inter</a></li><li><ahref="index.html#M">Manual</a></li><li><b>Inform Annotations</b></li></ul><pclass="purpose">The standard set of symbol annotations used within Inform.</p>
<pclass="inwebparagraph"><aid="SP3"></a><b>§3. </b><codeclass="display"><spanclass="extract">__hex</span></code>. Applies to <codeclass="display"><spanclass="extract">constant</span></code>. Marks that the value of this constant
is most legible in hexadecimal rather than decimal. Inter itself uses
this when writing a textual inter fomr of the constant's declaration,
and the Inform back end uses it when compiling Inform 6, in that it will
compile to a hexadecimal literal like <codeclass="display"><spanclass="extract">$4F02</span></code> rather than a decimal one
like <codeclass="display"><spanclass="extract">20226</span></code>. There is no effect on the final program.
</p>
<pclass="inwebparagraph"><aid="SP4"></a><b>§4. </b><codeclass="display"><spanclass="extract">__signed</span></code>. Applies to <codeclass="display"><spanclass="extract">constant</span></code>. Marks that the value of this constant
is most legible if printed as a signed decimal literal than as an
unsigned one.
</p>
<pclass="inwebparagraph"><aid="SP5"></a><b>§5. </b><codeclass="display"><spanclass="extract">__late</span></code>. Applies to <codeclass="display"><spanclass="extract">constant</span></code>. Suggests that this should be placed late
on the final compiled code, rather than at its current place. (This clue
helps the I6 code generator to avoid not-yet-declared errors; I6 is quite
finicky about code ordering.)
</p>
<pclass="inwebparagraph"><aid="SP6"></a><b>§6. </b><codeclass="display"><spanclass="extract">__noun_filter</span></code>. Applies to <codeclass="display"><spanclass="extract">constant</span></code> which is a function. Marks that this
function is a noun filter in command parser grammar.
</p>
<pclass="inwebparagraph"><aid="SP7"></a><b>§7. </b><codeclass="display"><spanclass="extract">__scope_filter</span></code>. Applies to <codeclass="display"><spanclass="extract">constant</span></code> which is a function. Marks that this
function is a scope filter in command parser grammar.
</p>
<pclass="inwebparagraph"><aid="SP8"></a><b>§8. </b><codeclass="display"><spanclass="extract">__action</span></code>. Applies to <codeclass="display"><spanclass="extract">constant</span></code>. Marks it as the name of an action.
</p>
<pclass="inwebparagraph"><aid="SP9"></a><b>§9. </b><codeclass="display"><spanclass="extract">__fake_action</span></code>. Applies to symbols already tagged <codeclass="display"><spanclass="extract">_action</span></code>, and marks
that their actions are I6 template fake actions. (It currently contains
just four of these.)
</p>
<pclass="inwebparagraph"><aid="SP10"></a><b>§10. </b><codeclass="display"><spanclass="extract">__assimilated</span></code>. Applies to <codeclass="display"><spanclass="extract">constant</span></code>. Marks it as a symbol defined in
I6 template code which has been assimilated into memory inter.
</p>
<pclass="inwebparagraph"><aid="SP11"></a><b>§11. </b><codeclass="display"><spanclass="extract">__holding</span></code>. Applies to <codeclass="display"><spanclass="extract">constant</span></code>. This is part of a convoluted system
for handling references to constants not yet defined, in the sense that
the inter to define them has not yet been generated in memory. A "holding"
constant is used to reserve a name for later definition.
</p>
<pclass="inwebparagraph"><aid="SP12"></a><b>§12. </b><codeclass="display"><spanclass="extract">__delenda_est</span></code>. Applies to <codeclass="display"><spanclass="extract">constant</span></code>. Likewise; but marks a symbol for
<pclass="inwebparagraph"><aid="SP14"></a><b>§14. </b><codeclass="display"><spanclass="extract">__buffer_array</span></code>. Applies to <codeclass="display"><spanclass="extract">constant</span></code> which is a literal list. Asks
this to be compiled as virtual machine command parsing buffer.
</p>
<pclass="inwebparagraph"><aid="SP15"></a><b>§15. </b><codeclass="display"><spanclass="extract">__byte_array</span></code>. Applies to <codeclass="display"><spanclass="extract">constant</span></code> which is a literal list. Asks
this to be compiled as an array of bytes.
</p>
<pclass="inwebparagraph"><aid="SP16"></a><b>§16. </b><codeclass="display"><spanclass="extract">__string_array</span></code>. Applies to <codeclass="display"><spanclass="extract">constant</span></code> which is a literal list. Asks this
to be compiled as an array of bytes preceded by its size.
</p>
<pclass="inwebparagraph"><aid="SP17"></a><b>§17. </b><codeclass="display"><spanclass="extract">__table_array</span></code>. Applies to <codeclass="display"><spanclass="extract">constant</span></code> which is a literal list. Asks this
to be compiled as an array of words preceded by its size.
</p>
<pclass="inwebparagraph"><aid="SP18"></a><b>§18. </b><codeclass="display"><spanclass="extract">__inline_array</span></code>. Applies to <codeclass="display"><spanclass="extract">constant</span></code> which is a literal list. Asks that,
if this is compiled as a property value in Inform 6, it should use the inline
syntax (as is conventional for the I6 <codeclass="display"><spanclass="extract">name</span></code> property, for example).
</p>
<pclass="inwebparagraph"><aid="SP19"></a><b>§19. </b><codeclass="display"><spanclass="extract">__verb</span></code>. Applies to <codeclass="display"><spanclass="extract">constant</span></code> which is a literal list. Asks this to be
compiled as Inform 6 command parser grammar.
</p>
<pclass="inwebparagraph"><aid="SP20"></a><b>§20. </b><codeclass="display"><spanclass="extract">__meta_verb</span></code>. Applies to <codeclass="display"><spanclass="extract">constant</span></code> which is a literal list and also has
the <codeclass="display"><spanclass="extract">__verb</span></code> annotation: means that this is a "meta-verb", and should be
<pclass="inwebparagraph"><aid="SP22"></a><b>§22. </b><codeclass="display"><spanclass="extract">__bip</span></code>. Applies to <codeclass="display"><spanclass="extract">primitive</span></code>. This is used internally in the code
generator to match textual names such as <codeclass="display"><spanclass="extract">!bitwisenot</span></code> with functionality:
it's essentially a cache to avoid having to parse names over and over.
(BIP stands for "built in primitive".)
</p>
<pclass="inwebparagraph"><aid="SP23"></a><b>§23. Local variables. </b></p>
<pclass="inwebparagraph"><aid="SP24"></a><b>§24. </b><codeclass="display"><spanclass="extract">__call_parameter</span></code>. Applies to <codeclass="display"><spanclass="extract">local</span></code>. Inform's front end marks
call parameters this way in case optimisation stages in the back end might
need to know; and if nothing else, it enables the code generator to print
I6 comments showing the intention.
</p>
<pclass="inwebparagraph"><aid="SP25"></a><b>§25. </b><codeclass="display"><spanclass="extract">__implied_call_parameter</span></code>. Applies to <codeclass="display"><spanclass="extract">local</span></code>. Similarly. What
makes a call parameter "implied" is that it is not directly one of the
tokens from an Inform 7 function, but has been added for some implementation
reason. For example, a phrase option bitmap is passed as an implied call
parameter.
</p>
<pclass="inwebparagraph"><aid="SP26"></a><b>§26. Global variables. </b></p>
<pclass="inwebparagraph"><aid="SP27"></a><b>§27. </b><codeclass="display"><spanclass="extract">__explicit_variable</span></code>. Applies to <codeclass="display"><spanclass="extract">variable</span></code>. Marks this as having a name
<pclass="inwebparagraph"><aid="SP29"></a><b>§29. </b><codeclass="display"><spanclass="extract">__weak_ID</span></code>. Applies to <codeclass="display"><spanclass="extract">kind</span></code>. The weak ID of a kind is a single small
non-negative integer which is unique to that kind's constructor; it can't
distinguish between lists of X and lists of Y, but in general it can
distinguish a list from a number, or a number from a text. This annotation
marks the name of a kind with the same weak ID value which will be used
at run-time for that kind.
</p>
<pclass="inwebparagraph"><aid="SP30"></a><b>§30. </b><codeclass="display"><spanclass="extract">__source_order</span></code>. Applies (undependently) to <codeclass="display"><spanclass="extract">property</span></code> and to <codeclass="display"><spanclass="extract">kind</span></code>:
a lower value for this annotation means that one property was defined earlier
in the Inform source text that the other, and similarly for kinds.
<pclass="inwebparagraph"><aid="SP32"></a><b>§32. </b><codeclass="display"><spanclass="extract">__object_kind_counter</span></code>. Applies to <codeclass="display"><spanclass="extract">kind</span></code>. Towards the end of code
generation, it's convenient to count the subkinds of <codeclass="display"><spanclass="extract">K_object</span></code> in order
of their creation in the original source text. That count is recorded
here: <codeclass="display"><spanclass="extract">K1_thing</span></code> will get <codeclass="display"><spanclass="extract">__object_kind_counter=1</span></code>, and so on.
</p>
<pclass="inwebparagraph"><aid="SP33"></a><b>§33. </b><codeclass="display"><spanclass="extract">__arrow_count</span></code>. Applies to <codeclass="display"><spanclass="extract">instance</span></code> of objects; it's the depth in the
spatial containment tree, where 0 is the top level (usually rooms), 1 the
level for things immediately inside level-0 objects, and so on. So called
because the Inform 6 notation for containment is this many <codeclass="display"><spanclass="extract">-></span></code> arrows in
a row. This is applied only at the final stage of code generation.
</p>
<pclass="inwebparagraph"><aid="SP34"></a><b>§34. </b><codeclass="display"><spanclass="extract">__declaration_order</span></code>. Applies to <codeclass="display"><spanclass="extract">instance</span></code> of objects; it's the order
in which they are declared in the final Inform 6 code, with the first object
as 0, and so on. This is applied only at the final stage of code generation.
<pclass="inwebparagraph"><aid="SP36"></a><b>§36. </b><codeclass="display"><spanclass="extract">__either_or</span></code>. Applies to <codeclass="display"><spanclass="extract">property</span></code>. Marks it as one which is either
held or not held.
</p>
<pclass="inwebparagraph"><aid="SP37"></a><b>§37. </b><codeclass="display"><spanclass="extract">__attribute</span></code>. Applies to <codeclass="display"><spanclass="extract">property</span></code>, and only to those also annotated
with <codeclass="display"><spanclass="extract">__either_or</span></code>. Asks to compile this at run-time as a virtual machine
attribute.
</p>
<pclass="inwebparagraph"><aid="SP38"></a><b>§38. </b><codeclass="display"><spanclass="extract">__explicit_attribute</span></code>. Applies to <codeclass="display"><spanclass="extract">property</span></code>, and only to those also
annotated with <codeclass="display"><spanclass="extract">__either_or</span></code>. Marks this as not only an attribute, but one
with a name already supplied in high-level I7 source text.
</p>
<pclass="inwebparagraph"><aid="SP39"></a><b>§39. </b><codeclass="display"><spanclass="extract">__property_name</span></code>. Applies to <codeclass="display"><spanclass="extract">property</span></code>. Where a property name came from
I7 source text, and thus has a friendly sort of name ("carrying capacity",
for example), the Inform front end applies this annotation. The back end
then uses it only to help run-time I6 code prpduce better error messages
if the program uses the property incorrectly.
</p>
<pclass="inwebparagraph"><aid="SP40"></a><b>§40. </b><codeclass="display"><spanclass="extract">__rto</span></code>. Applies to <codeclass="display"><spanclass="extract">property</span></code>, and marks it as a run-time only property:
that is, not one which is explicitly present in the Inform 7 source text,
but one which has been added to provide run-time support for some feature.
</p>
<pclass="inwebparagraph"><aid="SP41"></a><b>§41. </b><codeclass="display"><spanclass="extract">__source_order</span></code>. Applies (undependently) to <codeclass="display"><spanclass="extract">property</span></code> and to <codeclass="display"><spanclass="extract">kind</span></code>:
a lower value for this annotation means that one property was defined earlier
in the Inform source text that the other, and similarly for kinds.
<ulclass="toc"><li><ahref="M-ip.html">Back to 'Inform Primitives'</a></li><li><ahref="M-io.html">Continue with 'Inform Organisation'</a></li></ul><hrclass="tocbar">