NAME

idl2pyemb - IDL compiler to Python embedded with C

SYNOPSIS

idl2pyemb [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

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

  • a set of Python sources : an optional _spec.py and pkg/__init__.py for each package

  • a include file spec.h

    (following the language C mapping rules)

  • a C spec.c

  • setup.py

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

idl2pyemb 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 emb1 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/corba.h
cp ../corba/corba.c
cp ../corba/cpyhelper.c

Second, run :

idl2pyemb Calc.idl

Third, create your implementation MyCalc.py which inherits of _Calc.py

from _Calc import *

class MyCalc(Calc):
    def Add(self, val1, val2):
        ...

Fourth, register it in the C main tu_calc.c :

Py_Initialize();
PyRun_SimpleString(
    "import PyIDL\n"
    "import MyCalc\n"
    "PyIDL.Register('IDL:Calc:1.0', MyCalc.MyCalc)\n"
);
...
Py_Finalize();

Fifth, build :

gcc -I/Python24/include *.c /Python24/libs/libpython24.a -o tu_Calc

Sixth, Python install :

python setup.py install

Finally, run the test using the embedded module :

tu_Calc

EXAMPLE 2

Use emb2 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, idl2pyext

COPYRIGHT

(c) 2005-2007 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