Deque - A simplified version of the STL deque class.
NamedStateMap - Maintains a map between strings, an integer 'row' value and a boolean. (Really just an auxillary object of PPListWindow at the moment.)
StringDeque - An STL deque of strings.
IntCache - An array-like class that maps ints to ints. Adjusts its size and lowest index as values are added to the cache. Used by the IntIntCache class to cache IxGroup indexes by BlockString indexes.
IntIntCache - An array-like class that maps ints to IntCaches. Adjusts its size automatically and assumes that the lowest index is 0. Used by the DB class to cache IxGroup indexes by Category index, BlockString index pairs.
UnitTester - A simple unit testing object used for regression
testing.
IxBlock - A Block template class that can print itself given a StringBlock.
StringBlock - Conceptually this is an IxBlock<C-style string>. However, since C-style strings are not of fixed length they are a special case. The StringBlock of a DB contains all of the strings used by objects in the DB. The strings are separated by NULLs so a pointer into a StringBlock can be treated as a C-style string.
BlockString - Bundles a pointer to a StringBlock with an index. This is enough info to derive the const char* typically needed by C functions. Note the index is to the first character in the block not the index of the string in the block.
The representation of lists within a DB is handled by several different objects. Underneath all of them is the IxListElement which is a regular IxBlock style object. The IxListElementBlock is an IxBlock<IxListElement>. The IxListBlock is not a regular IxBlock style object. Instead it is an IxListElementBlock combined the index of the first free element within the IxListElementBlock. The IxList object just contains the index of the first element of a list. A BlockList combines a pointer to an IxListBlock with the index to the first element of a list. However, it is intentionally made abstract to force the choice of one of two subclasses. The DBList subclass conceptually points to a list within a DB. The assumption here is that a DBList does not actually own its contents, but rather is a helper object for reviewing the contents of an IxList. The other subclasses, StackList, assumes that it does own its contents which it takes from a shared static IxListBlock that is not contained in any database. This allows for temporary lists to be created and passed around without modifying the database.
IxListElement - An Ix-style object that contains the index of the next IxListElement in an IxList and the index to the value (some other Ix-style object). An index of -1 for the next index is interpreted as the end of the list. The interpretation of the type of the value is left to the programmer and is not enforced in anyway. There is the potential for this class to be a template class which would allow for the explicit typing of the value, but it hasn't really been studied.
IxListElementBlock - An IxBlock<IxListElement>, that is contiguous vector of IxListElements.
IxList - A very light-weight object with just the index of the first element of a list. Like other Ix-style objects it requires a pointer to an IxListElementBlock to be meaningful. This object is commonly used in other Ix-style objects that contain lists. The IxList was added fairly late to the list representation scheme and has not be fully propagated or completely implemented. An obvious extension would be to provide an IxListIterator object. It would also be a good idea to use an IxList object for the free list in IxListBlock or the list head index in BlockList.
IxListBlock - Combines an IxListElementBlock with the index to the first free element in the IxListElementBlock. The free element index provides the ability to strink lists in the database without leaking IxListElements. The DB object contains an IxListBlock.
BlockList - A light-weight object that combines an IxListBlock with the index of the head of a list.
DBList - A BlockList that is assumed to be within a DB. This means that the elements of a DBList are not reclaimed when the DBList is deleted. DBLists can be used to build IxLists that are then handed over to some other object in the DB.
StackList - A BlockList that uses IxListElements drawn from a shared static IxListBlock. This allows the elements to be reclaimed when a StackList is deleted. These lists are often allocated on the stack and used as temporary results during computations.
BlockListIter - An iterator for BlockLists. Uses the Java-esque HasMore/Next interface.
BlockProperty - Base class for BlockLevel and BlockCategory that provides an index and an abstract method for computing a name.
IxCategory - An Ix-style object that contains the index of the name of the category and a unique id which also happens to be the index of this IxCategory into its own IxCategoryBlock. Provides comparision operators.
IxCategoryBlock - An IxBlock<IxCategory>, that is a contiguous vector of IxCategorys.
BlockCategory - A BlockProperty that acts as a light-weight object that provides access to an IxCategory that is part of an IxCategoryBlock.
IxLevel - An Ix-style object that contains the index of the name of the level and a unique id which also happens to be the index of this IxLevel into its own IxLevelBlock. Provides comparision operators.
IxLevelBlock - An IxBlock<IxLevel>, that is a contiguous vector of IxLevels.
BlockLevel - A BlockProperty that acts as a light-weight object that provides access to an IxLevel that is part of an IxLevelBlock. Provides comparision operators based on the comparision operators of IxLevel.
DBElement - Base class for DBGroup and DBName that provides accessors to the names of these objects.
IxGroup - An Ix-style object that contains a unique id, a name, and a category. It also contains IxLists of accepted members and all members.
IxGroupBlock - An IxBlock<IxGroup>, that is a contiguous vector of IxGroups.
DBGroup - A DBElement that acts as a light-weight object that provides access to an IxGroup that is part of the IxGroupBlock of a DB. Most higher level objects that modify IxGroups go through DBGroups. The semantically interesting link functions are all defined on the DBGroup.
IxName - An Ix-style object that contains a unique id, a name, and a level. It also contains IxLists of accepted parents, all parents, accepted children, all children, all equivalents, a groups it belongs to, and groups that it prefers. One of the equivalents is specially designated as the accepted equivalent. The IxName is the basic member of the DAG contained in a DB. It contains both the DAG links and the accepted links.
IxNameBlock - An IxBlock<IxName>, that is a contiguous vector of IxNames.
IxName1 - An Ix-style object that contains a unique id, a name, and a level. It is provided to enable reading the previous binary file format. It is the same as an IxName except without the group information. Note that a DB would never contain one of these
IxName1Block - An IxBlock<IxName1>, that is a contiguous vector of IxName1s as would be read in from a file.
DBName - A DBElement that acts as a light-weight object that provides access to an IxName that is part of the IxNameBlock of a DB. Most higher level objects that modify IxNames go through DBNames. The semantically interesting link functions are all defined on the DBName.
IxEq - An Ix-style object that contains its own index as a unique id, an IxList of values and the index of its accepted value. The accepted value is also in the IxList of values.
IxEqBlock - An IxBlock<IxEq>, that is a contiguous vector of IxEqs.
DBEq - A light-weight object that provides access to an IxEq that is part of the IxEqBlock of a DB. Most higher level objects that modify IxEqs go through DBEqs.
NameFiles - An object which store information about the different file types used by Name.
NameFilterElement - A FilterElement that is satisfied by a DBName which is a member of the union of all the DBNames that are explicitly described in the FilterElement as well as all the lower level DBNames contained in those groups and any higher level groups that contain the described taxa. A NameFilterElement can also be satisfied by a DBGroup that contains a member which satisfies it.
GroupFilterElement - A FilterElement that is satisfied by a DBName which is a member of the DBGroup or has a direct descendent or ancestor that is a member. A GroupFilterElement can also be satisfied by a DBGroup that contains a member which satisfies it.
FilterElementDeque - An STL deque of pointers to FilterElements.
Filter - A collection of FilterElements. A Filter
can be interpreted as the intersection of the DBNames described
in the FilterElements. Filters can be evaluated
at a particular level to return all the DBNames at that level
that the Filter refers to. Similarly, any DBNames
can be tested to see if it is refered to by or 'satisfies' a given Filter.
ADescReader - An ASCIIReader for reading the ASCII Description Format.
AExReader - An ASCIIReader for reading the ASCII Extension Format.
LineParser - An object for breaking a line into a series of tokens.
LineRep - An object which represents a single line in the ASCII Extension Format.
TaxonRep - An object which represents a scientific name within a LineRep.
GroupRep - An object which represents a group name within a LineRep.
Report - Base class for database reports
TaxonReport - A Report which describes all the DBNames at a particular level with a particular name.
OrphanReport - A Report which describes all the DBNames that have no accepted parent that accepts them and no accepted equivalent.
IndirectParentsReport - A Report which describes all the DBNames whose accepted parent is more than one level above them.
DBReport - A Report which gives a high-level description
of the current DB including counts of the various object types.
NmCollectionList - Contains a list of NmCollections.
CLListener - The base class for objects which listen to NmCollectionLists.
Typically used by GUI objects like PPListWindows in order to register
interest in changes made to an NmCollectionList.
SelectorPanel - Abstract class for an interface component that
creates FilterElements.
NamerApp - An LApplication and an LBroadcaster. This is the object that directly or indirectly owns and manages all the other interface objects. It is created in main.
PPSearchWindow - An LWindow and an LListener. Represents the search windows that provide the ability to find and select a name node.
PPSelector - An LListener, an LBroadcaster, and a Selector. A non-graphical object that contains the graphical components needed to present a Selector. Manages the relationships between an LScroller, an LView, and a collection of PPSelectorPanels.
PPSelectorPanel - An LView, an LListener, an LBroadcaster, and a SelectorPanel. A graphical object that contains the graphical components needed to present a SelectorPanel.
PPEditField - An LEditField, and an LBroadcaster. A graphical object that provides and editable text field for selecting values within a PPSelectorPanel.
PPListBox - An LListBox. A graphical object that provides a scrollable list of values that can be selected as values within a PPSelectorPanel.
PPPopupMenu - An LStdPopupMenu. A graphical object that provides a popup menu of levels and categories that can be selected within a PPSelectorPanel.
PPCheckBox - An LStdCheckBox. A graphical object that provides a check box controls if all links are followed or only accepted links in a PPSelectorPanel.
PPListWindow - An LWindow, an LListener, and a CLListener. Represents the list windows that manage and display NmCollectionLists.
MultiTaxaQuestion - A class for managing the UI for asking the user about multiple species adds.
MultiGroupQuestion - A class for managing the UI for asking the user about multiple group adds.
PPTextTableView - An LTextTableView that supports arrow keys.
RenameQuestion - A class for managing the UI for asking the user about species whose selected name doesn't make the accepted name according to the database.
CellPerRowSelector - An LTableSelector which allows exactly one cell to be selected in each row. Used by RenameQuestion to control the user input.
SaveListQuestion - A class for managing the UI for asking the user about species lists with unsaved changes.
Statement - A class for managing the UI for informing the user about some something.
SaveDBQuestion - A class for managing the UI for asking the user about databases with unsaved changes.
TaxonReportQuestion - A class for asking which level and name
a Taxon Report should be created for.