The c:four Engine
Design Overview
The c:four engine is concerned with information presentation and management: components provide information layout and formatting, rendering, editing, manipulating, importing and exporting; creating bespoke information relationships / structures, interpreting and traversing the structures; creation of components; generic storage of information structures; system building, loading, and runtime co-ordination; managing errors and error reporting.
The engine can be thought of as an object-oriented framework, populated with a set of the above components. The framework itself defines the architecture of the engine. It defines its overall structure, partitioning into classes and objects, key responsibilities and collaborative roles, and the thread of control. The relationships between the framework and its components are interface based rather than implementation based, promoting loose coupling, and making target systems inherently able to accommodate future changes and extensions. The framework interfaces capture the fundamental abstractions of the c:four engine. To conform to the framework, components must conform to its interfaces.
The engine has been designed to accommodate change gracefully, and to maximise reuse of its components. Many of the design constructs within the engine are based on well-known software design patterns. Design patterns enable aspects of the system structure to vary independently of other aspects, and making the system more robust to particular changes.
The real power of the c:four engine comes from the configurability and extensibility of its components. All framework interfaces have default (often sophisticated) component implementations provided as standard, but all can be replaced or augmented.
To summarise:
- The c:four engine is an object-oriented framework, populated with a set of configurable and extendible components
- Wherever a concept varies, the engine encapsulates it and provides an interface definition for it. Application developers can use the default implementation provided with the engine, extend it, or provide their own.
- Infrastructural support components encapsulate the creation and management of the information management components.
Because the engine cannot know its own target application context, this approach is vital to enable the construction of disparate systems (such as those outlined in the previous section). A particular application can use parts of the framework, and can populate it with different subsets of components according to its needs. For example:
- An administration application responsible for manipulating system data tables might not require any layout or formatting capabilities.
- Batch applications might not require any rendering capabilities
- An application could use the engine solely for its storage or formatting capabilities
Implementation Overview
The toolkit is implemented as a generic template library in C++. The code conforms to the International ISO / ANSI standard published in 1998. Platform-specific requirements (such as rendering and font management) are handled using pluggable integration components.
The core library is being developed and tested under versions of Windows, and Mac OSX. A suite of DTP applications that use the engine is currently under development for the Mac, with the branding of iStudio. The intention is to port these applications to Windows and Linux.
Engine Licensing
For more information about licensing the c:four engine for use in your own applications, please contact:
Paul O'Connor
Director
c:four









