File: node170.html

package info (click to toggle)
babel 0.10.2-1
  • links: PTS
  • area: contrib
  • in suites: sarge
  • size: 43,932 kB
  • ctags: 29,707
  • sloc: java: 74,695; ansic: 73,142; cpp: 40,649; sh: 18,411; f90: 10,062; fortran: 6,727; python: 6,406; makefile: 3,866; xml: 118; perl: 48
file content (181 lines) | stat: -rw-r--r-- 6,400 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
original version by:  Nikos Drakos, CBLU, University of Leeds
* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
* with significant contributions from:
  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>How to Implement SIDL Objects in Python</TITLE>
<META NAME="description" CONTENT="How to Implement SIDL Objects in Python">
<META NAME="keywords" CONTENT="users_guide">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">

<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">

<LINK REL="STYLESHEET" HREF="users_guide.css">

<LINK REL="previous" HREF="node169.html">
<LINK REL="up" HREF="node162.html">
<LINK REL="next" HREF="node171.html">
</HEAD>

<BODY >

<DIV CLASS="navigation"><!--Navigation Panel-->
<A NAME="tex2html3239"
  HREF="node171.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
<A NAME="tex2html3233"
  HREF="node162.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
<A NAME="tex2html3229"
  HREF="node169.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
<A NAME="tex2html3235"
  HREF="node14.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
<A NAME="tex2html3237"
  HREF="node317.html">
<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
<BR>
<B> Next:</B> <A NAME="tex2html3240"
  HREF="node171.html">SIDL Backend</A>
<B> Up:</B> <A NAME="tex2html3234"
  HREF="node162.html">Python Bindings</A>
<B> Previous:</B> <A NAME="tex2html3230"
  HREF="node169.html">Notes</A>
 &nbsp; <B>  <A NAME="tex2html3236"
  HREF="node14.html">Contents</A></B> 
 &nbsp; <B>  <A NAME="tex2html3238"
  HREF="node317.html">Index</A></B> 
<BR>
<BR></DIV>
<!--End of Navigation Panel-->

<H1><A NAME="SECTION03680000000000000000"></A>
<A NAME="10229"></A>
<BR>
How to Implement SIDL Objects in Python
</H1>

<P>
To build server side Python, you must have Python compiled as a shared
library or dynamically link library. The standard Python build only
builds the necessary shared library on a few platforms -- none of
which are target platforms for Babel. Some Linux distributions include
a Python shared library, and it is possible to make a Python shared
library on Solaris. The Python shared library should contain the
objects from libpythonx.y.a where x.y is your Python version.
Making a shared library is different on each platform, so it is not
covered here.

<P>
To implement an object in Python, first you must run Babel to create
the Python server side bindings <A NAME="tex2html43"
  HREF="footnode.html#foot10246"><SUP><SPAN CLASS="arabic">12</SPAN>.<SPAN CLASS="arabic">1</SPAN></SUP></A>.

<P>
<BLOCKQUOTE>
<TT> <TT>%</TT> <TT><B>babel -server=python file.sidl</B></TT>
<BR>
</TT></BLOCKQUOTE>or simply
<BLOCKQUOTE>
<TT> <TT>%</TT> <TT><B>babel -s=python file.sidl</B></TT>
<BR>
</TT></BLOCKQUOTE>
<P>
This creates the IOR, Python skeleton (pSkel), and Python launch
(pLaunch) files in your currect directory, and it will create tree of
subdirectories based on the package hierarchy found in file.sidl. The
IOR, pSkel and pLaunch files must be compiled and place in a shared
library (in most cases).

<P>
The tree of subdirectories created by Babel includes Python
implementation files whose name ends with <TT>_Impl.py</TT> and Python
extension modules for the Python client side binding
(<TT>_Module.h</TT> and <TT>_Module.c</TT>). The extension modules need
to be compiled as above in section <A HREF="node167.html#pythonextbuild">11.5</A>, and you need
to fill in the implementations in the <TT>_Impl.py</TT> files.

<P>
Babel generates the outline of the implementation. It creates a class
definition and empty methods for you to fill in the each
<TT>_Impl.py</TT> file. If you put your code between the comments as
indicated, your code will be preserved if you rerun Babel. Any changes
out side the comment blocks will be lost if you rerun Babel.  Here is
an example of a method implementation:

<P>
<BR>
<PRE  CLASS="verbatim">  def passeverywhere(self, d1, d3):
    #
    # SIDL EXPECTED INCOMING TYPES
    # ============================
    # double d1
    # double d3
    #

    #
    # SIDL EXPECTED RETURN VALUE(s)
    # =============================
    # (_return, d2, d3)
    # double _return
    # double d2
    # double d3
    #

    # DO-NOT-DELETE splicer.begin(passeverywhere)
    if (d1 == 3.14):
      retval = 3.14
    else:
      retval = 0
    return (retval, 3.14, -d3)
    # DO-NOT-DELETE splicer.end(passeverywhere)
</PRE></td></tr></table></blockquote>
<P>
Babel generated everything except the code that appears between the
<TT>splicer.begin</TT> and <TT>splicer.end</TT> comments.

<P>

<P>

<DIV CLASS="navigation"><HR>
<!--Navigation Panel-->
<A NAME="tex2html3239"
  HREF="node171.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
<A NAME="tex2html3233"
  HREF="node162.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
<A NAME="tex2html3229"
  HREF="node169.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
<A NAME="tex2html3235"
  HREF="node14.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
<A NAME="tex2html3237"
  HREF="node317.html">
<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
<BR>
<B> Next:</B> <A NAME="tex2html3240"
  HREF="node171.html">SIDL Backend</A>
<B> Up:</B> <A NAME="tex2html3234"
  HREF="node162.html">Python Bindings</A>
<B> Previous:</B> <A NAME="tex2html3230"
  HREF="node169.html">Notes</A>
 &nbsp; <B>  <A NAME="tex2html3236"
  HREF="node14.html">Contents</A></B> 
 &nbsp; <B>  <A NAME="tex2html3238"
  HREF="node317.html">Index</A></B> </DIV>
<!--End of Navigation Panel-->
<ADDRESS>
<br><br>babel-0.10.2<br>users_guide Last Modified 2005-03-23<br><br><a href="http://www.llnl.gov/CASC/components">http://www.llnl.gov/CASC/components</a><br><a href="mailto:components@llnl.gov">components@llnl.gov</a>
</ADDRESS>
</BODY>
</HTML>