aboutsummaryrefslogtreecommitdiffstats
path: root/include/Types.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/Types.h')
-rw-r--r--include/Types.h14
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;