We introduce the architecture around structs definitions, and definitions in general.
The idea of a definition is that it is a general schema construct outside the regular thing and type system - this will initially be used for structs and functions.
Definitions are interesting because their interesting payload is in the value, not the key. However, the key contains the ID of the definition. As a result, you can consider the new DefinitionKey to be analogous to TypeVertex, but the interesting data structure is the StructDefinition, which serialises a struct's content.
In doing this, we also realise that ValueType must encompass the built-in value type category, plus the ID of the struct definition, and create a new ValueTypeCategory which can map to a Prefix and doesn't contain the ID of struct definitions. Lastly, we create a the serialised form of ValueTypeBytes, which is used as the property of an attribute type's value type, including the definition ID if it exists.
What isn't implemented yet:
The indexing + retrieval by name of value types through the TypeManager
Serialisation of StructDefinition
The data insertion and deletion pattern of struct instantiations
Usage and product changes
We introduce the architecture around structs definitions, and definitions in general.
The idea of a
definition
is that it is a general schema construct outside the regularthing
andtype
system - this will initially be used for structs and functions.Definitions are interesting because their interesting payload is in the value, not the key. However, the key contains the ID of the definition. As a result, you can consider the new
DefinitionKey
to be analogous toTypeVertex
, but the interesting data structure is theStructDefinition
, which serialises a struct's content.In doing this, we also realise that
ValueType
must encompass the built-in value type category, plus the ID of the struct definition, and create a newValueTypeCategory
which can map to a Prefix and doesn't contain the ID of struct definitions. Lastly, we create a the serialised form ofValueTypeBytes
, which is used as the property of an attribute type's value type, including the definition ID if it exists.What isn't implemented yet:
StructDefinition