diff options
Diffstat (limited to '')
| -rw-r--r-- | include/Types.h | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/include/Types.h b/include/Types.h index c6f4b9f..3e38829 100644 --- a/include/Types.h +++ b/include/Types.h @@ -12,12 +12,19 @@ enum OBJECT_TYPE { /** A database snapshot grouping relations and tuples. */ MULTIGROUP, - /** A relation object. */ + /** A relation object backed by physical storage. */ RELATION, /** An attribute object (schema metadata). */ ATTRIBUTE, /** A transaction object. */ - TRANSACTION + TRANSACTION, + /** + * A relation whose tuples are produced on demand by a generator function + * rather than read from physical storage. Cardinality may be finite (e.g. + * a projected stored relation) or AlephZero (e.g. the eq builtin). The + * object_type for this label must be an ephemeral_object_type. + */ + EPHEMERAL_RELATION }; /** @brief Operations that may be supported by an object type. */ @@ -76,6 +83,9 @@ namespace nt void Reset() { position_ = 0; } + /** @brief Direct read-only access to all attributes without affecting position. */ + const std::vector<Attribute>& attrs() const { return attributes_; } + private: std::vector<Attribute> attributes_; size_t position_ = 0; |
