NAME

idl2pyext - IDL compiler to Python extension with C

SYNOPSIS

idl2pyext [options] spec.idl

OPTIONS

All options are forwarded to C preprocessor, except -h -i -J -v -x.

With the GNU C Compatible Compiler Processor, useful options are :

-D name
-D name=definition
-I directory
-I-
-nostdinc

Specific options :

-h

Display help.

-i directory

Specify a path for import (only for version 3.0).

-J directory

Specify a path for Python package.

-O

Enable old Python object model.

-v

Display version.

-x

Enable export (only for version 3.0).

DESCRIPTION

idl2pyext parses the given input file (IDL) and generates :

  • a set of Python sources : an optional _spec.py and pkg/__init__.py for each package (in a standard tree)

  • a C c_pkgmodule.c for each package

  • a include file hpy_spec.h

  • a include file spec.h

    (following the language C mapping rules)

  • a C skeleton spec.c (with automatic merge)

  • setup.py

idl2pyext is a Perl OO application what uses the visitor design pattern. The parser is generated by Parse::Yapp.

idl2pyext needs a cpp executable.

CORBA Specifications, including IDL (Interface Language Definition) C Language Mapping and Python Language Mapping are available on <http://www.omg.org/>.

INSTALLATION

After standard Perl installation, you must install the Python package PyIDL :

setup.py install

And copy the file corba.h in Python24/include.

TUTORIAL

EXAMPLE 1

Use ext1 as current directory.

The file Calc.idl describes the interface of a simple calculator.

Nota : the IDL interface Calc is in the global scope.

First, copy additional files in current directory

cp ../corba.h
cp ../corba.c
cp ../cpyhelper.c

Second, run :

idl2pyext.pl Calc.idl

Third, in Calc.c complete each methode between tag START_EDIT and STOP_EDIT :

// IDL : long Add(in long val1, in long val2);

CORBA_long
Calc_Add(
    Calc _o,
    CORBA_long val1, // in (fixed length)
    CORBA_long val2, // in (fixed length)
    CORBA_Environment * _ev
)
{
/* START_EDIT (Calc_Add) */
    return val1 + val2;
/* STOP_EDIT (Calc_Add) */
}

Fourth, build :

python setup.py build install

Finally, run Unit Test using the extension module :

python tu_Calc.py

EXAMPLE 2

Use ext2 as current directory.

The file CalcCplx.idl describes the interface of a complex calculator.

Nota : the IDL interface CalcCplx is in the IDL module Cplx.

Same steps as in previous example.

SEE ALSO

cpp, idl2html, idl2py, idl2pyemb

COPYRIGHT

(c) 2005 Francois PERRAD, France. All rights reserved.

This program and all CORBA::Perl modules are distributed under the terms of the Artistic Licence.

AUTHOR

Francois PERRAD, francois.perrad@gadz.org