File: node117.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 (147 lines) | stat: -rw-r--r-- 5,478 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
<!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>Implicitly defined methods</TITLE>
<META NAME="description" CONTENT="Implicitly defined methods">
<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="node118.html">
<LINK REL="previous" HREF="node116.html">
<LINK REL="up" HREF="node110.html">
<LINK REL="next" HREF="node118.html">
</HEAD>

<BODY >

<DIV CLASS="navigation"><!--Navigation Panel-->
<A NAME="tex2html2463"
  HREF="node118.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
<A NAME="tex2html2457"
  HREF="node110.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
<A NAME="tex2html2451"
  HREF="node116.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
<A NAME="tex2html2459"
  HREF="node14.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
<A NAME="tex2html2461"
  HREF="node317.html">
<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
<BR>
<B> Next:</B> <A NAME="tex2html2464"
  HREF="node118.html">Invoking Babel to generate</A>
<B> Up:</B> <A NAME="tex2html2458"
  HREF="node110.html">C Bindings</A>
<B> Previous:</B> <A NAME="tex2html2452"
  HREF="node116.html">Catching and Throwing Exceptions</A>
 &nbsp; <B>  <A NAME="tex2html2460"
  HREF="node14.html">Contents</A></B> 
 &nbsp; <B>  <A NAME="tex2html2462"
  HREF="node317.html">Index</A></B> 
<BR>
<BR></DIV>
<!--End of Navigation Panel-->

<H1><A NAME="SECTION03170000000000000000">
Implicitly defined methods</A>
</H1>

<P>
The C binding for interfaces and classes includes two methods for
perform type casts. The methods are named <TT>_cast</TT> and
<TT>_cast2</TT>. The leading underscore prevents these built in methods
from conflicting with a user method because user methods cannot begin
with an underscore. Neither of these methods increases the reference
count of the underlying object -- this is contrary to standard
methods that always return new reference counts.  Every object has
these two methods, we will use <TT>sidl.BaseClass</TT> as an example. Here are the
signatures for <TT>_cast</TT> and <TT>_cast2</TT> from
<TT>sidl.BaseClass</TT>.

<P>
<BR>
<PRE  CLASS="verbatim">sidl_BaseClass
sidl_BaseClass__cast(
  void* obj);

void*
sidl_BaseClass__cast2(
  void* obj,
  const char* type);
</PRE></td></tr></table></blockquote>
<P>
The <TT>_cast</TT> method attempts to cast a SIDL interface or object
pointer to a pointer to <TT>sidl.BaseClass</TT>. The <TT>_cast2</TT>
method attempts to cast a SIDL interface or object pointer to a
pointer to an interface or object pointer of the type named
<TT>type</TT>. In the case of <TT>_cast2</TT>, the client is responsible
for casting the return value into the proper pointer type.  Both
methods are <TT>NULL</TT> safe. A <TT>NULL</TT> return value indicates
that the cast failed or that <TT>obj</TT> was <TT>NULL</TT>.

<P>
Non-abstract classes have an additional implicit method called
<TT>_create</TT> to create new instances of the class. Interfaces and
abstract classes do not have this method because you cannot
instantiate them.  The <TT>_create</TT> method returns a new reference
that the client must manage. Here is an example of its signature.

<P>
<BR>
<PRE  CLASS="verbatim">/**
 * Constructor function for the class.
 */
sidl_BaseClass
sidl_BaseClass__create(void);
</PRE></td></tr></table></blockquote>
<P>

<DIV CLASS="navigation"><HR>
<!--Navigation Panel-->
<A NAME="tex2html2463"
  HREF="node118.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
<A NAME="tex2html2457"
  HREF="node110.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
<A NAME="tex2html2451"
  HREF="node116.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
<A NAME="tex2html2459"
  HREF="node14.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
<A NAME="tex2html2461"
  HREF="node317.html">
<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
<BR>
<B> Next:</B> <A NAME="tex2html2464"
  HREF="node118.html">Invoking Babel to generate</A>
<B> Up:</B> <A NAME="tex2html2458"
  HREF="node110.html">C Bindings</A>
<B> Previous:</B> <A NAME="tex2html2452"
  HREF="node116.html">Catching and Throwing Exceptions</A>
 &nbsp; <B>  <A NAME="tex2html2460"
  HREF="node14.html">Contents</A></B> 
 &nbsp; <B>  <A NAME="tex2html2462"
  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>