Explanations for the section MetaInfo

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(fName2, stga, ...)

becomes

File(fName1, stg0, stg1, stg2, stg3)

File(fName2, 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.