1 <!doctype html public
"-//w3c//dtd html 4.0 transitional//en">
4 <meta http-equiv=
"Content-Type" content=
"text/html; charset=iso-8859-1">
5 <meta name=
"GENERATOR" content=
"Mozilla/4.5 [en] (X11; I; SunOS 5.5.1 sun4u) [Netscape]">
6 <title>TAO IDL compiler User's Guide
</title>
11 <body text=
"#000000" bgcolor=
"#FFFFFF" link=
"#0000FF" vlink=
"#CC0000">
15 TAO IDL Compiler User's Guide
</h3>
17 <h3> Scope
</h3> This document describes the options and features of
18 TAO IDL compiler. It is not a reference manual or tutorial on OMG
19 IDL. For more information on OMG IDL see the
<A
20 HREF=
"http://www.omg.org/technology/documents/corba_spec_catalog.htm">
21 online CORBA specification
</A> and the
<A
22 HREF=
"http://www.triodia.com/staff/michi-henning.html">Advanced CORBA
23 Programming with C++
</A> book. More information on the design of
24 TAO's IDL compiler is also available
<A
25 HREF=
"http://www.dre.vanderbilt.edu/~schmidt/PDF/ami1.pdf">online
</A>.
26 Finally, comprehensive documentation on TAO's IDL compiler is
27 available in the OCI
<A HREF=
"http://www.theaceorb.com/product/index.html">TAO
28 Developer's Guide
</A>.
<P>
31 <h3>Optional CIAO Functionality
</h3>
33 For users of the
<b>Component Integrated ACE ORB
</b>
34 (
<a href=
"http://www.dre.vanderbilt.edu/~schmidt/CIAO.html"> CIAO
</a>), it is
35 important to note that, in keeping with recent developments in
36 the OMG's Lightweight CORBA Component Model
37 (
<a href=
"http://www.omg.org/technology/documents/formal/components.htm"> LwCCM
</a>) specification,
38 CIAO's
<i>Component Implementation Definition Language
</i> (CIDL) compiler,
39 along with the .cidl files it processed, have been eliminated, and replaced
40 by additional functionality in the TAO IDL compiler. All the additional files
41 generated and command line options used are described below.
44 <h3>Generated Files
</h3>
46 The IDL compiler generates up to
16 files from each
<tt>.idl
</tt> file. The
47 file names are obtained by taking the IDL
<EM>basename
</EM> and
48 appending the following suffixes (see the list of TAO's IDL compiler
49 <A HREF=
"#options">options
</A> on how to get different suffixes for
53 <LI> <B><EM>Client stubs
</EM></B>,
<EM>i.e.
</EM>,
<tt>*C.h
</tt>,
54 <tt>*C.inl
</tt>, and
<tt>*C.cpp
</tt>. Pure client applications
55 only need to
<code>#include
</code> and link with these files.
56 <LI> <B><EM>Server skeletons
</EM></B>,
<EM>i.e.
</EM>,
<tt>*S.h
</tt>, and
57 <tt>*S.cpp
</tt>. Servers need to
<code>#include
</code> and link
58 with these files. Generation of these files may be suppressed with the
<tt>-SS
</tt> option.
59 <LI> <B><EM>Server skeleton templates
</EM></B>,
<EM>i.e.
</EM>,
<tt>*S_T.h
</tt>,
<tt>S_T.inl
</tt>,
60 and
<tt>*S_T.cpp
</tt>. Some C++ compilers do not like template
61 and non-template code in the same files, so TAO's IDL compiler
62 generates these files separately. These files define tie classes,
63 used to enable servant inheritance trees, and are not generated by
65 <LI> <B><EM>Anyop files
</EM></B>,
<EM>i.e.
</EM>,
<tt>*A.h
</tt>,
66 and
<tt>*A.cpp
</tt>. Optionally generated files containing
67 typecode and Any insertion/extraction operator definitions.
68 This option enables the contents of these files to remain
70 <LI> <B><EM>CIAO servant files
</EM></B>,
<EM>i.e.
</EM>,
<tt>*_svnt.h
</tt>,
71 and
<tt>*_svnt.cpp
</tt>. Optionally generated files, containing component
72 and home servant implementations, as well as factory functions to create
74 <LI> <B><EM>Executor IDL file
</EM></B>,
<EM>i.e.
</EM>,
<tt>*E.idl
</tt>.
75 IDL file containing local interfaces used for component and home
76 executors, optionally generated.
77 <LI> <B><EM>Executor implementation files
</EM></B>,
<EM>i.e.
</EM>,
<tt>*_exec.h
</tt>,
78 and
<tt>*_exec.cpp
</tt>. Optionally generated files containing executor implementation classes
79 with empty function bodies for facet, supported and inherited operations,
80 as well as factory functions to create component and home executors.
81 <LI> <B><EM>Connector implementation files
</EM></B>,
<EM>i.e.
</EM>,
<tt>*_conn.h
</tt>,
82 and
<tt>*_conn.cpp
</tt>. Optionally generated files containing connector implementation classes
83 with complete function bodies. The function implementations are specialized
84 for DDS at present, but will be configurable to other connection mechanisms
86 <LI> <B><EM>Export header files
</EM></B>,
<EM>i.e.
</EM>,
<tt>*_export.h
</tt>.
87 Optionally generated files defining export/import macros as well as
88 corresponding macros related to singletons and tracing, all in terms of
89 existing ACE macros. Note that, while these files must have the
90 "_export.h" suffix, the base name of the file is usually not derived
91 from the IDL filename, as is the stem of the other file groups above.
92 There can be as many as
4 of these files per build, for stub, skeleton,
93 servant, and executor export macros, and they may also be generated by
94 the Perl script
<tt>generate_export_file.pl
</tt>, located in
95 <tt>$ACE_ROOT/bin
</tt>.
98 TAO's IDL compiler creates separate
<TT>*.inl
</TT> and
<TT>*S_T.*
</TT>
99 files to improve the performance of the generated code. For example,
100 the
<TT>*.inl
</TT> files enable you to compile with inlining enabled or
101 not, which is useful for trading-off compile-time and run-time
102 performance. Fortunately, you need to
<CODE>#include
</CODE> only the
103 client stubs declared in the
<tt>*C.h
</tt> file and the skeletons in
104 the
<tt>*S.h
</tt> file in your code. Inline files are not generated
105 for CIAO servant or executor implementation code.
<P>
108 <a name=
"idl_env"><h3>Environment Variables
</h3></a>
110 <TABLE BORDER=
2 CELLSPACING=
2 CELLPADDING=
0>
114 <TD>TAO_IDL_PREPROCESSOR
115 <TD>Used to override the program name of the preprocessor that TAO_IDL
118 <TD>TAO_IDL_PREPROCESSOR_ARGS
119 <TD>Used to override the flags passed to the preprocessor that TAO_IDL
120 uses. This can be used to alter the default options for the
121 preprocessor and specify things like include directories and how
122 the preprocessor is invoked. Two flags that will always be passed to
123 the preprocessor are
<CODE>-DIDL
</CODE> and
<CODE>-I.
</CODE>.
126 <TD>Used to determine where
<CODE>orb.idl
</CODE> is located.
129 <TD>Used to determine where
<CODE>orb.idl
</CODE> is located.
132 <TD>Used to determine where
<code>Components.idl
</code> is located.
</TD>
137 <P>Because TAO_IDL doesn't have any code to implement a preprocessor, it has
138 to use an external one. For convenience, it uses a built-in name for an external
139 preprocessor to call. During compilation, this is how that default is set:
</P>
142 <LI>If the macro TAO_IDL_PREPROCESSOR is defined, then it will use that.
143 <LI>Else if the macro ACE_CC_PREPROCESSOR is defined, then it will use that.
144 <LI>Otherwise, it will use
"cc"
147 <P>And the same behavior occurs for the TAO_IDL_PREPROCESSOR_ARGS and
148 ACE_CC_PREPROCESSOR_ARGS macros.
</P>
150 <P>Case
1 is used by the Makefile on most machines to specify the preprocessor.
151 Case
2 is used on Windows and platforms that need special arguments passed
152 to the preprocessor (MVS, etc.). And case
3 isn't used at all,
153 but is included as a default case.
</P>
155 <P>Since the default preprocessor may not always work when TAO_IDL is moved to
156 another machine or used in cross-compilation, it can be overridden at runtime
157 by setting the environment variables TAO_IDL_PREPROCESSOR and
158 TAO_IDL_PREPROCESSOR_ARGS.
</P>
160 <P>In previous versions, the environment variables CPP_LOCATION and
161 TAO_IDL_DEFAULT_CPP_FLAGS were used for this purpose. Both will still work,
162 but TAO_IDL will display a deprecation warning if it detects one of these.
163 It is possible that support for these old variables will be removed in a
164 future version of TAO.
</P>
166 <P>If ACE_ROOT or TAO_ROOT are defined, then TAO_IDL
167 will use them to include the $(ACE_ROOT)/TAO/tao or $(TAO_ROOT)/tao
168 directories. This is to allow TAO_IDL to automatically find
169 <orb.idl
> when it is included in an IDL file. TAO_IDL will
170 display a warning message when neither is defined.
</P>
173 <h3>Operation Demuxing Strategies
</h3>
175 The server skeleton can use different demuxing strategies to match the
176 incoming operation with the correct operation at the servant. TAO's
177 IDL compiler supports perfect hashing, binary search, and dynamic
178 hashing demuxing strategies. By default, TAO's IDL compiler tries to
179 generate perfect hash functions, which is generally the most
<A
180 HREF=
"http://www.dre.vanderbilt.edu/~schmidt/PDF/COOTS-99.pdf">efficient and
181 predictable operation demuxing technique
</A>. To generate perfect
182 hash functions, TAO's IDL compiler uses
<a
183 href=
"http://www.dre.vanderbilt.edu/~schmidt/PDF/gperf.pdf">gperf
</a>, which
184 is a general-purpose perfect hash function generator.
<P>
186 To configure TAO's IDL compiler to support perfect hashing please do
190 <LI>Enable
<CODE>ACE_HAS_GPERF
</CODE> when building ACE and TAO.
191 This macro has been defined for the platforms where
<CODE>gperf
</CODE>
192 has been tested, which includes most
<A
193 HREF=
"http://www.cs.wustl.edu/~schmidt/ACE-versions-i.html">platforms
</A>
194 that ACE runs on.
<P>
196 <li>Build the
<CODE>gperf
</CODE> in $ACE_ROOT/apps/gperf. This build
197 also leaves a copy/link of the ace_gperf program at the $ACE_ROOT/bin
200 <li>Set the environment variable $ACE_ROOT appropriately or add
201 $ACE_ROOT/bin to your search path.
<P>
203 <li>Use the
<CODE>-g
</CODE> option for the TAO IDL compiler or set
204 your search path accordingly to install
<CODE>ace_gperf
</CODE> in a
205 directory other than $ACE_ROOT/bin.
208 Note that if you can't use perfect hashing for some reason the next
209 best operation demuxing strategy is binary search, which can be
210 configured using TAO's IDL compiler
<A HREF=
"#options">options
</A>.
<P>
215 The TAO_IDL compiler generates AMI stubs and skeletons as
216 described in the CORBA
3.0.3 specification.
219 <h3><a name=
"collocation-stubs">Collocation Strategies
</a></h3>
221 TAO_IDL can generate collocated stubs using two different collocation
222 strategies. It also allows you to suppress/enable the generation of
223 the stubs of a particular strategy. To gain great flexibility at
224 run-time, you can generate stubs for both collocation strategies
225 (using both '
<a href=
"#Gp"><code>-Gp
</code></a>' and '
<a
226 href=
"#Gd"><code>-Gd
</code></a>' flags at the same time) and defer the
227 determination of collocation strategy until run-time. On the other
228 hand, if you want to minimize the footprint of your program, you might
229 want to pre-determine the collocation strategy you want and only
230 generate the right collocated stubs (or not generating any at all using
231 both '
<a href=
"#Sp"><code>-Sp
</code></a>' and '
<a
232 href=
"#Sd"><code>-Sd
</code></a>' flags at the same time if
233 it's a pure client.) See our
<a
234 href=
"http://www.dre.vanderbilt.edu/~schmidt/PDF/C++-report-col18.pdf">collocation
235 paper
</a> for a detail discussion on the collocation support in
240 <h3><A NAME=
"options">TAO's IDL Compiler Options
</A></h3>
242 TAO's IDL compiler invokes your
<tt>C
</tt> (or
<tt>C++
</tt>)
243 preprocessor to resolve included IDL files. It receives the common
244 options for preprocessors (such as
<tt>-D
</tt> or
<tt>-I
</tt>). It
245 also receives other options that are specific to it.
<p>
247 <table BORDER=
2 CELLSPACING=
2 CELLPADDING=
0>
254 <td><tt>-h
</br>--help
</br>-u
</tt></td>
256 <td>The compiler prints out the arguments it supports and exits
</td>
261 <td><tt>-V
</br>--version
</tt></td>
263 <td>The compiler printouts its version and exits
</td>
268 <td><tt>--idl-version VERSION
</tt></td>
270 <td>Set the IDL version to use
</td>
275 <td><tt>--default-idl-version
</tt></td>
277 <td>Prints the default IDL version for the compiler and exits
</td>
282 <td><tt>--list-idl-versions
</tt></td>
284 <td>Lists IDL versions the compiler supports and exits
</td>
289 <td><tt>-Wb,
</tt><i>option_list
</i></EM</TD></td>
291 <td>Pass options to the TAO IDL compiler backend.
</td>
295 <tr><a name=
"skel_export_macro">
298 <td><tt>skel_export_macro=
</tt><i>macro_name
</i></td>
300 <td>The compiler will emit
<i>macro_name
</i> right after each
<tt>class
</tt>
301 or
<tt>extern
</tt> keyword in the generated skeleton header (*S.h)
302 files. If CIAO servant code is being generated (see
<tt>-Gsv
</tt> option below),
303 and
<tt>svnt_export_macro
</tt> (see below) isn't set, this macro will also
304 appear in the generated CIAO servant (*_svnt.h) files, since skeleton and
305 CIAO servant files are often compiled together.
306 This macro is needed for Windows and newer versions of gcc, which require
307 special directives to export symbols from DLLs, otherwise the definition
308 is just a space.
</td>
311 <tr><a name=
"skel_export_include">
314 <td><tt>skel_export_include=
</tt><i>include_path
</i></td>
316 <td>The compiler will generate code to include
<i>include_path
</i> at the
317 top of the generated server header, this is usually a good
318 place to define the server side export macro.
</td>
321 <tr><a name=
"stub_export_macro">
324 <td><tt>stub_export_macro=
</tt><i>macro_name
</i></td>
326 <td>The compiler will emit
<i>macro_name
</i> right after each
<tt>class
</tt>
327 or
<tt>extern
</tt> keyword in the generated stub code, this is
328 needed for Windows and newer versions of gcc, which require special directives to
329 export symbols from DLLs, otherwise the definition is just a
333 <tr><a name=
"stub_export_include">
336 <td><tt>stub_export_include=
</tt><i>include_path
</i></td>
338 <td>The compiler will generate code to include
<i>include_path
</i> at the
339 top of the client header, this is usually a good place to define the export
343 <tr><a name=
"anyop_export_macro">
346 <td><tt>anyop_export_macro=
</tt><i>macro_name
</i></td>
348 <td>The compiler will emit
<i>macro_name
</i> before each Any operator
349 or
<tt>extern
</tt> typecode declaration in the generated stub code,
350 this is needed for Windows and newer versions of gcc, which require special directives to
351 export symbols from DLLs, otherwise the definition is just a
352 space on Unix platforms. This option works only in conjunction with
353 the -GA option, which generates Any operators and typecodes into a
354 separate set of files.
</td>
357 <tr><a name=
"anyop_export_include">
360 <td><tt>anyop_export_include=
</tt><i>include_path
</i></td>
362 <td>The compiler will generate code to include
<i>include_path
</i> at the
363 top of the anyop file header, this is usually a good place to define the export
364 macro. This option works in conjunction with the -GA option, which generates Any
365 operators and typecodes into a separate set of files.
</td>
368 <tr><a name=
"svnt_export_macro"></a>
371 <td><tt>svnt_export_macro=
</tt><i>macro_name
</i></td>
373 <td>The compiler will emit
<i>macro_name
</i> right after each
<tt>class
</tt>
374 or
<tt>extern
</tt> keyword in the generated CIAO servant code, if such
375 code is being generated (see
<tt>-Gsv
</tt> option below). Since skeleton
376 and servant files are often compiled together, the value of
377 <tt>skel_export_macro
</tt> will appear here, if it is set and
378 <tt>svnt_export_macro
</tt> is not. These macros
379 are needed for Windows and newer versions of gcc, which require special directives to
380 export symbols from DLLs - otherwise the definition is just a space.
</td>
383 <tr><a name=
"svnt_export_include"></a>
386 <td><tt>svnt_export_macro=
</tt><i>include_path
</i></td>
388 <td>The compiler will generate code to include
<i>include_path
</i> at the
389 top of the CIAO servant file header, if this file is being generated
390 (see
<tt>-Gsv
</tt> option below). This is usually a good place to define the export
394 <tr><a name=
"exec_export_macro"></a>
397 <td><tt>exec_export_macro=
</tt><i>macro_name
</i></td>
399 <td>The compiler will emit
<i>macro_name
</i> right after each
<tt>class
</tt>
400 or
<tt>extern
</tt> keyword in the generated CIAO executor implementation header
401 (*_exec.h) files, if such
402 code is being generated (see
<tt>-Gex
</tt> option below). These macros
403 are needed for Windows and newer versions of gcc, which require special directives to
404 export symbols from DLLs - otherwise the definition is just a space.
</td>
407 <tr><a name=
"exec_export_include"></a>
410 <td><tt>exec_export_include=
</tt><i>include_path
</i></td>
412 <td>The compiler will generate code to include
<i>include_path
</i> at the
413 top of the CIAO executor implementation header (*_exec.h) file, if this file is being generated
414 (see
<tt>-Gex
</tt> option below). This is usually a good place to define the export
418 <tr><a name=
"conn_export_macro"></a>
421 <td><tt>conn_export_macro=
</tt><i>macro_name
</i></td>
423 <td>The compiler will emit
<i>macro_name
</i> right after each
<tt>class
</tt>
424 or
<tt>extern
</tt> keyword in the generated CIAO connector implementation header
425 (*_conn.h) files, if such
426 code is being generated (see
<tt>-Gcn
</tt> option below). These macros
427 are needed for Windows and newer versions of gcc, which require special directives to
428 export symbols from DLLs - otherwise the definition is just a space.
</td>
431 <tr><a name=
"conn_export_include"></a>
434 <td><tt>conn_export_include=
</tt><i>include_path
</i></td>
436 <td>The compiler will generate code to include
<i>include_path
</i> at the
437 top of the CIAO connector implementation header (*_conn.h) file, if this file is being generated
438 (see
<tt>-Gcn
</tt> option below). This is usually a good place to define the export
442 <tr><a name=
"export_macro">
445 <td><tt>export_macro=
</tt><i>macro_name
</i></td>
447 <td>This option has the same effect as issuing
<br>
448 <tt>-Wb,skel_export_macro=
</tt><i>macro_name
</i><br>
449 <tt>-Wb,stub_export_macro=
</tt><i>macro_name
</i><br>
450 <tt>-Wb,anyop_export_macro=
</tt><i>macro_name
</i>.
<br>
451 <tt>-Wb,svnt_export_macro=
</tt><i>macro_name
</i><br>
452 <tt>-Wb,exec_export_macro=
</tt><i>macro_name
</i><br>
453 <tt>-Wb,conn_export_macro=
</tt><i>macro_name
</i><br>
454 This option is useful when building a single DLL
455 or when some code generation is suppressed or not triggered
456 (see option
<tt>-SS
</tt> below).
</td>
459 <tr><a name=
"export_include">
462 <td><tt>export_include=
</tt><i>include_path
</i></td>
464 <td>This option has the same effect as specifying
<br>
465 <tt>-Wb,stub_export_include=
</tt><i>include_path
</i><br>
466 <tt>-Wb,skel_export_include=
</tt><i>include_path
</i><br>
467 <tt>-Wb,anyop_export_include=
</tt><i>include_path
</i>.
<br>
468 <tt>-Wb,svnt_export_include=
</tt><i>include_path
</i><br>
469 <tt>-Wb,exec_export_include=
</tt><i>include_path
</i><br>
470 <tt>-Wb,conn_export_include=
</tt><i>include_path
</i><br>
471 This option goes with the previous option to build a DLL containing
472 all code generation, or when some code generation is suppressed
473 (see option
<tt>-SS
</tt> below).
</td>
476 <tr><a name=
"pch_include">
479 <td><tt>pch_include=
</tt><i>include_path
</i></td>
481 <td>The compiler will generate code to include
<i>include_path
</i> at the
482 top of all TAO IDL compiler generated files. This can be used with a
483 precompiled header mechanism, such as those provided by Borland
484 C++Builder or MSVC++.
</td>
487 <tr><a name=
"obv_opt_accessor">
490 <td><tt>obv_opt_accessor
</tt></td>
492 <td>The IDL compiler will generate code to optimize access to base class data
496 <tr><a name=
"pre_include">
499 <td><tt>pre_include=
</tt><i>include_path
</i></td>
501 <td>The compiler will generate code to include
<i>include_path
</i> at the
502 top of the each header file, before any other include statements. For
503 example, ace/pre.h, which pushes compiler options for the Borland C++
504 Builder and MSVC++ compilers, is included in this manner in all
505 IDL-generated files in the TAO libraries and CORBA services.
</td>
508 <tr><a name=
"post_include">
511 <td><tt>post_include=
</tt><i>include_path
</i></td>
513 <td>The compiler will generate code to include
<i>include_path
</i> at the
514 bottom of the each header file. For example, ace/post.h, which pops
515 compiler options for the Borland C++ Builder and MSVC++ compilers, is
516 included in this manner in all IDL-generated files in the TAO libraries
517 and CORBA services.
</td>
520 <tr><a name=
"include_guard">
523 <td><tt>include_guard=
</tt><i>define
</i></td>
525 <td>The compiler will generate code the define in the C.h file to prevent
526 users from including the generated C.h file. Useful for regenerating
527 the pidl files in the archive.
</td>
530 <tr><a name=
"safe_include">
533 <td><tt>safe_include=
</tt><i>file
</i></td>
535 <td>File that the user should include instead of this generated C.h file.
536 Useful for regenerating the pidl files in the archive.
</td>
539 <tr><a name=
"unique_include">
542 <td><tt>unique_include=
</tt><i>file
</i></td>
544 <td>File that the user should include instead of the normal includes in the C.h file.
545 Useful for regenerating the *_include pidl files in the archive.
</td>
548 <tr><a name=
"stripped_filename">
551 <td><tt>stripped_filename=
</tt><i>file
</i></td>
553 <td>File that should be generated as stripped_filename instead of taking
554 the stripped filename of the input file.
</td>
557 <tr><a name=
"ciao_container_type">
560 <td><tt>ciao_container_type=
</tt><i>file
</i></td>
562 <td>Type of container we are going to use, Session by default.
</td>.
568 <td>Invoke only the preprocessor
</td>
573 <td><tt>-Wp,
</tt><i>option_list
</i></EM</TD></td>
575 <td>Pass options to the preprocessor.
</td>
580 <td><tt>--syntax-only
</tt></td>
582 <td>Parse input files, but exit without generating any files.
</td>
587 <td><tt>--dump
</br> -d
</tt></td>
589 <td>Causes output of a dump of the AST and exits before any files would be
595 <td><tt>--dump-builtins
</tt></td>
597 <td>Implies --dump, but also dumps IDL defined by the compiler.
</td>
602 <td><tt>--just-dump-builtins
</tt></td>
604 <td>Dumps IDL defined by the compiler but ignores any files passed and
610 <td><tt>-D
</tt><i>macro_definition
</i></td>
612 <td>It is passed to the preprocessor
</td>
617 <td><tt>-U
</tt><i>macro_name
</i></td>
619 <td>It is passed to the preprocessor
</td>
624 <td><tt>-I
</tt><i>include_path
</i></td>
626 <td>It is passed to the preprocessor
</td>
631 <td><tt>-A
</tt><i>assertion
</i></td>
633 <td>It is passed to the preprocessor
</td>
638 <td><tt>-Yp,
<i>path
</i></tt></td>
640 <td>Specifies the path for the C preprocessor
</td>
644 <tr><a name=
"H perfect_hash">
645 <td><tt>-H perfect_hash
</tt></td>
647 <td>To specify the IDL compiler to generate skeleton code that uses perfect
648 hashed operation demuxing strategy, which is the default strategy. Perfect
649 hashing uses
<a href=
"http://www.dre.vanderbilt.edu/~schmidt/PDF/gperf.pdf">gperf
651 to generate demuxing methods.
</td>
655 <tr><a name=
"H dynamic_hash">
656 <td><tt>-H dynamic_hash
</tt></td>
658 <td>To specify the IDL compiler to generate skeleton code that uses dynamic
659 hashed operation demuxing strategy.
</td>
663 <tr><a name=
"H binary_search">
664 <td><tt>-H binary_search
</tt></td>
666 <td>To specify the IDL compiler to generate skeleton code that uses binary
667 search based operation demuxing strategy.
</td>
671 <tr><a name=
"H linear_search">
672 <td><tt>-H linear_search
</tt></td>
674 <td>To specify the IDL compiler to generate skeleton code that uses linear
675 search based operation demuxing strategy. Note that this option is for testing purposes only and should not be used for production code since it's inefficient.
</td>
681 <TD><TT>-in
</TT></TD>
682 <TD> To generate #include statements with
<>'s for the standard
683 include files (e.g. tao/corba.h) indicating them as non-changing
690 <TD><TT>-ic
</TT></TD>
691 <TD> To generate #include statements with
""s for changing
692 standard include files (e.g. tao/corba.h).
</TD>
697 <td><tt>-g
</tt><i>path
</i></td>
699 <td>To specify the path for the perfect hashing program (GPERF). Default
700 is $ACE_ROOT/bin/ace_gperf.
</td>
705 <TD><TT>-iC
</TT><i>path
</i></TD>
706 <TD> Generate #included stubs in *A.h prefixed with this path.
</TD>
707 <td>Default is local filename only (no prefix).
</td>
711 <td><tt>-o
</tt><i>path
</i></td>
713 <td>To specify the output directory to IDL compiler as to where all the
714 IDL-compiler-generated files are to be put. By default, all the files are
715 put in the current directory from where
<tao_idl>is called.
</td>
716 <td>If the specified directory does not exist, it will be created, if any path
717 that may precede the directory name already exists. If the directory
718 itself already exists, no action is taken.
</td>
722 <td><tt>-oS
</tt><i>path
</i></td>
724 <td>Same as -o option but applies only to generated *S.* files
</td>
725 <td>Default is value of -o option or current directory
</td>
729 <td><tt>-oA
</tt><i>path
</i></td>
731 <td>Same as -o option but applies only to generated *A.* files
</td>
732 <td>Default is value of -o option or current directory
</td>
736 <td><tt>-oE
</tt><i>path
</i></td>
738 <td>Same as -o option but applies only to generated *_exec.* files
</td>
739 <td>Default is value of -o option or current directory
</td>
743 <td><tt>-oN
</tt><i>path
</i></td>
745 <td>Do not overwrite *_exec.* files
</td>
746 <td>When -Gex option is used, executor implementation files shouldn't be overwritten
747 if they are already in the output directory.
</td>
751 <td><tt>-hc
</tt></td>
753 <td>Client's header file name ending. Default is
"C.h".
</td>
758 <td><tt>-hs
</tt></td>
760 <td>Server's header file name ending. Default is
"S.h".
</td>
765 <td><tt>-hT
</tt></td>
767 <td>Server's template header file name ending. Default is
"S_T.h".
</td>
772 <td><tt>-cs
</tt></td>
774 <td>Client stub's file name ending. Default is
"C.cpp".
</td>
779 <td><tt>-ci
</tt></td>
781 <td>Client inline file name ending. Default is
"C.inl".
</td>
786 <td><tt>-ss
</tt></td>
788 <td>Server skeleton file name ending. Default is
"S.cpp".
</td>
793 <td><tt>-sT
</tt></td>
795 <td>Server template skeleton file name ending. Default is
"S_T.cpp".
</td>
802 <td>Temporary directory to be used by the IDL compiler.
804 <td>Unix: use environment variable TEMPDIR if defined, else use /tmp/.
806 use environment variable TMP or TEMP if defined, else use the
812 <td><tt>-Cw
</tt></td>
814 <td>Output a warning if two identifiers in the same scope differ in
815 spelling only by case (default is output of error message).
</td>
817 <td>This option has been added as a nicety for dealing with legacy
818 IDL files, written when the CORBA rules for name resolution
819 were not as stringent.
</td>
823 <td><tt>-Ce
</tt></td>
825 <td>Output an error if two identifiers in the same scope differ in
826 spelling only by case (default).
</td>
832 <td><tt>-ae
</tt></td>
834 <td>Output an error if an anonymous type is seen. Anonymous types are
835 deprecated by the OMG spec (default is no output).
</td>
837 <td>This behavior can be selected globally by defining IDL_ANON_ERROR in
838 config.h. It may then be overridden locally by
839 <tt>-aw
</tt> or
<tt>-as
</tt></td>
843 <td><tt>-aw
</tt></td>
845 <td>Output a warning if an anonymous type is seen. Anonymous types are
846 deprecated by the OMG spec (default is no output).
</td>
848 <td>This behavior can be selected globally by defining IDL_ANON_WARNING in
849 config.h. It may then be overridden locally by
850 <tt>-ae
</tt> or
<tt>-as
</tt></td>
854 <td><tt>-as
</tt></td>
856 <td>Silence any diagnostic output for anonymous types (default).
</td>
858 <td>This behavior can be selected globally by defining IDL_ANON_SILENT in
859 config.h. It may then be overridden locally by
860 <tt>-aw
</tt> or
<tt>-ae
</tt></td>
863 <tr><a name=
"GC flag">
864 <td><tt>-GC
</tt></td>
866 <td>Generate AMI stubs (
"sendc_" methods, reply handler stubs, etc)
</td>
870 <tr><a name=
"GH flag">
871 <td><tt>-GH
</tt></td>
873 <td>Generate AMH stubs, skeletons, exception holders, etc.
</td>
877 <tr><a name=
"GM flag">
878 <td><tt>-GM
</tt></td>
880 <td>Generate AMI4CCM code
</td>
881 <td>*A.idl file (containing callback interface,
"sendc_" methods
882 and CCM connector) plus addition to CCM servant and executor
</td>
886 <td><tt>-Gp
</tt></td>
888 <td>Generated collocated stubs that use
<code>Thru_POA
</code> collocation strategy (default)
</td>
893 <td><tt>-Gd
</tt></td>
895 <td>Generated collocated stubs that use
<code>Direct
</code> collocation strategy
</td>
900 <td><tt>-Gce
</tt></td>
902 <td>Generated code for CORBA/e. This reduces the size of the generated code
</td>
907 <td><tt>-Gmc
</tt></td>
909 <td>Generated code for Minimum CORBA. This reduces the size of the generated code
</td>
914 <td><tt>-Gcl
</tt></td>
916 <td>Generated code for LwCCM. This reduces the size of the generated code
</td>
921 <td><tt>-Gsp
</tt></td>
923 <td>Generate client smart proxies
</td>
928 <td><tt>-Gt
</tt></td>
930 <td>Generate optimized TypeCodes
</td>
935 <td><tt>-GX
</tt></td>
937 <td>Generate empty A.h file
</td>
938 <td>Used by TAO developers for generating an empty A.h file when the
939 -GA option can't be used. Overrides -Sa and -St.
944 <td><tt>-Guc
</tt></td>
946 <td>Generate uninlined constant if defined in a module
</td>
947 <td>Inlined (assigned a value in the C++ header file) by default, but this causes a
948 problem with some compilers when using pre-compiled headers. Constants declared
949 at global scope are always generated inline, while those declared in an interface
950 or a valuetype never are - neither case is affected by this option.
</td>
954 <td><tt>-Gsd
</tt></td>
956 <td>Generate static description operations
</td>
957 <td>Generate static description operations to retrieve the repository id
958 or interface name as string. Can be useful for template programming
</td>
962 <td><tt>-Gse
</tt></td>
964 <td>Generate explicit export of sequence's template base class
</td>
965 <td>Occasionally needed as a workaround for a bug in Visual Studio
966 (.NET
2002, .NET
2003 and Express
2005) where the template
967 instantiation used for the base class isn't automatically exported
</td>
971 <td><tt>-GI
</tt></td>
973 <td>Generate boiler-plate files that contain empty servant implementations
</td>
978 <td><tt>-GIh
</tt><i>arg
</i></td>
980 <td>Servant implementation header file name ending
</td>
985 <td><tt>-GIs
</tt><i>arg
</i></td>
987 <td>Servant implementation skeleton file name ending
</td>
992 <td><tt>-GIb
</tt><i>arg
</i></td>
994 <td>Prefix to the implementation class names
</td>
999 <td><tt>-GIe
</tt><i>arg
</i></td>
1001 <td>Suffix to the implementation class names
</td>
1006 <td><tt>-GIc
</tt></td>
1008 <td>Generate copy constructors in the servant implementation template files
</td>
1013 <td><tt>-GIa
</tt></td>
1015 <td>Generate assignment operators in the servant implementation template files
</td>
1020 <td><tt>-GId
</tt></td>
1022 <td>Generate IDL compiler source file/line# debug info in implementation files
</td>
1027 <td><tt>-GT
</tt></td>
1029 <td>Enable generation of the TIE classes, and the *S_T.* files that
1035 <td><tt>-GA
</tt></td>
1037 <td>Generate type codes and Any operators in *A.h and *A.cpp
</td>
1038 <td>Decouples client and server decisions to compile and link
1039 TypeCode- and Any-related code, which is generated in
1040 *C.h and *C.cpp by default. If -Sa or -St also appear, then
1041 an empty *A.h file is generated.
</td>
1045 <td><tt>-Gos
</tt></td>
1047 <td>Generate std::ostream insertion operators for IDL declarations
</td>
1048 <td>ORB IDL declarations (including the basic type sequences) don't
1049 have these operators generated by default, to avoid the increased
1050 footprint. To turn on this generation for ORB IDL files, set
1051 <tt>gen_ostream=
1</tt> in your
<i>default.features
</i> MPC file.
1052 If this option is used on application IDL that references any of
1053 the predefined basic sequence IDL types, TAO must be compiled
1054 with the
<tt>gen_ostream
</tt> feature turned on.
</td>
1058 <td><tt>-Gata
</tt></td>
1060 <td>Generate the AnyTypeCode_Adapter version of the Any insert policy
</td>
1061 <td>When generating arg traits instantiations, this option forces
1062 (if Any support in general is not suppressed) the generation
1063 of
<code>Any_Insert_Policy_AnyTypeCode_Adapter
</code> for the
1064 last template parameter. This option is used when generating
1065 arg traits for the sequences of basic types in the ORB, so
1066 their arg traits may be included in files generated from
1067 application IDL whether Any support is suppressed in the
1068 application IDL processing or not.
</td>
1072 <td><tt>-Gsv
</tt></td>
1074 <td>Generate CIAO servant code for component and home IDL declarations
</td>
1078 <td><tt>-Gex
</tt></td>
1080 <td>Generate CIAO executor implementation code for component and home IDL declarations
</td>
1082 These files have empty function bodies for all facet, supported and inherited operations,
1083 to be filled in by the developer.
</td>
1087 <td><tt>-Gexr
</tt></td>
1089 <td>Generate CIAO executor implementation code for component and home IDL declarations, including
1090 an implementation of the ACE_Reactor
</td>
1091 <td>When applying
<tt>-Gexr
</tt>, the TAO IDL compiler will generate an extra method which
1092 retrieves the ACE_Reactor from the ORB. One should use this option when an ACE_reactor.
1093 In code, use 'this-
>reactor ()' to get the ACE_Reactor. A CORBA::INTERNAL
1094 exception is thrown when the ACE_Reactor cannot be retrieved.
<br/>
1095 The goal of this method is to prevent memory leaks.
</td>
1099 <td><tt>-Gcn
</tt></td>
1101 <td>Generate CIAO connector implementation code for connector IDL declarations
</td>
1102 <td>Generate a complete implementation for each connector. Specialized at present
1103 for DDS connectors.
</td>
1107 <td><tt>-Gts
</tt></td>
1109 <td>Generate DDS type support IDL in a separate IDL file
</td>
1110 <td>Not used with OpenDDS, since OpenDDS's IDL processor does this already.
</td>
1114 <td><tt>-Glem
</tt></td>
1116 <td>Generate CIAO executor IDL for component and home IDL declarations
</td>
1120 <td><tt>-Gsw
</tt></td>
1122 <td>Generate CIAO servant code to support component swapping
</td>
1123 <td>Modify the generated servant code and container file includes
1124 to support on-the-fly swapping of components.
</td>
1127 <tr><a name=
"Gxhst">
1128 <td><tt>-Gxhst
</tt></td>
1130 <td>Generate the stub export header file
</td>
1131 <td>This is the file specified in
<tt>-Wb,stub_export_include=
<i>include_path
</i></tt></td>
1134 <tr><a name=
"Gxhsk">
1135 <td><tt>-Gxhsk
</tt></td>
1137 <td>Generate the skeleton export header file
</td>
1138 <td>This is the file specified in
<tt>-Wb,skel_export_include=
<i>include_path
</i></tt></td>
1141 <tr><a name=
"Gxhsv">
1142 <td><tt>-Gxhsv
</tt></td>
1144 <td>Generate the CIAO servant export header file
</td>
1145 <td>This is the file specified in
<tt>-Wb,svnt_export_include=
<i>include_path
</i></tt></td>
1148 <tr><a name=
"Gxhex">
1149 <td><tt>-Gxhex
</tt></td>
1151 <td>Generate the executor export header file
</td>
1152 <td>This is the file specified in
<tt>-Wb,exec_export_include=
<i>include_path
</i></tt></td>
1155 <tr><a name=
"Gxhcn">
1156 <td><tt>-Gxhcn
</tt></td>
1158 <td>Generate the connector export header file
</td>
1159 <td>This is the file specified in
<tt>-Wb,conn_export_include=
<i>include_path
</i></tt></td>
1163 <td><tt>-Sa
</tt></td>
1165 <td>Suppress generation of the Any operators
</td>
1170 <td><tt>-Sal
</tt></td>
1172 <td>Suppress generation of the Any operators for local interfaces only
</td>
1177 <td><tt>-Sat
</tt></td>
1179 <td>Suppress generation of arg traits instantiations
</td>
1184 <td><tt>-Sp
</tt></td>
1186 <td>Suppress generation of collocated stubs that use
<code>Thru_POA
</code> collocation strategy
</td>
1191 <td><tt>-Sd
</tt></td>
1193 <td>Suppress generation of collocated stubs that use
<code>Direct
</code> collocation strategy (default)
</td>
1198 <td><tt>-St
</tt></td>
1200 <td>Suppress generation of typecodes
</td>
1202 <td>Also suppresses the generation of the Any operators, since they need the
1203 associated typecode.
</td>
1207 <td><tt>-Sm
</tt></td>
1209 <td>Suppress C++ code generation from CCM 'implied' IDL.
</td>
1210 <td>This code generation is achieved by default using a 'preprocessing' visitor
1211 that modified the AST and is launched just before the code generating
1212 visitors. There is a new tool in CIAO that converts the entire IDL file
1213 into one containing explicit declarations of the implied IDL types.
1214 For such a file, we don't want the preprocessing visitor to be launched,
1215 so this command line option will suppress it.
</td>
1219 <td><tt>-SS
</tt></td>
1221 <td>Suppress generation of the skeleton implementation and inline file.
</td>
1222 <td>This option doesn't check whether something is generated in the files. It
1223 just suppresses them without looking at any possible contents;
</td>
1227 <td><tt>-Sci
</tt></td>
1229 <td>Suppress generation of the client inline file.
</td>
1230 <td>This option doesn't check whether something is generated in the file. It
1231 just suppresses it without looking at any possible contents;
</td>
1235 <td><tt>-Scc
</tt></td>
1237 <td>Suppress generation of the client stub file.
</td>
1238 <td>This option doesn't check whether something is generated in the file. It
1239 just suppresses it without looking at any possible contents;
</td>
1243 <td><tt>-Sch
</tt></td>
1245 <td>Suppress generation of the client header file.
</td>
1246 <td>This option doesn't check whether something is generated in the file. It
1247 just suppresses it without looking at any possible contents;
</td>
1251 <td><tt>-Ssi
</tt></td>
1253 <td>Suppress generation of the servant inline file.
</td>
1254 <td>This option doesn't check whether something is generated in the file. It
1255 just suppresses it without looking at any possible contents;
</td>
1259 <td><tt>-SS
</tt></td>
1261 <td>Suppress generation of the servant skeleton file.
</td>
1262 <td>This option doesn't check whether something is generated in the file. It
1263 just suppresses it without looking at any possible contents;
</td>
1267 <td><tt>-Ssh
</tt></td>
1269 <td>Suppress generation of the servant header file.
</td>
1270 <td>This option doesn't check whether something is generated in the file. It
1271 just suppresses it without looking at any possible contents;
</td>
1274 <tr><a name=
"Ssvntc">
1275 <td><tt>-Ssvntc
</tt></td>
1277 <td>Suppress generation of the servant implementation file (_svnt.cpp).
</td>
1278 <td>This option doesn't check whether something is generated in the files. It
1279 just suppresses them without looking at any possible contents;
</td>
1282 <tr><a name=
"Ssvntt">
1283 <td><tt>-Ssvntt
</tt></td>
1285 <td>Suppress generation of the servant templated files (_svnt_T.{h,cpp}).
</td>
1286 <td>This option doesn't check whether something is generated in the files. It
1287 just suppresses them without looking at any possible contents;
</td>
1291 <td><tt>-Sorb
</tt></td>
1293 <td>Suppress generation of the ORB.h include.
</td>
1294 <td>This option is useful when regenerating pidl files in the core
1295 TAO libs to prevent cyclic includes;
</td>
1299 <td><tt>-Se
</tt></td>
1301 <td>Disable custom header file name endings for files
1302 that are found in TAO specific include directories
1303 (i.e. $TAO_ROOT, $TAO_ROOT/tao, $TAO_ROOT/orbsvcs,
1304 $TAO_ROOT/CIAO, $TAO_ROOT/CIAO/ciao, $TAO_ROOT/CIAO/ccm).
</td>
1305 <td>This option is useful when used together with -hs or -hc. I.e. when user
1306 needs custom file name endings for his/her own files but still wants to
1307 use TAO specific files with their original endings;
</td>
1311 <td><tt>-Sg
</tt></td>
1313 <td>Disable generation of unique preprocessor guards for generated
1314 header files. The guards will still be generated, but without
1315 the unique random extension.
</td>
1316 <td>This option is useful when a system has several versions of a
1317 generated header file, and only the newest version is to be
1318 included by the preprocessor. The default behavior will
1319 generate a unique extension for each version, subverting
1320 the desired function of the preprocessor in such a system.
</td>
1324 <td><tt>-Sfr
</tt></td>
1326 <td>Disable CIAO servant code generation to register valuetype
1327 factories for events.
</td>
1328 <td>By default, the generated CIAO servant constructor will register
1329 a valuetype factory with the container ORB for each eventtype
1330 used in an event source or sink port. However, if an eventtype
1331 has a factory function or other operation, the generated
1332 valuetype factory class will be abstract and must be overridden
1333 by the user, and registered in hand-written code.
</td>
1336 <td><tt>-TS
<i>value
</i></tt></td>
1338 <td>Set tab size for generated files
</td>
1339 <td>Default is
2 spaces
</td>
1343 <td><tt>--unknown-annotations ARG
</tt></td>
1346 Controls the reaction when encountering undefined annotations. The valid
1347 arguments to this option are
"warn-once" (Default),
"warn-all",
"error",
1351 The difference between
"warn-once" and
"warn-all" is that with
1352 "warn-once" using annotations the same local name will not be warned
1353 about more than once, while
"warn-all" will warn with every usage.
1360 Back to the TAO
<A HREF=
"index.html">documentation
</A>.
1362 <!--#include virtual="/~schmidt/cgi-sig.html" -->