Defining the one true set of Inter annotation codes.

§1.

enum INVALID_IANN from 0

enum PROPERTY_NAME_IANN
enum INNER_PROPERTY_NAME_IANN
enum HEX_IANN
enum SIGNED_IANN
enum CALL_PARAMETER_IANN
enum IMPLIED_CALL_PARAMETER_IANN

enum ACTION_IANN
enum APPEND_IANN
enum ARROW_COUNT_IANN
enum ASSIMILATED_IANN
enum BIP_CODE_IANN
enum BUFFERARRAY_IANN
enum BYTEARRAY_IANN
enum DECLARATION_ORDER_IANN
enum EITHER_OR_IANN
enum ENCLOSING_IANN
enum FAKE_ACTION_IANN
enum OBJECT_IANN
enum INLINE_ARRAY_IANN
enum METAVERB_IANN
enum NOUN_FILTER_IANN
enum OBJECT_KIND_COUNTER_IANN
enum SCOPE_FILTER_IANN
enum SOURCE_ORDER_IANN
enum TABLEARRAY_IANN
enum VERBARRAY_IANN
enum EXPLICIT_VARIABLE_IANN
enum TEXT_LITERAL_IANN
enum VENEER_IANN
enum SYNOPTIC_IANN
enum I6_GLOBAL_OFFSET_IANN
enum C_ARRAY_ADDRESS_IANN

§2. And also the canonical set of bits to use in the flags word for an Inter symbol.

define LABEL_ISYMT    0x00000000
define MISC_ISYMT     0x00000001
define PACKAGE_ISYMT  0x00000002
define PTYPE_ISYMT    0x00000003
define SYMBOL_TYPE_MASK_ISYMT 0x00000003
define PRIVATE_ISYMS  0x00000000
define PUBLIC_ISYMS   0x00000004
define EXTERNAL_ISYMS 0x00000008
define PLUG_ISYMS     0x0000000C
define SOCKET_ISYMS   0x00000010
define SYMBOL_SCOPE_MASK_ISYMT 0x0000001C
define TRAVERSE_MARK_BIT       0x00000020
define ATTRIBUTE_MARK_BIT      0x00000040
define USED_MARK_BIT           0x00000100
define MAKE_NAME_UNIQUE        0x00000200
define ERROR_ISSUED_MARK_BIT   0x00000400
define NONTRANSIENT_SYMBOL_BITS (MAKE_NAME_UNIQUE + SYMBOL_TYPE_MASK_ISYMT + SYMBOL_SCOPE_MASK_ISYMT)

§3.

void Inter::Canon::declare(void) {
    invalid_IAF = Inter::Annotations::form(INVALID_IANN, I"__invalid", FALSE);

    name_IAF = Inter::Annotations::form(PROPERTY_NAME_IANN, I"__property_name", TRUE);
    inner_pname_IAF = Inter::Annotations::form(INNER_PROPERTY_NAME_IANN, I"__inner_property_name", TRUE);
    Inter::Annotations::form(HEX_IANN, I"__hex", FALSE);
    Inter::Annotations::form(SIGNED_IANN, I"__signed", FALSE);
    Inter::Annotations::form(CALL_PARAMETER_IANN, I"__call_parameter", FALSE);
    Inter::Annotations::form(IMPLIED_CALL_PARAMETER_IANN, I"__implied_call_parameter", FALSE);

    Inter::Annotations::form(ACTION_IANN, I"__action", FALSE);
    Inter::Annotations::form(APPEND_IANN, I"__append", TRUE);
    Inter::Annotations::form(ARROW_COUNT_IANN, I"__arrow_count", FALSE);
    Inter::Annotations::form(ASSIMILATED_IANN, I"__assimilated", FALSE);
    Inter::Annotations::form(BIP_CODE_IANN, I"__bip", FALSE);
    Inter::Annotations::form(BUFFERARRAY_IANN, I"__buffer_array", FALSE);
    Inter::Annotations::form(BYTEARRAY_IANN, I"__byte_array", FALSE);
    Inter::Annotations::form(DECLARATION_ORDER_IANN, I"__declaration_order", FALSE);
    Inter::Annotations::form(EITHER_OR_IANN, I"__either_or", FALSE);
    Inter::Annotations::form(ENCLOSING_IANN, I"__enclosing", FALSE);
    Inter::Annotations::form(FAKE_ACTION_IANN, I"__fake_action", FALSE);
    Inter::Annotations::form(OBJECT_IANN, I"__object", FALSE);
    Inter::Annotations::form(INLINE_ARRAY_IANN, I"__inline_array", FALSE);
    Inter::Annotations::form(METAVERB_IANN, I"__meta_verb", FALSE);
    Inter::Annotations::form(NOUN_FILTER_IANN, I"__noun_filter", FALSE);
    Inter::Annotations::form(OBJECT_KIND_COUNTER_IANN, I"__object_kind_counter", FALSE);
    Inter::Annotations::form(SCOPE_FILTER_IANN, I"__scope_filter", FALSE);
    Inter::Annotations::form(SOURCE_ORDER_IANN, I"__source_order", FALSE);
    Inter::Annotations::form(TABLEARRAY_IANN, I"__table_array", FALSE);
    Inter::Annotations::form(VERBARRAY_IANN, I"__verb", FALSE);
    Inter::Annotations::form(EXPLICIT_VARIABLE_IANN, I"__explicit_variable", FALSE);
    Inter::Annotations::form(TEXT_LITERAL_IANN, I"__text_literal", FALSE);
    Inter::Annotations::form(VENEER_IANN, I"__veneer", FALSE);
    Inter::Annotations::form(SYNOPTIC_IANN, I"__synoptic", FALSE);
    Inter::Annotations::form(I6_GLOBAL_OFFSET_IANN, I"__global_offset", FALSE);
    Inter::Annotations::form(C_ARRAY_ADDRESS_IANN, I"__array_address", FALSE);
}