2
idl Reference Page
[Previous]
[Next]
[Contents]
This chapter contains a revised idl(1rpc) reference page which includes information about the following value-added functions:
Name
idl - Invokes the Interface Definition Language (IDL) compiler
Synopsis
idl filename [argument] ...
Arguments
-client file_type
Determines which client files to generate. If you do not specify this
argument, the compiler generates all client files. The file types are as
follows:
none
Does not generate client files.
stub
Generates only a client stub file.
aux
Generates only a client auxiliary file. A client auxiliary file is generated
only if the interface contains any out-of-line or self-pointing types.
all
Generates client stub and client auxiliary files. This is the default and is the
same as not specifying the -client argument.
-server file_type
Determines which server files to generate. If you do not specify this
argument, the compiler generates all server files. The file types are as
follows:
none
Does not generate server files.
stub
Generates only a server stub file.
aux
Generates only a server auxiliary file. A server auxiliary file is generated
only if the interface contains any out-of-line, self-pointing, or pipe types.
all
Generates server stub and server auxiliary files. This is the default and is
the same as not specifying the -server argument.
-standard standard_type
Allows you to specify portable or extended features of the OSF DCE. This
option is useful when you perform builds. The standard_type argument
specifies what IDL features to enable. If you do not specify this argument,
the compiler generates warning messages for all features that are not
available in the previous version of OSF DCE.
You can specify one of the following values for the standard_type
argument:
portable
Allows only the language features available in OSF DCE Version 1.0.2.
dce_v10
Synonymous with the portable argument.
dec_v10
Allows all language features supported by the standard dce_v10
argument, plus a set of Digital extensions to its products based on OSF
DCE Version 1.0.
extended
Allows all language features supported in the current version of the
compiler. This is the default.
dce_v11
Synonymous with the extended argument.
The following example command line compiles the IDL interface test.idl
and enables extended features of the OSF DCE:
%% idl test.idl -standard extended
-cstub filename
Specifies a pathname for the client stub file. When you give a filename, do
not give a file extension; the idl compiler appends .c to the C source file
and .o to the object file. If you do not use the -cstub argument, the idl
compiler appends _cstub.c to the C source file and _cstub.o to the object
file. If the -lang cxx option is used, the source file has the .cxx extension.
-sstub filename
Specifies a pathname for the server stub file. When you give a filename, do
not give a file extension; the idl compiler appends .c to the C source file
and .o to the object file. If you do not use the -sstub argument, the idl
compiler appends _sstub.c to the C source file and _sstub.o to the object
file. If the -lang cxx option is used, the source file has the .cxx extension.
-caux filename
Specifies a pathname for the client auxiliary file. When you give a
filename, do not give a file extension; the idl compiler appends .c to the C
source file and .o to the object file. If you do not use the -caux argument,
the idl compiler appends _caux.c to the C source file and _caux.o to the
object file. If the -lang cxx option is used, the source file has the .cxx
extension.
-saux filename
Specifies a pathname for the server auxiliary file. When you give a
filename, do not give a file extension; the idl compiler appends .c to the C
source file and .o to the object file. If you do not use the -caux argument,
the idl compiler appends _saux.c to the C source file and _saux.o to the
object file. If the -lang cxx option is used, the source file has the .cxx
extension.
-header header_file
Allows you to specify a name for the generated header file. By default the
compiler takes the basename of the IDL file and appends the .h extension
to it.
-out directory
Places the output files in the directory you specify. By default the compiler
places the output files in the current working directory.
-Idirectory Specifies a directory name that contains imported interface
definition files. You can specify more than one directory by specifying
additional -Idirectory arguments on the command line. The compiler
searches the directories in the order you list them. If a file is present in
more than one directory, the compiler takes the first occurrence of the file.
The default behavior of the compiler is to first search the current directory,
then all directories you specify, then the system IDL directory. The
directory you specify is also passed to the C preprocessor and the C
compiler.
-no_def_idir
Specifies that the compiler search only the current directory for imported
files. When you use this with -Idirectory, the compiler searches only the
directories you list, not the current directory, and not the system IDL
directory.
-no_mepv
Causes the compiler to not generate a manager entry point vector (EPV) in
the server stub. Use this argument if the manager code and IDL file do not
use the same operation names. If you specify this argument you must
provide an EPV within the manager code that can be used when the
interface is registered with the RPC server runtime.
The name of the type that you construct an EPV with is
if_name_vmajor-version_minor-version_epv_t where if_name is the
interface name. It is not necessary to use this argument if the operation
names in the manager code and IDL file are the same. In this case, the
compiler generates a manager EPV in the server stub using the names of
the operations in the IDL file. (For information on registering the server,
see the intro(3rpc) and rpc_server_register_if(3rpc) reference pages.
See the OSF DCE Application Development Guide.)
-cepv
Generates local routines in the client stub file (filename_cstub.c) and
defines a Client Entry Point Vector (CEPV) of the name
if_name_vmajor-version_minor-version_c_epv where if_name is the
interface name. The CEPV contains the addresses of the local routines.
The client code must call the routines indirectly by using the addresses in
the CEPV; otherwise, the stub routines in the client stub file must have the
same names as the operations in the IDL file. (For information on
registering the server, see the intro(3rpc) and
rpc_server_register_if(3rpc) reference pages. See the OSF DCE
Application Development Guide.)
-cpp_cmd 'c_preprocessor_command_line'
Allows you to specify a C preprocessor other than the default. The
compiler invokes the C preprocessor found in that command line. The
output of the C preprocessor is an expanded version of the input file(s)
containing replacement text for any preprocessor directives (for example,
the #include preprocessor directive).
-cpp_opt 'command_options'
Specifies additional options to be passed to the C preprocessor. You can
add options to the command line used to invoke the C preprocessor
independent of the -cpp_cmd argument. The IDL compiler concatenates
the -cpp_cmd, -cpp_opt, -D, -U, -I arguments and the source filename
into a command used to invoke the C preprocessor. The compiler repeats
this process for each Attribute Configuration File (ACF) and IDL file.
-no_cpp
Does not invoke the C preprocessor. Note that the C preprocessor must be
run on files that contain preprocessor directives (such as #include) in the
interface definition.
-cc_cmd 'command_line'
Invokes the C compiler and compiler options you specify in the
'command_line' argument rather than the default C compiler and compiler
options. When used with the -lang cxx option, the -cc_cmd option
specifies the C++ compiler.
-cc_opt 'command_options'
Specifies additional options to be passed to the C compiler. You can add
options to the command line used to invoke the C compiler independent of
the -cc_cmd argument. The IDL compiler concatenates the -cc_cmd,
-cc_opt, -I arguments and the source filename into a command that
invokes the C compiler. This procedure is done for each generated stub or
auxiliary file. When used with the -lang cxx option, the -cc_opt option
specifies the C++ compiler options.
-Dname[=definition]
Defines a symbol name and an optional value to be passed to the C
preprocessor. You can use this method of defining a symbol instead of
using #define in the source code. You can use more than one -Dname
argument on the command line. This argument has no effect if you use the
-no_cpp argument.
-Uname
Removes (undefines) any initial definition of a symbol name as defined by
-Dname. You can use this method to remove a symbol name instead of
using #undef in the source code. You can use more than one -Uname
argument on the command line. This argument has no effect if you use the
-no_cpp argument. If you define and undefine a name on the same
command line, undefining takes precedence.
-space_opt
Generates code for the marshalling and unmarshalling of data that is
optimized for space, rather than speed.
-syntax_only
Checks only the syntax of the IDL file, but does not generate any output
files.
-keep file_types
Specifies which files to retain. To produce the object modules, the IDL
compiler first creates C source modules, then invokes the target C
compiler to produce object modules, and finally, deletes the C source
modules. If you do not use -keep, only the object modules are saved.
The file types are as follows:
none
Does not save the C source or the object modules. Does not invoke the C
compiler.
c_source
Saves only the C source modules. Does not invoke the C compiler.
object
Saves only the object modules.
all
Saves both the C source and the object modules.
-bug n, -no_bug n
Retains (-bug) or does not retain (-no_bug) a specified bug from earlier
IDL compiler versions. (This in an NCS compatibility argument and is not
supported in OSF DCE Version 1.1).
-stdin
Takes the standard output of a previous utility as the input to the idl
command. For example:
$$ cat my_filename.idl | idl -stdin
-version
Displays the current version of the IDL compiler.
-v
Prints informational messages (verbose mode) on the screen while the
compiler is running.
-no_warn
Suppresses compiler warning messages.
-confirm
Displays all the idl command arguments you chose, but does not compile
the source IDL file. If you use this with the -v argument, informational
messages about how the compiler behaves if you do not use -confirm are
displayed but no corresponding actions are performed.
-template_client filename
Requests that the IDL compiler generate a C source file containing a
template implementation of each routine that must appear in the client
application to use the specified IDL interface. If you do not specify an
extension for filename, the compiler assigns the file extension .c.
-template_manager filename
Requests that the IDL compiler generate a C source file containing a
template implementation of each routine and operation that must appear in
the manager module of the server side of an application to use the
specified IDL interface. If you do not specify an extension for filename,
the compiler assigns the file extension .c.
-trace value
Enables event logging.
You can specify one of the following values for the value argument:
all
Log all events.
none
Disable all previously specified trace options.
calls
Log events relating to start and end of all RPC calls.
context
Log events relating to context handle creation, deletion, and rundown.
errors
Log errors.
misc
Log all miscellaneous events.
log_manager
Enable command interface support which allows modification at runtime
of event logging options.
-lang {c, cxx, fortran}
Allows you to select a programming language.
If you are generating stubs and include files for application code written in
C++, you must specify cxx as the language of choice when you compile
the application's IDL file. When appropriate, you can extend the class
hierarchy and derive other classes from this one, to implement some or all
interface operations. The C++ compiler gives a warning if any functions in
the interface class have not been implemented. Avoid overwriting the
manager class header file by using the -no_cxxmgr argument in
conjunction with the -lang cxx argument.
If you are generating stubs and include files for application code written in
Fortran, you must specify Fortran as the language of choice when you
compile the application's IDL file.
If you do not specify -lang fortran or -lang cxx, the default value is the C
programming language or -lang c.
-no_cxxmgr
Prevents the compiler from overwriting the manager classheader file. Use this argument in conjunction with the -lang cxx argument if you implement application-specific C++ code in the manager class header file.
Description
The idl command invokes the IDL compiler to convert an interface definition, written in IDL, into output files. The output files include a header file, server stub file, client stub file, and auxiliary files. The compiler constructs the names of the output files by keeping the basename of the interface definition source file but replacing the filename extension with the new extension (or suffix and extension) appropriate to the newly generated type of output file. For example, math.idl could produce math_sstub.c or math_sstub.o for the server stub.
The idl command accepts the following input:
The IDL compiler searches through directories for any related ACF. For example, if you compile a file named source.idl, the compiler automatically searches for a file named source.acf. The compiler also searches for any imported IDL file (and its related ACF). The compiler searches for these files using the following order:
-
The current working directory. The compiler always searches this directory unless you specify the -no_def_idir and -Idirectory arguments together.
-
Any imported directory. The compiler searches each directory you are specifying in the -Idirectory argument.
-
The system IDL directory. The compiler automatically imports nbase.idl, which resides in the system IDL directory. The compiler always searches this directory unless you specify the -no_def_idir argument.
-
The directory specified in the source filename. If you explicitly specify a directory in the source IDL pathname, then that directory is searched for the corresponding ACF. For example,
$$ idl /path/pathname/my_source.idl
causes the IDL compiler to look for /path/pathname/my_source.acf if
my_source.acf is not found in the directories in 1,2 and 3.
Note that this directory is not searched for any imported IDL file or its
corresponding ACF.
Restrictions
The following filenames are reserved by the IDL compiler. Naming an IDL file with one of these names may result in unexpected behavior
.
Cautions
The IDL compiler generates ANSI C code. It also supports C compilers that are not fully ANSI compliant although a warning message may occur during compilation of the stubs by the C compiler. A C compiler that is not fully ANSI compliant may generate the following warning messages:
warning: & before array or function: ignored
warning: enumeration type clash, operator =
Files
Examples
-
Invoke the IDL compiler to compile the interface definition file test.idl and keep the generated C source modules. Only server files are generated. The server stub default filename is overridden by creating a file named test_ss.c for the server stub module.
$$ idl test.idl -keep c_source -client none -sstub test_ss.c
-
Invoke the IDL compiler to compile the interface definition file test.idl, but do not run the C preprocessor. The manager entry point vector is not defined in the generated server stub module. The IDL compiler searches the parent directory of the current directory for any IDL files that test.idl could import. The generated output files are located in the output subdirectory under the current directory.
$$ idl test.idl -no_cpp -no_mepv -I.. -out ./output
Related Information
Books: OSF DCE Application Development Guide.
[Previous]
[Next]
[Contents]
To make comments or ask for help, contact
support@entegrity.com.
Copyright © 2001 Entegrity Solutions Corporation & its subsidiaries.
Copyright © 1998-2001 Compaq Computer Corporation.
All rights reserved.