Namespace Mangrove.MetricSetSyntaxTree
Classes
Expression
Base class for all expression nodes in the syntax tree.
Expression<TExpr, TTable>
Wrapper for "an expression which only lives in a certain type of table".
MetricSetMetadata
Metadata (e.g. name, version) connected to a metric set.
MetricsPlan
Handle for the (de)serializable contract, containing flat lists of Expression and Table objects, any needed binaries, and MetricSetMetadata.
Table
Wrapper for a collection of expressions.
Table<T>
Strongly typed version of Table which requires "parents" and "clone" operations.
Interfaces
ICloneable<T>
Nodes in a IDirectedAcyclicGraph<T> which, although immutable, may be cloned given a new collection of parent nodes. This allows parent replacement logic to be shared across Expression and Table nodes.
ICloneable<TSubnode, TIdentifier, TNode>
Instances of ICloneable<T> having an additional "clone" method which takes an identifier and is more strongly typed than the generic Clone(IReadOnlyList<T>) method.
IDirectedAcyclicGraph<T>
Wrapper abstraction for an "object which has a collection of parents", to allow for some shared code between Expression and Table.
IExpressionVisitor
This interface gives the "visitor pattern" that must be implemented to define mappings on expression syntax trees.
IGenericExpressionVisitor<T>
Standardize expression visitors which "return something".
IGenericTableVisitor<T>
Standardize table visitors which "return something".
IGenericVisitor<T>
Wrapper interface for visitors which "return something". This is useful for standardizing the name of the "return property".
ITableVisitor
This interface gives the "visitor pattern" that must be implemented to define mappings on metric tables.
IVisitable<TVisitor>
It can accept a TVisitor
!