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
|
<!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>Re-entrant Packages</TITLE>
<META NAME="description" CONTENT="Re-entrant Packages">
<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="node52.html">
<LINK REL="up" HREF="node49.html">
<LINK REL="next" HREF="node54.html">
</HEAD>
<BODY >
<DIV CLASS="navigation"><!--Navigation Panel-->
<A NAME="tex2html1412"
HREF="node54.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1406"
HREF="node49.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1402"
HREF="node52.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1408"
HREF="node14.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<A NAME="tex2html1410"
HREF="node317.html">
<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1413"
HREF="node54.html">Fundamental Types</A>
<B> Up:</B> <A NAME="tex2html1407"
HREF="node49.html">SIDL Files</A>
<B> Previous:</B> <A NAME="tex2html1403"
HREF="node52.html">Packages and Versions</A>
<B> <A NAME="tex2html1409"
HREF="node14.html">Contents</A></B>
<B> <A NAME="tex2html1411"
HREF="node317.html">Index</A></B>
<BR>
<BR></DIV>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION02424000000000000000"></A><A NAME="1930"></A><A NAME="1931"></A>
<BR>
Re-entrant Packages
</H2>
<P>
By default, SIDL packages are re-entrant. This means that Babel allows sub-packages to be
broken into separate files, but you'd still have to run Babel on
all the files at the same time. Here's how it works.
<P>
First define the outermost package in a file.
<BR>
<PRE CLASS="verbatim">package mypkg version 2.0 {
}
</I></PRE></td></tr></table></blockquote>
<P>
Then define a sub-package in a second file.
<BR>
<PRE CLASS="verbatim">package mypkg.subpkg version 2.0 {
}
</I></PRE></td></tr></table></blockquote>
<P>
Note that both files begin with the identical version statement.
Now as long as you run Babel on both SIDL files at the same time
(with the outermost one first on the commandline), all is fine.
<P>
This works because the package statement takes a scoped identifier
as an argument. As long as Babel knows that a package <TT><I CLASS="slanted">mypkg</I></TT>
exists, it can handle a new package called <TT><I CLASS="slanted">subpkg</I></TT>. (This would
also work if <TT><I CLASS="slanted">subpkg</I></TT> were a class. Version
statements require an identifier for the outermost package. Since
packages cannot have dots ``.'' in their names, the only dots in
version statements should appear at the numbers, not the package names.
<P>
Running the second file without the first will (and should) generate
an error since the enclosing package was not declared. Re-entrance
should be used judiciously. This feature may be disabled by labeling
a given package as <TT><I CLASS="slanted">final</I></TT>.
<P>
<P>
<DIV CLASS="navigation"><HR>
<!--Navigation Panel-->
<A NAME="tex2html1412"
HREF="node54.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1406"
HREF="node49.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1402"
HREF="node52.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1408"
HREF="node14.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<A NAME="tex2html1410"
HREF="node317.html">
<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1413"
HREF="node54.html">Fundamental Types</A>
<B> Up:</B> <A NAME="tex2html1407"
HREF="node49.html">SIDL Files</A>
<B> Previous:</B> <A NAME="tex2html1403"
HREF="node52.html">Packages and Versions</A>
<B> <A NAME="tex2html1409"
HREF="node14.html">Contents</A></B>
<B> <A NAME="tex2html1411"
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>
|