Sektion 'MetaInfo'
Required for each class:
The following image shows the interplay between CLASSIX.INI information, the function New() and the ObjectManager, if it generates an instance of a class A:

Class
generates an object CX_META_CLASS, which contains information about a class.
Parameters are:
Basic classes which will never generate an object are often entered to completely specify the inheritance path. The meta file specification can be dropped for this class. Derivation of all classes from CX_CLASS is known in the ClassiX® System a priori, even, if CX_CLASS has not been entered in CLASSIX.INI.
At this stage, the term 'class' is used with an extended meaning: The term class in C++ or Java, can be pictured as an object classification, which leads to continued division. With the keyword
PseudoClass
it is possible to break down objects of one C++ class into sub-classes.
Parameters are the same as in Class.
File
generates an object of the class CX_META_FILE. As the name indicates, this
object provides information about how the objects are saved in the database.
Main content is a vector, which refers to n storages. This organization
reflects the logical database fragmentation into layers.
Parameters are:
After names for the last storage specification can follow the ellipse ... . This notation prevents from constantly repeating the same parameter, in case the same storage specifications shall apply for all (now following) layers:
The last storage definition of the file statement is repeated as often as defined by the file statement with the most storages.
File(fName1, stg0, stg1, stg2, stg3)File(fName
2, stga, ...)
becomes
1, stg0, stg1, stg2, stg3)File(fName
File(fName
2, stga, stga, stga, stga)The parameter STOP is only relevant in connection with the statement AutoLayer.
Storage
generates an object of the class CX_STORAGE. Here, it is defined how
objects are saved in the object-oriented database ObjectStore. Parameters are:
It is referred to the physical database with
There are two segment specifications: object- and slave segment. The existence / absence of the object segment defines the clustering strategy, when generating an object with the statement CreatePersObject:
| clustering category SLAVE_SEG is ... | ||
| object segment | ... active | ... switched off |
| specified | master object: saved in the object segment | saved in the object segment |
| missing | slave object: saving in the database is moved, CreatePersObject generates "lazy Creator" | saved in the default segment |
Slave objects do not control, where and how they are saved in the database. At first, a "lazy creator" develops, Instead of the real object. The first object that builds a relation to the "lazy creator" defines the location in the database. Here, the slave segment specification becomes important:
| slave segment | |
| specified | the Slave-Objekt is saved there; in case the slave object is an auto segment, it will be put into a cluster, which belongs to the master object (ObjectStore 6.0 and later versions) or into a segment, which belongs to the object master (ObjectStore 5.x); if required, cluster or segments are generated automatically |
| missing | the slave object is saved as close as possible to the master object; but in any case in the same segment and cluster |
Abstract:
In a storage specification for a class X,
| the object segment describes... | the slave segment |
| how objects of the class X are saved | saving objects of any class Y, which at first are connected as a lazy creator to an object of the class X. |
Segment
This statement is required, if further segment characteristics (not just the
name) shall be specified.
First parameter is the segment name and after, the following specifications are
possible:
| integer n | segment splitting | in case the segment becomes larger than n bytes, a new segment is automatically generated, which now takes over the older one's role |
| AUTO | auto segment | cluster (ObjectStore 6.0 and later versions) or segments (ObjectStore 5.x) are automatically saved as slave segments |
| DEFAULT | default segment | segment that stores objects without an own object segment, in case the clustering category SLAVE_SEG is not active |
| EXTERN | cross database pointer - only for ObjectStore 5.x | objects in a segment can refer to objects in other physical databases |
Database
describes a physical database and assigns an integer k to it. With DB(k), it is
possible to refer in the storage statements to this
database. The name is the complete or relative path to the database file, or the
name of an environment variable with a value, which refers to the database file
at the system start.
Information: It is not permitted to have different storages refer to the same physical database in a different way, e.g. via different environment variables or different, but equivalent path specifications. Starting the ClassiX® System discovers such ambiguities.
AutoLayer
Whenever the objective is, to describe a logical database, which
the constantly repeating file and storage specifications can be generated
with the statement AutoLayer.
IndexCopy(FLAT | DEEP)
This parameter controls database indices mith the option COPY_KEY.
Default option is FLAT.
Information: Changing from FLAT to DEEP or vice versa is only possible after deleting all database indices. After, the desired modus is entered in the .ini file and all indices are rebuilt.
Scheme
Only for ObjectStore 5.x: Here, the scheme database
path is specified by ObjectStore. Just like in all path specifications, the
identifier CX_ROOTDIR is replaced by the path to the CLASSIX-Root-Directory.
The ClassiX® System
with ObjectStore 6.x uses several scheme databases, which are assigned to the
DLLs. The specification scheme is ignored. The scheme database location can be
controlled with the envirmonment variable OS_SCHEMA_PATH (see
scheme databases).
CheckIllegalPointers
Only for ObjectStore 5.x: The ObjectStore feature
is activated for this progam development phase. At the end of each transaction,
ObjectStore checks, if the objects, which are going to be saved in the database,
refer to objects in the transient storage. This key word has no parameter.
For ObjectStore 6.x and later versions, this feature is always active.
DLLs
The DLLs that contain the model class code, are to be specified here. Parameter
is a name list of the DLLs without the extension .DLL.
FormulaCppDLLs
Objects of the class CX_FORMULA can call external functions - functions, that
are not part of the ClassiX® Systems.
With this, it is possible to swap calculation rules, which have been reasonably
programmed in C++.
Damit
können spezielle Berechnungsvorschriften, die sinnvollerweise in C++ programmiert sind,
ausgelagert werden. As a parameter, there is a list of DLL names without
the extension .DLL.
Help
Only for the OS/2 version of the ClassiX® Systems:
It has been specified here, where the ClassiX®
System finds the InstantView®
documentation
(which you are currently reading) as online help. in the path name, the
characters ### are replaced according to the current language (compare statement Language).
OS2Editor WinEditor
These keywords specify the for OS/2 / Windows the command to call an editor (see
statement EditSource).
ISO8859_1
This parameter specifies, if the ISO 8859-1character set (Microsoft Windows
character set) is used. For the platforms Windows 95 and Windows NT, this is the
default option, while the assumption ISO8859_1(OFF) applies for OS/2. In case a
database shall be used on both operating systems, ISO8859_1(OFF) has to be set
for the Windows platforms.
SystemDB
Here, the path to a database, which contains the database information from
CLASSIX.INI (see function SaveMetaInfo
of the object manager).
This database can contain the complete meta data or only a part of it (which can
also be empty), but in any case, it has to be existent. Otherwise, the system
start gets cancelled with a problem report.