Enhanced C#
Loyc library documentation
 All Classes Namespaces Functions Variables Enumerations Enumerator Properties Events Pages
Class Hierarchy
This inheritance list is sorted roughly, but not completely, alphabetically:
[detail level 12345678]
 CLoyc.Compatibility.__ThisEnsuresTheNamespaceIsNotEmptyEnsure using Loyc.Compatibility is not an error
 CLoyc.Syntax.AbstractTriviaInjector< Trivia >Encapsulates an algorithm that consumes trivia (comments and newlines) from a list and adds it as trivia attributes into LNodes.
 CLeMP.Tests.A.AliasTest
 CLeMP.Tests.B.AliasTest
 CLoyc.Collections.AListExt
 CLoyc.Collections.Impl.AListNode< 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.
 CLoyc.Collections.Impl.AListTreeObserverExtHelper methods for IAListTreeObserver{K,T}.
 CLoyc.Threading.AmbientService< T >Holds the shared state behind an ambient service (the Ambient Service Pattern): a global default instance, plus an async-local override installed by Set in a using statement.
 CLoyc.Collections.ArrayOf4< T >
 CLoyc.MiniTest.AssertThe Assert class contains a collection of static methods that mirror the most common assertions used in NUnit.
 CAttribute
 CAttribute
 CBaseILexer< ICharSource, Token >
 CLoyc.Syntax.Lexing.BaseLexerAlias for BaseLexer{C} where C is ICharSource.
 CLoyc.Syntax.BaseParser< 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.
 CLoyc.Utilities.BloomFilterM64K2A bloom filter for very small sets.
 CLeMP.Prelude.BuiltinMacrosDefines noMacro(...) for suppressing macro expansion and import macros your.namespace.name as an alias for #importMacros(your.namespace.name).
 CLoyc.ByteArrayInStringEncodes 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.
 CLoyc.Collections.CGContains global functions of Loyc.Collections that don't belong in any specific class.
 CLoyc.Syntax.Lexing.CharCategory
 CLoyc.CheckParamHelper methods for checking argument values that throw exceptions when an argument value is not acceptable.
 CLoyc.Syntax.Impl.PrinterState.Checkpoint
 CLoyc.Utilities.CoExtension methods for Co{T}.
 CLoyc.Syntax.CodeSymbolsA list of common symbols that, by convention, have special meaning: operators, built-in data types, keywords, trivia, etc.
 CLoyc.Collections.CollectionDebugView< T >This helper class gives a nice view of a custom collection within the debugger.
 CLoyc.Collections.CollectionSource
 CLeMP.CompilerA class that helps you invoke MacroProcessor on on a set of source files, given a set of command-line options.
 CLoyc.Collections.CPTrie< 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.
 CDefaultSynchronizerThe "synchronize any T with zero configuration" dispatcher. Given a type T, Supports and Sync try to find some mechanism to serialize it.
 CDefaultSynchronizer< SyncManager, T >
 CLoyc.SyncLib.Impl.ObjectSyncher< SyncManager, SyncObj, T >.DefaultTag
 CDictionaryBase< K, V >
 CLoyc.Collections.DictionaryDebugView< 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}.
 CLoyc.Collections.DictionaryExtExtension methods for Dictionary{K,V}, IDictionary{K,V} and IDictionaryEx{K, V}.
 CDList< Token >
 CLoyc.Ecs.EcsFactsA collection of miscellaneous information about the Enhanced C# language.
 CLoyc.Ecs.EcsNodePrinterEncapsulates the code for printing an LNode to EC# source code.
 CLoyc.Ecs.EcsPrecedenceContains Precedence objects that represent the precedence rules of EC#.
 CLoyc.Ecs.EcsValidatorsA 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.
 CLoyc.Collections.Empty< T >A variety of empty lists.
 CLoyc.Collections.EmptyArray< T >EmptyArray{T}.Value lets you avoid allocating an empty array on the heap.
 CLoyc.Collections.EmptyEnumerator< T >Helper class: an empty enumerator.
 CLoyc.Collections.EmptyList< T >Helper class: EmptyList{T}.Value is a read-only empty list.
 CLoyc.Collections.EnumerableExtAdditional extension methods for IEnumerable{T}, IReadOnlyCollection{T}, and ICollection{T}, beyond what LINQ provides.
 CEqualityComparer< T >
 CEventArgs
 CException
 CLoyc.ExceptionExtExtension methods for exceptions.
 CExtraSynchronizers< SyncManager >Default synchronizers, beyond those provided by the SyncManager itself and by TupleSynchronizer{SM}, that DefaultSynchronizer{SM,T} discovers via reflection (once per closed generic pair): arrays, common collections, dictionaries, KeyValuePair, enums, DateTime and TimeSpan. Collection items are synchronized recursively via DefaultSyncField{SM,T}, so e.g. List<(int, Person[])> works as long as Person is registered in the ambient TypeSyncRegistry.
 CLoyc.EzStopwatchA wrapper around Stopwatch with a more convenient interface, currently oriented around measuring milliseconds (TODO: increase similarity to Stopwatch)
 CLoyc.SyncLib.FieldIdThe data type of a field name in SyncLib, which can be implicitly converted from a string. It includes both a Name string and an Id integer, in order to support both string-keyed fields (e.g. JSON) and int-keyed fields (e.g. Protocol Buffers). By convention, an Id of int.MinValue indicates that int-keyed implementations of ISyncManager should choose an ID automatically based on the field order.
 CSyncBinary.Options.ForReader
 CSyncJson.Options.ForReader
 CSyncBinary.Options.ForWriter
 CSyncJson.Options.ForWriter
 CSyncProtobuf.Options.ForWriter
 CLoyc.GContains global functions that don't belong in any specific class.
 CLoyc.Utilities.GoInterfaceMainly for internal use by the other GoInterface classes.
 CLoyc.Utilities.GoInterface< 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.
 CLoyc.Utilities.GoInterface< 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.
 CLoyc.GSymbolThis class produces global symbols.
 CLoyc.Collections.Heap
 CLoyc.Collections.IAdd< in T >An interface for depositing items. Includes only an Add(T) method.
 CIAdd< T >
 CLoyc.Collections.Impl.IAListTreeObserver< 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.
 CLoyc.Collections.IArraySink< in T >Represents a write-only array.
 CIAutoCreatePool< UString, Symbol >
 CLoyc.Collections.IBinumerable< T >Interface for a collection that can return IBinumerator{T}s pointing to the beginning and end of the collection.
 CIBRange< uchar >
 CICloneable
 CLoyc.ICloneable< out T >Interface for types that can duplicate themselves.
 CICollection
 CICollection< KeyValuePair< K, V >>
 CICollection< Num >
 CICollection< Symbol >
 CICollection< T >
 CICollection< TKey >
 CICollection< TValue >
 CLoyc.Collections.MutableListExtensionMethods.ICollectionExtExtension methods for ICollection{T}.
 CIComparable
 CIComparable< IntRange >
 CIComparable< Pair< T1, T2 >>
 CIComparable< Symbol >
 CIComparer< T >
 CLoyc.Collections.IContains< in T >
 CLoyc.Math.IConvertTo< T >Provides methods for converting common numeric types to another numeric type "T".
 CLoyc.Collections.ICountHolds the Count property found in nearly all collection interfaces.
 CIDictionary< byte[], TValue >
 CIDictionary< int, TValue >
 CIDictionary< K, V >
 CIDictionary< K1, K2 >
 CIDictionary< long, TValue >
 CIDictionary< string, TValue >
 CIDictionary< Symbol, ValueT >
 CIDisposable
 CIEnumerable
 CIEnumerable< SymbolE >
 CIEnumerable< T >
 CIEnumerable< TKey >
 CIEnumerable< TValue >
 CIEnumerator< T >
 CIEnumerator< Token >
 CIEnumeratorFrame< DescendantsFrame, LNode >
 CLoyc.Collections.Impl.IEnumeratorFrame< Frame, T >Helper interface for NestedEnumerator{Frame, T}.
 CIEqualityComparer< KeyValuePair< K, V >>
 CIEqualityComparer< Memory< byte >>
 CIEqualityComparer< Memory< T >>
 CIEqualityComparer< object >
 CIEqualityComparer< ReadOnlyMemory< byte >>
 CIEqualityComparer< ReadOnlyMemory< T >>
 CIEqualityComparer< T >
 CIEquatable< AndPred >
 CIEquatable< CustomLiteral >
 CIEquatable< Either< L, R >>
 CIEquatable< GrammarPos >
 CIEquatable< ILNode >
 CIEquatable< IMaybe< T >>
 CIEquatable< IntRange >
 CIEquatable< IntSet >
 CIEquatable< InvertibleSet< T >>
 CIEquatable< IPGTerminalSet >
 CIEquatable< ITuple >
 CIEquatable< JsonValue >
 CIEquatable< LNode >
 CIEquatable< LNodeList >
 CIEquatable< Maybe< T >>
 CIEquatable< MSet< T >>
 CIEquatable< NegList< T >>
 CIEquatable< NegListSource< T >>
 CIEquatable< Pair< T1, T2 >>
 CIEquatable< Precedence >
 CIEquatable< ReversedList< T >>
 CIEquatable< Set< T >>
 CIEquatable< SourceRange >
 CIEquatable< Symbol >
 CIEquatable< Token >
 CIEquatable< TokenTree >
 CIEquatable< UString >
 CLoyc.Math.IExp< T >Provides power, logarithm, raise-e-to-exponent (Exp) and logarithm-of-e (Log) operations.
 CLoyc.Syntax.IFileName
 CLoyc.Utilities.IGoInterfaceWrapperAll GoInterface wrappers implement this interface.
 CLoyc.Graphs.IGraph< out Node, out Edge, out EdgeList, out Cost >A directed graph, consisting of nodes and edges.
 CLoyc.Math.IHasRoot< T >Provides the Sqrt operation and its inverse, Square.
 CLoyc.Math.IIncrementer< T >Provides increment, decrement, and next/previous-representable- value operations.
 CLoyc.Collections.IIndexed< in K, out V >Represents the essence of a dictionary, which returns a value given a key.
 CLoyc.Collections.IIndexedSink< in K, in V >Represents a V this[K key] { set; } property.
 CLoyc.Syntax.IIndexRangeRepresents a pair of integers that represents a range of indices: either start & end or start & length. Invariant: Length == EndIndex-StartIndex.
 CLoyc.Collections.IIsEmptyHolds the IsEmpty property that tells you if a collection is empty.
 CLoyc.Syntax.ILineAndColumnA line/column pair representing a location in a text file. Numbering starts at one for both Line and Column.
 CIList
 CIList< T >
 CIListAndListSource< LNode >
 CLoyc.Collections.MutableListExtensionMethods.IListExtExtension methods and helper methods for IList{T}.
 CIListSource< char >
 CIListSource< IntRange >
 CIListSource< IToken< int >>
 CIListSource< Token >
 CLoyc.Syntax.ILiteralParserThis interface for parsing text into objects is implemented by LiteralHandlerTable.
 CLoyc.Syntax.ILiteralPrinterThis interface for converting literals to text is implemented by LiteralHandlerTable.
 CLoyc.Syntax.ILiteralValueProviderThe 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.
 CLoyc.Syntax.Lexing.ILllpgApi< 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.
 CILllpgApi< Token, MatchType, MatchType >
 CLoyc.Syntax.ILNodePrinterThis interface allows serializing LNode objects into the syntax of a particular programming language.
 CLoyc.Syntax.Impl.ILNodePrinterHelperA version of ILNodePrinterHelper{Self} without a type parameter.
 CLoyc.Syntax.ILNodePrinterOptionsA set of relatively universal printing options that LNodePrinters should understand.
 CLoyc.Syntax.ILNodeVisitorInterface 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.
 CLoyc.ILocationThis interface allows an object to declare its "location".
 CLoyc.ILogMessageA formatted message with an associated Context.
 CLoyc.IMessageSinkAlias for IMessageSink<object>.
 CLoyc.IMessageSink< in TContext >A general-purpose interface for a class that accepts formatted messages with context information.
 CLoyc.Syntax.Lexing.IndentTokenGeneratorA preprocessor usually inserted between the lexer and parser that inserts "indent", "dedent", and "end-of-line" tokens at appropriate places in a token stream.
 CLoyc.Syntax.IndexPositionMapperSynonym for IndexPositionMapper<IListSource<char>>.
 CINegListSource< ILNode >
 CINegListSource< LNode >
 CLoyc.Geometry.INewPoint3< Point, T >This interface exists to work around a limitation of C#; see IPoint{T} and IPoint3{T}.
 CLoyc.Geometry.INewPoint< Point, T >This interface exists to work around a limitation of C#; see IPoint{T}.
 CLoyc.Geometry.INewRectangle3< Rect, T >This interface exists to work around a limitation of C#; see IRectangle3{T}.
 CLoyc.Geometry.INewRectangle< Rect, T >This interface exists to work around a limitation of C#; see IRectangle{T}.
 CLoyc.Syntax.Les.INodePrinterWriterThis interface is implemented by helper objects that handle the low-level details of node printing. It is used by Les2Printer.
 CLoyc.Collections.INotifyListChanged< T, TCollection >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.
 CLoyc.Collections.INotifyListChanging< T, TCollection >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.
 CLeMP.InputOutputFor LeMP: an input file plus per-file options (input and output language) and output code.
 CLoyc.Collections.Impl.InternalListContains static methods to help manage raw arrays with even less overhead than InternalList{T}.
 CLoyc.Collections.Impl.InternalSetStatsStatistics returned from InternalSet{T}.CountMemory.
 CInvalidOperationException
 CInvertibleSet< LNode >
 CLoyc.Math.IOneProvider< T >Provides the value of "one" for type T.
 CLoyc.Collections.IOptimizeInterface for an Optimize() method.
 CLoyc.Math.IOrderedExtExtension methods for IOrdered{T}.
 CLoyc.Graphs.IOutbound< out EdgeList >A node in a graph that only provides access to outbound edges.
 CLoyc.Syntax.IParsingOptionsA set of relatively universal parsing options that IParsingServices should understand.
 CLoyc.Syntax.IParsingServiceAn interface that encapsulates the lexer and parser of a programming language, or a non-programming language that can be represented by Loyc trees.
 CLoyc.LLParserGenerator.IPGCodeGenHelperA 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.
 CLoyc.Geometry.IPointReader< T >Interface for reading the coordinates of a 2D point.
 CLoyc.Collections.IPopExt
 CLoyc.Collections.IPush< in T >Encapsulates a Push(T) method.
 CIRange< char >
 CIReadOnlyCollection< KeyValuePair< K, V >>
 CIReadOnlyCollection< Symbol >
 CIReadOnlyCollection< T >
 CIReadOnlyCollection< TValue >
 CIReadOnlyDictionary< byte[], TValue >
 CIReadOnlyDictionary< int, TValue >
 CIReadOnlyDictionary< K, BMultiMap< K, V >.ValueList >
 CIReadOnlyDictionary< K, MultiMap< K, V >.ValueList >
 CIReadOnlyDictionary< K, V >
 CIReadOnlyDictionary< long, TValue >
 CIReadOnlyDictionary< Symbol, ValueT >
 CIReadOnlyList< Num >
 CIReadOnlyList< T >
 CLoyc.IReferenceEquatableThis 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.
 CLoyc.Collections.IScan< T >Same as IScannable{T} except that it does not implement IEnumerable{T}. In most cases IScannable{T} should be implemented instead.
 CIScanner< byte >
 CLoyc.Collections.IScanner< T >A data-reading object returned by IScannable{T} implementations. This interface is used for reading data, similar to IEnumerator{T}, but it reads blocks of data instead of single items. This can improve performance by reducing the number of interface calls necessary to scan a collection.
 CISet< T >
 CLoyc.Collections.ISetOperations< in T, in InSetT, out OutSetT >Set-combining operations: With, Without, Union, Intersect, Except, Xor.
 CLoyc.Collections.ISetTests< SetT >Set testing operations.
 CLoyc.Syntax.Lexing.ISimpleTokenAlias for ISimpleToken{int}.
 CLoyc.Geometry.ISizeReader< T >Interface for reading the size of a 2D object.
 CISyncField< SM, T >
 CLoyc.SyncLib.ISyncField< SyncManager, T >Represents the low-level synchronization behavior for a single list item. SyncManagerHelper needs this.
 CISyncField< SyncManager, T >
 CISyncManager
 CLoyc.SyncLib.ISyncManagerThis is the central interface of Loyc.SyncLib. To learn more, please visit the web site: http://synclib.loyc.net/
 CLoyc.SyncLib.ISyncObject< SyncManager, T >This interface is equivalent to SyncObjectFunc{SyncManager,T}, reformulated as an interface. It only exists because the CLR (C# runtime) supports optimizations on generic parameters that are structs, but similar optimizations don't exist for delegates. For this reason it is possible to achieve higher performance by providing a synchronizer in the form of a struct rather than a delegate (see Remarks)
 CISyncOptions
 CLoyc.SyncLib.ISyncOptionsAn interface for the options objects of ISyncManager implementations (e.g. SyncJson.Options), returned from ISyncManager.Options. It exposes settings whose meaning is not specific to a single data format.
 CLoyc.ITags< T >Interface for an object that can have "tags" attached, which are arbitrary objects reached through a key Symbol.
 CLoyc.Graphs.ITo< out Node >Something with a To property, usually a directed edge in a graph.
 CLoyc.Syntax.Lexing.ITokenAlias for IToken{int}.
 CLoyc.Math.ITrigonometry< T >Provides trigonometry operations.
 CLoyc.Collections.ITryGet< in K, out V >Enables access to TryGet extension methods for retrieving items from a collection without risk of exceptions. Unlike IReadOnlyDictionary{K, V}, this interface supports variance (e.g. ITryGet{object, string} can be assigned to ITryGet{string, object}) and it does not throw when the key is null.
 CITuple
 CLoyc.Syntax.IUninterpretedLiteralRepresents the text form of a literal value, without its parsed value.
 CLoyc.IValue< out T >Interface for things that have a Value property.
 CLoyc.Math.IZeroProvider< T >Provides the value of "zero" for type T.
 CSyncJson.Parser.JsonPointerRepresents a pointer to the current position in the JSON data stream, plus the index where the current item started and the property key at that index.
 CLoyc.Collections.Impl.KeyWalkerInternal implementation class. Represents a pointer to a location within a byte array.
 CLoyc.LLParserGenerator.LLParserGenerator.KthSetHolds information about the first set or kth set of a single arm of an Alts.
 CLoyc.Collections.LCExtExtension methods for Loyc Collection interfaces (such as IListSource{T}).
 CLoyc.Collections.MutableListExtensionMethods.LCExt
 CLoyc.Collections.LCInterfacesCore functionality for Loyc collection interfaces
 CLoyc.Syntax.Les.Les2PrinterPrints a Loyc tree in LES (Loyc Expression Syntax) format.
 CLoyc.Syntax.Les.Les3PrecedenceMapThis 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.
 CLoyc.Syntax.Les.Les3Printer
 CLoyc.Syntax.Les.LesPrecedenceContains Precedence objects that represent the precedence levels of LES.
 CLoyc.Syntax.Lexing.LexerSourceA synonym for LexerSource{C} where C is ICharSource.
 CLoyc.Graphs.LGExt
 CLoyc.Graphs.LGInterfacesCore functionaliity for graphs
 CLoyc.Syntax.LineRemapperA 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++)
 CLoyc.Collections.LinqToListsThis 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.
 CLoyc.Collections.MutableListExtensionMethods.LinqToLists
 CLoyc.Collections.ListChangeInfo< T >Contains information about how a collection is about to change.
 CLoyc.Collections.ListExtExtension methods and helper methods for List{T}, IList{T}, IReadOnlyList{T}, arrays, IListSource{T}, and for related mutable interfaces such as IArray{T}.
 CListSourceBase< char >
 CListSourceBase< TOut >
 CListSourceBase< TResult >
 CLoyc.Collections.ListSourceDebugView< T >This helper class gives a nice view of a custom collection within the debugger.
 CLoyc.LLParserGenerator.LLParserGeneratorEncapsulates LLLPG, the Loyc LL Parser Generator, which generates LL(k) recursive-descent parsers.
 CLoyc.LLParserGenerator.LlpgGeneralTestsBaseShared base class for "full-stack" LLLPG tests that use LeMP, the Ecs parser, and LLLPG macros in addition to the core engine.
 CLoyc.LLParserGenerator.LlpgHelpersHelper methods for making LLLPG grammar nodes. Used by LlpgCoreTests.
 CLoyc.Syntax.LNodeExtStandard extension methods for LNode.
 CLoyc.Syntax.LNodeFactoryContains 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.
 CLoyc.Syntax.LNodePrinterStandard extension methods for ILNodePrinter.
 CLoyc.Syntax.Impl.LNodePrinterHelperExtStandard extension methods for ILNodePrinterHelper
 CLoyc.Syntax.Impl.LNodePrinterHelperLocationA location in the output stream of LNodePrinterHelper.
 CLoyc.Syntax.LNodeRangeMapperHelps map locations (such as error locations) from a file (usually an output file) to an LNode (see Remarks).
 CLoyc.LocalizeLocalize 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
 CLeMP.MacroContextStandard extension methods for IMacroContext.
 CLeMP.MacroProcessorEncapsulates the LeMP engine, a simple LISP-style macro processor, suitable for running LLLPG and other lexical macros.
 CLoyc.LLPG.MacrosMacros for using LLLPG in LeMP.
 CLeMP.Tests.MacroTesterBase
 CLoyc.Maybe
 CLoyc.MemoizedTypeName.NET Framework reflection doesn't offer complete type names for generic types such as "List&lt;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.
 CLoyc.MemoizedTypeName< T >MemoizedTypeName<T>.Get() is an alternative to MemoizedTypeName.Get(typeof(T)).
 CLoyc.MessageSinkKeeps 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.
 CLoyc.NoValueNoValue.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.
 CLoyc.SyncLib.Impl.ObjectSyncherA helper for reading/writing data using a SyncObjectFunc{SyncManager, T}.
 CLoyc.PairPair.Create(a, b) is a helper method for making pairs.
 CLoyc.Syntax.ParseHelpersStatic methods that help with common parsing jobs, such as parsing integers, floats, and strings with C escape sequences.
 CLoyc.Syntax.ParsingServiceStandard extension methods for IParsingService.
 CLoyc.LLParserGenerator.PGTerminalSetExtension methods for IPGTerminalSet.
 CPredefinedSynchronizer< SyncManager >Gets synchronizer functions for types with built-in support, such as int, enums, tuples, or arrays of primitives – work in progress.
 CLoyc.LLParserGenerator.PredVisitorBase class for implementing a visitor that examines a tree of LLLPG Predicates.
 CLeMP.Tests.PreludeMacroTests_Les2
 CLeMP.Tests.PreludeMacroTests_Les3
 CLoyc.Syntax.PrintHelpersStatic methods that help to print literals, such as EscapeCStyle which escapes special characters with backslashes.
 CLoyc.LLParserGenerator.ProgramEntry point of LLLPG.exe, with QuickRun() method to help invoke LLLPG programmatically.
 CLoyc.Collections.RangeExtExtension/helper methods for ranges.
 CSyncBinary.ReaderState.ReadingPointer
 CReadOnlyCollectionBase< TOut >
 CReadOnlyCollectionBase< TResult >
 CLoyc.LLParserGenerator.RuleRepresents an LLLPG rule, which is a Predicate plus a Name and optional attributes (e.g. token, private, etc.).
 CLoyc.MiniTest.RunTestsSearches for test methods and runs them, printing the name of each test to the console followed by errors (if any) produced by the test.
 CLoyc.SyncLib.Impl.ScannerSaver< SyncManager, Scanner, T, SyncItem >Contains a sync function for saving an IScanner{T}. Requires and assumes that IsWriting is true in the ISyncManager provided.
 CLoyc.Collections.Impl.SCellStandard cell, used to encode keys in a CPSNode
 CLoyc.ServiceProviderAdds extension methods to modernize .NET's simple built-in service locator.
 CLoyc.Collections.SimpleCache< T >A cache designed to save memory by sharing instances of identical strings and other immutable objects.
 CLoyc.Utilities.SimpleTimerA fast, simple timer class with a more convenient interface than System.Diagnostics.Stopwatch. Its resolution is typically 10-16 ms on desktop Windows systems.
 CLoyc.Syntax.SourceFile
 CLoyc.Syntax.SourcePosIsObsoleteThis just helps end-users to discover the name change SourcePos.PosInLine => ILineAndColumn.Column during upgrades
 CLoyc.Syntax.SourceRangeExtStandard extension methods for ISourceRange.
 CSyncJson.Parser.StackEntry
 CSyncBinary.ReaderState.StackEntry
 CLoyc.Utilities.StatisticA 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().
 CLoyc.StringBuilderExtExtension methods that add some functionality of string to StringBuilder.
 CLoyc.StringExtExtension methods for strings, such as SplitAt, Left, Right, FormatCore and Slice.
 CSyncBinaryf Convenience methods for a fast pair of ISyncManager implementations intended for binary files/streams. The binary format is very fast and compact because it stores no metadata, but it must be used with care to avoid data corruption (see remarks).
 CSyncDynamicExtExtension methods for dynamically-typed (polymorphic) synchronization. By default these use the ambient services TypeSyncRegistry.Default and TypeTagRegistry.Default; overloads that accept registry instances bypass the ambient services. See TypeSyncRegistry, TypeTagRegistry and TypeTagAttribute to learn how dynamic typing works.
 CSyncJson
 CLoyc.SyncLib.SyncJsonContains optimized ISyncManager implementations for reading and writing JSON data (SyncJson.Reader and SyncJson.Writer) plus an options type (SyncJson.Options) and convenience methods for reading and writing objects as JSON (Read, ReadI, Write, WriteI and WriteString methods.) The JSON format is designed to be compatible with Newtonsoft.Json.
 CLoyc.SyncLib.SyncManagerExtStandard extension methods for ISyncManager.
 CLoyc.SyncLib.SyncManagerExtBigIntegerThe methods in this class belong in SyncManagerExt but they must be put in a different class to avoid C# compiler error CS0111, "Type 'SyncManagerExt' already defines a member called 'SyncList' with the same parameter types".
 CLoyc.SyncLib.SyncManagerExtBoolThe methods in this class belong in SyncManagerExt but they must be put in a different class to avoid C# compiler error CS0111, "Type 'SyncManagerExt' already defines a member called 'SyncList' with the same parameter types".
 CLoyc.SyncLib.SyncManagerExtByteThe methods in this class belong in SyncManagerExt but they must be put in a different class to avoid C# compiler error CS0111, "Type 'SyncManagerExt' already defines a member called 'SyncList' with the same parameter types".
 CLoyc.SyncLib.SyncManagerExtCharThe methods in this class belong in SyncManagerExt but they must be put in a different class to avoid C# compiler error CS0111, "Type 'SyncManagerExt' already defines a member called 'SyncList' with the same parameter types".
 CLoyc.SyncLib.SyncManagerExtDecimalThe methods in this class belong in SyncManagerExt but they must be put in a different class to avoid C# compiler error CS0111, "Type 'SyncManagerExt' already defines a member called 'SyncList' with the same parameter types".
 CLoyc.SyncLib.SyncManagerExtDoubleThe methods in this class belong in SyncManagerExt but they must be put in a different class to avoid C# compiler error CS0111, "Type 'SyncManagerExt' already defines a member called 'SyncList' with the same parameter types".
 CLoyc.SyncLib.SyncManagerExtFloatThe methods in this class belong in SyncManagerExt but they must be put in a different class to avoid C# compiler error CS0111, "Type 'SyncManagerExt' already defines a member called 'SyncList' with the same parameter types".
 CLoyc.SyncLib.SyncManagerExtIntThe methods in this class belong in SyncManagerExt but they must be put in a different class to avoid C# compiler error CS0111, "Type 'SyncManagerExt' already defines a member called 'SyncList' with the same parameter types".
 CLoyc.SyncLib.SyncManagerExtLongThe methods in this class belong in SyncManagerExt but they must be put in a different class to avoid C# compiler error CS0111, "Type 'SyncManagerExt' already defines a member called 'SyncList' with the same parameter types".
 CLoyc.SyncLib.SyncManagerExtSByteThe methods in this class belong in SyncManagerExt but they must be put in a different class to avoid C# compiler error CS0111, "Type 'SyncManagerExt' already defines a member called 'SyncList' with the same parameter types".
 CLoyc.SyncLib.SyncManagerExtShortThe methods in this class belong in SyncManagerExt but they must be put in a different class to avoid C# compiler error CS0111, "Type 'SyncManagerExt' already defines a member called 'SyncList' with the same parameter types".
 CLoyc.SyncLib.SyncManagerExtStringThe methods in this class belong in SyncManagerExt but they must be put in a different class to avoid C# compiler error CS0111, "Type 'SyncManagerExt' already defines a member called 'SyncList' with the same parameter types".
 CLoyc.SyncLib.SyncManagerExtUIntThe methods in this class belong in SyncManagerExt but they must be put in a different class to avoid C# compiler error CS0111, "Type 'SyncManagerExt' already defines a member called 'SyncList' with the same parameter types".
 CLoyc.SyncLib.SyncManagerExtULongThe methods in this class belong in SyncManagerExt but they must be put in a different class to avoid C# compiler error CS0111, "Type 'SyncManagerExt' already defines a member called 'SyncList' with the same parameter types".
 CLoyc.SyncLib.SyncManagerExtUShortThe methods in this class belong in SyncManagerExt but they must be put in a different class to avoid C# compiler error CS0111, "Type 'SyncManagerExt' already defines a member called 'SyncList' with the same parameter types".
 CSyncProtobufConvenience methods and shared definitions for a pair of ISyncManager implementations (Reader and Writer) that read and write the Protocol Buffers wire format. Call Write{T}(T, SyncObjectFunc{Writer, T}, Options?) or Read{T}(ReadOnlyMemory{byte}, SyncObjectFunc{Reader, T}, Options?) to (de)serialize an object, NewWriter / NewReader(ReadOnlyMemory{byte}, Options?) to obtain a low-level (de)serializer, or WriteSchema{T}(SyncObjectFunc{SchemaWriter, T}, Options?) to generate a .proto schema describing the output.
 CLoyc.SyncLib.SyncTimeExtExtension methods of ISyncManager for synchronizing the date/time types DateTime, DateTimeOffset and TimeSpan (plus DateOnly and TimeOnly on .NET 6+, but no target framework of Loyc.Essentials is currently new enough to include them).
 CLoyc.Ecs.Parser.EcsParser.TentativeResult
 CLoyc.Ecs.Parser.EcsParser.TentativeState
 CLeMP.Tests.TestMacros
 CLoyc.Threading.ThreadExCreates 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.
 CLoyc.Threading.ThreadLocalVariableBaseWhen used with ThreadEx, implementing this base class allows you to be notified when a child thread is created or terminates.
 CLoyc.Threading.TinyReaderWriterLockA 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.
 CLoyc.Ecs.Parser.TokenExtProvides 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.
 CLoyc.Syntax.Les.TokenExtProvides 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.
 CLoyc.Traits< T >Provides efficient access to non-numeric information about a type. For numeric traits, use Loyc.Math.Maths{T}.Traits in the Loyc.Math package.
 CLoyc.Triplet
 CLoyc.Collections.TryGetExtStandard extension methods for ITryGet{K, V}.
 CTupleSynchronizer< SyncManager >System.ValueTuple synchronizers - work in progress!
 CLoyc.TypeExtExtension methods for Type.
 CTypeSyncRegistryA registry that maps data types to synchronizers, to support dynamic typing (polymorphic serialization): writing an object whose runtime type is not known statically, and reading it back via the type tag stored in the data stream.
 CTypeTagRegistryThe module that registers and resolves type tags: it encapsulates (1) the bidirectional dictionary between type tags and .NET types, (2) the convention by which tags are attached to synchronizers (the TypeTagAttribute), and (3) the policy for tags in a data stream that don't match anything registered or expected. All three are customizable: the dictionary via Add, and the convention and policies by overriding the virtual methods in a derived class and swapping it in with SetDefault (the Ambient Service Pattern).
 CLoyc.Utilities.UGContains global functions of Loyc.Utilities that don't belong in any specific class.
 CLoyc.ValueComparer< 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).
 CLoyc.Collections.VListBlock< T >VListBlock implements the core functionality of FVList, VList, FWList and WList. It is not intended to be used directly.
 CLoyc.void.Value represents the sole value of System.Void (called "void" in C#).
 CWeakReference
 CLoyc.WeakReferenceExtThe 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.
 CLoyc.Syntax.Lexing.WhitespaceFilterAlias for WhitespaceFilter{Token}
 CLoyc.Syntax.Lexing.WhitespaceTagWhitespaceTag.Value can be used as the Token.Value of whitespace tokens, to make whitespace easy to filter out.
 CWListProtected< KeyValuePair< Symbol, ValueT >>
 CLoyc.Collections.WListProtected< T >WList implementation in which the WList operations are only accessible to a derived class.
 CLoyc.WrapperBase< T >Abstract class that helps you implement wrappers by automatically forwarding calls to Equals(), GetHashCode() and ToString().
 CLoyc.SyncLib.SyncJson.Writer
 CLoyc.SyncLib.Impl.WriterStateBase