File: node115.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 (160 lines) | stat: -rw-r--r-- 5,776 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
<!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>Calling SIDL methods from C</TITLE>
<META NAME="description" CONTENT="Calling SIDL methods from C">
<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="next" HREF="node116.html">
<LINK REL="previous" HREF="node114.html">
<LINK REL="up" HREF="node110.html">
<LINK REL="next" HREF="node116.html">
</HEAD>

<BODY >

<DIV CLASS="navigation"><!--Navigation Panel-->
<A NAME="tex2html2435"
  HREF="node116.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
<A NAME="tex2html2429"
  HREF="node110.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
<A NAME="tex2html2423"
  HREF="node114.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
<A NAME="tex2html2431"
  HREF="node14.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
<A NAME="tex2html2433"
  HREF="node317.html">
<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
<BR>
<B> Next:</B> <A NAME="tex2html2436"
  HREF="node116.html">Catching and Throwing Exceptions</A>
<B> Up:</B> <A NAME="tex2html2430"
  HREF="node110.html">C Bindings</A>
<B> Previous:</B> <A NAME="tex2html2424"
  HREF="node114.html">Mapping for classes, interfaces,</A>
 &nbsp; <B>  <A NAME="tex2html2432"
  HREF="node14.html">Contents</A></B> 
 &nbsp; <B>  <A NAME="tex2html2434"
  HREF="node317.html">Index</A></B> 
<BR>
<BR></DIV>
<!--End of Navigation Panel-->

<H1><A NAME="SECTION03150000000000000000"></A>
<A NAME="5698"></A>
<BR>
Calling SIDL methods from C
</H1>
The names of the C functions used to call SIDL methods are a
concatenation of the package name, the class or interface name and the
method name(s) with the period characters changed to underscores . If the
method is specified as being overloaded (i.e., has a name extension) , the
full method name is the concatenation of the package name, the class
or interface name, the
method name, <SPAN  CLASS="textit">and</SPAN> the type extension. For
non-static methods, the object or interface pointer is passed as the
first parameter before any of the formal parameters. This parameter
operates like an <TT>in</TT> parameter.

<P>
Examples of calls to SIDL overloaded methods are based on the 
<TT>overload_sample.sidl</TT> file shown in Section&nbsp;<A HREF="node107.html#sec:overloading">5.6</A>.  
Recall that the file describes three versions of the <TT>getValue</TT> method.  
The first takes no arguments, the second takes an integer argument, and the 
third takes a boolean.  Each is called in the code snippet below:

<P>
<BR>
<PRE  CLASS="verbatim">
  int b1, i1, iresult, nresult;

  Overload_Sample t  = Overload_Sample__create ();

  nresult = Overload_Sample_getValue(t);
  iresult = Overload_Sample_getValueInt(t, i1);
  bresult = Overload_Sample_getValueBool(t, b1);
</PRE></td></tr></table></blockquote>
<P>
Here are the C bindings for the critical <TT>addRef</TT> and
<TT>deleteRef</TT> methods from <TT>sidl.BaseInterface</TT>. These methods
are mentioned in particular because C clients must manage
object reference counts themselves.

<P>
<BR>
<PRE  CLASS="verbatim">void
sidl_BaseInterface_addRef(
  sidl_BaseInterface self);

void
sidl_BaseInterface_deleteRef(
  sidl_BaseInterface self);
</PRE></td></tr></table></blockquote>
<P>
These same methods can be called from the <TT>sidl.BaseClass</TT>
bindings. In fact, every C binding for an interface or class will have
entries for <TT>addRef</TT> and <TT>deleteRef</TT>.

<P>
<BR>
<PRE  CLASS="verbatim">void
sidl_BaseClass_addRef(
  sidl_BaseClass self);

void
sidl_BaseClass_deleteRef(
  sidl_BaseClass self);
</PRE></td></tr></table></blockquote>
<P>

<DIV CLASS="navigation"><HR>
<!--Navigation Panel-->
<A NAME="tex2html2435"
  HREF="node116.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
<A NAME="tex2html2429"
  HREF="node110.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
<A NAME="tex2html2423"
  HREF="node114.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
<A NAME="tex2html2431"
  HREF="node14.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
<A NAME="tex2html2433"
  HREF="node317.html">
<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
<BR>
<B> Next:</B> <A NAME="tex2html2436"
  HREF="node116.html">Catching and Throwing Exceptions</A>
<B> Up:</B> <A NAME="tex2html2430"
  HREF="node110.html">C Bindings</A>
<B> Previous:</B> <A NAME="tex2html2424"
  HREF="node114.html">Mapping for classes, interfaces,</A>
 &nbsp; <B>  <A NAME="tex2html2432"
  HREF="node14.html">Contents</A></B> 
 &nbsp; <B>  <A NAME="tex2html2434"
  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>