NAME
zerodds-idlc - read OMG IDL 4.2 and say what is in it
SYNOPSIS
zerodds-idlc SUBCOMMAND [OPTIONS] FILE.idl ...
DESCRIPTION
Reads OMG IDL 4.2 and says what is in it: parses and lowers a file, reports diagnostics, prints the canonical form or the model, and emits target-language data-types plus DDS TypeSupport. Implements the language PSMs (DDS-Java-PSM, DDS-PSM-Cxx, etc.).
SUBCOMMANDS
- check
-
Parse and lower; report every diagnostic.
- lint
-
The rules a valid file can still break.
- format
-
The canonical form, to stdout by default.
- dump-ast
-
The model, as a tree.
- print-deps
-
The types each declaration names.
- generate
-
One language's source for the model.
- dlrl
-
OMG DDS 1.2 §8 DLRL object and home classes, from the three DLRL pragmas.
dlrl and the DCPS_DATA_TYPE/DCPS_DATA_KEY collision
DDS 1.2 §8.2.2's Generation Process reads three pragmas out of the IDL text:
#pragma DCPS_DATA_TYPE "<scoped-name>" #pragma DCPS_DATA_KEY "<scoped-name> <field>" #pragma DCPS_DLRL_RELATION "<scoped-name> <relation> <target>"
The first two spellings are not DLRL's alone: OpenDDS's own devguide reuses the identical two pragma names for an unrelated, DLRL-free topic-type/key marker, and check / generate already read them that way — the diagnostic on each now says so and names the other reading. dlrl does not extend that AST-facet reading with a second, DLRL meaning for the same two spellings; it reads the raw IDL text on its own, through zerodds_dlrl::pragma::parse_pragma, independently of idl-lower. Running check / generate and dlrl over the same file therefore each apply exactly one reading, and neither silently eats the other's. A pragma that names one of the three DLRL tags and does not parse under that grammar — wrong arity, an unterminated quoted string — is reported as an error and fails the run; a pragma outside the three tags is silent under dlrl, whatever it means to another tool.
The four backends emit classes that derive from PSM base types this tree does not implement: C++'s from DLRL::ObjectRoot/ObjectHome/RefList and DDS::Long (DDS 1.2 § B.6/§ B.7, the specification's own C++ PSM), Java's from org.omg.dds.dlrl.ObjectRoot/ObjectHome (§ B.8), C#'s from an ObjectRoot/ObjectHome pair and [DlrlKey]/[DlrlRelation] attributes this codebase invented for a target OMG never gave a PSM. ZeroDDS ships a DLRL runtime for exactly one language, Rust, and dlrl does not target Rust — the four languages it does target have no runtime here for the generated class to compile against, and every generated file's header comment says so. TypeScript is the exception: its generated interface and class name no external type at all.
generate and an IDL interface
--lang rust gives a full DDS-RPC 1.0 (formal/16-12-04) binding for every interface in the model: the request and reply topic types of §7.5.1.1 with a real XCDR2 codec, a typed <Iface>Client, a <Iface> service trait with raises in every method signature, and a <Iface>Dispatcher that serves it over zerodds-rpc's Requester / Replier. An out or inout parameter is a &mut argument; a pure out parameter besides the declared return travels back through the method's Ok value. A base interface's operations are reached through a Rust supertrait (trait Derived: Base) and, on the client, through a composed base client field — DDS-RPC 1.0 §7.5.1.1.8 keeps a base's topic separate from a derived interface's own. The generated file depends on zerodds-rpc, zerodds-dcps and zerodds-wire; the preamble names them.
c++, java, typescript, csharp, go, swift, nim, zig, ada, d, elixir, julia, lua, ocaml and fsharp also have complete interface bindings, each in the shape its own runtime and idiom gives it: every operation and attribute reaches the output — an attribute as a property, a name()/setName()-shaped pair, a get_/set_ primitive operation or field, or a descriptor entry, whichever that column already uses — and a declared raises/getraises/setraises reaches it too. None has a codec, since none of those runtimes lives in this tree; fourteen of the fifteen flatten a base interface's members into the derived declaration, having no language mechanism to compose a base through instead — Rust's supertrait, above, is the one exception.
c, python and node have no mapping for an interface at all, and refuse a model that declares one — exit 1, naming the interface, its position in the source, and which languages do have a binding. Never a partial declaration, and never a silent 0 with the interface missing from the output.
OPTIONS
- --strict
-
OMG IDL 4.2 only; reject every vendor extension.
- --ros2
-
Admit the ROS 2 dialect: an unqualified member type that differs only in case from the member name, such as Pose pose;, resolves to the type.
- --json
-
Machine-readable diagnostics.
- --deny-warnings
-
Exit non-zero when anything was reported.
- --default-extensibility final|appendable|mutable
-
What an aggregate whose source said nothing is taken to be. Default: the specification's appendable. A source that did say still wins. Cyclone DDS's idlc takes an unannotated aggregate as final, RTI Connext, Fast DDS and OpenDDS as appendable (recorded in docs/wire-axis-flags.md); for IDL written for Cyclone, pass --default-extensibility final.
- --check
-
format only: name each non-canonical file, exit 1.
- --write
-
format only: rewrite non-canonical files in place.
- --lang NAME
-
generate / dlrl only, required: the language to emit — an unknown name lists the valid ones for the subcommand it was given to. generate takes one of rust, c++, c, java, c#, python, typescript, go, ocaml, ada, d, elixir, julia, lua, nim, swift, zig, node, ada83, f#, kotlin, or all for every one in one run. dlrl takes one of c++, c#, java, typescript, or all for those four. cpp/cxx, csharp/cs, fsharp/fs and ts are accepted besides, under either subcommand.
- --java-mapping psm|omg
-
generate only, with --lang java (or --lang all): the shape of the generated Java types. psm (the default) is Clause 9 of DDS-Java-PSM 1.0: a structure, union, bit set and exception is a final class with private state, a no-argument constructor and Java Bean accessors, and an unbounded sequence is a java.util.Collection<E>; bounded sequences and arrays stay Java arrays. omg is the OMG IDL-to-Java mapping: public fields and a T[] for every sequence. The wire bytes are the same under both. Code that reads the fields of the generated types directly passes --java-mapping omg.
- --rpc-mapping basic|enhanced|enhanced-empty
-
generate only: the service mapping of DDS-RPC 1.0 §7.5.1 an interface is written for. basic (the default) is the Basic Service Mapping, enhanced the Enhanced Service Mapping, and enhanced-empty the Enhanced mapping with @Empty structures for an operation with nothing to carry.
- --out DIR
-
generate / dlrl only: where the file goes. Default: the current directory.
- -I DIR, --include DIR
-
Where a quoted #include is searched after the including file's own directory; repeatable, in the order given.
- --stamp FILE
-
generate / dlrl only: written after every output of the run, and only when the run succeeded — the one output a build system depends on.
- --depfile FILE
-
generate / dlrl only: a Make-format dependency file naming the stamp (or the manifest) and every IDL file the run read, the #included ones included. Needs --stamp or --output-manifest.
- --output-manifest FILE
-
generate / dlrl only: JSON with the languages, the files read (inputs) and the files written (outputs).
- --encoding ENC
-
generate only: one of xcdr1, xcdr2, pl-cdr1, pl-cdr2, delimited-cdr. Default: xcdr2.
- --endian le|be
-
generate only: the byte order the codec is planned for. It does not change the emitted text — every wire runtime holds the order in its writer and reader — but the preamble names it. Default: le.
- --xcdr-endianness BE|LE
-
The DDS-TS 1.0 spelling of --endian.
- --cpp-mapping psm|native|classic
-
generate --lang c++ only: how topic types are spelled. Default: psm, the mapping of DDS-PSM-Cxx 1.0 §7.4 and §8.1 — classes with accessors, dds::core::optional, dds::core::array, std::map, std::wstring, unions as classes with a discriminator — over the same codec: the structures the codec reads and writes move into the namespace zd_native and zerodds::psm::Conv converts on the way into the codec and out of it. native generates those structures under the names of the IDL: public fields, a plain pointer for @optional, std::array, a map as a vector of pairs. The wire codec gates, the endpoint SDKs and every other consumer that reads the fields of a generated header pass --cpp-mapping native. classic is the classic OMG IDL to C++ 1.3 mapping in C++03 over the same codec: CORBA::Long, CORBA::String_var, zerodds::classic::Sequence for a sequence and zerodds::classic::Optional for @optional.
- --rust-map entries|btree-map
-
generate --lang rust only: how an IDL map is held. entries (the default) is the sequence of MapEntry structures XTypes 1.3 §7.5.1.3.6 binds a map to; btree-map is a BTreeMap, which has the operations of a map and keeps its entries in ascending key order.
- --dialect NAME
-
generate only: reproduce one peer's answers to every wire axis at once, before any axis flag below overrides one of them. An unknown name lists the valid ones. One of specification (the default), cyclone, rti, fastdds, opendds, opensplice, ros-fastrtps, ros-cyclone, omniorb, tao, or jacorb. The preamble comment names the dialect and every axis flag given. See docs/wire-axis-flags.md for what each dialect answers on each axis, and zerodds-build's Config::dialect for the same preset from a build.rs .
- --<axis> VALUE
-
generate only: override one answer of the dialect (or of specification with no --dialect). An unknown axis value lists the valid ones for that axis. Applied in the order given, after --dialect. The axes, each with its flag and its values:
- collection-delimiters
-
specification, enum-is-primitive, never
- default-extensibility
-
final, appendable, mutable
- defaulted-discriminator-member
-
type-default, stream-value
- enum-holder
-
declared, bit-bound-dropped
- enumerator-value
-
declared, ordinal
- fixed-digits
-
declared, value-precision
- key-holder
-
forced-final, as-declared
- key-holder-order
-
ascending-member-id, declaration
- length-codes
-
compact, reuse-nested-delimiter, short-where-it-fits, universal-nextint, sized-or-nextint
- map-delimiter
-
either-half, value-only
- map-entries
-
declaration, ascending-key
- map-length
-
sequence-equivalent, rule-15-omits
- pid-flags
-
sentinel-must-understand, bare, impl-extension-members
- pl-cdr1-headers
-
specification, always-extended, short-true-length
- short-pid-range
-
up-to-reserved, all-fourteen-bits
- union-framing
-
specification, branches-from-zero
- union-labels
-
sign-extended, negative-unmatched-below-32
- wchar-framing
-
fixed, giop-length-prefixed, giop-length-prefixed-member-only
- wchar-width
-
2, 4
- wstring-length
-
specification, character-count, character-count-terminated, specification-wide-units, ros-type-support, or the three coordinates counts/terminator/width (octets|characters / unterminated|terminated / 2|4) for a cell none of the five names
- wstring-units
-
stream, big-endian-always, byte-order-mark, host-unswapped
- -h, --help
-
This text.
- -V, --version
-
The version.
EXIT STATUS
- 0
-
Nothing to report.
- 1
-
A diagnostic was reported, or --check found a file to reformat.
- 2
-
The command line was wrong.
- 3
-
A file could not be read.
FILES
generate writes one file per input under --out, named after the input's stem: <out>/<stem>.<ext> (for example robot.rs, robot.hpp, robot.py); C# adds <stem>.TypeSupport.cs. Java and Ada write fixed names instead (ZdTypes.java, ZdCodec.java, ZdTypeSupports.java; zd_types.ads, zd_types.adb). Such a language refuses a second input with the same --out in one run instead of overwriting the first; give each IDL file its own --out, or #include them into one file.
dlrl writes one bundled file per input for C++/C#/TypeScript, named <out>/<stem>_dlrl.<ext>, and one object file plus one home file per DLRL type for Java, named <out>/<Type>.java and <out>/<Type>Home.java. The same second-input-same-name refusal applies.
SEE ALSO
zerodds-xmlc(1).
AUTHORS
ZeroDDS Contributors.
BEZEICHNUNG
zerodds-idlc - OMG IDL 4.2 lesen und sagen, was darin steht
ÜBERSICHT
zerodds-idlc UNTERBEFEHL [OPTIONEN] DATEI.idl ...
BESCHREIBUNG
Liest OMG IDL 4.2 und sagt, was darin steht: parst eine Datei und überführt sie in das Modell (Lowering), meldet Diagnosen, gibt die kanonische Form oder das Modell aus und erzeugt Datentypen der Zielsprache samt DDS-TypeSupport. Implementiert die Sprach-PSMs (DDS-Java-PSM, DDS-PSM-Cxx usw.).
UNTERBEFEHLE
- check
-
Parsen und Lowering; jede Diagnose melden.
- lint
-
Die Regeln, die eine gültige Datei trotzdem verletzen kann.
- format
-
Die kanonische Form, standardmäßig auf die Standardausgabe.
- dump-ast
-
Das Modell als Baum.
- print-deps
-
Die Typen, die jede Deklaration nennt.
- generate
-
Der Quelltext einer Sprache für das Modell.
- dlrl
-
Objekt- und Home-Klassen nach OMG DDS 1.2 §8 DLRL, aus den drei DLRL-Pragmas.
dlrl und die Kollision von DCPS_DATA_TYPE/DCPS_DATA_KEY
Der Generierungsprozess aus DDS 1.2 §8.2.2 liest drei Pragmas aus dem IDL-Text:
#pragma DCPS_DATA_TYPE "<scoped-name>" #pragma DCPS_DATA_KEY "<scoped-name> <field>" #pragma DCPS_DLRL_RELATION "<scoped-name> <relation> <target>"
Die ersten beiden Schreibweisen gehören nicht DLRL allein: Der Devguide von OpenDDS verwendet genau dieselben zwei Pragma-Namen für eine davon unabhängige Markierung von Topic-Typ und Schlüssel ohne DLRL, und check / generate lesen sie bereits so — die Diagnose zu jedem sagt das jetzt und nennt die andere Lesart. dlrl erweitert diese Lesart über die AST-Facette nicht um eine zweite, DLRL-Bedeutung derselben beiden Schreibweisen; es liest den rohen IDL-Text selbst, über zerodds_dlrl::pragma::parse_pragma, unabhängig von idl-lower. Laufen check / generate und dlrl über dieselbe Datei, wendet daher jedes genau eine Lesart an, und keines verschluckt still die des anderen. Ein Pragma, das einen der drei DLRL-Tags nennt und sich nach dieser Grammatik nicht parsen lässt — falsche Stelligkeit, eine nicht abgeschlossene Zeichenkette in Anführungszeichen —, wird als Fehler gemeldet und lässt den Lauf fehlschlagen; ein Pragma außerhalb der drei Tags bleibt unter dlrl stumm, was immer es für ein anderes Werkzeug bedeutet.
Die vier Backends erzeugen Klassen, die von PSM-Basistypen abgeleitet sind, die dieser Baum nicht implementiert: C++ von DLRL::ObjectRoot/ObjectHome/RefList und DDS::Long (DDS 1.2 § B.6/§ B.7, das C++-PSM der Spezifikation selbst), Java von org.omg.dds.dlrl.ObjectRoot/ObjectHome (§ B.8), C# von einem Paar ObjectRoot/ObjectHome und den Attributen [DlrlKey]/[DlrlRelation], die diese Codebasis für ein Ziel erfunden hat, für das OMG nie ein PSM vorgelegt hat. ZeroDDS liefert eine DLRL- Laufzeit für genau eine Sprache, Rust, und dlrl zielt nicht auf Rust — die vier Sprachen, auf die es zielt, haben hier keine Laufzeit, gegen die die erzeugte Klasse kompilieren könnte, und der Kopfkommentar jeder erzeugten Datei sagt das. TypeScript ist die Ausnahme: Seine erzeugte Schnittstelle und Klasse nennen überhaupt keinen externen Typ.
generate und ein IDL-Interface
--lang rust liefert für jedes interface im Modell eine vollständige Bindung nach DDS-RPC 1.0 (formal/16-12-04): die Request- und Reply-Topic-Typen aus §7.5.1.1 mit einem echten XCDR2-Codec, einen typisierten <Iface>Client, einen Service-Trait <Iface> mit raises in jeder Methodensignatur und einen <Iface>Dispatcher, der ihn über Requester / Replier von zerodds-rpc bedient. Ein out- oder inout-Parameter ist ein &mut-Argument; ein reiner out-Parameter neben dem deklarierten Rückgabewert kommt über den Ok-Wert der Methode zurück. Die Operationen eines Basis-Interface werden über einen Rust-Supertrait (trait Derived: Base) erreicht und, auf dem Client, über ein zusammengesetztes Feld mit dem Basis-Client — DDS-RPC 1.0 §7.5.1.1.8 hält das Topic einer Basis getrennt von dem eigenen eines abgeleiteten Interface. Die erzeugte Datei hängt ab von zerodds-rpc, zerodds-dcps und zerodds-wire; die Präambel nennt sie.
c++, java, typescript, csharp, go, swift, nim, zig, ada, d, elixir, julia, lua, ocaml und fsharp haben ebenfalls vollständige interface-Bindungen, jede in der Form, die ihr ihre eigene Laufzeit und ihr Idiom geben: Jede Operation und jedes Attribut erreicht die Ausgabe — ein Attribut als Property, als Paar der Form name()/setName(), als primitive get_/set_-Operation oder als Feld, oder als Eintrag in einem Deskriptor, je nachdem, was diese Spalte schon verwendet — und ein deklariertes raises/getraises/setraises erreicht sie auch. Keine hat einen Codec, weil keine dieser Laufzeiten in diesem Baum liegt; vierzehn der fünfzehn flachen die Member eines Basis-Interface in die abgeleitete Deklaration ab, weil sie keinen Sprachmechanismus haben, um eine Basis stattdessen zusammenzusetzen — Rusts Supertrait, oben, ist die eine Ausnahme.
c, python und node haben überhaupt keine Abbildung für ein interface und lehnen ein Modell ab, das eines deklariert — Exit 1, mit dem Namen des Interface, seiner Position in der Quelle und den Sprachen, die eine Bindung haben. Nie eine teilweise Deklaration und nie ein stilles 0, bei dem das Interface in der Ausgabe fehlt.
OPTIONEN
- --strict
-
Nur OMG IDL 4.2; jede Herstellererweiterung ablehnen.
- --ros2
-
Den ROS-2-Dialekt zulassen: Ein unqualifizierter Member-Typ, der sich nur in der Groß-/Kleinschreibung vom Member-Namen unterscheidet, etwa Pose pose;, wird zum Typ aufgelöst.
- --json
-
Maschinenlesbare Diagnosen.
- --deny-warnings
-
Mit einem Wert ungleich null enden, wenn irgendetwas gemeldet wurde.
- --default-extensibility final|appendable|mutable
-
Was ein Aggregat ist, zu dem die Quelle nichts sagt. Standard: appendable nach der Spezifikation. Eine Quelle, die etwas sagt, gewinnt weiterhin. idlc von Cyclone DDS nimmt ein nicht annotiertes Aggregat als final, RTI Connext, Fast DDS und OpenDDS als appendable (festgehalten in docs/wire-axis-flags.md); für IDL, die für Cyclone geschrieben ist, --default-extensibility final angeben.
- --check
-
Nur format: jede nicht kanonische Datei nennen, Exit 1.
- --write
-
Nur format: nicht kanonische Dateien an Ort und Stelle neu schreiben.
- --lang NAME
-
Nur generate / dlrl, Pflicht: die Sprache, die erzeugt wird — ein unbekannter Name listet die gültigen für den Unterbefehl, dem er gegeben wurde. generate nimmt eine von rust, c++, c, java, c#, python, typescript, go, ocaml, ada, d, elixir, julia, lua, nim, swift, zig, node, ada83, f#, kotlin, oder all für alle in einem Lauf. dlrl nimmt eine von c++, c#, java, typescript, oder all für diese vier. cpp/cxx, csharp/cs, fsharp/fs und ts werden zusätzlich angenommen, unter beiden Unterbefehlen.
- --java-mapping psm|omg
-
Nur generate, mit --lang java (oder --lang all): die Form der erzeugten Java-Typen. psm (der Standard) ist Klausel 9 von DDS-Java-PSM 1.0: Eine Struktur, Union, ein Bitset und eine Exception sind eine finale Klasse mit privatem Zustand, einem Konstruktor ohne Argumente und Java-Bean-Accessoren, und eine unbeschränkte Sequenz ist eine java.util.Collection<E>; beschränkte Sequenzen und Arrays bleiben Java-Arrays. omg ist die Abbildung von OMG IDL nach Java: öffentliche Felder und ein T[] für jede Sequenz. Die Bytes auf der Leitung sind unter beiden gleich. Code, der die Felder der erzeugten Typen direkt liest, gibt --java-mapping omg an.
- --rpc-mapping basic|enhanced|enhanced-empty
-
Nur generate: die Service-Abbildung aus DDS-RPC 1.0 §7.5.1, für die ein interface geschrieben wird. basic (der Standard) ist das Basic Service Mapping, enhanced das Enhanced Service Mapping und enhanced-empty das Enhanced Mapping mit @Empty-Strukturen für eine Operation, die nichts zu transportieren hat.
- --out VERZ
-
Nur generate / dlrl: wohin die Datei geht. Standard: das aktuelle Verzeichnis.
- -I VERZ, --include VERZ
-
Wo ein #include in Anführungszeichen nach dem eigenen Verzeichnis der einbindenden Datei gesucht wird; wiederholbar, in der angegebenen Reihenfolge.
- --stamp DATEI
-
Nur generate / dlrl: nach jeder Ausgabe des Laufs geschrieben, und nur, wenn der Lauf erfolgreich war — die eine Ausgabe, von der ein Build-System abhängt.
- --depfile DATEI
-
Nur generate / dlrl: eine Abhängigkeitsdatei im Make-Format, die den Stamp (oder das Manifest) und jede IDL-Datei nennt, die der Lauf gelesen hat, die per #include eingebundenen eingeschlossen. Braucht --stamp oder --output-manifest.
- --output-manifest DATEI
-
Nur generate / dlrl: JSON mit den Sprachen, den gelesenen Dateien (inputs) und den geschriebenen Dateien (outputs).
- --encoding KOD
-
Nur generate: eine von xcdr1, xcdr2, pl-cdr1, pl-cdr2, delimited-cdr. Standard: xcdr2.
- --endian le|be
-
Nur generate: die Byte-Reihenfolge, für die der Codec geplant ist. Sie ändert den erzeugten Text nicht — jede Wire-Laufzeit hält die Reihenfolge in ihrem Writer und Reader —, aber die Präambel nennt sie. Standard: le.
- --xcdr-endianness BE|LE
-
Die Schreibweise von --endian aus DDS-TS 1.0.
- --cpp-mapping psm|native|classic
-
Nur generate --lang c++: wie Topic-Typen geschrieben werden. Standard: psm, die Abbildung aus DDS-PSM-Cxx 1.0 §7.4 und §8.1 — Klassen mit Accessoren, dds::core::optional, dds::core::array, std::map, std::wstring, Unions als Klassen mit einem Diskriminator — über demselben Codec: Die Strukturen, die der Codec liest und schreibt, wandern in den Namensraum zd_native, und zerodds::psm::Conv konvertiert auf dem Weg in den Codec und aus ihm heraus. native erzeugt diese Strukturen unter den Namen aus der IDL: öffentliche Felder, ein einfacher Zeiger für @optional, std::array, eine Map als Vektor von Paaren. Die Wire-Codec-Gates, die Endpoint-SDKs und jeder andere Verbraucher, der die Felder eines erzeugten Headers liest, geben --cpp-mapping native an. classic ist die klassische Abbildung von OMG IDL nach C++ 1.3 in C++03 über demselben Codec: CORBA::Long, CORBA::String_var, zerodds::classic::Sequence für eine Sequenz und zerodds::classic::Optional für @optional.
- --rust-map entries|btree-map
-
Nur generate --lang rust: wie eine IDL- map gehalten wird. entries (der Standard) ist die Sequenz von MapEntry-Strukturen, an die XTypes 1.3 §7.5.1.3.6 eine Map bindet; btree-map ist eine BTreeMap, die die Operationen einer Map hat und ihre Einträge in aufsteigender Schlüsselreihenfolge hält.
- --dialect NAME
-
Nur generate: die Antworten eines Gegenübers auf jede Wire-Achse auf einmal nachbilden, bevor eine der Achsen-Optionen unten eine davon überschreibt. Ein unbekannter Name listet die gültigen. Einer von specification (der Standard), cyclone, rti, fastdds, opendds, opensplice, ros-fastrtps, ros-cyclone, omniorb, tao, oder jacorb. Der Präambel-Kommentar nennt den Dialekt und jede angegebene Achsen-Option. Siehe docs/wire-axis-flags.md für das, was jeder Dialekt auf jeder Achse antwortet, und Config::dialect von zerodds-build für dieselbe Voreinstellung aus einer build.rs.
- --<axis> WERT
-
Nur generate: eine Antwort des Dialekts überschreiben (oder von specification ohne --dialect). Ein unbekannter Achsenwert listet die gültigen für diese Achse. In der angegebenen Reihenfolge angewendet, nach --dialect. Die Achsen, jeweils mit ihrer Option und ihren Werten:
- collection-delimiters
-
specification, enum-is-primitive, never
- default-extensibility
-
final, appendable, mutable
- defaulted-discriminator-member
-
type-default, stream-value
- enum-holder
-
declared, bit-bound-dropped
- enumerator-value
-
declared, ordinal
- fixed-digits
-
declared, value-precision
- key-holder
-
forced-final, as-declared
- key-holder-order
-
ascending-member-id, declaration
- length-codes
-
compact, reuse-nested-delimiter, short-where-it-fits, universal-nextint, sized-or-nextint
- map-delimiter
-
either-half, value-only
- map-entries
-
declaration, ascending-key
- map-length
-
sequence-equivalent, rule-15-omits
- pid-flags
-
sentinel-must-understand, bare, impl-extension-members
- pl-cdr1-headers
-
specification, always-extended, short-true-length
- short-pid-range
-
up-to-reserved, all-fourteen-bits
- union-framing
-
specification, branches-from-zero
- union-labels
-
sign-extended, negative-unmatched-below-32
- wchar-framing
-
fixed, giop-length-prefixed, giop-length-prefixed-member-only
- wchar-width
-
2, 4
- wstring-length
-
specification, character-count, character-count-terminated, specification-wide-units, ros-type-support, oder die drei Koordinaten counts/terminator/width (octets|characters / unterminated|terminated / 2|4) für eine Zelle, die keiner der fünf Namen trifft
- wstring-units
-
stream, big-endian-always, byte-order-mark, host-unswapped
- -h, --help
-
Dieser Text.
- -V, --version
-
Die Version.
EXIT-STATUS
- 0
-
Nichts zu melden.
- 1
-
Eine Diagnose wurde gemeldet, oder --check hat eine Datei zum Umformatieren gefunden.
- 2
-
Die Kommandozeile war falsch.
- 3
-
Eine Datei konnte nicht gelesen werden.
DATEIEN
generate schreibt eine Datei je Eingabe unter --out, benannt nach dem Stamm der Eingabe: <out>/<stem>.<ext> (zum Beispiel robot.rs, robot.hpp, robot.py); C# fügt <stem>.TypeSupport.cs hinzu. Java und Ada schreiben stattdessen feste Namen (ZdTypes.java, ZdCodec.java, ZdTypeSupports.java; zd_types.ads, zd_types.adb). Eine solche Sprache lehnt eine zweite Eingabe mit demselben --out im selben Lauf ab, statt die erste zu überschreiben; jeder IDL-Datei ihr eigenes --out geben oder sie per #include in eine Datei einbinden.
dlrl schreibt für C++/C#/TypeScript eine gebündelte Datei je Eingabe, benannt <out>/<stem>_dlrl.<ext>, und für Java eine Objektdatei und eine Home-Datei je DLRL-Typ, benannt <out>/<Type>.java und <out>/<Type>Home.java. Dieselbe Ablehnung einer zweiten Eingabe mit gleichem Namen gilt.
SIEHE AUCH
zerodds-xmlc(1).
AUTOREN
ZeroDDS Contributors.