▼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) |
►NTests | Contains tests for the LeMP.MacroProcessor and for standard LeMP macros |
►NA | |
CAliasTest | |
►NB | |
CAliasTest | |
CMacroTesterBase | |
CPreludeMacroTests_Les2 | |
CPreludeMacroTests_Les3 | |
CTestAlgebraicDataTypes | |
CTestCodeContractMacros | |
CTestCodeQuoteMacro | |
CTestCompileTimeMacros | |
CTestMacroCombinations | |
CTestMacros | |
CTestMatchCodeMacro | |
CTestMatchMacro | |
CTestOnFinallyReturnThrowMacros | |
CTestReplaceAndDefineMacros | |
CTestSetOrCreateMemberMacro | |
CTestStaticDeconstructMacro | |
CTestStaticMatchCodeMacro | |
CTestUnrollMacro | |
CTestUserDefinedMacroMacro | |
CTestUseSequenceExpressionsMacro | |
CTestUseSymbolsMacro | |
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 a LeMP lexical 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 namespaces |
▼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 | Observes changes and builds a table of items in the tree |
CAListInnerBase | Internal implementation class. Shared base class of internal nodes for AList<T>, SparseAList<T>, BList<T>, BMultiMap<K,V> and BDictionary<K,V> |
CAListLeaf | Internal implementation class. Shared code of non-sparse AList leaf nodes |
CAListLeafBase | |
CAListNode | 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> |
CBListLeaf | Internal implementation class. Leaf node of BList<T> and BDictionary<K,V> |
CCollectionWithChangeEvents | A collection wrapper that provides ListChanging and ListChanged events. You can also implement custom behavior by overriding its methods |
CCollectionWrapper | A simple base class that helps you use the decorator pattern on a collection. By default, all it does is forward every method to the underlying collection (including GetHashCode, Equals and ToString). You can change its behavior by overriding methods |
►CCPByteTrie | A compact patricia trie that uses byte arrays as keys |
CEnumerator | |
CCPEnumerator | Traverses a CPTrie<T>. Returned by CPTrie<T>.ValueEnumerator() |
►CCPIntTrie | 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 | |
CDictionaryBase | A base class for user-defined dictionaries that want to implement both IDictionary(K,V) and IReadOnlyDictionary(K, V) |
CDictionaryWithChangeEvents | A dictionary wrapper that provides ListChanging and ListChanged events. You can also implement custom behavior by overriding its methods |
CDictionaryWrapper | A simple base class that helps you use the decorator pattern on a dictionary. By default, all it does is forward every method to the underlying collection (including GetHashCode, Equals and ToString). You can change its behavior by overriding methods |
CEnumeratorFrame | A standard base class for enumerator frames used by NestedEnumerator{EnumeratorFrame{T},T} |
CIAListTreeObserver | 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 | Helper interface for NestedEnumerator<Frame, T> |
►CInternalDList | 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 | 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 |
CEnumerator | |
►CInternalSet | A hash-trie data structure for use inside other data structures |
CEnumerator | |
CInternalSetStats | Statistics returned from InternalSet<T>.CountMemory |
CKeylessHashtable | 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 |
CKeyWalker | Internal implementation class. Represents a pointer to a location within a byte array |
CListExBase | A base class for classes that wish to implement IListEx<T>. Provides default implementations for most of the methods |
CListSourceBase | A base class for read-only collections that wish to implement IList<T> and IListSource<T>. Provides default implementations for most of the methods |
CListWithChangeEvents | A list wrapper that provides ListChanging and ListChanged events. You can also implement custom behavior by overriding its methods |
CListWrapper | A simple base class that to helps you implement a "smart" collection. By default, all it does is forward every method to the underlying collection (including GetHashCode, Equals and ToString). You can change its behavior by overriding methods |
CReadOnlyCollectionBase | 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 |
CSetWrapper | A simple base class that helps you use the decorator pattern on a set. By default, all it does is forward every method to the underlying collection (including GetHashCode, Equals and ToString). You can change its behavior by overriding methods |
CSparseAListLeaf | Internal implementation class. Leaf node of SparseAList<T> |
CTestHelpers | Helpers methods for unit tests, especially used by Loyc collection classes but sometimes useful in other cases |
►NMutableListExtensionMethods | Contains extension methods for ICollection<T> and IList<T> that are possibly ambiguous when included in the same namespace as extension methods for IReadOnlyCollection<T> and IReadOnlyList<T> |
CICollectionExt | Extension methods for ICollection<T> |
CIListExt | Extension methods and helper methods for IList<T> |
CLCExt | |
CLinqToLists | |
CAList | 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 | 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 |
CAListExt | |
CAListReverseView | A reverse view of an AList |
CAListStatisticTracker | This class efficiently lets you keep track of simple commutative statistics (such as total, average, sum of squares, and min/max) derived from the items of AList<T> and its variants (BList, BDictionary, and BMultiMap) |
CAListStatisticTrackerBase | Base class that helps efficiently keep track of statistics about the contents of one or more AListBase<K, T> objects (including derived classes such as AList, BList, BDictionary and BMultiMap). Usually you'll use one of the derived classes instead, e.g. AListSumTracker<K,T> |
CAListSumTracker | This class incrementally recomputes the sum of an AList<T> (or its variants - BList, BDictionary, and BMultiMap) |
CArrayOf4 | |
CArraySlice | Adapter: Provides access to a section of an array |
CBDictionary | An sorted dictionary that is efficient for all operations and offers indexed access to its list of key-value pairs |
CBijection | 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 | An sorted in-memory list that is efficient for all operations and offers indexed access to its list |
►CBMultiMap | An sorted dictionary that allows multiple values to be associated with a single key |
CValueList | Represents the set of values associated with a particular key in a BMultiMap<K,V> collection |
CBufferedSequence | 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 | Adapter: a read-only wrapper that implements ICollection(T) and IReadOnlyCollection(T), returned from EnumerableExt.AsReadOnly<T> |
CCollectionDebugView | This helper class gives a nice view of a custom collection within the debugger |
CCollectionSource | |
CCollectionWithChangeEvents | A collection wrapper that provides ListChanging and ListChanged events. Shorthand for Loyc.Collections.Impl.CollectionWithChangeEvents<T,ICollection<T>> |
►CCPStringTrie | 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 | 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 | Provides read-only access to the values of a CPTrie |
CDictionaryDebugView | 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>, IDictionary<K,V> and IDictionaryEx<K, V> |
CDictionaryWithChangeEvents | A dictionary wrapper that provides ListChanging and ListChanged events. Shorthand for Loyc.Collections.Impl.DictionaryWithChangeEvents<K,V,IDictionary<K,V>> |
CDList | A compact auto-enlarging list that efficiently supports supports insertions at the beginning or end of the list |
CEmptyArray | EmptyArray<T>.Value lets you avoid allocating an empty array on the heap |
CEmptyEnumerator | Helper class: an empty enumerator |
CEmptyList | 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>, IReadOnlyCollection<T>, and ICollection<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 | 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 | A reference to a FVList, a so-called persistent list data structure |
CEnumerator | Enumerator for FVList; also used by FWList |
CFWList | FWList is the mutable variant of the FVList data structure |
CHeap | |
CIAdd | An interface for depositing items. Includes only an Add(T) method |
CIAddRange | An interface for the AddRange method, part of IListEx<T> and ICollectionEx<T>, for collection types that can add multiple items in one method call |
CIArray | This interface models the capabilities of an array: getting and setting elements by index, but not adding or removing elements |
CIArraySink | Represents a write-only array |
CIAutoCreatePool | Represents a pool of objects in which an object is automatically created when requested by its key |
CIAutoSizeArray | 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 | Interface for a collection that can return IBinumerator<T>s pointing to the beginning and end of the collection |
CIBinumerator | Extends the "enumerator" concept to allow backward enumeration |
CIBRange | A bidirectional range. Allows you to read or remove the first or last element in a range |
CIBRangeEx | A bidirectional range that can perform operations such as intersection and overlap tests on pairs of ranges of the same type |
CICharSource | A read-only list of characters plus a Slice(int,int) method |
CICollectionAndReadOnly | This interface is meant to be implemented by read-only sequence types that originally implemented ICollection<T> and want to now implement IReadOnlyCollection<T>. It is recommended to implement ICollectionAndSource<T> instead, but the latter requires you to implement a couple of additional methods |
CICollectionAndSource | This interface is to be implemented by read-only sequence types that still want to be compatible with APIs that accept ICollection<T>. (writable collections should implement ICollectionImpl<T> instead.) |
CICollectionEx | This interface is intended to be implemented by editable collection classes that are not indexable lists nor dictionaries |
CICollectionExWithChangeEvents | Combines ICollectionEx<T> with INotifyListChanging<T, ICollection<T>> and INotifyListChanged<T, ICollection<T>>. This exists for completeness; as of 2020/12 there are no implementations |
CICollectionImpl | This interface is intended to be implemented by editable collection classes that are not indexable lists nor dictionaries. It is recommended to implement ICollectionEx<T> instead, but the latter requires more effort |
CICollectionSink | Represents a write-only collection: you can modify it, but you cannot learn what it contains |
CICollectionSource | A variation of IReadOnlyCollection that provides the Contains() and CopyTo() methods from ICollection |
CICollectionWithChangeEvents | Combines ICollection<T> with INotifyListChanging<T, ICollection<T>> and INotifyListChanged<T, ICollection<T>> |
CIContains | |
CICount | Holds the Count property found in nearly all collection interfaces |
CIDeque | Represents a double-ended queue that allows items to be added or removed at the beginning or end |
CIDictionaryAndReadOnly | This interface is meant to be implemented by read-only dictionary classes that originally implemented IDictionary<K, V> and now want to add its read-only version, IReadOnlyDictionary<K, V> |
CIDictionaryEx | Combines IDictionary , IReadOnlyDictionary , and IDictonarySink with a few additional methods |
CIDictionaryExWithChangeEvents | |
CIDictionaryImpl | This interface is intended to be implemented by all Loyc collections that implement IDictionary<K,V>. It combines the original IDictionary<K,V> interface with its component interfaces IReadOnlyDictionary<K,V> and IDictionarySink<K,V> |
CIDictionarySink | Represents a write-only dictionary class |
CIDictionaryWithChangeEvents | |
CIFRange | 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> |
CIIndexed | Represents the essence of a dictionary, which returns a value given a key |
CIIsEmpty | Holds the IsEmpty property that tells you if a collection is empty |
CIListAndListSource | This interface is to be used by read-only sequences that nevertheless wish to be compatible with APIs that accept IList<T>. (writable collections should implement IListImpl<T> instead.) |
CIListAndReadOnly | This interface is meant to be implemented by read-only sequence classes that originally implemented IList<T> and want to now implement IReadOnlyList<T> and IReadOnlyCollection<T>. It is recommended to implement IListAndListSource<T> instead, but the latter requires you to implement more methods |
CIListEx | This interface combines the original IList(T) interface with others - IListSource(T), ISinkList(T), IArray(T) - and some additional methods (e.g. RemoveAll, InsertRange) |
CIListExWithChangeEvents | |
CIListImpl | This interface is intended to be implemented by all Loyc collections that implement IList<T>. It combines the original IList<T> interface with its component interfaces IReadOnlyList<T> and IListSink<T>, plus a little bit of additional functionality in IListSource<T> |
CIListRangeMethods | The batch-operation methods of IListEx<T>, mainly for collection types that can add or remove multiple items in one method call |
CIListSink | Represents a write-only indexable list class |
CIListSource | A read-only list indexed by an integer |
CIListWithChangeEvents | |
CIMBinumerator | 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 | A mutable bidirectional range |
CIMEnumerator | A mutable enumerator interface. Provides a "Remove" method like Java iterators have, and allows you to modify the current item |
CIMFRange | A mutable forward range |
CIMRange | A mutable random-access range |
CIndexedAList | 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 | 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 | 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 | 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 | This interface is the counterpart to IListSource<T> for lists whose minimum index is not (necessarily) zero |
CINotifyListChanged | Encapsulates a ListChanged event that notifies listeners that a list has changed, such as when items are added or removed or the whole list is refreshed |
CINotifyListChanging | Encapsulates the ListChanging event that notifies listeners of dynamic changes to a collection, such as when items are about to be added and removed or the whole list is about to be refreshed |
CInvertibleSet | 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" |
CIOptimize | Interface for an Optimize() method |
CIPop | Represents a collection that produces a sequence of items, and can return the next item without popping it (the Peek operation) |
CIPopExt | |
CIPriorityQueue | Represents a priority queue, in which Pop() always returns the largest or smallest item |
CIPush | Represents a collection that accepts a sequence of items |
CIQueue | Represents a FIFO (first-in-first-out) queue (or a priority queue if IPriorityQueue<ThisAssembly> is also implemented) |
CIRange | 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 | A random-access range that can perform operations such as intersection and overlap tests on pairs of ranges of the same type |
CISetImm | An immutable set of type SetT with elements of type T |
CISetOperations | Set-combining operations: With, Without, Union, Intersect, Except, Xor |
CISparseList | 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 | A sparse list that supports additional methods including InsertRange(int, ISparseListSource<T>) |
CISparseListSource | Represents a read-only indexed list in which parts of the index space may be unused or "clear" |
CIStack | Represents a LIFO (last-in-first-out) stack |
CITryGet | Enables access to TryGet extension methods for retrieving items from a collection without risk of exceptions |
CKeyAlreadyExistsException | An exception thrown by dictionary objects when they are asked to "add" a key-value pair that already exists |
►CKeyCollection | 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>) |
CLCInterfaces | Extension methods for Loyc collection interfaces |
CLinqToLists | This class enhances LINQ-to-Objects with extension methods that preserve the interface (e.g. Take(IList<int>) returns a struct that implements IList<int>) or have higher performance than the ones in System.Linq.Enumerable |
CListAsListSource | Helper type returned from LCExt.AsListSource<T> |
CListChangeInfo | 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 | 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 | Adapter: a read-only wrapper that implements IList(T) and IListSource(T), returned from LCExt.AsList<T> |
CListSourceAsSparse | Adapter from IListSource<T> to ISparseListSource<T> |
CListSourceDebugView | This helper class gives a nice view of a custom collection within the debugger |
CListWithChangeEvents | A list wrapper that provides ListChanging and ListChanged events. Shorthand for Loyc.Collections.Impl.ListWithChangeEvents<T,IList<T>> |
CMap | An immutable dictionary |
CMapOrMMap | Common base class that contains code shared between Map<K,V> and MMap<K,V> |
CMaxHeap | Encapsulates algorithms for a max-heap, i.e. a priority queue that always knows the largest item and can remove it in O(log Count) time, or add a new item in O(log Count) time |
CMaxHeapInList | This priority queue wrapper type is returned from the AsMaxHeap() extension method |
CMinHeap | Encapsulates algorithms for a min-heap, i.e. a priority queue that always knows the smallest item and can remove it in O(log Count) time, or add a new item in O(log Count) time |
CMinHeapInList | This priority queue wrapper type is returned from the AsMinHeap() extension method |
CMMap | A dictionary class built on top of InternalSet<KeyValuePair<K,V>> |
CMSet | A mutable set |
CNegList | 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.AsNegList<T>(IListSource<T>,int) |
CNegListSlice | Adapter: a random-access range for a slice of an INegListSource<T> |
CNegListSource | 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.AsNegList<T>(IListSource<T>,int) |
CNestedEnumerable | 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 | 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 | Represents a range of integers of a specified data type |
CEnumerator | |
CRangeEnumerator | Helper struct: enumerates through a forward range (IFRange<T>), calling the range methods through R instead of through IFRange<T> |
CRangeExt | Extension/helper methods for ranges |
CReadOnlyAsCollection | A read-only wrapper that implements ICollection(T) and ISource(T), returned from LCExt.AsCollection<T> |
CReadOnlyListAsListSource | Helper type returned from LCExt.AsListSource<T>(IReadOnlyList<T>) |
CRepeated | 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 ListExt.Repeat<T>(T, int) |
CReverseBinumerator | Adapter: a IBinumerator<T> that swaps the MoveNext() and MovePrev() methods |
CReverseComparer | Reverses the order used by an IComparer object |
CReversedList | Adapter: a reversed of an IList<T>. TODO: unit tests |
CReversedListSource | Adapter: reversed view of IListSource<T> returned from LinqToLists.Reverse<T> |
CROLSlice | Adapter: a random-access range for a slice of an IReadOnlyList<T> |
CSelectCollection | Helper class for LinqToLists |
CSelectDictionaryFromKeys | An adapter that converts a collection of keys to an IReadOnlyDictionary. Used by EnumerableExt.AsReadOnlyDictionarybased on a function that can obtain a value for a given key |
CSelectList | Helper class: provides a modified view of an IList by transforming each element on-demand. Objects of this type are returned from MutableListExtensionMethods.LinqToLists.Select<T,TResult>(IList<T>,Func<T,TResult>) |
CSelectListSource | Helper class: provides a modified view of an IListSource by transforming each element on-demand. Objects of this type are returned from LinqToLists.Select<T,TResult>(IListSource<T>,Func<T,TResult>) |
CSelectReadOnlyCollection | Helper class for LinqToLists |
CSelectReadOnlyList | Helper class: provides a modified view of an IListSource by transforming each element on-demand. Objects of this type are returned from LinqToLists.Select<T,TResult>(IListSource<T>,Func<T,TResult>) |
►CSet | An immutable set |
CEnumerator | Enumerator for MSet<T> |
CSimpleCache | A cache designed to save memory by sharing instances of identical strings and other immutable objects |
CSlice_ | Adapter: a random-access range for a slice of an IListSource<T> |
CSparseAList | A sparse A-List that implements ISparseList<T> |
CTryGetExt | Standard extension methods for ITryGet<K, V> |
CUpCastListSource | Helper class for treating a collection of a derived type as a collection of a base type or interface |
CUpCastSource | Helper class for treating a collection of a derived type as a collection of a base type or interface |
►CValueCollection | 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 | VList represents a reference to a reverse-order FVList |
CEnumerator | Enumerates through a VList from index 0 up to index Count-1 |
CVListBlock | VListBlock implements the core functionality of FVList, VList, FWList and WList. It is not intended to be used directly |
CVListBlockArray | 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 | 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 | 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 | A dictionary with weak keys |
CWeakKeyReference | Provides a weak reference to an object of the given type to be used in a WeakDictionary along with the given comparer |
CWeakValueDictionary | 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 | WList is the mutable variant of the VList data structure |
CWListBase | Shared base class of FWList and WList |
CWListProtected | WList implementation in which the WList operations are only accessible to a derived class |
►NCompatibility | Important interfaces of newer .NET versions than the version for which Loyc was compiled |
CEnumStatic | Implements Enum.TryParse in .NET 3.5 |
►NEcs | Classes related to Enhanced C# (mostly found in Loyc.Ecs.dll) |
►NParser | Enhanced C# parser |
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 |
CTentativeResult | |
CTentativeState | |
CEcsPreprocessor | Handles EC# processor directives |
CEcsTriviaInjector | Trivia injector customized for Enhanced C# |
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 |
CEcsCodeSymbols | A list of symbols that are very specific to C# or Enhanced C#. Note: many symbols Loyc.Syntax.CodeSymbols should be in this class instead, but this class was created very belatedly |
CEcsLanguageService | The Value property provides easy access to the lexer, parser and printer for Enhanced C# |
CEcsNodePrinter | Encapsulates the code for printing an LNode to EC# source code |
CEcsPrecedence | Contains Precedence objects that represent the precedence rules of EC# |
CEcsPrinterOptions | Options to control the way EcsNodePrinter's output is formatted |
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 |
CINewPoint | This interface exists to work around a limitation of C#; see IPoint<T> |
CINewPoint3 | This interface exists to work around a limitation of C#; see IPoint<T> and IPoint3<T> |
CINewRectangle | This interface exists to work around a limitation of C#; see IRectangle<T> |
CINewRectangle3 | This interface exists to work around a limitation of C#; see IRectangle3<T> |
CIPoint | A mutable 2D point with X and Y coordinates |
CIPoint3 | A mutable 3D point with X, Y, and Z coordinates |
CIPoint3Base | This interface exists to work around a limitation of C#; use IPoint<T> instead |
CIPoint3Reader | Interface for reading the coordinates of a 3D point |
CIPointBase | This interface exists to work around a limitation of C#; use IPoint<T> instead |
CIPointReader | Interface for reading the coordinates of a 2D point |
CIRectangle | Represents a mutable 2D rectangle |
CIRectangle3 | Represents a mutable 3D rectangle |
CIRectangle3Base | Represents a mutable 3D rectangular prism |
CIRectangle3Reader | Represents a read-only 3D rectangular prism |
CIRectangleBase | Represents a mutable 2D rectangle |
CIRectangleReader | Represents a read-only 2D rectangle |
CISize3Reader | Interface for reading the size of a 3D object |
CISizeReader | Interface for reading the size of a 2D object |
►NLLParserGenerator | Code related to LLLPG, the Loyc LL(k) Parser Generator (LLLPG.exe) |
CActionPred | |
CAlts | Describes a series of alternatives (branches), a kleene star (*), or an optional element (?) |
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 |
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 | Holds information about the first set or kth set of a single arm of an Alts |
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 |
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 |
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) |
CTerminalPred | Represents a terminal (which is a token or a character) or a set of possible terminals (e.g. 'A'..'Z') |
CZeroWidthPred | |
►NLLPG | Contains macros for using LLLPG in LeMP |
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 |
CIAdditionGroup | 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 | Provides additional bit-oriented integer operations |
CIBitwise | Provides the standard set of bitwise operators |
CIComplexMath | 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 | Provides methods for converting common numeric types to another numeric type "T" |
CIExp | Provides power, logarithm, raise-e-to-exponent (Exp) and logarithm-of-e (Log) operations |
CIField | This defines a Field with the operations +,-,*,/ |
CIFloatMath | Provides operations available on floating-point types (float and double), including trigonometry and exponentiation |
CIHasRoot | Provides the Sqrt operation and its inverse, Square |
CIIncrementer | Provides increment, decrement, and next/previous-representable- value operations |
CIIntMath | Provides operations available on all unsigned integer types (byte, uint, etc.); see also IMath<T>, IIntMath<T>, and IFloatMath<T> |
CIMath | Provides operations available on all system numeric types (int, uint, double, etc.); see also ISignedMath<T>, IUIntMath<T>, IIntMath<T> and IFloatMath<T> |
CIMultiplicationGroup | 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 | Provides the multiplication operation and the multiplicative identity, one |
CINumTraits | This interface provides information about a numeric type T |
CIOneProvider | Provides the value of "one" for type T |
CIOrdered | Provides comparison function for type T along with absolute value (Abs), and the minimum or maximum of two values (Min, Max) |
CIOrderedExt | Extension methods for IOrdered<T> |
CIRationalMath | Use this interface for floating-point, fixed-point, and rational types. Rational types support reciprocal and negation |
CIRing | This defines a Ring with the operations +,*
|
CISignedMath | Provides operations available on all signed numeric types (int, double, etc.); see also IUIntMath<T>, IIntMath<T> and IFloatMath<T> |
CITrigonometry | Provides trigonometry operations |
CIUIntMath | Provides operations available on all unsigned integer types (byte, uint, etc.); see also IMath<T>, IIntMath<T>, and IFloatMath<T> |
CIZeroProvider | Provides the value of "zero" for type T |
►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 |
►NImpl | |
►CPrinterState | A helper type for printer objects. Its primary purposes are to manage indentation and to "revoke" newlines; it also tracks the current line/column number |
CCheckpoint | |
►NLes | Contains classes related to Loyc Expression Syntax (LES), including the parser and printer (reachable through Loyc.Syntax.Les.LesLanguageService) |
CCustomLiteral | A custom literal is a normal number or string paired with a (typically unrecognized) type prefix or suffix |
CDefaultNodePrinterWriter | Base class for token-printing helper classes. See INodePrinterWriter |
CINodePrinterWriter | This interface is implemented by helper objects that handle the low-level details of node printing. It is used by Les2Printer |
CLes2LanguageService | The Value property provides easy access to the lexer, parser and printer for Loyc Expression Syntax (LES) |
CLes2Lexer | Lexer for EC# source code |
CLes2Parser | Parses LES (Loyc Expression Syntax) code into a sequence of Loyc trees (LNode), one per top-level statement |
CLes2PrecedenceMap | 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 chosen by this class and cached for future reference |
CLes2Printer | Prints a Loyc tree in LES (Loyc Expression Syntax) format |
CLes2PrinterOptions | Options to control the way Loyc trees are printed by Les2Printer |
CLes3LanguageService | |
CLes3Lexer | |
CLes3Parser | |
CLes3PrecedenceMap | |
CLes3PrettyPrinter | A variant of Les3Printer that adds syntax highlighting in one of three ways: as console output, as HTML output, or as LesColorCode control codes |
CLes3Printer | |
CLes3PrinterOptions | A set of extended options supported when printing in LES3 |
CLesLanguageService | Alternate name for Les2LanguageService (will change to Les3LanguageService in the future) |
CLesPrecedence | Contains Precedence objects that represent the precedence levels of LES |
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 | 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. It can also be used with the EnumerableExt.Buffered extension method to help feed data to your parser |
►CBaseLexer | The recommended base class for lexers generated by LLLPG, when not using the inputSource option |
CSavePosition | A helper class used by LLLPG for backtracking |
CCharCategory | |
CILexer | A standard interface for lexers |
CILllpgApi | 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 | 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 |
CISimpleToken | 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 | The methods of Token in the form of an interface |
CLexerSource | An implementation of the LLLPG Lexer API, used with the LLLPG options inputSource and inputClass |
CLexerSourceFile | Adds the AfterNewline method to SourceFile |
CLexerSourceWorkaround | This class only exists to work around a limitation of the C# language: "cannot change access modifiers when overriding 'protected' inherited member Error(...)" |
CLexerWrapper | 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 |
CTriviaSaver | A lexer wrapper that saves whitespace tokens into a list (TriviaList) |
CWhitespaceFilter | 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 |
CAbstractTriviaInjector | Encapsulates an algorithm that consumes trivia (comments and newlines) from a list and adds it as trivia attributes into LNodes |
►CBaseParser | 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 | 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 | 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, by convention, have special meaning: 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) |
CIHasFileName | |
CIIndexPositionMapper | This interface is for classes that can convert indexes to SourcePos structures and back |
CIIndexToLine | Contains IndexToLine method |
CILineAndColumn | A line/column pair representing a location in a text file. Numbering starts at one for both Line and Column |
CILineColumnFile | |
CILiteralParser | This interface for parsing text into objects is implemented by LiteralHandlerTable |
CILiteralPrinter | This interface for converting literals to text is implemented by LiteralHandlerTable |
CILiteralValue | Bundles the optional original text of a value with an optional in-memory form of it |
CILiteralValueProvider | The intention of this interface is that a struct implementing it can be embedded inside a LiteralNode in order to lazily obtain the text of a literal, or even parse it lazily |
CILNode | A read-only interface for objects that act as Loyc trees |
CILNodePrinter | This interface allows serializing LNode objects into the syntax of a particular programming language |
CILNodePrinterOptions | A set of relatively universal printing options that LNodePrinters should understand |
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 | Helper class for mapping from indexes to SourcePos and back |
CIParsingOptions | A set of relatively universal parsing options that IParsingServices should understand |
CIParsingService | An interface that encapsulates the lexer and parser of a programming language, or a non-programming language that can be represented by Loyc trees |
CISerializedLiteral | |
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 |
CISourceRange | Represents a (contiguous) region of text in a source file |
CIUninterpretedLiteral | Represents the text form of a literal value, without its parsed value |
CLineAndCol | Please use the new name of this class: LineAndColumn. Holds a line number (Line) and a position in the line (Column). This class isn't really needed in Loyc but is separated from SourcePos in case anyone might want position without a filename |
CLineAndColumn | This is the new (and recommended) name for LineAndCol. It holds a line number (Line) and a position in the line (Column). Numbering starts at one for both Line and Column |
CLineColumnFile | This is the new (and recommended) name for SourcePos. It's named after what it contains: a line number, column number and file name. Numbering starts at one for both Line and Column |
CLineColumnFileAndIndex | This is a tuple of a FileName, Line, Column, and OriginalIndex |
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++) |
CLiteralHandlerTable | A central class for keeping track of literal parsers and literal printers |
CLiteralNode | Base class of all nodes that represent literal values such as 123 and "foo" |
CLiteralValue | Bundles the optional original text of a value with an optional in-memory form of it; see remarks at ILiteralValue. This struct can also be turned into an LNode by calling LNode.Literal<LiteralValue>(SourceRange, LiteralValue, NodeStyle) |
►CLNode | All nodes in a Loyc syntax tree share this base class |
CPushedPrinter | Returned by PushPrinter(ILNodePrinter) |
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 |
CLNodeList | A list of non-null references to LNode |
CLNodePrinter | Standard extension methods for ILNodePrinter |
CLNodePrinterOptions | A concrete class that users can pass to an LNodePrinter |
CLNodeVisitor | Base class for people that want to implement the visitor pattern with LNode |
CParseHelpers | Static methods that help with common parsing jobs, such as parsing integers, floats, and strings with C escape sequences |
CParserSource | An implementation of the LLLPG Parser API, used with the LLLPG options inputSource and inputClass |
CParsingMode | Standard parsing modes used with IParsingService and ILNodePrinterOptions |
CParsingOptions | A simple implementation of IParsingOptions |
►CParsingService | Standard extension methods for IParsingService |
CPushedCurrent | Returned by PushCurrent(IParsingService) |
CPrecedence | A four-byte tuple that represents the precedence and miscibility of an operator |
CPrintHelpers | Static methods that help to print literals, such as EscapeCStyle which escapes special characters with backslashes |
CSourceFile | 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 | Please use the new name of this class: LineColumnFile. Holds a filename (FileName), a line number (Line) and a position in the line (Column), representing a position in a source code file |
CSourcePosAndIndex | Please use the new name of this class, LineColumnFile. This is a LineColumnFile that also includes the original index from which the Line and PosInLine were derived |
CSourcePosIsObsolete | This just helps end-users to discover the name change SourcePos.PosInLine => ILineAndColumn.Column during upgrades |
CSourceRange | Holds a reference to a source file (ISourceFile<char>) and the beginning and end indices of a range in that file |
CSourceRangeExt | Standard extension methods for ISourceRange |
CStandardLiteralHandlers | A LiteralHandlerTable that is preinitialized with all standard literal parsers and printers |
CStandardTriviaInjector | Encapsulates an algorithm that consumes trivia (comments and newlines) from a list and adds it as trivia attributes into LNodes. This makes it possible to preserve comments and newlines independently of the language parser, so that the parser need not be specifically designed to preserve them |
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 |
CUninterpretedLiteral | A simple implementation of IUninterpretedLiteral which can also be turned into an LNode by calling LNode.Literal<UninterpretedLiteral>(SourceRange, UninterpretedLiteral, NodeStyle) |
►NThreading | Helper classes for multithreaded code |
CSavedThreadLocal | Designed to be used in a "using" statement to temporarily alter a ThreadLocal<T> |
CSavedValue | Designed to be used in a "using" statement to temporarily alter a ThreadLocalVariable<T> or Holder<T> or something else implementing IHasMutableValue<T> |
CScratchBuffer | 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 | 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 | 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 |
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 | An implementation of ITags designed for AstNode |
CUG | Contains global functions of Loyc.Utilities that don't belong in any specific class |
CByteArrayInString | Encodes and decodes BAIS (Byte Array In String) encoding, which preserves runs of ASCII characters unchanged. This encoding is useful for debugging (since ASCII runs are visible) and for conversion of bytes to JSON |
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 |
CEither | Holds a single value of one of two types (L or R) |
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 | 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 | A trivial class that holds a single value of type T in the Value property |
CICloneable | Interface for types that can duplicate themselves |
CIEither | Represents a type that holds a single value of one of two types (L or R) |
CIHasLocation | This interface allows an object to declare its "location" |
CIHasMutableValue | Interface for things that have a mutable Value property |
CIHasValue | Interface for things that have a Value property |
CILogMessage | A formatted message with an associated Context |
CIMaybe | |
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 |
CIReferenceEquatable | 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 | 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, or passes it to another localizing method |
CLocalize | Localize is a global hook into which a string-mapping localizer can be installed. It makes your program localization-ready with no effort. See article: http://core.loyc.net/essentials/localize.html |
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<TContext>.Write(Severity,TContext,string). Typically used with MessageHolder |
CMaybe | |
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 |
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 |
CMessageMulticaster | A message sink that sends its messages to a list of other sinks |
►CMessageSink | Keeps track of the default message sink (Default); contains a series of helper methods; and contains extension methods modeled after log4net: Fatal, Error, Warn, Info, Debug |
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) |
CMessageSinkWithContext | A message sink wrapper that has a default value for the context parameter, which is used when the context provided is null, and an optional message prefix which is inserted at the beginning of the format string |
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, as well as an ErrorCount |
CPair | Pair.Create(a, b) is a helper method for making pairs |
CReadOnlyException | An exception thrown when an attempt is made to modify a read-only object |
CReferenceComparer | An IEqualityComparer<T> based on reference equality |
CServiceProvider | Adds extension methods to modernize .NET's simple built-in service locator |
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 |
CStringBuilderExt | Extension methods that add some functionality of string to StringBuilder |
CStringExt | Extension methods for strings, such as SplitAt, Left, Right, FormatCore and Slice |
CSymbol | Represents a symbol, which is a singleton string that supports fast comparisons and extensible enums |
CSymbolPool | A collection of Symbols |
CSymbolSet | A set of symbols |
CTraceMessageSink | Sends all messages to System.Diagnostics.Trace.WriteLine(string) |
CTriplet | |
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 | 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 | @void.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 | Abstract class that helps you implement wrappers by automatically forwarding calls to Equals(), GetHashCode() and ToString() |