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