The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

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