Befehl "odmcreate"
Zweck
Erzeugt die für die ODM-Anwendungsentwicklung erforderlichen Dateien .c(source) und .h(include) und erstellt leere Objektklassen.
Syntax
Beschreibung
Der Befehl odmcreate ist der ODM-Klassencompiler. Der Befehl verwendet als Eingabe eine ASCII-Datei, die die Objekte beschreibt, die ein Benutzer in einer bestimmten Anwendung verwenden möchte. Der Befehl odmcreate kann im Rahmen seiner Ausführung leere Objektklassen erstellen.
Die Ausgabe des Befehls odmcreate ist eine .h-Datei (eine Include-Datei), die Definitionen der Programmiersprache C für die Objektklassen enthält, die in der ASCII-Datei Klassenbeschreibungsdatei enthalten sind. Die resultierende Include-Datei wird von der Anwendung für den Zugriff auf in ODM gespeicherte Objekte verwendet. Der Befehl odmcreate erzeugt außerdem eine .c-Datei, die kompiliert und in die Anwendung eingebunden werden muss. Die .c-Datei enthält Strukturen und Definitionen, die intern von ODM zur Laufzeit verwendet werden.
Der Parameter Klassenbeschreibungsdatei gibt eine ASCII-Datei an, die Beschreibungen einer oder mehrerer Objektklassen enthält. Die allgemeine Syntax für den Parameter Klassenbeschreibungsdatei lautet wie folgt:
| Element | Beschreibung |
|---|---|
| Datei | : classes |
| Klassen | : class | classes class |
| Klasse | : head body tail |
| head | : struct ClassName { |
| tail | : } |
| Hauptteil | : elements |
| elements | : elements | elements element |
| element | :char DescriptorName [ DescriptorSize ]; vchar DescriptorName [ DescriptorSize ]; binär DescriptorName [ DescriptorSize ]; short DescriptorName; long DescriptorName; long64 oder int64 oder ODM_LONG_LONG DescriptorName; methode DescriptorName; link StdClassName StdClassName ColName DescriptorName; |
Das Standardsuffix für eine Datei Klassenbeschreibungsdatei ist .cre. Wenn für den Befehl odmcreate kein Suffix angegeben ist, wird ein Suffix .cre angehängt. Die Datei kann Kommentare in der Programmiersprache C enthalten, wenn sie mit dem Flag -p ausgeführt wird, und kann #define- und #include-Zeilen enthalten, die vorverarbeitet werden können, wenn das Flag -p verwendet wird, um den Vorprozessor für die Programmiersprache C mit der Datei auszuführen.
Anmerkung: ODM-Datenbanken sind 32-Bit-Datenbanken. Der Datentyp "long" ist bei Verwendung in der Klassenbeschreibungsdatei ein 32-Bit-Datenelement. Die Typen "long64" oder "int64" sind 64-Bit-Datenelemente, wenn sie in der Klassenbeschreibungsdatei verwendet werden. Die generierten Dateien funktionieren für 32- und 64-Bit-Anwendungen gleich.
Flags
| Element | Beschreibung |
|---|---|
| -c | Erstellt nur leere Objektklassen. Die Dateien .h und .c der Programmiersprache C werden nicht generiert. |
| -H | Generiert nur die Dateien .c und .h. Es werden keine leeren Klassen erstellt. |
| -p | Führt den Vorprozessor der Programmiersprache C für die Datei Klassenbeschreibungsdatei aus. |
Beispiel
Angenommen, eine ClassDescriptionFile namensFileName.crevorhanden ist, erstellt der folgende Befehl Objektklassen:
odmcreate FileName.creNachstehend finden Sie dieFileName.creQuellendatei und die resultierende Datei .h :
/* This is an example odmcreate input file */
/* FileName.cre */
class Class2 {
char keys[32];
method card;
long cash;
};
class TstObj {
long a;
char b[80];
link Class2 Class2 card Class2Ln;
};
/* End of FileName.cre */
/* This is the generated header file FileName.h */
#include <odmi.h>
struct Class2 {
long _id; /* unique object id within object class */
long _reserved; /* reserved field */
long _scratch; /* extra field for application use */
char keys[32];
char card[256]; /* method */
long cash;
};
#define Class2_Descs 3
extern struct Class Class2_CLASS[];
#define get_Class2_list (a,b,c,d,e) (struct Class2 * ) odm_get_list (a,b,c,d,e)
struct TstObj {
long _id; /* unique object id within object class */
long _reserved; /* reserved field */
long _scratch; /* extra field for application use */
long a;
char b[80];
struct Class2 *Class2Ln; /* link */
struct objlistinfo *Class2Ln_info; /* link */
char Class2Ln_Lvalue[256]; /* link */
};
#define TstObj_Descs 3
extern struct Class TstObj_CLASS[];
#define get_TstObj_list (a,b,c,d,e) (struct TstObj * ) odm_get_list (a,b,c,d,e)
/* End of generated header file FileName.h */