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 DriverManager facility 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:

  • is a Bourne shell script that can be used with the Eclipse/CDT IDE[25] for managed build using the IOPC 2 library.

  • 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.