# Grasshopper2.Data namespace

Assembly: [Grasshopper2](https://developer.rhino3d.com/api/gh2/assembly/grasshopper2.md)

## Interfaces

- [IExpressionReport](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.iexpressionreport.md): Collates all messages and errors that occur while applying an expression to a tree.
- [IItemAccessor](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.iitemaccessor.md): Non-generic interface for tree item accessors.
- [IItemAccessor<T>](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.iitemaccessor-1.md): Generic interface for tree item accessors.
- [ILeaf](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.ileaf.md): Non-generic interface for leaves.
- [IPathAccessor](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.ipathaccessor.md): Non-generic interface for tree path accessors.
- [IPear](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.ipear.md): Represents a combined value + meta data. The term 'pear' is chosen as a homophone of 'pair' to fit within the tree based nomenclature of Grasshopper data storage.
- [IPearAccessor](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.ipearaccessor.md): Non-generic interface for tree pear accessors.
- [IPearAccessor<T>](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.ipearaccessor-1.md): Non-generic interface for tree pear accessors.
- [IStencil](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.istencil.md): Defines a somewhat mutable, fully allocated tree to be populated at leisure. In a way this interface acts as a TreeBuilder pattern, but it is not called TreeBuilder because the size of the tree it populates must be set at construction. Maybe at some point in the future a fully mutable builder pattern will be provided in the api.
- [IStencil<T>](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.istencil-1.md): Defines a somewhat mutable, fully allocated, strongly typed tree to be populated at leisure. In a way this interface acts as a TreeBuilder pattern, but it is not called TreeBuilder because the size of the tree it populates must be set at construction. Maybe at some point in the future a fully mutable builder pattern will be provided in the api.
- [ITree](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.itree.md): Base level interface for Grasshopper data trees.
- [ITwig](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.itwig.md): Non-generic interface for tree twigs. ITwig is similar to IList but it allows for meta data to be stored in parallel with regular data.
- [ITwigAccessor](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.itwigaccessor.md): Non-generic interface for tree twig accessors.
- [ITwigAccessor<T>](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.itwigaccessor-1.md): Generic interface for tree twig accessors.

## Classes

- [ConversionRecord](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.conversionrecord.md): Maintains a collection of messages and merits that arose during a conversion process.
- [ExpansionLogic](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.expansionlogic.md): A type + expansion logic pair used in tree expansion.
- [ExpressionReport](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.expressionreport.md): Collates all messages and errors that occur while applying an expression to a tree.
- [Garden](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.garden.md): A utility class for building various kinds of trees and twigs.
- [Incrementor](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.incrementor.md): Provides a logical integer incrementer.
- [Leaf](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.leaf.md): Non-generic implementation of [ILeaf](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.ileaf.md).
- [Leaf<T>](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.leaf-1.md): Generic implementation of [ILeaf](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.ileaf.md).
- [Modifiers](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.modifiers.md): Encapsulates all standard modifiers that can be applied to a data tree.
- [NegativePathIndexException](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.negativepathindexexception.md): Exception class used to denote negative integer elements.
- [Path](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.path.md): Paths are used to identify twigs in data trees. Paths are ordered, immutable collections of non-negative integers.
- [PathException](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.pathexception.md): Exception class used in Path exceptions.
- [PathMap](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.pathmap.md): A single path mapping operation.
- [PathMappings](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.pathmappings.md): An ordered collection of [PathMap](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.pathmap.md) instances.
- [PathNode](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.pathnode.md): A single node in a recursive path structure. This is an alternate way to represent multiple paths, particularly handy for diagramming purposes.
- [Paths](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.paths.md): A sorted collection of unique paths.
- [Pear](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.pear.md): Null-safe extension methods for [IPear](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.ipear.md) and [Pear<T>](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.pear-1.md).
- [Pear<T>](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.pear-1.md): This class is the generic implementation of the [IPear](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.ipear.md) interface.
- [Site](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.site.md): Identifies a single site in a data tree. A site is the position of a single item. To identify a single item unambiguously, both a path and an index are required.
- [StencilBuilder](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.stencilbuilder.md): Utility class for instantiating generic tree stencil instances.
- [Tree](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.tree.md): A non-generic data tree.
- [Tree<T>](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.tree-1.md): Strongly typed version of the ITree interface.
- [TreeBijectionException](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.treebijectionexception.md): Exception thrown for tree bijection mismatches.
- [Twig<T>](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.twig-1.md): Type constrained re-implemention of ITwig.
- [TwigExpandException](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.twigexpandexception.md): Exception used when expanding twigs to a negative size.
- [TwigFormatting](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.twigformatting.md): Contains properties for formatting twig content as string.
- [TwigMergeMetaDataException](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.twigmergemetadataexception.md): Exception used when mismatched twigs are used during meta data merging.
- [TwigShrinkException](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.twigshrinkexception.md): Exception used when shrinking twigs to a negative size.
- [TwigSortException](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.twigsortexception.md): Exception used when a mismatched key array is used during twig sorting.
- [TypeOverlap](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.typeoverlap.md): Utility class for figuring out what base classes and interfaces a collection of types have in common.
- [VisualTreeNode](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.visualtreenode.md): A single node in a tree diagram.
- [VisualTreeStyling](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.visualtreestyling.md)
- [VisualTreeText](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.visualtreetext.md): A string with very limited character support for drawing labels in visual tree nodes.

## Structs

- [Coverage](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.coverage.md): A coverage specifies items, twigs or even entire trees using two integers. Coverages ignore actual paths, opting instead to identify elements using indices alone.

## Enums

- [ExpandMethod](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.expandmethod.md): Enumerates the possible item insertion methods for twig expansion.
- [ExpansionOptions](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.expansionoptions.md): Enumerstes various options for tree expansion, used in the ExpandEmbeddedCollections method.
- [Overlap](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.overlap.md): Enumerates the possible ways in which a shared type hierarchy can be modified.
- [PathAlignment](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.pathalignment.md): Enumerates the possible simplification options.
- [PathOverlap](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.pathoverlap.md): Enumerates the possible types of overlap between respective elements in a collection of paths.
- [PathsIndexing](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.pathsindexing.md): Enumerates the possible ways in which paths can be indexed.
- [RemovalMethod](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.removalmethod.md): Enumerates the possible behaviours for removal methods that take true/false patterns.
- [ShrinkMethod](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.shrinkmethod.md): Enumerates the possible item removal methods for twig shrinking.
- [ToArrayMethod](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.toarraymethod.md): Enumerates the possible behaviours for ToArray() methods on ITwig types.
- [TreeSimilarity](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.treesimilarity.md): Enumerates the possible similarity types between two data trees.
- [TwigFormatStyle](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.twigformatstyle.md): Enumerates several formatting styles.
