Table of Contents
Structure of the IOPC 2 project including library dependencies is displayed in Figure 5.1, “Overview of the IOPC 2 architecture”. IOPC 2 consists of a stand-alone application iopcsp and a set of shared libraries that are used at run-time.
The following list provides a short description of each of the components.
- iopcsp is a stand-alone application that reads GCCXML output, extracts description of reflection-capable classes and generates compilable source code containing the metamodel description. These files are later compiled and linked to the user application. 
- iopccommon contains shared services for other parts of IOPC 2 including iopcsp. These services include tools for thread synchronization, tracing, logging or exception handling. 
- iopcmeta is the reflection interface provided by the IOPC 2 library. It is used to describe metamodel of the source code processed by iopcsp. 
- iopcdb supports the database layer modularity by providing a - DriverManagerfacility by which loaded database driver register themselves. iopcdb provides access to these drivers via a unified interface and allows user applications to execute SQL statements.
- iopcdriver_oracle10g is Oracle 10g database driver for the IOPC 2 library. 
- iopcdriverex_oracle10g_or is an extension to the Oracle 10g driver that adds object persistence capabilities to it. 
- iopclib puts everything together into an O/R mapping layer. iopclib implements the O/R mapping algorithm as described in previous chapter. Further it provides persistent object caching features (originating from the POLiTe 2 library), script generation, querying functionalities and more. 
There are additional components that are not displayed in Figure 5.1, “Overview of the IOPC 2 architecture”. They are not directly related to the core functionality, but can be useful in the build process either of the user applications or of the IOPC 2 library itself:
- iopcsp_compile.sh is a Bourne shell script that can be used with the Eclipse/CDT IDE[25] for managed build using the IOPC 2 library. 
- iopcsp.sh is a Bourne shell script for use with standard Makefile to build application that uses the IOPC 2 library. 
- test is a project that tests most of the library functionalities. 
the section called “Library architecture” stated that IOPC 2 can be used in various configurations. These configurations are realised by linking subsets of the presented libraries together with the user application. Available configurations are:
- Common services - iopccommon. 
- Reflection library - iopccommon, iopcmeta. Source code must be processed using iopcsp (also applies to the following two configurations). 
- Database access library - iopccommon, iopcmeta, iopcdb and a database driver - for example the iopcdriver_oracle10g. 
- Object persistence library - iopccommon, iopcmeta, iopcdb, iopclib, a database driver supporting all required O/R mapping features - for example the iopcdriver_oracle10g along with its extension iopcdriverex_oracle10g_or. 
