The design CIFLIB class library closely follows the relational model that is specified in DDL 2.1. Categories in mmCIF dictionaries and data files are mapped into tabular data structures in the class, and the data access methods provided by the class are all row oriented. This design is satisfactory for applications which access CIF data in the CIF dictionary one category at a time; however, it is not particularly efficient for applications which access dictionary data item-wise. This pattern of access is common for applications which have to assemble all of the dictionary attributes of a data item for the purpose of integrity processing.
The CIFOBJ class library was developed in order to provide an object view of the mmCIF dictionary. The class library has two components as illustrated in Figure 9. The first component builds a persistent store of objects of type: item, sub-category, category, and dictionary. Each object is a container for all relevant attributes for that object type. CIBOBJ accesses and checks the dictionary contents using methods provided by CIFLIB. The CIFOBJ loader class assembles the dictionary objects and passes these to the object storage manager.
The second component of the CIFOBJ class library provides methods for building dictionary objects from the persistent store. CIFOBJ implements methods to access all of the attributes for each object type and returns this information as a string or an array of strings.
Figure 9:
Functional diagram of CIFOBJ class library illustrating the dictionary object loader
and the object builder components of the class.