001package Torello.Browser.JsonAST;
002
003/**
004 * Enumerates the JSON property names that may appear within their JSON protocol definitions.
005 * These files
006 * 
007 * <B><CODE><A HREF='../doc-files/protocol_as_json/browser_protocol.json'>
008 * browser_protocol.json</A></CODE></B>
009 * and 
010 * <B><CODE><A HREF='../doc-files/protocol_as_json/js_protocol.json'>
011 * js_protocol.json</A></CODE></B>
012 * 
013 * contain the full specs for each of these APIs.
014 * 
015 * <BR /><BR />
016 * Each constant represents a field that could be present when describing a domain, type, command,
017 * event, property, parameter or return-value.  Instances of this enum are recorded in AST nodes to
018 * keep track of which properties were included.  This enum, effectively, enables writing 
019 * statistics &amp; diagnostics about these two {@code'.json'}-Files about the protocol as a whole.
020 * 
021 * <EMBED CLASS='external-html' DATA-FILE-ID=ENUM_PROP_NAME>
022 * <EMBED CLASS='external-html' DATA-FILE-ID=ENUM_PROP_NAME_CGPT>
023 */
024public enum PropName
025{
026    /**
027     * Protocol property {@code "type"}, indicating the schema type of the value.
028     * <EMBED CLASS='external-html' DATA-FILE-ID=PN_01_TYPE>
029     */
030    TYPE,
031
032    /**
033     * Protocol property {@code "name"}, the identifier of a {@link PPR} or a "command" or "event".
034     * <EMBED CLASS='external-html' DATA-FILE-ID=PN_02_NAME>
035     */
036    NAME,
037
038    /**
039     * Protocol property {@code "id"}, the unique identifier for a "type" definition.
040     * <EMBED CLASS='external-html' DATA-FILE-ID=PN_03_ID>
041     */
042    ID,
043
044    /**
045     * Protocol property {@code "domain"}, the name of the domain that owns this definition.
046     * <EMBED CLASS='external-html' DATA-FILE-ID=PN_04_DOMAIN>
047     */
048    DOMAIN,
049
050    /**
051     * Protocol array {@code "types"}, containing schema type definitions for a domain.
052     * <EMBED CLASS='external-html' DATA-FILE-ID=PN_05_TYPES>
053     */
054    TYPES,
055
056    /**
057     * Protocol array {@code "commands"}, listing all commands defined by a domain.
058     * <EMBED CLASS='external-html' DATA-FILE-ID=PN_06_COMMANDS>
059     */
060    COMMANDS,
061
062    /**
063     * Protocol array {@code "events"}, listing all events defined by a domain.
064     * <EMBED CLASS='external-html' DATA-FILE-ID=PN_07_EVENTS>
065     */
066    EVENTS,
067
068    /**
069     * Protocol array {@code "properties"}, defining the fields of an object type.
070     * <EMBED CLASS='external-html' DATA-FILE-ID=PN_08_PROPERTIES>
071     */
072    PROPERTIES,
073
074    /**
075     * Protocol array {@code "parameters"}, defining the inputs accepted by a command.
076     * <EMBED CLASS='external-html' DATA-FILE-ID=PN_09_PARAMETERS>
077     */
078    PARAMETERS,
079
080    /**
081     * Protocol array {@code "returns"}, defining the return values of a command.
082     * <EMBED CLASS='external-html' DATA-FILE-ID=PN_10_RETURNS>
083     */
084    RETURNS,
085
086    /**
087     * Protocol flag {@code "optional"}, a boolean marker for nullable parameters or properties.
088     * <EMBED CLASS='external-html' DATA-FILE-ID=PN_11_OPTIONAL>
089     */
090    OPTIONAL,
091
092    /**
093     * Protocol flag {@code "experimental"}, a boolean marker for unstable or evolving features.
094     * <EMBED CLASS='external-html' DATA-FILE-ID=PN_12_EXPERIMENTAL>
095     */
096    EXPERIMENTAL,
097
098    /**
099     * Protocol flag {@code "deprecated"}, a boolean marker for obsolete definitions.
100     * <EMBED CLASS='external-html' DATA-FILE-ID=PN_13_DEPRECATED>
101     */
102    DEPRECATED,
103
104    /**
105     * Protocol property {@code "description"}, free-form text documenting the definition.
106     * <EMBED CLASS='external-html' DATA-FILE-ID=PN_14_DESCRIPTION>
107     */
108    DESCRIPTION,
109
110    /**
111     * Protocol array {@code "dependencies"}, listing domains or types this one relies on.
112     * <EMBED CLASS='external-html' DATA-FILE-ID=PN_15_DEPENDENCIES>
113     */
114    DEPENDENCIES,
115
116    /**
117     * Protocol property {@code "enum"}, enumerating the fixed literal values allowed.
118     * <EMBED CLASS='external-html' DATA-FILE-ID=PN_16_ENUM>
119     */
120    ENUM,
121
122    /**
123     * Protocol property {@code "items"}, defining the element type of an array schema.
124     * <EMBED CLASS='external-html' DATA-FILE-ID=PN_17_ITEMS>
125     */
126    ITEMS,
127
128    /**
129     * Protocol property {@code "redirect"}, marking this type as an alias of another.
130     * <EMBED CLASS='external-html' DATA-FILE-ID=PN_18_REDIRECT>
131     */
132    REDIRECT,
133
134    /**
135     * Protocol property {@code "$ref"}, referencing another type definition by name.
136     * <EMBED CLASS='external-html' DATA-FILE-ID=PN_19_REF>
137     */
138    $REF;
139}