CCP4 Coordinate Library Project

General Scheme

The Library may be represented by the following hierarchy:

Each gray element in this picture is represented by one or several C++ classes featuring the properties of the corresponding object. The relations and links between the classes remain hidden from the application and are maintained automatically. Direct intervention into the structure from an application is neither supposed nor expected and, more likely than not, will result in malfunction of the Library.

Any application should communicate with the hierarchy only through provided interfaces, which are the RWBROOK -- for FORTRAN programmers, and the Object interface -- for C++ people.

RWBROOK interface replicates the older CCP4 coordinate library found in file rwbrook.f of the CCP4 suite. The interface uses slightly modified function names, and has a few intrinsic differences from the former implementation. All these details are discussed in the RWBROOK section of this manual. This interface may be also be used from C programs with proper implementation of the interface function calls. This technique is explained in the above mentioned section.

RWBROOK interface is implemented only to ease the conversion of existing CCP4 algorithms implemented with the use of the older rwbrook.f module. This interface is not likely to be advanced or otherwise modified in the future. It is implemented on the top of more general and perspective Object interface.

The Object interface is based on using the technology of classes to handle the functionality of the hierarchy. It is described in details in the Object interface section of this manual. It gives direct access to the internal fields of the hierarchy's classes, which are Ok to read, but are not always Ok to modify in a direct way. Generally, any modification of data fields should be done through the provided interface functions even if these fields are accessible for an assignment operator (which means they are found in public section of the corresponding C++ class).

The Object interface is not fully developed at present. All future development of the Library will most likely be associated with these gates to its inside. The interface may also be used from C programs, however they have to be compiled with a C++ compiler.

The Library also include a tool for reading/writing CIF classes. The tool is described in details, and may be used separately from the Library in any application wherever an efficient access to CIF files is needed.