{FlexCat

{Der flexible Kataloggenerator

{

{Version 1.5

Jochen Wiedmann

Diese Dokumentation sowie das gesamte Programmpaket d�rfen im Rahmen der “GNU General Public License” kopiert, ver�ndert und weitergegeben werden solange diese Copyright-Notiz und diese Erlaubnis unver�ndert auf allen Kopien enthalten ist und die “GNU General Public License” der Free Software Foundation (in der Datei COPYING) mitkopiert und weitergegeben wird.

Es wird keine Garantie gegeben, da� die Programme, die in dieser Dokumentation beschrieben werden, 100%ig zuverl�ssig sind. Sie benutzen diese Programme auf eigene Gefahr. Der Autor kann auf keinen Fall f�r irgendwelche Sch�den verantwortlich gemacht werden, die durch die Anwendung dieser Programme entstehen.


\input texinfo

[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1 �bersicht

Seit der Workbench 2.1 bietet der Amiga ein sehr sch�nes System an, mit dem Programme in verschiedenen, praktisch beliebigen Sprachen benutzt werden k�nnen: Die locale.library. (Man nennt diesen Vorgang Lokalisierung, daher der Name.)

Die Idee ist eigentlich recht simpel: Man w�hlt eine Sprache, meist die englische aus und schreibt sein Programm ganz normal, abgesehen davon, da� Strings nicht mehr direkt eingegeben werden, sondern �ber einen Funktionsaufruf im Programm verwendet werden. Durch einen weiteren Funktionsaufruf zu Beginn des Programms erh�lt der Benutzer nun die M�glichkeit, anstelle der vorgegebenen Strings andere zu w�hlen, die in einer externen Datei, einem sogenannten Katalog enthalten sind.

Diese Katalogdateien sind vom Programm unabh�ngig. M�chte man das Programm in einer weiteren Sprache betreiben, so ist lediglich eine neue Katalogdatei zu erzeugen, das eigentliche Programm mu� nicht ge�ndert werden.

Auf den Programmierer kommen dadurch aber zus�tzliche Aufgaben hinzu: Es m�ssen die Kataloge erzeugt werden, die Strings nach wie vor eingegeben werden und es mu� zus�tzlicher Code erzeugt werden, der die Behandlung der Kataloge �bernimmt. Dies soll durch FlexCat so weit wie m�glich vereinfacht und automatisiert werden, ohne dabei auf Flexibilit�t (vor allem in Bezug auf den erzeugten Quelltext) zu verzichten. Betrachten wir als Beispiel ein Programm ‘HelloLocalWorld.c’. Das Programm wird letzten Endes so aussehen:

    #include <stdio.h>
    #include <stdlib.h>
    #include <HelloLocalWorld_Cat.h>  /* Mu� eingebunden werden! */

    void main(int argc, char *argv[])
    {
      printf("%s\n", GetString(msgHello));
    }

Beachten Sie, da� dies dem originalen ‘HelloWorld.c’ fast v�llig entspricht, abgesehen davon, da� der String "Hello, world!" durch einen Funktionsaufruf ersetzt wird.

Das obige Programm verwendet eine Konstante msgHello. Ein Aufruf der Funktion GetString() ersetzt diese Konstante durch den entsprechenden String. Man beginnt stets damit, diese Konstanten und Strings in einer sogenannten Katalogbeschreibung abzulegen. See section Aufbau einer Katalogbeschreibung. Unsere Katalogbeschreibung w�rde in einer Datei ‘HelloLocalWorld.cd’ stehen und so aussehen:

    ;	Kommentare sind nat�rlich erlaubt! Jede mit einem Semikolon
    ;	beginnende Zeile ist eine Kommentarzeile.
    ;
    ;	Die Sprache der eingebauten Strings:
    #language english
    ;
    ;	Die f�r den Aufruf von Locale/OpenCatalog() verwendete
    ;	Versionsnummer. Dies ist anders als bei Exec/OpenLibrary():
    ;	0 bedeutet beliebige Version, andere Nummern m�ssen exakt
    ;	stimmen!
    #version 0
    ;
    ;	Dies definiert einen String und die ID unter der er verwendet
    ;	wird. Die Zahl 4 gibt an, da� der String wenigstens 4 Zeichen
    ;	enthalten sollte.
    msgHello (/4/)
    Hello, world!

Mit FlexCat erzeugt man aus der Katalogbeschreibung zwei andere Dateien: Das Includefile ‘HelloLocalWorld_Cat.h’ definiert die Konstanten, die Datei ‘HelloLocalWorld_Cat.c’ enth�lt ein Array mit den Strings sowie die Funktion GetString. Wie diese genau aussieht, ist unerheblich. Insbesondere ben�tigt man keinerlei Kenntnisse der locale.library!

Allerdings k�nnten Sie neugierig sein, wie diese Dateien aussehen oder sogar ein anderes Aussehen w�nschen. Hier liegt der Unterschied zwischen FlexCat und anderen Kataloggeneratoren: Bei FlexCat ist kein bestimmtes Format vorgeschrieben. Mit Hilfe der sogenenannten Quelltextbeschreibungen k�nnen Sie praktisch beliebige Formate vorgeben. Damit k�nnten z.B. auch unter AmigaDOS 2.0 Kataloge verwendet werden. See section Aufbau einer Quelltextbeschreibung. Solche Katalogbeschreibungen sind bei FlexCat bereits mitgeliefert werden. Damit kann man die Quelltexte folgenderma�en erzeugen:

FlexCat HelloLocalWorld.cd HelloLocalWorld_Cat.c=AutoC_c.sd’
    ‘FlexCat HelloLocalWorld.cd HelloLocalWorld_Cat.h=AutoC_h.sd

Wenn das Programm fertig ist, dann wird FlexCat erneut verwendet, um sogenannte Katalog�bersetzungen zu erzeugen, eine f�r jede weitere Sprache au�er der eingebauten. See section Aufbau einer Katalog�bersetzung. Erzeugen wir also eine deutsche Katalog�bersetzung:

FlexCat HelloLocalWorld.cd NEWCTFILE Deutsch.ct

Die fertige Datei sieht dann so aus:

    ## version
    ## language
    ## codeset 0
    ;	Kommentare sind nat�rlich erlaubt! Jede mit einem Semikolon
    ;	beginnende Zeile ist eine Kommentarzeile.
    ;
    ;	Die Sprache der eingebauten Strings:
    ;
    ;	Die f�r den Aufruf von Locale/OpenCatalog() verwendete
    ;	Versionsnummer. Dies ist anders als bei Exec/OpenLibrary():
    ;	0 bedeutet beliebige Version, andere Nummern m�ssen exakt
    ;	stimmen!
    ;
    ;	Dies definiert einen String und die ID unter der er verwendet
    ;	wird. Die Zahl 4 gibt an, da� der String wenigstens 4 Zeichen
    ;	enthalten sollte.
    msgHello

    ;Hello, world!

Dies sieht der Katalogbeschreibung sehr �hnlich. FlexCat �bernimmt dabei die Kommentare, auch dort wo es nutzlos ist: Z.B. ist der Kommentar zur L�nge der Strings hier bedeutungslos, da diese bereits in der Katalogbeschreibung angegeben werden mu�. Man mu� nun lediglich die L�cken f�llen, d.h. die Sprache (language, hier Deutsch), die Version (einen typischen Versionsstring, ‘$VER: Deutsch.catalog (11.03.94)’ w�re z.B. gut m�glich) und den codeset (hier 0, siehe Locale/OpenCatalog() f�r Details) sowie nat�rlich die �bersetzten Strings selber. FlexCat erleichtert dies, indem die originalen Strings jeweils als Kommentare eingef�gt werden.

Schlie�lich werden daraus die eigentlichen Kataloge erzeugt:

FlexCat HelloLocalWorld.cd Deutsch.ct CATALOG Deutsch.catalog

Beachten Sie, da� man dazu weder das Programm noch die Quelltexte ben�tigt. Dies kann also ohne weiteres sp�ter geschehen, etwa um nachtr�glich weitere Sprachen zu unterst�tzen. Es ist �blich und durchaus erw�nscht, eine Datei ‘NewCatalog.ct’ mitzuliefern, die das Erstellen eigener Kataloge erlaubt.

Aber was geschieht, wenn das Programm sp�ter ge�ndert oder erweitert wird? Dann mu� nur die Katalogbeschreibung ge�ndert werden. Mit Hilfe von FlexCat k�nnen die Katalog�bersetzungen auf den neuesten Stand gebracht werden:

FlexCat HelloLocalWorld.cd Deutsch.ct NEWCTFILE Deutsch.ct

Es m�ssen dann lediglich noch evtl. neue Strings eingegeben werden.


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2 Installation des Programms

FlexCat sollte auf jedem Amiga mit OS 2.0 laufen. Die erzeugten Programme sind auf jedem Amiga lauff�hig (zumindest was die Verwendung der locale.library betrifft). Prinzipiell sind sie sogar auf anderen Rechnern lauff�hig. Lokalisierung ist aber nat�rlich nur auf dem Amiga und ab der Workbench 2.1 m�glich, da erst dann die locale.library zur Verf�gung steht. See section Benutzung in eigenen Programmen.

Es ist aber prinzipiell durchaus m�glich, auch unter einer fr�heren Workbench oder gar auf anderen Rechnern Lokalisierung anzubieten: Ein Beispiel daf�r liefert die Quelltextbeschreibungsdatei ‘C_c_V20.sd’, in der die locale.library durch die iffparse.library ersetzt wird, falls letztere vorhanden ist, erstere dagegen nicht. Damit ist Lokalisierung schon ab der Workbench 2.0 m�glich. See section FlexCat-Quelltext in C-Programmen.

Zur Installation ist nichts weiter zu tun, als das eigentliche Programm an eine sinnvolle Stelle Ihres Suchpfades zu kopieren und einen geeigneten Platz f�r die Quelltextbeschreibungen auszuw�hlen. M�glicherweise wollen Sie die Umgebungsvariable FLEXCAT_SDDIR setzen. See section Aufruf des Programms.

Falls Sie mit einer anderen als der englischen Sprache arbeiten wollen, m�ssen Sie au�erdem den entsprechenden Katalog an eine geeignete Stelle kopieren. Im Falle der deutschen Sprache w�re dies ‘Catalogs/Deutsch/FlexCat.catalog’. Der einfachste Platz ist das Verzeichnis ‘Locale:Catalogs/Deutsch’, m�glich ist aber auch, einfach das ganze Verzeichnis ‘Catalogs’ in das Directory des Programms zu kopieren. See section Benutzung in eigenen Programmen.


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3 Aufruf des Programms

FlexCat arbeitet nur vom CLI aus. Die Aufrufsyntax ist

    FlexCat CDFILE/A,CTFILE,CATALOG/K,NEWCTFILE/K,SOURCES/M,WARNCTGAPS/S

Dies ist die Bedeutung der Argumente:

CDFILE

ist der (obligatorische) Name einer zu lesenden Katalogbeschreibung. Aus diesem Argument wird auch der Basisname bei der Quelltextbeschreibung gewonnen. Achten Sie deshalb auf Gro�-/Kleinschreibung! See section Aufbau einer Quelltextbeschreibung.

CTFILE

ist der Name einer Katalog�bersetzung, die etwa f�r die Erzeugung eines Katalogs zu lesen ist. Au�erdem kann man eine vorhandene Katalog�bersetzung mit Hilfe des Argumentes NEWCTFILE auf den neuesten Stand zu bringen: Wird beides angegeben, so wird zun�chst die Katalogbeschreibung und dann die -�bersetzung gelesen und anschlie�end eine neue Katalog�bersetzung erzeugt, die dieselben Strings wie die alte und evtl. neue Strings (als Leerzeile) enth�lt.

CATALOG

ist der Name eines zu erzeugenden Kataloges. Dieses Argument ist nur gemeinsam mit CTFILE erlaubt.

NEWCTFILE

ist der Name einer neu zu erzeugenden Katalog�bersetzung. Wie schon gesagt, werden die Strings aus einer evtl. durch CTFILE angegebenen bestehenden Datei �bernommen. Fehlt das Argument CTFILE, so wird eine Datei erzeugt, die nur Leerzeilen als Strings enth�lt.

SOURCES

sind die Namen zu erzeugender Quelltextdateien sowie der dazu zu lesenden Quelltextbeschreibungen. Diese Argumente m�ssen die Form ‘source=template’ haben, wobei ‘source’ der Name der zu erzeugenden Quelltextdatei und ‘template’ der Name der Quelltextbeschreibungsdatei ist.

Wird die angegebene Quelltextbeschreibung nicht gefunden, so sucht FlexCat nach einer Datei gleichen Namens in ‘PROGDIR:lib’, d.h. im Unterverzeichnis ‘lib’ des Directories, in dem sich das Programm selbst befindet. (‘PROGDIR:lib’ kann durch die Environment-Variable FLEXCAT_SDDIR �berschrieben werden.) Beispiel: Mit

FlexCat FlexCat.cd FlexCat_Cat.c=Templates/C_c_V20.sd

w�rde zun�chst nach einer Datei ‘Templates/C_c_V20.sd’ im aktuellen Directory gesucht. W�rde diese nicht gefunden, und es g�be keine Variable FLEXCAT_SDDIR, so w�rde nach einer Datei ‘lib/Templates/C_c_V20.sd’ im Directory des Programms FlexCat gesucht. G�be es dagegen eine Variable FLEXCAT_SDDIR und diese h�tte etwa den Wert ‘Work:FlexCat’, so w�rde nach der Datei ‘Work:FlexCat/Templates/C_c_V20.sd’ gesucht.

WARNCTGAPS

Gew�hnlich �berpr�ft FlexCat nicht, ob eine Quelltext�bersetzung vollst�ndig ist, d.h. ob alle Strings aus der Quelltextbeschreibung auch in der -�bersetzung vorkommen. Diese Option erzwingt die �berpr�fung.

F�r weitere Beispiele siehe �bersicht.


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4 Aufbau einer Katalogbeschreibung

Eine Katalogbeschreibungsdatei enth�lt vier Arten von Zeilen.

Kommentarzeilen

Jede mit einem Semikolon beginnende Zeile ist eine Kommentarzeile, wird also von FlexCat ignoriert. (Eine Ausnahme sind die unten beschriebenen Stringzeilen, die sehr wohl mit einem Semikolon beginnen d�rfen.)

Kommandozeilen

Mit einem ’#’ beginnende Zeilen enthalten ein Kommando. M�gliche Kommandos sind (Gro�-/Kleinschreibung wird ignoriert):

#language <str>

gibt die Vorgabesprache des Programms an, d.h. die Sprache der Strings in der Katalogbeschreibungsdatei. Vorgabe ist ‘#language english’.

#version <num>

gibt die Versionsnummer der zu er�ffnenden Kataloge an. Im Unterschied zu Exec/OpenLibrary mu� die Nummer genau stimmen, h�here Nummern werden nicht akzeptiert. Eine Ausnahme ist es, hier die 0 als Versionsnummer anzugeben, durch die jeder Katalog akzeptiert wird. Vorgabe ist ‘#version 0’. Zu diesen Befehlen siehe auch Locale/OpenCatalog.

#lengthbytes <num>

Weist das Programm an, vor jeden String die angegebene Zahl von Bytes zu schreiben, die die L�nge des Strings (ohne die lengthbytes) enthalten und ohne abschlie�endes NUL-Byte angeben. (Ein NUL-Byte wird in Katalogen aber trotzdem angeh�ngt, im erzeugten Quelltext ist dies von der Quelltextbeschreibungsdatei abh�ngig.) ‘<num>’ mu� zwischen 0 und sizeof(long)=4 liegen. Vorgabe ist ‘#lengthbytes 0’.

#basename <str>

Setzt den Basisnamen f�r die Quelltextbeschreibung. Der aus den Argumenten beim Aufruf des Programmnamens gewonnene Basisname (see section Aufruf des Programms) wird �berschrieben. See section Aufbau einer Quelltextbeschreibung.

Beschreibungszeilen

deklarieren einen String. Sie haben die Form ‘IDSTR (id/minlen/maxlen)’, wobei ‘IDSTR’ ein Bezeichner ist (d.h. ein aus den Zeichen a-z,A-Z,0-9 und dem Underscore bestehender String), ‘id’ eine eindeutige Nummer (die von jetzt an als ID bezeichnet wird) angibt, ‘minlen’ die minimale und ‘maxlen’ die maximale L�nge des Strings. Die drei letztgenannten d�rfen auch fehlen, das Programm w�hlt dann selbst einen Wert f�r ‘id’ und erlaubt Strings beliebiger L�nge. Die auf eine Beschreibungszeile folgende ist eine

Stringzeile,

d.h. sie enth�lt den eigentlichen String und nichts anderes. Dieser darf eine Reihe von Steuerzeichen enthalten, die alle durch einen Backslash eingeleitet werden:

\b

Backspace (Ascii 8)

\c

Control Sequence Introducer (Ascii 155)

\e

Escape (Ascii 27)

\f

Form Feed (Ascii 12)

\g

Display beep (Ascii 7)

\n

Line Feed, newline (Ascii 10)

\r

Carriage Return (Ascii 13)

\t

Tab (Ascii 9)

\v

Vertical tab (Ascii 11)

\)

Das Klammer-Zu-Zeichen. (Dies ist evtl. innerhalb einer ‘%(..)’-Sequenz n�tig, siehe Aufbau einer Quelltextbeschreibung.)

\\

Der Backslash selbst.

\xHH

Das durch ‘HH’ gegebene Ascii-Zeichen, wobei ‘HH’ Hexziffern sind.

\OOO

Das durch ‘OOO’ gegebene Ascii-Zeichen, wobei ‘OOO’ Hexziffern sind.

Schlie�lich signalisiert ein einzelner Backslash am Zeilenende, da� die Zeile (und damit der String) auf der n�chsten Zeile fortgesetzt wird. Es ist dadurch m�glich, beliebig lange Strings zu definieren. (FlexCat ist lediglich durch das verf�gbare RAM eingeschr�nkt.)

Ein String wird also stets durch eine Beschreibungszeile und eine unmittelbar darauffolgende Stringzeile angegeben. Ein Beispiel w�re

    msgHello (/4/)
    Hello, this is english!\n

In diesem Beispiel fehlt die ID, wird also vom Programm festgesetzt. (Dies ist sicher der einfachste und beste Weg.) Die 4 gibt hier an, da� der in der n�chsten Zeile stehende String wenigstens 4 Zeichen enthalten soll, eine maximale L�nge fehlt.

Als ausf�hrlicheres Beispiel zum Aufbau einer Katalogbeschreibungsdatei kann die Datei ‘FlexCat.cd’ dienen.


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5 Aufbau einer Katalog�bersetzung

Katalog�bersetzungen entsprechen in ihrem Aufbau ganz und gar den Katalogbeschreibungen. Nur sind auf den Kommandozeilen andere Kommandos erlaubt und die Beschreibungszeilen enthalten keine Angaben �ber ID sowie minimale oder maximale L�nge, da diese aus der Katalogbeschreibung entnommen werden. Selbstverst�ndlich sollte jeder String aus der Katalogbeschreibung auch in der Katalog�bersetzung vorkommen und es d�rfen keine Strings (d.h. Stringbezeichner) auftauchen, die nicht auch in der Katalogbeschreibung definiert sind. Dies zu sichern geht am einfachsten, indem man mit FlexCat aus den evtl. ge�nderten Katalogbeschreibungen und den evtl. alten Katalog�bersetzungen neue erzeugt. See section �bersicht.

Die in Katalog�bersetzungsdateien erlaubten Kommandos sind:

##version <str>

Gibt die Version des Kataloges in Form eines AmigaDOS-Versionsstrings an. Beispiel:

##version $VER: Deutsch.ct 8.1 (27.09.93)

Die Versionsnummer dieses Kataloges ist 8. Um ihn zu er�ffnen, m�ssten also in der Katalogbeschreibung die Versionsnummern 0 oder 8 angegeben werden.

##language <str>

Gibt die Sprache des Kataloges an. Nat�rlich sollte dies eine andere als die Sprache der Katalogbeschreibung sein. Die Katalogsprache und die Katalogversion m�ssen angegeben werden.

##codeset <num>

Ein derzeit noch unbenutztes Argument f�r die Er�ffnung eines Kataloges. Sollte immer 0 sein. (Dies ist auch der Vorgabewert.)

##chunk <ID> <string>

Dient dazu, Kommentare in den fertigen Katalog aufzunehmen. Z.B. w�rde

    ## chunk AUTH German catalog translation by Jochen Wiedmann

einen Chunk namens AUTH (f�r Author) aufnehmen, der aus dem String ‘German catalog translation by Jochen Wiedmann’ best�nde.

Das obige Beispiel sieht hier so aus:

    msgHello
    Hallo, dies ist deutsch!\n

Als weiteres Beispiel einer Katalog�bersetzungsdatei kann ‘Deutsch.ct’ dienen.


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

6 Aufbau einer Quelltextbeschreibung

Der wichtigste Teil von FlexCat ist die Quelltexterzeugung. Bis hierher bietet FlexCat nichts, was nicht auch CatComp, KitCat und Konsorten bieten w�rden. Der erzeugte Quelltext soll nun die Verwendung der erzeugten Kataloge m�glichst einfach machen. Andererseits soll dies aber unter beliebigen Programmiersprachen und f�r beliebige Anforderungen gelten. Um diese scheinbaren Widerspr�che aufzul�sen, kennt FlexCat die Quelltextbeschreibungen. Das sind Dateien, die gewisserma�en die Vorlage f�r den zu erzeugenden Quelltext bilden. Wie die Katalogbeschreibungen und -�bersetzungen sind sie mit einem Editor erzeug- und bearbeitbar: Das ist es, was FlexCat so flexibel macht.

FlexCat durchsucht die Quelltextbeschreibung nach gewissen Symbolen, die durch die in der Katalogbeschreibung gegebenen Werte ersetzt werden. M�gliche Symbole sind zum einen die mit einem Backslash eingeleiteten Steuerzeichen, die auch in den Strings der Katalogbeschreibung und der Katalog�bersetzung erlaubt sind, zum anderen aber Steuerzeichen, die mit einem <%>-Zeichen beginnen: F�r C-Programmierer ein wohlvertrautes Konzept. M�gliche Steuerzeichen sind:

%b

ist der Basisname der Quelltextbeschreibungsdatei. (F�r ‘FlexCat.cd’ als CDFILE w�re also FlexCat der Basisname. Wie schon erw�hnt, kommt es deshalb beim Argument CDFILE sehr wohl auf Gro�-/Kleinschreibung an; see section Aufruf des Programms)

%v

ist die Versionsnummer aus der Katalogbeschreibung, nicht zu verwechseln mit dem Versionsstring aus der Katalog�bersetzung.

%l

ist die Sprache der Katalogbeschreibung. Bitte beachten Sie, da� hier ein String eingesetzt wird, dessen Aussehen mit dem Kommando ##stringtype beeinflu�t wird.

%n

ist die Anzahl der Strings in der Katalogbeschreibung.

%%

ist das Prozentzeichen selbst.

Das wesentlichste sind aber die folgenden Steuerzeichen. Sie repr�sentieren auf unterschiedliche Art und Weise die Strings der Katalogbeschreibung. Zeilen die eines dieser Zeichen enthalten, werden von FlexCat f�r jeden Katalogstring wiederholt, da im Normalfall kaum alle Strings in eine Zeile passen w�rden.

%i

ist der Bezeichner aus der Katalogbeschreibung.

%nd
%nx
%nc

ist die ID des Strings im Dezimal- bzw. Hexadezimal bzw. Oktalformat. Dabei steht ‘n’ f�r eine ganze Zahl, die angibt, wieviele Zeichen die erzeugte Zahl einnehmen soll. (Es wird links mit Nullen aufgef�llt.) Es ist m�glich, die Zahl ‘n’ wegzulassen: In diesem Fall wird nichts aufgef�llt und die erzeugte Zahl ist gerade so lang wie n�tig.

%e

gibt an, um den wievielten String (Mit 0 beginnend) es sich handelt.

%s

ist der String selbst; dieser wird in einer von der Programmiersprache abh�ngigen Art und Weise dargestellt. Dies kann mit den Kommandos ##stringtype und ##shortstrings beeinflu�t werden.

%(...)

gibt an, da� der zwischen den Klammern stehende Text bei allen Strings au�er dem letzten auftauchen soll. Dies ist z.B. bei Arrays n�tzlich, wenn unterschiedliche Arrayeintr�ge durch ein Komma getrennt werden sollen, nach dem letzten aber kein Komma mehr kommen soll: Dann w�rde man nach dem Stringeintrag eben ‘%(,)’ schreiben. Beachten Sie, da� der Text zwischen den Klammern nicht weiter auf ‘%’-Symbole untersucht wird. Backslash-Sequenzen sind allerdings weiter erlaubt.

Die Steuerzeichen ‘%l’ und ‘%s’ erzeugen Strings. Die Darstellung von Strings h�ngt nat�rlich von der Programmiersprache ab, f�r die Quelltext erzeugt werden soll. Deshalb k�nnen in die Quelltextbeschreibung �hnlich wie in der Katalog�bersetzung Kommandos eingebaut werden. Diese m�ssen am Zeilenanfang stehen und jeweils eine eigene Zeile einnehmen. Die m�glichen Kommandos sind:

##shortstrings

gibt an, da� lange Strings �ber mehrere Zeilen verteilt werden d�rfen. Dies ist nicht in allen Programmiersprachen ohne weiteres m�glich und vor allem besonders stark von der verwendeten Programmiersprache abh�ngig. Deshalb werden vorgabem��ig notfalls eben sehr lange Zeilen erzeugt.

##stringtype <art>

gibt die Syntax der Strings an. M�gliche Arten sind:

None

Es werden keinerlei zus�tzliche Zeichen erzeugt und lediglich die Zeichen des Strings ausgegeben. Es ist keine Ausgabe von Bin�rzeichen (das sind die mit dem Backslash erzeugten Zeichen) m�glich.

C

erzeugt Strings gem�� den Regeln der Programmiersprache C, d.h. die Strings werden links und rechts mit je einem Anf�hrungszeichen abgegrenzt. Falls Strings �ber mehrere Zeilen verteilt werden, so werden die Zeilen bis auf die letzte mit einem Backslash beendet. (Der Backslash ist innerhalb von Makros n�tig.) Steuerzeichen werden mit ‘\OOO’ ausgegeben. See section FlexCat-Quelltext in C-Programmen.

Oberon

wie der Stringtyp bei C, allerdings wird kein Backslash bei Zeilentrennung erzeugt. See section FlexCat-Quelltext in Oberon-Programmen. Dieser Stringtyp wird auch f�r Modula-2 empfohlen.

Assembler

Strings werden mit ‘dc.b’ erzeugt und links und rechts mit einem einfachen Anf�hrungsstrich abgegrenzt. Bin�rzeichen werden mit $XX erzeugt. See section FlexCat-Quelltext in Assembler-Programmen.

E

Strings werden mit je einem ’ umgeben. Mehrzeilihe Strings werden durch ein ’+’ konkateniert. Bin�rzeichen win in C.

Als Beispiel betrachten wir einen Auszug aus der Quelltextbeschreibungsdatei ‘C_h.sd’, die eine Include-Datei f�r die Programmiersprache C erzeugt:

##stringtype C
##shortstrings

#ifndef %b_CAT_H    /*	Sicherstellen, da� Include-Datei    */
#define %b_CAT_H    /*	nur einmal verwendet wird.	    */


#ifndef EXEC_TYPES_H		/*  N�tige andere Include-  */
#include <exec/types.h> 	/*  Dateien einbinden.	    */
#endif
#ifndef LIBRARIES_LOCALE_H
#include <libraries/locale.h>
#endif


/*  Prototypen	*/
extern void Open%bCatalog(struct Locale *, STRPTR);
extern void Close%bCatalog(void);
extern STRPTR Get%bString(LONG);

/*  Definitionen der Bezeichner und ihrer ID's              */
#define %i %d	/*  Diese Zeile wird f�r jeden Katalog-     */
		/*  wiederholt. 			    */

#endif

Zum Suchpfad von Quelltextbeschreibungen siehe auch Aufruf des Programms.


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

7 Benutzung in eigenen Programmen

Wie der Quelltext benutzt wird, h�ngt nat�rlich vom erzeugten Quelltext und damit von den jeweiligen Quelltextbeschreibungen ab. See section Aufbau einer Quelltextbeschreibung. Es kann hier deshalb nur auf die mit FlexCat mitgelieferten Quelltextbeschreibungsdateien eingegangen werden.

Alle diese Dateien sind so aufgebaut, da� das fertige Programm auf jeden Fall auch ohne die locale.library arbeitet. Allerdings mu� es eine globale Variable ‘LocaleBase’ (d.h. ‘_LocaleBase’ f�r Assembler-Programmierer) geben und diese mu� mit ‘NULL’ oder durch einen Aufruf von Exec.OpenLibrary initialisiert sein. Im ersten Fall werden nat�rlich nur die eingebauten Strings aus der Katalogbeschreibung verwendet. Eine Ausnahme stellt die Quelltextbeschreibung ‘C_c_V20.sd’ dar, die auch unter der Workbench 2.0 Lokalisierung erm�glicht, indem sie evtl. die locale.library durch die iffparse.library ersetzt. (Diese Version ben�tigt dann auch eine Variable ‘IFFParseBase’ f�r die das gleiche wie f�r ‘LocaleBase’ gilt.) See section FlexCat-Quelltext in C-Programmen. Als Programmierer ben�tigen Sie keinerlie Kenntnisse dieser Libraries, au�er Sie wollen eigene Quelltextbeschreibungen erzeugen.

Es gibt lediglich 3 Funktionen, die aufzurufen recht simpel ist:

: OpenCatalog (locale, language)

Diese Funktion versucht, einen Katalog zu er�ffnen. Das Argument locale ist ein Zeiger auf eine Locale-Struktur, language ein Zeiger auf einen String, der den Namen der gew�nschten Sprache enth�lt. Beide Argumente werden an die Locale-Funktion OpenCatalog �bergeben und sollten normalerweise immer NULL (bzw. NIL) sein, da andernfalls die Voreinstellungen des Benutzers �berschrieben werden. N�heres ist in den AutoDocs nachzulesen.

Hat der Benutzer als Vorgabesprachen etwa ‘Deutsch’ und ‘Fran�ais’ eingestellt und der Basisname des Programms ist ‘XXX’, so wird nacheinander nach folgenden Dateien gesucht:

PROGDIR:Catalogs/Deutsch/XXX.catalog’
    ‘LOCALE:Catalogs/Deutsch/XXX.catalog’
    ‘PROGDIR:Catalogs/Fran�ais/XXX.catalog’
    ‘LOCALE:Catalogs/Fran�ais/XXX.catalog

Dabei ist ‘PROGDIR:’ das aktuelle Directory des Programms. Die Reihenfolge von ‘PROGDIR:’ und ‘LOCALE:’ kann evtl. vertauscht werden, falls dadurch ein Requester wie ‘Insert volume YYY’ unterdr�ckt werden kann.

OpenCatalog ist vom Typ void (f�r Modula2-Programmierer: Eine Prozedur), liefert also kein Ergebnis.

: GetString (ID)

Diese Funktion liefert einen Zeiger auf den Katalogstring mit der angegebenen Nummer. Die ID wird in der Katalogbeschreibung definiert. Es versteht sich von selbst, da� die Strings Eigentum der locale.library sind und deshalb nicht ver�ndert werden d�rfen.

Ein Beispiel ist vielleicht n�tzlich. Im Beispiel aus der Katalogbeschreibung wird der String msgHello definiert. Die Quelltextbeschreibungen deklarieren nun eine Konstante ‘msgHello’, der die ID repr�sentiert. Damit k�nnte der String in C so ausgegeben werden:

    printf("%s\n", GetString(msgHello));
: CloseCatalog (void)

Mit dieser Funktion wird der Katalog (das hei�t das belegte RAM) vor dem Programmende wieder freigegeben. Die Funktion kann gefahrlos zu jeder Zeit aufgerufen werden, sogar wenn OpenCatalog gar nicht aufgerufen wurde.


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

7.1 FlexCat-Quelltext in C-Programmen

Der C-Quelltext besteht aus zwei Teilen: Einer ‘.c’-Datei, die einfach �bersetzt und mit dem Linker eingebunden wird und nicht weiter zu interessieren braucht und einer ‘.h’-Datei, die vom benutzenden Programm mit ‘#include’ eingebunden wird. In ihr werden die ID’s der Strings als Makro definiert.

Dabei gibt es drei unterschiedliche Versionen: ‘AutoC_c.sd’ ist die einfachste Version: Sie verwendet die Autoinitialisierungsf�higkeiten von Dice, gcc und SAS/C wodurch hier nur noch der Aufruf der Funktion GetString zu tun bleibt, allerdings bietet sie auch nicht alle M�glichkeiten der locale.library. F�r 95% aller Anwendungen d�rfte sie aber ausreichend sein. Zu ‘AutoC_c.sd’ geh�rt auch noch AutoC_h.sd, das die Includefiles erzeugt. Ein Beispiel eines so geschriebenen C-Programms findet man in �bersicht.

Die Quelltextbeschreibungen ‘C_c_V21.sd’ und ‘C_h.sd’ braucht man dagegen, wenn man

  1. einen anderen Compiler als SAS/C, gcc oder Dice benutzt,
  2. alle M�glichkeiten der Funktion locale.library/OpenCatalogA benutzen m�chte oder
  3. mehrere Kataloge in einem Programm benutzen m�chte.

Um letzteres zu erm�glichen, gibt es hier die Funktionen OpenXXXCatalog, GetXXXString und CloseXXXCatalog, wobei ‘XXX’ der Basisname aus der Quelltextbeschreibung ist. See section Aufbau einer Quelltextbeschreibung. Dies sind die Prototypen:

    VOID OpenXXXCatalog(struct Locale *loc, char *language);
    STRPTR GetXXXString(APTR);
    VOID CloseXXXCatalog(VOID);

Hier mu� man die Initialisierung und Terminierung, d.h. die Er�ffnung der locale.library und den Aufruf der Funktionen OpenXXXCatalog und CloseXXXCatalog selbst �bernehmen. Ein auf diesen Quelltextbeschreibungen basierendes Programm sieht so aus:

    #include <stdio.h>
    #include <stdlib.h>
    #include <HelloLocalWorld_Cat.h>	/* Mu� eingebunden werden! */
    #include <clib/exec_protos.h>

    struct Library *LocaleBase;

    void main(int argc, char *argv[])
    {
      /*  Er�ffne locale.library; Kein Abbruch, falls nicht
	  vorhanden! (Dann werden einfach die eingebauten Strings
	  verwendet.
	  Aus diesem Grund mu� die locale.library auch selbst
	  er�ffnet werden, selbst wenn der Compiler das automatisch
	  kann.
      */
      LocaleBase = OpenLibrary("locale.library", 38);
      OpenHelloLocalWorldCatalog(NULL, NULL);

      printf("%s\n", GetHelloLocalWorldString(msgHello));

      CloseHelloLocalWorldCatalog();
      CloseLibrary(LocaleBase);
    }

Die dritte Version besteht schlie�lich aus ‘C_c_V20.sd’ und ‘C_h.sd’. Sie ist funktional identisch mit der zweiten Version, allerdings wird unter 2.0 versucht, die locale.library durch die iffparse.library zu ersetzen und so wenigstens die Kataloge doch zu verwenden. Das Programm hat dann f�r gew�hnlich eine Option ‘LANGUAGE’, die die Wahl einer Sprache erm�glicht und deren Wert dann an OpenXXXCatalog �bergeben wird. (1)


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

7.2 FlexCat-Quelltext in C++-Programmen

Unter C++ ist alles dank einer geeigneten Klasse extrem einfach: Durch Konstruktoren und Destruktoren wird das meiste automatisch erledigt. Diese Klasse ist in den Dateien ‘C++_CatalogF.cc’ und ‘C++_CatalogF.h’ implementiert, die in ‘CatalogF.cc’ und ‘CatalogF.h’ umbenannt und �bersetzt werden sollten. Ferner sollten mit Hilfe der Quelltextbeschreibungen ‘C++_cc.sd’ und ‘C++_h.sd’ zwei weitere Dateien erzeugt werden: Erstere enth�lt die Strings, letztere wird mit #include im eigentlichen Programm eingebunden und enth�lt die n�tigen Deklarationen.

Abschlie�end ein Beispiel eines C++-Programms:

    #include <iostream.h>
    extern "C"
    {
    #include <clib/exec_protos.h>
    }
    #include "CatalogF.h"
    #include "HelloLocalWorld_Cat.h"

    struct LocaleBase *LocaleBase = 0;

    int main()
    { //  Die Library mu� hier er�ffnet werden, auch wenn der Compiler
      //  das automatisch kann. Kein Aussteigen, falls die
      //  Library nicht er�ffnet werden kann: Dann werden einfach die
      //  eingebauten Strings verwendet.
      LocaleBase = (struct LocaleBase *) OpenLibrary("locale.library", 38);

      const CatalogF cat(0, 0, HelloLocalWorld_ARGS);

      cout >> cat.GetString(msgHelloLocalWorld);

      if (LocaleBase)
	  CloseLibrary(LocaleBase);
    }

F�r den gcc ist eine Modifikation der ‘libauto.a’ verf�gbar, die sogar die Er�ffnung der Locale.library �berfl�ssig macht.


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

7.3 FlexCat-Quelltext in Oberon-Programmen

Es gibt unterschiedliche Quelltextbeschreibungen: ‘AmigaOberon.sd’ ist f�r die aktuelle Version des AmigaOberon-Compilers, ‘Oberon_V39.sd’ f�r �ltere Versionen dieses Compilers gedacht. ‘Oberon_V38.sd’ verwendet das von ‘Locale.mod’ von Hartmut Goebel. ‘Oberon-A.sd’ ist nat�rlich f�r den gleichnamigen Compiler.

Die Prototypen der Funktionen sind:

    XXX.OpenCatalog(loc: Locale.LocalePtr; language : ARRAY OF CHAR);
    XXX.GetString(num: LONGINT): Exec.StrPtr;
    XXX.CloseCatalog();

Dabei ist ‘XXX’ jeweils der Basisname aus der Quelltextbeschreibung. See section Aufbau einer Quelltextbeschreibung.

Zum Schlu� noch ein Beispiel eines Programms, das den von FlexCat erzeugten Quelltext verwendet:

    MODULE HelloLocalWorld;

    IMPORT  x:=HelloLocalWorld_Cat; Dos;

    BEGIN
      x.OpenCatalog(NIL, "");

      Dos.PrintF("%s\n", x.GetString(x.msgHello));

      (* Katalog wird beim Programmende automatisch *)
      (* geschlossen.                               *)
    END Irgendwas;

[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

7.4 Flexcat-Quelltext in Modula-2-Programmen

Wie Oberon unterst�tzt Modula-2 ein Modulkonzept, die Funktionsnamen sind also dieselben. Da Modula je ein Definitions- und Implementationsmodul ben�tigt, m�ssen diese durch die Quelltextbeschreibungen ‘Modula2Def.sd’ bzw. ‘Modula2Mod.sd’ erzeugt werden, die an den M2Amiga-Compiler angepasst sind. Au�erdem wird die Definitionsdatei ‘OptLocaleL.def’ ben�tigt, die mit dem Update auf M2Amiga v4.3 ausgeliefert wird.

Die Prototypen der Funktionen sind:

    PROCEDURE OpenCatalog(loc : ld.LocalePtr;
			  language : ARRAY OF CHAR);
    PROCEDURE CloseCatalog();
    PROCEDURE GetString(num : LONGINT) : ld.StrPtr;

Zum Schlu"s noch ein Beispiel eines Programms, das den von FlexCat erzeugten Quelltext verwendet:

    MODULE HelloLocalWorld;

    IMPORT hl: HelloLocalWorldLocale,
	   io: InOut;

    BEGIN
      hl.OpenCatalog(NIL, "");

      io.WriteString(hl.GetString(hl.msgHello)); io.WriteLn;

      hl.CloseCatalog;
    END HelloLocalWorld.

[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

7.5 FlexCat-Quelltext in Assembler-Programmen

Es gibt Quelltextbeschreibungen f�r die Assembler von Aztec-C bzw. SAS/C. Beide sind im wesentlichen identisch, vor allem der SAS-Assembler d�rfte sich kaum von verbreiteten Assemblern unterscheiden. Es sollte also kein gro�es Problem sein, daraus eine eigene Quelltextbeschreibung zu machen. Der Quelltext besteht aus zwei Teilen: Einer ‘.asm’- bzw. ‘.a’-Datei, die einfach �bersetzt und mit dem Linker eingebunden wird und nicht weiter zu interessieren braucht und einer ‘.i’-Datei, die vom benutzenden Programm mit ‘include’ eingebunden wird. In ihr werden die ID’s der Strings definiert.

Um theoretisch auch das gleichzeitige Er�ffnen mehrerer Kataloge zu erm�glichen, tragen die FlexCat-Funktionen etwas ge�nderte Namen, n�mlich ‘OpenXXXCatalog’, ‘CloseXXXCatalog’ und ‘GetXXXString’. Dabei ist ‘XXX’ der Basisname aus der Quelltextbeschreibung. Das Konzept ist von der GadToolsBox �bernommen und meines Erachtens bew�hrt. See section Aufbau einer Quelltextbeschreibung.

Die Funktionen liefern wie �blich das Ergebnis in d0 und sichern die Register d2-d7 und a2-a7. OpenCatalog erwartet seine Argumente in a0 (Zeiger auf Locale-Struktur) und in a1 (Zeiger auf String mit zu verwendender Sprache). Wie schon erw�hnt, sollten diese Argumente im Normalfall immer NULL sein. GetString erwartet in a0 einen Zeiger. Auf was er zeigt braucht ebenfalls nicht zu interessieren.

Zum Schlu� noch ein Beispiel eines Programms, das FlexCat verwendet.

*   HelloLocalWorld.asm

	include "HelloLocalWorld_Cat.i"
		/*  Enth�lt xref OpenHelloLocalWorldCatalog usw.    */

	xref	_LVOOpenLibrary
	xref	_LVOCloseLibrary
	xref	_AbsExecBase

	dseg
LocNam: dc.b	"locale.library",0
	dc.l	_LocaleBase,4	    ; Dieser Name ist obligatorisch

	cseg

main:	move.l	#38,d0		    ; Locale er�ffnen
	lea	LocName,a1
	move.l	_AbsExecBase.a6
	jsr	_LVOOpenLibrary(a6)
*  KEIN Abbruch, falls OpenLibrary() nicht erfolgreich! (Nat�rlich nur,
*   wenn Locale-Funktionen nicht anderweitig benutzt werden.

	sub.l	a0,a0
	sub.l	a1,a1
	jsr	OpenHelloLocalWorldCatalog  ; Katalog er�ffnen

	lea.l	msgHello,a0	    ; Zeiger auf String holen
	jsr	GetHelloLocalWorldString
	jsr	PrintD0 	    ; und ausgeben

	jsr	CloseHelloLocalWorldCatalog ; Katalog schlie�en
	move.l	_LocaleBase,a1	    ; Locale evtl. schlie�en
	move.l	a1,d0
	beq	Ende
	jsr	CloseLibrary
Ende:
	rts
	end

[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

7.6 FlexCat-Quelltext in E-Programmen

Seit der Version 3.0 erlaubt E das Aufteilen von Programmen in separate Module. Im Folgenden wird nur die Quelltextbeschreibung ‘E30b.sd’ beschrieben, die ab E3.0b funktionieren sollte. (Version 3.0a enth�lt signifikante Fehler, f�r fr�here Versionen gibt es ‘E21b.sd’, das allerdings die Einbindung des von FlexCat erzeugten Quelltextes in den eigentlichen Quelltext von Hand erfordert.)

E30b.sd’ erzeugt ein Modul ‘Locale’, das eine Variable namens cat vom Typ ‘catalog_XXX’ bereit stellt. (Wobei ‘XXX’ der Basisname aus der Quelltextbeschreibung ist, see section Aufbau einer Quelltextbeschreibung) Eine Datei ‘HelloLocalWorld.e’ k�nnte so aussehen:

    MODULE '*Locale'
	-> Einbindung des Moduls

    DEF cat : PTR TO catalog_HelloLocalWorld
	-> Diese Variable enth�lt die ganzen Katalogstrings und stellt
	-> einige Methoden bereit. Sie mu� in jedem Modul deklariert
	-> werden, das den Katalog verwendet, allerdings nur im
	-> Hauptmodul initialisiert werden.

    PROC main()

	localebase := OpenLibrary('locale.library', 0)
	    -> Locale.library er�ffnen; Kein Abbruch, falls
	    -> nicht vorhanden! (In diesem Fall werden die eingebauten
	    -> Strings verwendet.

	NEW cat.create()
	cat.open()
	    -> Diese Initialisierung wird (wie schon erw�hnt) nur im
	    -> Hauptmodul durchgef�hrt.

	WriteF('\s\n', cat.msg_Hello_world.getstr())
	    -> cat.msg_Hello_world ist einer der in cat enthaltenen
	    -> Strings. Dieser stellt eine Methode getstr() bereit,
	    -> die den Katalog liest und einen Zeiger auf den zu
	    -> verwendenden String liefert.

	cat.close()
	IF localebase THEN CloseLibrary(localebase)
    ENDPROC

[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

Weiterentwicklung des Programms

Ich beabsichtige eigentlich nicht, das Programm wesentlich weiterzuentwickeln, denke auch nicht, da� das n�tig sein wird, bin aber nat�rlich trotzdem f�r jegliche Anregung, Vorschl�ge oder notfalls auch Kritik offen. Was ich auf jeden Fall gerne machen werde, sind andere Stringtypen, falls sich diese f�r andere Programmiersprachen als notwendig erweisen sollten.

Ferner w�re ich auf jeden Fall dankbar f�r weitere Quelltextbeschreibungen und w�rde diese gerne in einer sp�teren Version �ffnetlich zug�nglich machen - egal, welche Programmiersprache oder mit welchen Erweiterungen. Voraussetzung ist nat�rlich, da� der von diesen Quelltextbeschreibungen erzeugte Code in einem laufenden Programm erfolgreich erprobt wurde.

Ebenso dankbar w�re ich nat�rlich auch f�r neue Kataloge. Es gen�gt der Eintrag der entsprechenden Strings in der Datei ‘NewCatalogs.ct’. Wie das geht, sollte nach der Lekt�re dieser Dokumentation hoffentlich klar sein.


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

Danksagungen

Danken m�chte ich:

Albert Weinert

f�r KitCat, den Vorg�nger von FlexCat, der mir gute Dienste geleistet hat, aber irgendwann eben nicht flexibel genug war sowie f�r die Oberon-Quelltextbeschreibungen.

Reinhard Spisser und Sebastiano Vigna

f�r die Amiga-Version von texinfo, mit der diese Dokumentation geschrieben ist.

Der Free Software Foundation

f�r die Urversion von texinfo und f�r viele andere hervorragende Programme.

Matt Dillon

f�r DICE und besonders f�r DME.

Alessandro Galassi

f�r den italienischen Katalog.

Lionel Vintenat

f�r die E-Quelltextbeschreibung und ihre Dokumentation, den franz�sichen Katalog und Fehlermeldungen.

Antonio Joaqu�n Gomez Gonzalez (u0868551@oboe.etsiig.uniovi.es)

f�r die C++-Quelltextbeschreibung, den spanischen Katalog, die �bersetzung der Dokumentation in Spanisch sowie f�r den guten Tip �ber die schnellere GetString-Routine.

Olaf Peters (op@hb2.maus.de)

f�r die Modula-2-Quelltextbeschreibung.

Russ Steffen (steffen@uwstout.edu)

f�r die Anregung der FLEXCAT_SDDIR-Variablen.

Lauri Aalto (kilroy@tolsun.oulu.fi)

f�r die finnischen Quelltext�bersetzungen.

Marcin Orlowski (carlos@felix.univ.szczecin.pl)

f�r die polnischen Quelltext�bersetzungen

Udo Schuermann (walrus@wam.umd.edu)

f�r die Vorschl�ge der WARNCTGAPS-Option und das ##chunk-Kommando.

Den Leuten von #AmigaGer

f�r die Beantwortung vieler dummer Fragen und f�r viele Augenblicke erfreulich ungez�gelten Schwachsinns :-), z.B. stefanb (Stefan Becker), PowerStat (Kai Hoffmann), \ ill (Markus Illenseer), Quarvon (J�rgen Lang), ZZA (Bernhard M�llemann), Tron (Mathias Scheler), mungo (Ignatios Souvlatzis), \ jow (J�rgen Weinelt) und Stargazer (Petra Zeidler).

Commodore

f�r den Amiga und f�r die Kickstart 2.0 :-) Macht weiter mit der Kiste, dann bin ich vielleicht auch die n�chsten 8 Jahre Amiga-Benutzer!


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

Index

Jump to:   .    
A   B   C   D   E   F   I   K   M   O   P   Q   S   W   Z  
Index Entry  Section

.
.cd 4 Aufbau einer Katalogbeschreibung
.ct 5 Aufbau einer Katalog�bersetzung
.sd 6 Aufbau einer Quelltextbeschreibung

�bersicht 1 �bersicht

A
AmigaOberon.sd 7.3 FlexCat-Quelltext in Oberon-Programmen
Ascii-Code 4 Aufbau einer Katalogbeschreibung
Assembler 7.5 FlexCat-Quelltext in Assembler-Programmen
AutoC_c.sd 7.1 FlexCat-Quelltext in C-Programmen
AutoC_h.sd 7.1 FlexCat-Quelltext in C-Programmen
AztecAs_asm.sd 7.5 FlexCat-Quelltext in Assembler-Programmen
AztecAs_i.sd 7.5 FlexCat-Quelltext in Assembler-Programmen

B
Beitr�ge Weiterentwicklung des Programms
Benutzung 7 Benutzung in eigenen Programmen

C
C 7.1 FlexCat-Quelltext in C-Programmen
C++ 7.2 FlexCat-Quelltext in C++-Programmen
C++_CatalogF.cc 7.2 FlexCat-Quelltext in C++-Programmen
C++_CatalogF.h 7.2 FlexCat-Quelltext in C++-Programmen
C++_cc.sd 7.2 FlexCat-Quelltext in C++-Programmen
C++_h.sd 7.2 FlexCat-Quelltext in C++-Programmen
Catalog description 4 Aufbau einer Katalogbeschreibung
Catalog translation 5 Aufbau einer Katalog�bersetzung
Compiler 1 �bersicht
C_c_V20.sd 7.1 FlexCat-Quelltext in C-Programmen
C_c_V21.sd 7.1 FlexCat-Quelltext in C-Programmen
C_h.sd 7.1 FlexCat-Quelltext in C-Programmen

D
Danksagungen Danksagungen
Deutsch.ct 5 Aufbau einer Katalog�bersetzung

E
E 7.6 FlexCat-Quelltext in E-Programmen
E21b.sd 7.6 FlexCat-Quelltext in E-Programmen
E30b.sd 7.6 FlexCat-Quelltext in E-Programmen

F
FlexCat.cd 4 Aufbau einer Katalogbeschreibung

I
Installation 2 Installation des Programms

K
Katalogbeschreibung 4 Aufbau einer Katalogbeschreibung
Katalog�bersetzung 5 Aufbau einer Katalog�bersetzung

M
Modula-2 7.4 Flexcat-Quelltext in Modula-2-Programmen
Modula2Def.sd 7.4 Flexcat-Quelltext in Modula-2-Programmen
Modula2Mod.sd 7.4 Flexcat-Quelltext in Modula-2-Programmen

O
Oberon 7.3 FlexCat-Quelltext in Oberon-Programmen
Oberon-A.sd 7.3 FlexCat-Quelltext in Oberon-Programmen
Oberon_V38.sd 7.3 FlexCat-Quelltext in Oberon-Programmen
Oberon_V39.sd 7.3 FlexCat-Quelltext in Oberon-Programmen

P
Programmiersprache 1 �bersicht

Q
Quelltextbeschreibung 6 Aufbau einer Quelltextbeschreibung

S
SASasm_a.sd 7.5 FlexCat-Quelltext in Assembler-Programmen
SASasm_i.sd 7.5 FlexCat-Quelltext in Assembler-Programmen
Source description 6 Aufbau einer Quelltextbeschreibung
Steuerzeichen 4 Aufbau einer Katalogbeschreibung
Systemanforderungen 2 Installation des Programms

W
Weiterentwicklung Weiterentwicklung des Programms

Z
Zukunft Weiterentwicklung des Programms

Jump to:   .    
A   B   C   D   E   F   I   K   M   O   P   Q   S   W   Z  

[Top] [Contents] [Index] [ ? ]

Footnotes

(1)

Es w�re �brigens prinzipiell auch denkbar, eine auch unter 1.3 laufende Version zu schreiben, die den Katalog n�tigenfalls "von Hand" liest, aber ich m�chte 1.3 nicht mehr unterst�tzen und habe das deshalb nicht getan.


[Top] [Contents] [Index] [ ? ]

Table of Contents


[Top] [Contents] [Index] [ ? ]

About This Document

This document was generated on September 19, 2022 using texi2html 5.0.

The buttons in the navigation panels have the following meaning:

Button Name Go to From 1.2.3 go to
[ << ] FastBack Beginning of this chapter or previous chapter 1
[ < ] Back Previous section in reading order 1.2.2
[ Up ] Up Up section 1.2
[ > ] Forward Next section in reading order 1.2.4
[ >> ] FastForward Next chapter 2
[Top] Top Cover (top) of document  
[Contents] Contents Table of contents  
[Index] Index Index  
[ ? ] About About (help)  

where the Example assumes that the current position is at Subsubsection One-Two-Three of a document of the following structure:


This document was generated on September 19, 2022 using texi2html 5.0.