File: node153.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 (129 lines) | stat: -rw-r--r-- 5,001 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
<!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>Casting Objects</TITLE>
<META NAME="description" CONTENT="Casting Objects">
<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="node154.html">
<LINK REL="previous" HREF="node152.html">
<LINK REL="up" HREF="node148.html">
<LINK REL="next" HREF="node154.html">
</HEAD>

<BODY >

<DIV CLASS="navigation"><!--Navigation Panel-->
<A NAME="tex2html2997"
  HREF="node154.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
<A NAME="tex2html2991"
  HREF="node148.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
<A NAME="tex2html2985"
  HREF="node152.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
<A NAME="tex2html2993"
  HREF="node14.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
<A NAME="tex2html2995"
  HREF="node317.html">
<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
<BR>
<B> Next:</B> <A NAME="tex2html2998"
  HREF="node154.html">Out and Inout arguments</A>
<B> Up:</B> <A NAME="tex2html2992"
  HREF="node148.html">Java Bindings</A>
<B> Previous:</B> <A NAME="tex2html2986"
  HREF="node152.html">Server Side: Writing SIDL</A>
 &nbsp; <B>  <A NAME="tex2html2994"
  HREF="node14.html">Contents</A></B> 
 &nbsp; <B>  <A NAME="tex2html2996"
  HREF="node317.html">Index</A></B> 
<BR>
<BR></DIV>
<!--End of Navigation Panel-->

<H1><A NAME="SECTION03550000000000000000">
Casting Objects</A>
</H1>

<P>
In some cases it is necessary to cast the internal representation of
an object as well as the Java object.  (For example, getting an object
from a SIDL array of superclass objects.)  In these cases a Java cast is
insufficient.  Therefore we have provided two casting functions.  

<P>
<A NAME="9062"></A><TT>_cast(object)</TT> is a static function included with every SIDL
class that returns object passed in to cast that class.  For example, in
order to cast an object of type <TT>sidl.BaseClass</TT> to
<TT>foo.Bar</TT> simply write <TT>foo.Bar newobj = (foo.Bar) foo.Bar._cast(oldobj)</TT>. 
If this is an invalid cast, <TT>_cast</TT> will return <TT>null</TT>. 

<P>
The alternative is <TT>_cast2(``ClassName'')</TT>.  This is a cast
function that is included with every SIDL object.  It performs
basically the same function as <TT>_cast</TT>, but the form is
<TT>object._cast2(``ClassName'')</TT>.  It takes a fully qualified
class name.  If the cast is invalid, or a class of that name cannot be
found, this function returns <TT>null</TT>.

<P>
Both of these functions
return a <TT>sidl.BaseClass</TT> which then must be Java casted to the
correct Java class type.  Also, in casting, they both create a new
Java object that owns a new reference to the IOR object.
<A NAME="9074"></A> In Java you
never have to worry about reference counting, but this does mean that
the pre-cast object still exists and is valid.  

<P>

<DIV CLASS="navigation"><HR>
<!--Navigation Panel-->
<A NAME="tex2html2997"
  HREF="node154.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
<A NAME="tex2html2991"
  HREF="node148.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
<A NAME="tex2html2985"
  HREF="node152.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
<A NAME="tex2html2993"
  HREF="node14.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
<A NAME="tex2html2995"
  HREF="node317.html">
<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
<BR>
<B> Next:</B> <A NAME="tex2html2998"
  HREF="node154.html">Out and Inout arguments</A>
<B> Up:</B> <A NAME="tex2html2992"
  HREF="node148.html">Java Bindings</A>
<B> Previous:</B> <A NAME="tex2html2986"
  HREF="node152.html">Server Side: Writing SIDL</A>
 &nbsp; <B>  <A NAME="tex2html2994"
  HREF="node14.html">Contents</A></B> 
 &nbsp; <B>  <A NAME="tex2html2996"
  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>