IDL Compiler


MICO IDL

Compiler name : idl /usr/local/bin/idl, /usr/bin/idl.

Option: Example idl --c++-skel --poa --no-boa RTCPackage.idl
It is OK to use normally in C++.

 > idl -h
 unknown option: -h
 usage: idl [<options>] [<file>]
 possible <options> are:
    --help
    --version
    --config
    --feed-ir
    --feed-included-defs
    --do-not-feed-included-defs
    --no-exceptions
    --codegen-c++
    --no-codegen-c++
    --codegen-idl
    --no-codegen-idl
    --codegen-midl
    --no-codegen-midl
    --cpp < cpp >
    --c++-suffix <filename-suffix>
    --c++-impl
    --c++-skel
    --codegen-wsdl
    --no-codegen-wsdl
    --hh-suffix <filename-suffix>
    --relative-paths
    --emit-repoids
    --do-not-query-server-for-narrow
    --repo-id <repository-id>
    --name <filename-prefix>
    --wsdl-map <filename>
    --ifdef-prefix <prefix>
    --poa
    --no-poa
    --boa    --    (deprecated)
    --no-boa
    --no-poa-ties
    --no-poa-stubs
    --pseudo
    --any
    --typecode
    --windows-dll <dll-prefix>
    --windows-dll-with-export <dll-prefix>
    --mico-core
    --gen-included-defs
    --gen-full-dispatcher
    --missing-absorbance
    --not-missing-nscorba
    --support-id
    --dont-support-id
    --wsi-wsdl
    --no-wsi-wsdl
    --include-prefix <include-prefix>
Do not accept ^L | We do not accept ^ L of page break in IDL source. (I ought to go through omniidl as it is.)

TAO IDL

gperf problem
gperf needs to use gperf attached to TAO. In FreeBSD /usr/bin/gperf (included in the system?) And /usr/local/bin/gperf (TAO included).
By default it uses $ ACE_ROOT/bin/gperf, so you must set the environment variable ACE_ROOT or set the option - g :: <gperf_path>.

TAO_ROOT
If the environment variable TAO_ROOT is not set, IDL provided by TAO can not be read.
In addition, include TAO's ORB IDL (ex. /usr/local/include/tao/orb.idl)

 #include <orb.idl>
Otherwise, TypeCode etc. can not be used.
 #ifdef TAO_IDL
 #include <orb.idl>
 #endif
It is necessary to separate it from other IDL compiler as etc.

ORBit2 idl

Compiler name : orbit-idl-2
ORBit is supposed to code in C by default.

Help

 Usage: orbit-idl-2 [-D|-define STRING] [-I|-include STRING] [--libIDL-version]
        [-v|--version] [-l|--lang STRING] [-d|--debug INT] [--idlwarnlevel=INT]
        [--showcpperrors] [--nostubs] [--noskels] [--nocommon]
        [--noheaders] [--noidata] [-i|--imodule] [--add-imodule]
        [--skeleton-impl] [--backenddir=DIR] [--c-output-formatter=PROGRAM]
        [--onlytop] [--pidl] [--nodefskels] [--deps=FILENAME]
        [--headerguardprefix=STRING] [--output-dir=STRING] [-?|--help]
        [--usage] <IDL files>

Option
  • l or - When you specify cpp with --lang, C++ code is generated. However, since we are using C code, we also need to generate C code. orz ...

 orbit-idl-2 RTCPackage.idl
 orbit-idl-2 -lcpp RTCPackage.idl

In this way,

 RTCPackage-common.c
 RTCPackage.h
 RTCPackage-cpp-common.cc
 RTCPackage-cpp-common.h
 RTCPackage-cpp-skels.cc
 RTCPackage-cpp-skels.h
 RTCPackage-cpp-stubs.cc
 RTCPackage-cpp-stubs.h
 RTCPackage-cpp.cc
 RTCPackage-cpp.h
Is generated. Since xxx - cpp.cc internally includes all the sources, compile only this source if both skeletons and stubs are needed.

  • Problem of orbit-idl-2 If you put a sequence of Object reference in struct, skeleton compilation does not pass.
     struct ComponentProfile
     {
        PortProfileList inport_profile_list;
        PortProfileList outport_profile_list;
        ServiceProfileList service_profile_list;
        ServiceProfileList consumer_profile_list;
        RTC parent;
        RTCList children; // × The sequence of typedef Object ref is useless
        sequence<RTC> children; // × Typedef does not matter
        sequence<RTC,100> children; // × No bounded sequence
        sequence<short> children; // ○ If it is not Object ref OK
     };

Download

latest Releases : 2.0.0-RELESE

2.0.0-RELESE Download page

Number of Projects

Choreonoid

Motion editor/Dynamics simulator

OpenHRP3

Dynamics simulator

OpenRTP

Integrated Development Platform

AIST RTC collection

RT-Components collection by AIST

TORK

Tokyo Opensource Robotics Association

DAQ-Middleware

Middleware for DAQ (Data Aquisition) by KEK