| ▼NLeMP | The lexical macro processor. Main classes: LeMP.Compiler and LeMP.MacroProcessor. |
| ►NPrelude | Defines prelude macros, which are predefined macros that normally do not have to be explicitly imported before use (in LES or EC#). |
| CBuiltinMacros | Defines noMacro(...) for suppressing macro expansion and import macros your.namespace.name as an alias for #importMacros(your.namespace.name). |
| ►NTest | |
| CTestMacros | |
| CCompiler | A class that helps you invoke MacroProcessor on on a set of source files, given a set of command-line options. |
| CContainsMacrosAttribute | Marks a class to be searched for macros. |
| CIMacroContext | This interface provides services offered by the lexical macro processor (LeMP). |
| CInputOutput | For LeMP: an input file plus per-file options (input and output language) and output code. |
| CLexicalMacroAttribute | Marks a method as an LEL simple macro. |
| CMacroContext | Standard extension methods for IMacroContext. |
| CMacroInfo | Data returned from IMacroContext.AllKnownMacros |
| CMacroProcessor | Encapsulates the LeMP engine, a simple LISP-style macro processor, suitable for running LLLPG and other lexical macros. |
| CTestCompiler | A simple version of Compiler that takes a single input and produces a StringBuilder. Pre-opens LeMP.Prelude namespace. |
| ▼NLoyc | Main Loyc namespace. This namespace includes all general-purpose code in the Loyc megaproject. It includes the code of Loyc.Essentials.dll and Loyc.Collections.dll (collections, geometry, MiniTest, MessageSink, etc.), and also the code of Loyc.Syntax.dll. |
| ►NCollections | Contains general-purpose interfaces (Loyc.Collections.IListSource{T}, ranges, etc.), collection implementations (Loyc.Collections.DList{T}, Loyc.Collections.WeakValueDictionary{K,V}, etc.), extension methods (Loyc.Collections.LCExt, Loyc.Collections.EnumerableExt, etc.), helper classes (Loyc.Collections.EmptyList{T}, (Loyc.Collections.Repeated{T}, etc.), and adapter classes (Loyc.Collections.ListSlice{T}, Loyc.Collections.BufferedSequence{T}, etc.). |
| ►NImpl | Contains helper classes and base classes for implementing collections (Loyc.Collections.Impl.InternalList{T}, Loyc.Collections.Impl.ListExBase{T}, Loyc.Collections.Impl.ListSourceBase{T}, etc.) Also contains the AList and CPTrie node classes, which perhaps should not be public... |
| CAListIndexer< K, T > | Observes changes and builds a table of items in the tree. |
| ►CAListInnerBase< K, T > | Internal implementation class. Shared base class of internal nodes for AList{T}, SparseAList{T}, BList{T}, BMultiMap{K,V} and BDictionary{K,V}. |
| CEntry | |
| CAListLeaf< K, T > | Internal implementation class. Shared code of non-sparse AList leaf nodes. |
| CAListNode< K, T > | Internal implementation class. Base class for tree nodes in a list class derived from AListBase{T}. These nodes basically form an in-memory B+tree, not necessarily sorted, but structured like a B+tree. That means there are two node types: leaf and inner (internal) nodes. |
| CAListTreeObserverExt | Helper methods for IAListTreeObserver{K,T}. |
| CBaseDictionary< TKey, TValue > | A base class for user-defined dictionaries that want to implement both IDictionary(K,V) and IReadOnlyDictionary(K, V). |
| CBListLeaf< K, T > | Internal implementation class. Leaf node of BList{T} and BDictionary{K,V}. |
| ►CCPByteTrie< TValue > | A compact patricia trie that uses byte arrays as keys. |
| CEnumerator | |
| CCPEnumerator< T > | Traverses a CPTrie{T}. Returned by CPTrie{T}.ValueEnumerator(). |
| ►CCPIntTrie< TValue > | A trie that supports signed and unsigned keys with sizes up to 64 bits. Special encodings are used to preserve the sort order among integers of different sizes while using variable-length keys. |
| CIntEnumerator | |
| CLongEnumerator | |
| CEnumeratorFrame< T > | A standard base class for enumerator frames used by NestedEnumerator{EnumeratorFrame{T},T}. |
| CIAListTreeObserver< K, T > | An interface that is called to notify observers when items or nodes in the tree of a class derived from AListBase{K,T} (e.g. AList or BList) are added or removed. |
| CIEnumeratorFrame< Frame, T > | Helper interface for NestedEnumerator{Frame, T}. |
| ►CInternalDList< T > | A compact auto-enlarging deque structure that is intended to be used within other data structures. It should only be used internally in "private" or "protected" members of low-level code. In most cases, you should use DList{T} instead. |
| CEnumerator | |
| CInternalList | Contains static methods to help manage raw arrays with even less overhead than InternalList{T}. |
| CInternalList< T > | A compact auto-enlarging array structure that is intended to be used within other data structures. It should only be used internally in "private" or "protected" members of low-level code. |
| ►CInternalSet< T > | A hash-trie data structure for use inside other data structures. |
| CEnumerator | |
| CInternalSetStats | Statistics returned from InternalSet{T}.CountMemory. |
| CKeylessHashtable< T > | A fairly obscure space-saving hashtable that offers no built-in way to store keys, only values. Because there are no keys, the hashtable cannot be rehashed when it is full, and searching for a given key finds all values in the same bucket, some of which may be unrelated. |
| CKeylessHashtable< T, Int, Math > | The concrete implementation of KeylessHashtable{T}. Do not use directly; instead, call KeylessHashtable{T}.New. |
| CKeyWalker | Internal implementation class. Represents a pointer to a location within a byte array. |
| CListExBase< T > | A base class for classes that wish to implement IListEx{T}. Provides default implementations for most of the methods. |
| CListSourceBase< T > | A base class for read-only collections that wish to implement IList{T} and IListSource{T}. Provides default implementations for most of the methods. |
| CReadOnlyCollectionBase< T > | Helps you implement read-only collections by providing default implementations for most methods of ICollection{T} and IReadOnlyCollection{T}. |
| CSCell | Standard cell, used to encode keys in a CPSNode |
| ►CSparseAListLeaf< T > | Internal implementation class. Leaf node of SparseAList{T}. |
| CEntry | |
| CTestHelpers | Helpers methods for unit tests for Loyc collection classes. |
| CAList< T > | An all-purpose list structure with the following additional features beyond what's offered by List{T}: fast insertion and deletion (O(log N)), batch insertion and deletion, observability, fast cloning, freezability, and fast splitting and joining of large collections. |
| ►CAListBase< K, T > | Base class for the indexed tree-based data structures known as AList{T} and BList{T}. |
| CEnumerator | |
| CObserverMgr | A multiplexer that is only created for ALists that have two or more attached intances of IAListTreeObserver{K,T}. |
| CAListBase< T > | Common base class of AList{T} and SparseAList{T}. Most of the functionality of the two types is identical, so this class is used to share code between them. |
| CAListReverseView< K, T > | A reverse view of an AList. |
| CArrayOf4< T > | |
| CArraySlice< T > | Adapter: Provides access to a section of an array. |
| CBDictionary< K, V > | An sorted dictionary that is efficient for all operations and offers indexed access to its list of key-value pairs. |
| CBijection< K1, K2 > | A bijection is a one-to-one function and its inverse. It is implemented with a pair of dictionaries, one that maps K1 to K2 and another that maps K2 to K1. |
| CBList< T > | An sorted in-memory list that is efficient for all operations and offers indexed access to its list. |
| ►CBMultiMap< K, V > | An sorted dictionary that allows multiple values to be associated with a single key. Note: both keys and values must be comparable. |
| CValueList | Represents the set of values associated with a particular key in a BMultiMap{K,V} collection. |
| CBufferedSequence< T > | Adapter: This class wraps an IEnumerator{T} or IEnumerable{T} into an IListSource{T}, lazily reading the sequence as TryGet is called. |
| CCG | Contains global functions of Loyc.Collections that don't belong in any specific class. |
| CCollectionAsReadOnly< T > | Adapter: a read-only wrapper that implements ICollection(T) and IReadOnlyCollection(T), returned from LCExt.AsReadOnly{T}. |
| CCollectionDebugView< T > | This helper class gives a nice view of a custom collection within the debugger. |
| ►CCPStringTrie< TValue > | A compact patricia trie that uses strings as keys. |
| CEnumerator | Enumerates key-value pairs in a CPStringTrie. |
| CKeyCollection | Return value of CPStringTrie{T}.Keys. |
| CKeyEnumerator | Enumerates keys of a CPStringTrie. |
| CCPTrie< T > | Compact patricia tree class that stores keys as byte arrays. This class is intended to be use as a base class; a derived class can give meaning to the byte arrays, e.g. CPStringTrie encodes strings into byte arrays so they can be placed in the trie. |
| CCPValueCollection< T > | Provides read-only access to the values of a CPTrie. |
| CDictionaryDebugView< K, V > | Workaround for a limitation of the debugger: it doesn't support CollectionDebugView{T} when T is KeyValuePair{K,V}. This class is identical, except that T is replaced with KeyValuePair{K,V}. |
| CDictionaryExt | Extension methods for Dictionary{K,V} and IDictionary{K,V}. |
| CDList | This class is the same as DList{object} except that it also implements the IList interface. |
| CDList< T > | A compact auto-enlarging list that efficiently supports supports insertions at the beginning or end of the list. |
| CEmptyArray< T > | EmptyArray{T}.Value lets you avoid allocating an empty array on the heap. |
| CEmptyEnumerator< T > | Helper class: an empty enumerator. |
| CEmptyList< T > | Helper class: EmptyList{T}.Value is a read-only empty list. |
| CEmptySequenceException | An exception thrown by methods or properties that require a non-empty sequence but were provided with an empty sequence. |
| CEnumerableExt | Additional extension methods for IEnumerable{T}, beyond what LINQ provides. |
| CEnumerationException | An exception thrown by an enumerator when it detects that the collection was modified after enumeration started but before it finished. |
| CEnumeratorBase< T > | Base class to help you implement the standard IEnumerator{T} interface. All you have to do is override MoveNext() and, when successful, set the Current property. |
| ►CFVList< T > | A reference to a FVList, a so-called persistent list data structure. |
| CEnumerator | Enumerator for FVList; also used by FWList. |
| CFWList< T > | FWList is the mutable variant of the FVList data structure. |
| CIAdd< in T > | An interface for depositing items. Includes only an Add(T) method. |
| CIAddRange< T > | An interface typically implemented alongside ICollection{T}, for collection types that can add multiple items in one method call. |
| CIArray< T > | This interface models the capabilities of an array: getting and setting elements by index, but not adding or removing elements. |
| CIAutoCreatePool< in TKey, out TValue > | Represents a pool of objects in which an object is automatically created when requested by its key. |
| CIAutoSizeArray< T > | An auto-sizing array is a list structure that allows you to modify the element at any index, including indices that don't yet exist; the collection automatically adds missing indices. |
| CIBinumerable< T > | Interface for a collection that can return IBinumerator{T}s pointing to the beginning and end of the collection. |
| CIBinumerator< T > | Extends the "enumerator" concept to allow backward enumeration. |
| CIBRange< out T > | A bidirectional range. Allows you to read or remove the first or last element in a range. |
| CIBRangeEx< R, T > | A bidirectional range that can perform operations such as intersection and overlap tests on pairs of ranges of the same type. |
| CIBRangeEx< T > | A bidirectional range that can perform operations such as intersection and overlap tests on pairs of ranges. |
| CICharSource | A read-only list of characters plus a Slice(int,int) method. |
| CICollectionAndReadOnly< T > | This interface combines the original ICollection{T} with IReadOnlyCollection{T}. It exists for the same reason as IListAndListSource{T}, to fix ambiguity errors. |
| CICollectionEx< T > | This interface combines the original ICollection(T) interface with IReadOnlyCollection(T), ISinkCollection(T), and IAddRange(T), a convenient way to implement all three. |
| CICount | Holds the Count property found in nearly all collection interfaces. |
| CIDeque< T > | Represents a double-ended queue that allows items to be added or removed at the beginning or end. |
| CIFRange< out T > | A forward range. Allows you to read the first element from the range or skip it. The forward range lays the foundation for IBRange{T} and IRange{T}. |
| CIIsEmpty | Holds the IsEmpty property that tells you if a collection is empty. |
| CIListAndListSource< T > | This interface combines the original IList{T} interface with its "source" (read-only) component interfaces, including IReadOnlyList{T}, plus IListSource{T}. |
| CIListEx< T > | This interface combines the original IList(T) interface with several IListSource(T), ISinkList(T), IArray(T) and several additional methods (e.g. RemoveAll, InsertRange). |
| CIListRangeMethods< T > | An interface typically implemented alongside IList{T} for collection types that can add or remove multiple items in one method call. |
| CIListSource< out T > | A read-only list indexed by an integer. |
| CIMBinumerator< T > | A mutable bidirectional enumerator interface. Please note that the "Remove" method always moves to the next item, even though the Binumerator is capable of moving backward. |
| CIMBRange< T > | A mutable bidirectional range. |
| CIMEnumerator< T > | A mutable enumerator interface. Provides a "Remove" method like Java iterators have, and allows you to modify the current item. |
| CIMFRange< T > | A mutable forward range. |
| CIMRange< T > | A mutable random-access range. |
| CIndexedAList< T > | A simple wrapper around AList that includes an AListIndexer{K,T} that can be used to find items relatively quickly in a large list. When an index is built and the list is large, it accelerates IndexOf(item), Contains(item) and Remove(item). |
| CINegArray< T > | This interface models the capabilities of an array: getting and setting elements by index, but not adding or removing elements. This interface is the counterpart to IListSource{T} for lists whose minimum index is not (necessarily) zero. |
| CINegAutoSizeArray< T > | An auto-sizing array is a list structure that allows you to modify the element at any index, including indexes that don't yet exist; the collection automatically adds missing indexes. |
| CINegDeque< T > | Represents a Deque that supports negative indexes. In this kind of Deque, pushing and popping elements does not affect the indexes of the other elements in the collection. |
| CINegListSource< T > | This interface is the counterpart to IListSource{T} for lists whose minimum index is not (necessarily) zero. |
| CINotifyListChanging< T > | Encapsulates the ListChanging event that notifies listeners of dynamic changes to an indexed list, such as when items get added and removed or the whole list is refreshed. |
| CInvertibleSet< T > | An immutable set that can be inverted. For example, an InvertibleSet<int> could contain "everything except 4 and 10", or it could contain a positive set such as "1, 2, and 3". |
| CIPop< T > | Represents a collection that produces a sequence of items, and can return the next item without popping it (the Peek operation). |
| CIPush< T > | Represents a collection that accepts a sequence of items. |
| CIQueue< T > | Represents a FIFO (first-in-first-out) queue. |
| CIRange< out T > | A random-access range, also known as a "slice". Allows you to narrow down the range like IBRange{T} does, and also provides random access via IListSource{T}. |
| CIRangeEx< R, T > | A random-access range that can perform operations such as intersection and overlap tests on pairs of ranges of the same type. |
| CIRangeEx< T > | A random-access range that can perform operations such as intersection and overlap tests on pairs of ranges. |
| CISetImm< T > | An immutable set that supports numerous set operations. |
| CISetImm< T, SetT > | An immutable set of type SetT with elements of type T. |
| CISetOperations< in T, in InSetT, out OutSetT > | |
| CISetOperations< in T, SetT > | Set-combining operations: With, Without, Union, Intersect, Except, Xor. |
| CISinkArray< T > | Represents a write-only array. |
| CISinkCollection< T > | Represents a write-only collection: you can modify it, but you cannot learn what it contains. |
| CISinkList< T > | Represents a write-only indexable list class. |
| CISparseList< T > | Represents a sparse list that allows insertion and removal of items and empty spaces. In a sparse list, some spaces can be "clear" meaning that they have no value. |
| CISparseListEx< T > | A sparse list that supports additional methods including InsertRange(int, ISparseListSource{T}). |
| CISparseListSource< T > | Represents a read-only indexed list in which parts of the index space may be unused or "clear". |
| CIStack< T > | Represents a LIFO (last-in-first-out) stack. |
| CKeyAlreadyExistsException | An exception thrown by dictionary objects when they are asked to "add" a key-value pair that already exists. |
| ►CKeyCollection< TKey, TValue > | Adapter: this is a read-only collection of Keys read from a generic IDictionary. It is a modified version of Dictionary{TKey, TValue}.KeyCollection from the Mono project, changed to use IDictionary instead of Dictionary. |
| CEnumerator | |
| CLCExt | Extension methods for Loyc Collection interfaces (such as IListSource{T}) and for Loyc Collection adapters (such as AsReadOnly{T}, which returns a CollectionAsReadOnly{T} adapter.) |
| CLCInterfaces | This class contains extension methods that are provided as part of various Loyc.Collections interfaces. For example, it provides methods such as IndexOf(), Contains() and CopyTo(), that the traditional ICollection{T} and IList{T} interfaces require the author to write himself. |
| CLinqToCollections | Work in progress. This class will enhance LINQ-to-Objects with type-preserving and/or higher-performance extension methods. |
| CListAsListSource< T > | Helper type returned from LCExt.AsListSource{T}. |
| CListChangeInfo< T > | Contains information about how a collection is about to change. |
| CListExt | Extension methods and helper methods for List{T}, IList{T}, IReadOnlyList{T}, arrays, IListSource{T}, and for related mutable interfaces such as IArray{T}. |
| CListSlice< T > | Adapter: a wrapper of a list that provides a view of a range of elements. Objects of this type are returned from ListExt.Slice{T} |
| CListSourceAsList< T > | Adapter: a read-only wrapper that implements IList(T) and IListSource(T), returned from LCExt.AsList{T}. |
| CListSourceAsSparse< T > | Adapter from IListSource{T} to ISparseListSource{T}. |
| CListSourceDebugView< T > | This helper class gives a nice view of a custom collection within the debugger. |
| CMap< K, V > | An immutable dictionary. |
| CMapOrMMap< K, V > | Common base class that contains code shared between Map{K,V} and MMap{K,V}. |
| CMMap< K, V > | A dictionary class built on top of InternalSet<KeyValuePair<K,V>>. |
| CMSet< T > | A mutable set. |
| CNegList< T > | Adapter: provides a view of an IList{T} in which the Count is the same, but the minimum index is not necessarily zero. Returned from LCExt.NegView{T}(IList{T},int). |
| CNegListSlice< T > | Adapter: a random-access range for a slice of an INegListSource{T}. |
| CNegListSource< T > | Adapter: provides a view of an IListSource{T} in which the Count is the same, but the minimum index is not necessarily zero. Returned from LCExt.NegView{T}(IListSource{T},int). |
| CNestedEnumerable< Frame, T > | Helper type. You pass a cloneable Frame object to the constructor, and then a copy of this Frame is used to construct a new NestedEnumerator{Frame,T} each time the user calls GetEnumerator. |
| CNestedEnumerator< Frame, T > | Helper class. An enumerator that helps enumerate tree data structures. It maintains a virtual call stack that avoids the performance hit of using nested "yield return" statements in C#. |
| ►CNumRange< Num, Math > | Represents a range of integers of a specified data type. |
| CEnumerator | |
| CRangeEnumerator< R, T > | Helper struct: enumerates through a forward range (IFRange{T}), calling the range methods through R instead of through IFRange{T}. |
| CRangeEnumerator< T > | Helper struct: enumerates through a forward range (IFRange{T}). |
| CRangeExt | Extension/helper methods for ranges. |
| CReadOnlyAsCollection< T > | A read-only wrapper that implements ICollection(T) and ISource(T), returned from LCExt.AsCollection{T} |
| CRepeated< T > | Helper struct. A sequence that stores one value, but acts like a list in which that value is repeated a specified number of times. Returned from Range.Repeat{T}. |
| CReverseBinumerator< T > | Adapter: a IBinumerator{T} that swaps the MoveNext() and MovePrev() methods. |
| CReversedList< T > | Adapter: a reversed of an IList{T}. TODO: unit tests. |
| CReversedListSource< T > | Adapter: reversed view of IListSource{T} returned from LCExt.Reverse{T}. |
| CSelectListSource< T, TResult > | Helper class: provides a modified view of an IListSource by transforming each element on-demand. Objects of this type are returned from LCExt.Select{T,TResult}(IListSource{T},Func{T,TResult}) |
| CSelectNegLists< T > | Adapter: provides a view of an IList{T} in which element [i] is a NegList{T} N such that N[0] refers to element [i] in the original list. See LCExt.NegLists{T}(IList{T}) for more information. |
| CSelectNegListSources< T > | Adapter: provides view of an IListSource{T} in which element [i] is a NegListSource{T} N such that N[0] refers to element [i] in the original list. See LCExt.NegLists{T}(IListSource{T}) for more information. |
| ►CSet< T > | An immutable set. |
| CEnumerator | Enumerator for MSet{T}. |
| CSimpleCache< T > | A cache designed to save memory by sharing instances of identical strings and other immutable objects. |
| CSlice_< T > | Adapter: a random-access range for a slice of an IListSource{T}. |
| CSparseAList< T > | A sparse A-List that implements ISparseList{T}. |
| CStringSlice | A random-access slice of System.String. |
| CUpCastListSource< T, TOut > | Helper class for treating a collection of a derived type as a collection of a base type or interface. |
| CUpCastSource< T, TOut > | Helper class for treating a collection of a derived type as a collection of a base type or interface. |
| ►CValueCollection< TKey, TValue > | Adapter: this is a read-only collection of Values read from a generic IDictionary. It is a modified version of Dictionary{TKey, TValue}.ValueCollection from the Mono project, changed to use IDictionary instead of Dictionary. |
| CEnumerator | Return type of GetEnumerator(). |
| ►CVList< T > | VList represents a reference to a reverse-order FVList. |
| CEnumerator | Enumerates through a VList from index 0 up to index Count-1. |
| CVListBlock< T > | VListBlock implements the core functionality of FVList, VList, FWList and WList. It is not intended to be used directly. |
| CVListBlockArray< T > | Implementation of VListBlock(of T) that contains an array. It is always initialized with at least one item, and items cannot be removed unless the list is mutable. |
| CVListBlockOfTwo< T > | The tail of a VList contains only one or two items. To improve efficiency slightly, these two-item lists are represented by a VListBlockOfTwo, which is more compact than VListBlockArray. |
| CWeakKeyComparer< T > | Compares objects of the given type or WeakKeyReferences to them for equality based on the given comparer. Note that we can only implement IEqualityComparer{T} for T = object as there is no other common base between T and WeakKeyReference{T}. We need a single comparer to handle both types because we don't want to allocate a new weak reference for every lookup. |
| CWeakKeyDictionary< TKey, TValue > | A dictionary with weak keys. |
| CWeakKeyReference< T > | Provides a weak reference to an object of the given type to be used in a WeakDictionary along with the given comparer. |
| CWeakValueDictionary< K, V > | A dictionary in which the values are weak. When a value has been garbage- collected, the dictionary acts as if the key is not present (except the Remove() method, which saves time by not checking whether the value is dead.) |
| CWList< T > | WList is the mutable variant of the VList data structure. |
| CWListBase< T > | Shared base class of FWList and WList. |
| CWListProtected< T > | WList implementation in which the WList operations are only accessible to a derived class. |
| ►NEcs | |
| ►NParser | Enhanced C# parser |
| CCommentSaver | A helper class that removes comments from a token stream, saving them into a list. This class deletes whitespace, but adds tokens to a list. |
| CEcsLexer | Lexer for EC# source code (see ILexer{Token}). |
| CEcsParser | Parses Enhanced C# code into a sequence of Loyc trees (LNode), one per top-level statement. |
| CEcsPreprocessor | Handles EC# processor directives. |
| CTokenExt | Provides the Type() extension method required by Token and the ToString(Token) method to express an EC# token as a string, for tokens that contain sufficient information to do so. |
| CEcsLanguageService | The Value property provides easy access to the lexer, parser and printer for Enhanced C#. |
| CEcsNodePrinter | Prints a Loyc tree to EC# source code. |
| CEcsPrecedence | Contains Precedence objects that represent the precedence rules of EC#. |
| CEcsValidators | A class filled with methods for checking whether a node has the correct LNode.Name and structure. For example, IsPropertyDefinition(node) checks whether node meets the requirements for being a property definition, such as having a Name equal to #property, and having name and return value that are complex identifiers. |
| ►NGeometry | Contains math code and data types for processing geometry (points, lines, polygons, etc.). Basic geometry stuff is in Loyc.Essentials.dll, while more advanced algorithms are found in Loyc.Utilities.dll. |
| CBoundingBox< T > | Holds a mutable 2D bounding rectangle. |
| CBoundingBoxExt | Extension methods for BoundingBox{T}. |
| CBoundingBoxMath | Math and extension methods for BoundingBox{T}. |
| CINewPoint3< Point, T > | This interface exists to work around a limitation of C#; see IPoint{T} and IPoint3{T}. |
| CINewPoint< Point, T > | This interface exists to work around a limitation of C#; see IPoint{T}. |
| CINewRectangle3< Rect, T > | This interface exists to work around a limitation of C#; see IRectangle3{T}. |
| CINewRectangle< Rect, T > | This interface exists to work around a limitation of C#; see IRectangle{T}. |
| CIPoint3< T > | A mutable 3D point with X, Y, and Z coordinates. |
| CIPoint3Base< T > | This interface exists to work around a limitation of C#; use IPoint{T} instead. |
| CIPoint3Reader< T > | Interface for reading the coordinates of a 3D point. |
| CIPoint< T > | A mutable 2D point with X and Y coordinates. |
| CIPointBase< T > | This interface exists to work around a limitation of C#; use IPoint{T} instead. |
| CIPointReader< T > | Interface for reading the coordinates of a 2D point. |
| CIRectangle3< T > | Represents a mutable 3D rectangle. |
| CIRectangle3Base< T > | Represents a mutable 3D rectangular prism. |
| CIRectangle3Reader< T > | Represents a read-only 3D rectangular prism. |
| CIRectangle< T > | Represents a mutable 2D rectangle. |
| CIRectangleBase< T > | Represents a mutable 2D rectangle. |
| CIRectangleReader< T > | Represents a read-only 2D rectangle. |
| CISize3Reader< T > | Interface for reading the size of a 3D object. |
| CISizeReader< T > | Interface for reading the size of a 2D object. |
| CLineMath | Contains algorithms that operate on lines. |
| CLineSegment3< T > | Holds a 3D line segment. |
| CLineSegment< T > | Holds a 2D line segment. |
| CPoint3< T > | A 3D point (X-Y-Z triplet) structure. |
| CPoint< T > | A 2D point (X-Y pair) structure. |
| CPointExt | Contains methods for manipulating points in generic code. |
| CPointMath | Math and extension methods for Point{T}. |
| CPolygonMath | Contains useful basic polygon algorithms: hit testing, area calculation, orientation detection. |
| CRectangle3Ext | Contains methods to manipulate rectangles. |
| CRectangleExt | Contains methods to manipulate rectangles. |
| CVector3< T > | Represents a three-dimensional vector, i.e. a magnitude and direction or the difference between two points, stored as X, Y and Z components. |
| CVector3Math< T > | Implementation of IAdditionGroup{T} for Vector{T}. |
| CVector< T > | Represents a two-dimensional vector, i.e. a magnitude and direction or the difference between two points, stored as X and Y components. |
| CVectorExt | Extension methods for vectors. TODO: reconsider distribution of methods between this class and PointMath in Loyc.Utilities. |
| CVectorMath< T > | An implementation of IAdditionGroup{T} for Vector{T}. |
| ►NLLParserGenerator | Code related to LLLPG, the Loyc LL(k) Parser Generator (LLLPG.exe). |
| CAlts | Describes a series of alternatives (branches), a kleene star (*), or an optional element (?). |
| CAltsA | |
| CAndPred | Represents a zero-width assertion: either user-defined code to check a condition, or a predicate that scans ahead in the input and then backtracks to the starting point. |
| CAutoValueSaverVisitor | Helper class invoked just after StageTwoParser. Its job is to create variables referenced by labels (label:item) and by code blocks ($RuleName), to modify the code blocks to remove the $ operator, and to update the ResultSaver of each labeled predicate. Also supports $result. |
| CCodeGenHelperBase | Suggested base class for custom code generators. Each derived class is typically designed for a different kind of token. |
| CDefaultErrorBranch | A singleton to be used as the value of Alts.ErrorBranch, representing the default_error branch. |
| CEmptyA | |
| CEndOfRule | A container for the follow set of a Rule. |
| CGate | Represents a "gate" (p => m), which is a mechanism to separate prediction from matching in the context of branching (Alts). |
| CGeneralCodeGenHelper | General-purpose code generator that supports any language with a finite number of input symbols represented by LNode expressions. This is the code generator helper for LLLPG parser {...}. |
| CIntRange | Represents a range of single characters (e.g. 'A'..'Z'). |
| CIntSet | Represents a set of characters (e.g. 'A'..'Z' | 'a'..'z' | '_'), or a set of token IDs. |
| CIntStreamCodeGenHelper | Standard code generator for character/integer input streams and is the default code generator for LLParserGenerator. This is the code generator helper for LLLPG lexer {...}. |
| CIPGCodeGenHelper | A class that implements this interface will generate small bits of code that the parser generator will use. The default implementation is IntStreamCodeGenHelper. To install a new code generator, set the LLParserGenerator.CodeGenHelper property or supply the generator in the constructor of LLParserGenerator. |
| CIPGTerminalSet | This interface represents a set of terminals (and only a set of terminals, unlike TerminalPred which includes actions and a Basis Node). Typical lexers and parsers use PGIntSet and PGNodeSet, respectively. |
| ►CLLParserGenerator | Encapsulates LLLPG, the Loyc LL Parser Generator, which generates LL(k) recursive-descent parsers. |
| CComputeNext | Gathers a list of all one-token transitions starting from a single position. Also gathers any and-predicates that must be traversed before completing a transition. |
| CGenerateCodeVisitor | Directs code generation using the visitor pattern to visit the predicates in a rule. The process starts with Generate(Rule). |
| CGetCanonical | Computes the "canonical" interpretation of a position for prediction purposes, so that ConsolidateDuplicatePositions can detect duplicates reliably. Call Do() to use. |
| CGrammarPos | Represents a location in a grammar: a predicate and a "return stack" which is a so-called persistent singly-linked list. This type is used within Transition. |
| CKthSet | Represents the possible interpretations of a single input character, in terms of transitions in the grammar. |
| CPredictionAnalysisVisitor | Performs prediction analysis using the visitor pattern to visit the predicates in a rule. The process starts with Analyze(Rule). |
| CTransition | Represents a position in a grammar (GrammarPos) plus the set of characters that leads to that position from the previous position. This is a single case in a KthSet. |
| CLlpgBugsAndSlugs | Tests for known slugs (slowness bugs) and fixed bugs (regressions) |
| ►CLlpgGeneralTestsBase | Shared base class for "full-stack" LLLPG tests that use LeMP, the Ecs parser, and LLLPG macros in addition to the core engine. |
| CTestCompiler | |
| CLlpgHelpers | Helper methods for making LLLPG grammar nodes. Used by LlpgCoreTests. |
| CLlpgTestLargerExamples | |
| CPGIntSet | Represents a set of characters (e.g. 'A'..'Z' | 'a'..'z' | '_'), or a set of integers, used in the grammar of a parser. |
| CPGNodeSet | An immutable set that implements IPGTerminalSet so that it can be used by LLParserGenerator. |
| CPGTerminalSet | Extension methods for IPGTerminalSet. |
| CPred | Represents part of a grammar for the LLParserGenerator. |
| CPredA | Analytic predicate: a simpler form of predicate used for prediction analysis. |
| CPredVisitor | Base class for implementing a visitor that examines a tree of LLLPG Predicates. |
| CProgram | Entry point of LLLPG.exe, with QuickRun() method to help invoke LLLPG programmatically. |
| CRecursivePredVisitor | Base class for implementing a visitor that examines a tree of LLLPG Predicates. The default implementation of Visit(P) for each predicate type P recursively visits the children of the P. |
| CRecursiveRefA | |
| CRecursiveReplacementPredVisitor | Base class for visitors that can replace predicates entirely. |
| CRule | Represents an LLLPG rule, which is a Predicate plus a Name and optional attributes (e.g. token, private, etc.). |
| CRuleRef | Represents a nonterminal, which is a reference to a rule. |
| CSeq | Represents a sequence of predicates (Preds). |
| CTerminalA | |
| CTerminalPred | Represents a terminal (which is a token or a character) or a set of possible terminals (e.g. 'A'..'Z'). |
| ►NLLPG | |
| CMacros | Macros for using LLLPG in LeMP. |
| ►NMath | Contains general-purpose math algorithms beyond what is provided in the .NET BCL (Base Class Library). Notable class: Math.MathEx. |
| CFPI16 | Fixed-point type based on Int32 with 16 fractional bits |
| CFPI23 | Fixed-point type based on Int32 with 23 fractional bits |
| CFPI8 | Fixed-point type based on Int32 with 8 fractional bits |
| CFPL16 | Fixed-point type based on Int64 with 16 fractional bits |
| CFPL32 | Fixed-point type based on Int64 with 32 fractional bits |
| CIAdditionGroup< T > | This defines a Group with the operation +, the neutral element Zero, and an operation - that is defined in terms of the inverse. A Negate operation is not provided so that this interface makes more sense for use with unsigned types |
| CIBinaryMath< T > | Provides additional bit-oriented integer operations. |
| CIBitwise< T > | Provides the standard set of bitwise operators. |
| CIComplexMath< T > | Use this interface for types such as complex numbers that satisfy the field axioms but do not have a natural order. complex numbers of course do support IHasRoot. |
| CIConvertTo< T > | Provides methods for converting common numeric types to another numeric type "T". |
| CIExp< T > | Provides power, logarithm, raise-e-to-exponent (Exp) and logarithm-of-e (Log) operations. |
| CIField< T > | This defines a Field with the operations +,-,*,/ |
| CIFloatMath< T > | Provides operations available on floating-point types (float and double), including trigonometry and exponentiation. |
| CIHasRoot< T > | Provides the Sqrt operation and its inverse, Square. |
| CIIncrementer< T > | Provides increment, decrement, and next/previous-representable- value operations. |
| CIIntMath< T > | Provides operations available on all unsigned integer types (byte, uint, etc.); see also IMath{T}, IIntMath{T}, and IFloatMath{T}. |
| CIMath< T > | Provides operations available on all system numeric types (int, uint, double, etc.); see also ISignedMath{T}, IUIntMath{T}, IIntMath{T} and IFloatMath{T}. |
| CIMultiplicationGroup< T > | This defines a Group with the operation *, the neutral element One, the inverse Inverse and an operation / that is defined in terms of the inverse. |
| CIMultiply< T > | Provides the multiplication operation and the multiplicative identity, one. |
| CINumTraits< T > | This interface provides information about a numeric type T. |
| CIOneProvider< T > | Provides the value of "one" for type T. |
| CIOrdered< T > | Provides comparison function for type T along with absolute value (Abs), and the minimum or maximum of two values (Min, Max). |
| CIRationalMath< T > | Use this interface for floating-point, fixed-point, and rational types. Rational types support reciprocal and negation. |
| CIRing< T > | This defines a Ring with the operations +,* |
| CISignedMath< T > | Provides operations available on all signed numeric types (int, double, etc.); see also IUIntMath{T}, IIntMath{T} and IFloatMath{T}. |
| CITrigonometry< T > | Provides trigonometry operations. |
| CIUIntMath< T > | Provides operations available on all unsigned integer types (byte, uint, etc.); see also IMath{T}, IIntMath{T}, and IFloatMath{T}. |
| CIZeroProvider< T > | Provides the value of "zero" for type T. |
| CMath128 | Contains methods for manipulating 128-bit numbers, multiplying 64-bit numbers to produce 128-bit results, and dividing 128-bit numbers by 64-bit numbers. |
| CMathD | Implements IFloatMath{T} for numbers of type System.Double. |
| CMathEx | Provides additional math functions that are not available in System.Math. |
| CMathExtensions | Standard extension methods for generic math interfaces such as IOrdered{T}. |
| CMathF | Implements IFloatMath{T} for numbers of type System.Single. |
| CMathF16 | Implements IRationalMath{T} for numbers of type FPI16. |
| CMathF23 | Implements IRationalMath{T} for numbers of type FPI23. |
| CMathF8 | Implements IRationalMath{T} for numbers of type FPI8. |
| CMathFL16 | Implements IRationalMath{T} for numbers of type FPL16. |
| CMathFL32 | Implements IRationalMath{T} for numbers of type FPL32. |
| CMathI | Implements IIntMath{T} for numbers of type System.Int32. |
| CMathI16 | Implements IIntMath{T} for numbers of type System.Int16. |
| CMathI8 | Implements IIntMath{T} for numbers of type System.SByte. |
| CMathL | Implements IIntMath{T} for numbers of type System.Int64. |
| CMaths< T > | This class helps generic code to perform calculations on numbers of unknown type, by providing access to various math interfaces. |
| CMathU | Implements IUIntMath{T} for numbers of type System.UInt32. |
| CMathU16 | Implements IUIntMath{T} for numbers of type System.UInt16. |
| CMathU8 | Implements IUIntMath{T} for numbers of type System.Byte. |
| CMathUL | Implements IUIntMath{T} for numbers of type System.UInt64. |
| ►NMiniTest | A stripped-down NUnit lookalike which allows you to put simple unit tests in an assembly without having to add a reference to NUnit.Framework.dll. |
| CAssert | The Assert class contains a collection of static methods that mirror the most common assertions used in NUnit. |
| CAssertionException | Thrown when an assertion fails during a call to a method of Assert. |
| CBenchmarkAttribute | Marks a benchmark test, which exists to test performance. Benchmark tests are often run multiple times to obtain an average running time. |
| CExpectedExceptionAttribute | Marks a test that is expected to throw an exception of a particular type. The test fails if the expected exception is not thrown. |
| CIgnoreException | Thrown by Assert.Ignore(). |
| CInconclusiveException | Thrown by Assert.Inconclusive(). |
| CRunTests | Searches for test methods and runs them, printing the name of each test to the console followed by errors (if any) produced by the test. |
| CSetUpAttribute | Marks a method that is to be called prior to each test in a test fixture. |
| CSuccessException | Thrown by Assert.Success(). |
| CTearDownAttribute | Marks a method that is to be called after each test in a test fixture. |
| CTestAttribute | Identifies a method that contains a unit test, or that returns other tests or test fixtures. |
| CTestException | An exception thrown when a method of Assert fails. |
| CTestFixtureAttribute | Identifies a class that contains unit tests, or methods that return other tests or test fixtures. |
| ►NSyntax | Loyc.Syntax.dll: contains Loyc trees (Loyc.Syntax.LNode), lexing stuff, LLLPG base classes (BaseParser{T} and BaseLexer), the LES parser and printer, data types related to source code management (e.g. ISourceFile, SourceRange) and other general-purpose code related to the manipulation of syntax |
| ►NLes | Contains classes related to Loyc Expression Syntax (LES), including the parser and printer (reachable through Loyc.Syntax.Les.LesLanguageService). |
| CDefaultNodePrinterWriter | Base class for the helper classes of LesNodePrinter and Ecs.EcsNodePrinter, called LesNodePrinterWriter and EcsNodePrinterWriter. See INodePrinterWriter. |
| CINodePrinterWriter | This interface is implemented by helper objects that handle the low-level details of node printing. It is used by LesNodePrinter. |
| CLesIndentTokenGenerator | Indent postprocessor for Loyc Expression Syntax |
| CLesLanguageService | The Value property provides easy access to the lexer, parser and printer for Loyc Expression Syntax (LES). |
| CLesLexer | Lexer for EC# source code. |
| CLesNodePrinter | Prints a Loyc tree in LES (Loyc Expression Syntax) format. |
| CLesParser | Parses LES (Loyc Expression Syntax) code into a sequence of Loyc trees (LNode), one per top-level statement. |
| CLesPrecedence | Contains Precedence objects that represent the precedence levels of LES. |
| CLesPrecedenceMap | This class's main job is to maintain a table of Precedence values for LES operators. When you ask about a new operator, its precedence is cached for future reference. |
| CNodePrinterWriterBase | Abstract base class for INodePrinterWriter. Has an protected _indentLevel field that is increased by Indent() and decreased by Dedent(). |
| CTokenExt | Provides the Type() extension method required by Token and the ToString(Token) method to express an LES token as a string, for tokens that contain sufficient information to do so. |
| ►NLexing | Contains classes related to lexical analysis, such as the universal token type (Loyc.Syntax.Lexing.Token) and Loyc.Syntax.Lexing.TokensToTree. |
| CBaseILexer< CharSrc, Token > | A version of BaseLexer{CharSrc} that implements ILexer{Token}. You should use this base class if you want to wrap your lexer in a postprocessor such as IndentTokenGenerator or TokensToTree. |
| CBaseLexer | Alias for BaseLexer{C} where C is ICharSource. |
| ►CBaseLexer< CharSrc > | The recommended base class for lexers generated by LLLPG, when not using the inputSource option. |
| CSavePosition | A helper class used by LLLPG for backtracking. |
| CILexer< Token > | A standard interface for lexers. |
| CILllpgApi< Token, MatchType, LaType > | For reference purposes, this interface is a list of the non-static methods that LLLPG expects to be able to call when it is generating code. LLLPG does not actually need lexers and parsers to implement this interface; they simply need to implement the same set of methods as this interface contains. |
| CILllpgLexerApi< Token > | For reference purposes, this interface contains the non-static methods that LLLPG expects lexers to implement. LLLPG does not actually expect lexers to implement this interface; they simply need to implement the same set of methods as this interface contains. |
| CIndentTokenGenerator | A preprocessor usually inserted between the lexer and parser that inserts "indent", "dedent", and "end-of-line" tokens at appropriate places in a token stream. |
| CIndentTokenGenerator< Token > | A preprocessor usually inserted between the lexer and parser that inserts "indent", "dedent", and "end-of-line" tokens at appropriate places in a token stream. |
| CISimpleToken | Alias for ISimpleToken{int}. |
| CISimpleToken< TokenType > | Basic information about a token as expected by BaseParser{Token}: a token Type, which is the type of a "word" in the program (string, identifier, plus sign, etc.), a value (e.g. the name of an identifier), and an index where the token starts in the source file. |
| CIToken< TT > | The methods of Token in the form of an interface. |
| CLexerSource | A synonym for LexerSource{C} where C is ICharSource. |
| CLexerSource< CharSrc > | An implementation of the LLLPG Lexer API, used with the LLLPG options inputSource and inputClass. |
| CLexerSourceFile< CharSource > | Adds the AfterNewline method to SourceFile. |
| CLexerSourceWorkaround< CharSrc > | This class only exists to work around a limitation of the C# language: "cannot change access modifiers when overriding 'protected' inherited member Error(...)". |
| CLexerWrapper< Token > | A base class for wrappers that modify lexer behavior. Implements the ILexer interface, except for the NextToken() method. |
| CToken | A common token type recommended for Loyc languages that want to use features such as token literals or the TokensToTree class. |
| CTokenListAsLexer | Adapter: converts IEnumerable(Token) to the ILexer{Token} interface. |
| CTokensToTree | A preprocessor usually inserted between the lexer and parser that converts a token list into a token tree. Everything inside brackets, parens or braces is made a child of the open bracket. |
| CTokenTree | A list of Token structures along with the ISourceFile object that represents the source file that the tokens came from. |
| CWhitespaceFilter | Alias for WhitespaceFilter{Token} |
| CWhitespaceFilter< Token > | Filters out tokens whose Value is WhitespaceTag.Value. |
| CWhitespaceTag | WhitespaceTag.Value can be used as the Token.Value of whitespace tokens, to make whitespace easy to filter out. |
| CBaseParser< Token > | An base class designed for parsers that use LLLPG (Loyc LL(k) Parser Generator). Note: this is the old (harder to use) base class. You should use BaseParserForList{Token, LaType} instead. This class is now an alias for BaseParser{Token,int}. |
| ►CBaseParser< Token, MatchType > | An base class designed for parsers that use LLLPG (Loyc LL(k) Parser Generator). Note: this is the old (harder to use) base class design. You should use BaseParserForList{Token,MatchType} instead. |
| CSavePosition | A helper class used by LLLPG for backtracking. |
| CBaseParserForList< Token, MatchType > | An base class designed for parsers that use LLLPG (Loyc LL(k) Parser Generator) and receive tokens from any IEnumerator{Token}. |
| CBaseParserForList< Token, MatchType, List > | An base class designed for parsers that use LLLPG (Loyc LL(k) Parser Generator) and receive tokens from any IEnumerator{Token}. (Potentially also useful for parsers written by hand.) |
| CBaseParserNoBacktracking< Token > | An base class designed for parsers that use LLLPG (Loyc LL(k) Parser Generator) and receive tokens from an IEnumerator{Token}. |
| CBaseParserNoBacktracking< Token, Enumerator > | An base class designed for parsers that use LLLPG (Loyc LL(k) Parser Generator) and receive tokens from any IEnumerator{Token}. |
| CCallNode | Base class of all nodes that represent calls such as f(x), operator calls such as x + y, braced blocks, and all other things that are not simple symbols and literals. |
| CCodeSymbols | A list of common symbols that have special meaning somewhere in Loyc or EC#: operators, built-in data types, keywords, trivia, etc. |
| CDescendantsFrame | Helper class used to enumerate LNode.Descendants(). |
| CEmptySourceFile | A dummy implementation of ISourceFile that has only a filename, no source text. Used as the source file of synthetic syntax nodes. |
| CIdNode | Base class of all nodes that represent simple identifiers (including special symbols such as #foo). |
| CIIndexPositionMapper | This interface is for classes that can convert indexes to SourcePos structures and back. |
| CIIndexToLine | Contains IndexToLine method. |
| CILNodeVisitor | Interface for people that want to implement the visitor pattern with LNode. If your visitor does not need a base class, use LNodeVisitor as the base class. |
| CIndexPositionMapper | Synonym for IndexPositionMapper<IListSource<char>>. |
| CIndexPositionMapper< CharSource > | Helper class for mapping from indexes to SourcePos and back. |
| CIParsingService | An interface that encapsulates the lexer, parser, and printer of a programming language, or a non-programming language that can be represented by Loyc trees. |
| CISourceFile | Represents a text file with a file name and its textual content, plus the data necessary to convert between line-column positions and 0-based integer indexes. |
| CLineAndCol | Holds a line number (Line) and a position in the line (PosInLine). This class isn't really needed in Loyc but is separated from SourcePos in case anyone might want position without a filename. |
| CLineRemapper | A small helper class for languages such as C# and C++ that permit the locations reported by error messages to be remapped. This class stores and applies such commands (#line in C#/C++) |
| CLiteralNode | Base class of all nodes that represent literal values such as 123 and "foo". |
| ►CLNode | All nodes in a Loyc syntax tree share this base class. |
| CDeepComparer | An IEqualityComparer that compares nodes structurally. |
| CPushedPrinter | Returned by PushPrinter(LNodePrinter). |
| CLNodeExt | Standard extension methods for LNode. |
| CLNodeFactory | Contains helper methods for creating LNodes. An LNodeFactory holds a reference to the current source file (File) so that it does not need to be repeated every time you create a node. |
| CLNodeVisitor | Base class for people that want to implement the visitor pattern with LNode. |
| CParserSource< Token > | Alias for ParserSource{Token, int, IList{Token}}. |
| CParserSource< Token, MatchType > | Alias for ParserSource{Token, int, IList{Token}}. |
| CParserSource< Token, MatchType, List > | An implementation of the LLLPG Parser API, used with the LLLPG options inputSource and inputClass. |
| ►CParsingService | Extension methods for IParsingService. |
| CPushedCurrent | Returned by PushCurrent(IParsingService). |
| CPrecedence | A four-byte tuple that represents the precedence and miscibility of an operator. |
| CSourceFile | |
| CSourceFile< CharSource > | A default implementation of ISourceFile based on IndexPositionMapper. |
| CSourceFileWithLineRemaps | An wrapper around ISourceFile that applies line remapping information (if the source file uses it). |
| CSourcePos | Holds a filename (FileName), a line number (Line) and a position in the line (PosInLine), representing a position in a source code file. |
| CSourcePosAndIndex | A SourcePos that also includes the original index from which the Line and PosInLine were derived. |
| CSourceRange | Holds a reference to a source file (ISourceFile<char>) and the beginning and end indices of a range in that file. |
| CStreamCharSource | Exposes a stream as an ICharSource, as though it were an array of characters. The stream must support seeking, and if a text decoder is specified, it must meet certain constraints. |
| ►NThreading | Helper classes for multithreaded code. |
| CPushedTLV< T > | Designed to be used in a "using" statement to alter a thread-local variable temporarily. |
| CScratchBuffer< T > | Holds a single Value that is associated with the thread that assigned it. |
| ►CThreadEx | Creates and controls a thread, and fills in a gap in the .NET framework by propagating thread-local variables from parent to child threads, and by providing a ThreadStarting event. |
| CThreadDestructor | See PropagateVariables for more information. |
| CThreadLocalVariable< T > | Provides access to a thread-local variable through a dictionary that maps thread IDs to values. |
| CThreadLocalVariableBase | When used with ThreadEx, implementing this base class allows you to be notified when a child thread is created or terminates. |
| CThreadStartEventArgs | Used by the ThreadEx.ThreadStarting and ThreadEx.ThreadStopping events. |
| CTinyReaderWriterLock | A fast, tiny 4-byte lock to support multiple readers or a single writer. Designed for low-contention, high-performance scenarios where reading is common and writing is rare. |
| ►NUtilities | Contains general-purpose classes that are not considered important enough to go directly into the Loyc namespace. Most of the classes in this namespace are defined in Loyc.Utilities.dll. |
| CBloomFilterM64K2 | A bloom filter for very small sets. |
| CCo | Extension methods for Co{T}. |
| CCo< T > | A structure that helps you to write coroutines, or to avoid the performance penalty of nested iterators. |
| CGoAliasAttribute | This attribute is applied to a method of an interface to specify alternate names that a method can have in T when you use GoInterface <Interface, T> to produce a wrapper. |
| CGoDecoratorFieldAttribute | This attribute marks a field in an abstract class as pointing to a wrapped object to which GoInterface should forward calls. It is used when you want GoInterface to "complete" a decorator pattern for you. |
| CGoInterface | Mainly for internal use by the other GoInterface classes. |
| CGoInterface< Interface > | GoInterface<Interface> creates wrappers around objects of your choosing that implement the specified Interface, forwarding calls to methods in the wrapped object. It is inspired by the duck-typed interfaces in the Go programming language. |
| CGoInterface< Interface, T > | GoInterface<Interface,T> creates a wrapper that implements the specified Interface, forwarding calls to methods in T. It is inspired by the duck-typed interfaces in the Go programming language. |
| CIGoInterfaceWrapper | All GoInterface wrappers implement this interface. |
| CSimpleTimer | A fast, simple timer class with a more convenient interface than System.Diagnostics.Stopwatch. Its resolution is typically 10-16 ms on desktop Windows systems. |
| CStatistic | A lightweight class to help you compute the minimum, maximum, average and standard deviation of a set of values. Call Clear(), then Add(each value); you can compute the average and standard deviation at any time by calling Avg() and StdDeviation(). |
| CTagsInWList< ValueT > | An implementation of ITags designed for AstNode. |
| CUG | Contains global functions of Loyc.Utilities that don't belong in any specific class. |
| CCheckParam | Helper methods for checking argument values that throw exceptions when an argument value is not acceptable. |
| CConcurrentModificationException | An exception thrown when a data structure is accessed (read or written) by one thread at the same time as it is modified on another thread. |
| CConsoleMessageSink | Sends all messages to System.Console.WriteLine(), with hard-coded colors for Error, Warning, Note, Verbose, and Detail. |
| CExceptionExt | Extension methods for exceptions. |
| CEzStopwatch | A wrapper around Stopwatch with a more convenient interface, currently oriented around measuring milliseconds (TODO: increase similarity to Stopwatch) |
| CG | Contains global functions that don't belong in any specific class. |
| CGSymbol | This class produces global symbols. |
| CHashTags< ValueT > | An implementation of IAttributes that can hold one attribute before allocating any memory for a hashtable. It is intended to be used as a base class but can be used on its own. |
| CHolder< T > | A trivial class that holds a single value of type T in the Value property. |
| CICloneable< out T > | Interface for types that can duplicate themselves. |
| CIHasLocation | This interface allows an object to declare its "location". It is used by MessageSink.LocationString, which helps convert the "context" of a message into a string. |
| CIHasValue< out T > | Interface for things that have a Value property. |
| CIMessageSink | A general-purpose interface for a class that accepts formatted messages with context information. |
| CInvalidStateException | An exception thrown when an object detects that its own state is invalid, or in other words, that an invariant has been violated. |
| CIReferenceComparable | This is a tag which indicates that objects of this type are unique; specifically, any two different objects that implement this interface are always unequal, and one object is equal only to itself. |
| CITags< T > | Interface for an object that can have "tags" attached, which are arbitrary objects reached through a key Symbol. |
| CLocalizableAttribute | I plan to use this attribute someday to gather all the localizable strings in an application. This attribute should be applied to a string function parameter if the method calls Localized() using that parameter as the format string. |
| CLocalize | Localize is a global hook into which a string-mapping localizer can be installed. It is designed to make internationalization exceptionally easy for developers. TODO: expand I18N features based on Mozilla's L20N. |
| CLogException | An exception that includes a "context" object as part of a LogMessage structure, typically used to indicate where an error occurred. |
| CLogMessage | Holds an argument list compatible with IMessageSink.Write. Typically used with MessageHolder. |
| CMaybe | |
| CMaybe< T > | Same as Nullable{T} except that it behaves like a normal type, i.e. (1) T is allowed to be a reference type and (2) you can nest them, as in Maybe{Maybe{int}}. |
| CMemoizedTypeName | .NET Framework reflection doesn't offer complete type names for generic types such as "List<int>" (the Type.Name value of that class is "List`1"). Get fills in the gap, and also saves the computed name for fast repeated lookups. |
| CMemoizedTypeName< T > | MemoizedTypeName<T>.Get() is an alternative to MemoizedTypeName.Get(typeof(T)). |
| CMessageFilter | A decorator that uses a delegate to accept or ignore messages. |
| CMessageHolder | A message sink that puts the messages it receives in a list. |
| ►CMessageSink | Holds the default message sink for this thread (Current), Symbols for the common message types, such as Warning and Error, and default instances of ConsoleMessageSink, TraceMessageSink and NullMessageSink. |
| CPushedCurrent | Returned by PushCurrent(IMessageSink). |
| CMessageSinkFromDelegate | This helper class lets you implement IMessageSink with one or two delegates (a writer method, and an optional severity filter). |
| CMessageSplitter | A message sink that sends its messages to a list of other sinks. |
| CNoValue | NoValue.Value is meant to be used as the value of a property that has "no value", meaning no value is assigned or that the property is meaningless at the current time or in the current context. |
| CNullMessageSink | Discards all messages. However, there is a Count property that increases by one with each message received. |
| CPair | Pair.Create(a, b) is a helper method for making pairs. |
| CPair< T1, T2 > | A tuple of two values, A and B, in a struct. |
| CRange | |
| CReadOnlyException | An exception thrown when an attempt is made to modify a read-only object. |
| CReferenceComparer< T > | An IEqualityComparer{T} based on reference equality |
| CSeverityMessageFilter | A decorator (wrapper) for IMessageSink that filters out some messages if their Severity is too low, according to the value of the MinSeverity property. |
| CStringExt | Extension methods for strings, such as SplitAt, Left, Right, Format and USlice. |
| CSymbol | Represents a symbol, which is a singleton string that supports fast comparisons and extensible enums. |
| CSymbolPool | A collection of Symbols. |
| CSymbolPool< SymbolE > | This type of SymbolPool helps create more strongly typed Symbols that simulate enums, but provide extensibility. Specifically, it creates SymbolE objects, where SymbolE is some derived class of Symbol. |
| CSymbolSet | A set of symbols. |
| CTraceMessageSink | Sends all messages to System.Diagnostics.Trace.WriteLine(string). |
| CTriplet< T1, T2, T3 > | A tuple of three values (A, B and C) in a struct. |
| CTypeExt | Extension methods for Type. |
| CUString | UString is a slice of a string. It is a wrapper around string that provides a IBRange{T} of 21-bit UCS-4 characters. "U" stands for "Unicode", as in UCS-4, as opposed to a normal string that is UTF-16. |
| CValueComparer< T > | You'd think the .NET framework would have a built-in method–even a CIL opcode–to bitwise-compare two values. Not supporting bitwise compare is, in my opinion, one of several mind-bogglingly dumb decisions in the CLR. Instead, all you can do is call ValueComparer.Default.Equals(a, b). |
| Cvoid | .Value represents the sole value of System.Void (called "void" in C#). |
| CWeakReferenceExt | The new WeakReference{T} type in .NET 4.5 removes the Target and IsAlive properties. These extension methods restore that traditional functionality, making it easier to transition from the old WeakReference to the new one. |
| CWrapperBase< T > | Abstract class that helps you implement wrappers by automatically forwarding calls to Equals(), GetHashCode() and ToString(). |
| ▼NSystem | |
| ►NCollections | |
| ►NWindows | |
| ►NForms | |
| CInputBox | This static class contains methods named Show() to display a dialog box with an input field, similar in appearance to the one in Visual Basic. The Show() method returns null if the user clicks Cancel, and non-null if the user clicks OK. |
| ▼NTextEditor | |
| CFindAndReplaceForm | |
| CGlobals | |
| CHighlightGroup | Bundles a group of markers together so that they can be cleared together. |
| CLempDemoForm | Main form for a multi-file text editor based on ICSharpCode.TextEditor.TextEditorControl. |
| CLempDemoPanel | |
| CProgram | |
| CRegionFoldingStrategy | The class to generate the foldings, it implements ICSharpCode.TextEditor.Document.IFoldingStrategy |
| CTextEditorSearcher | This class finds occurrances of a search string in a text editor's IDocument... it's like Find box without a GUI. |
| CTextRange | |