incubator-ooo-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ksch...@apache.org
Subject svn commit: r1206895 [6/12] - in /incubator/ooo/ooo-site/trunk/content/udk/common: ./ man/ man/concept/ man/draft/ man/draft/scripting/ man/draft/scripting/DesignDoc/ man/images/ man/spec/ man/tasks/ man/tutorial/
Date Sun, 27 Nov 2011 22:50:08 GMT
Added: incubator/ooo/ooo-site/trunk/content/udk/common/man/idl.html
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/udk/common/man/idl.html?rev=1206895&view=auto
==============================================================================
--- incubator/ooo/ooo-site/trunk/content/udk/common/man/idl.html (added)
+++ incubator/ooo/ooo-site/trunk/content/udk/common/man/idl.html Sun Nov 27 22:49:46 2011
@@ -0,0 +1,673 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<HTML>
+<HEAD>
+	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=iso-8859-1">
+	<TITLE>Unoidl syntax description</TITLE>
+	<META NAME="GENERATOR" CONTENT="StarOffice/5.2 (Win32)">
+	<META NAME="CLASSIFICATION" CONTENT="Unoidl syntax description">
+	<META NAME="KEYWORDS" CONTENT="UNO,Unoidl,syntax,description">
+</HEAD>
+<BODY LINK="#444488" VLINK="#444488" BGCOLOR="#eeeeff">
+<TABLE WIDTH=100% BORDER=0 CELLPADDING=4 CELLSPACING=0 STYLE="page-break-before: always">
+	<COL WIDTH=75>
+	<TR>
+		<TD BGCOLOR="#666699">
+			<H1 ALIGN=CENTER STYLE="margin-top: 0cm; text-decoration: none"><A HREF="http://www.openoffice.org/"><IMG SRC="../../images/open_office_org_logo.gif" NAME="Grafik1" ALT="OpenOffice" ALIGN=RIGHT WIDTH=109 HEIGHT=54 BORDER=0></A><FONT COLOR="#ffffff"><FONT SIZE=6>Unoidl
+			syntax description</FONT></FONT></H1>
+		</TD>
+	</TR>
+</TABLE>
+<HR SIZE=3 NOSHADE>
+<TABLE WIDTH=100% BORDER=0 CELLPADDING=4 CELLSPACING=0>
+	<COL WIDTH=61*>
+	<COL WIDTH=162*>
+	<COL WIDTH=32*>
+	<TR>
+		<TD COLSPAN=3 WIDTH=100% BGCOLOR="#666699">
+			<H3 ALIGN=LEFT STYLE="margin-top: 0cm; text-decoration: none"><FONT COLOR="#ffffff"><FONT SIZE=4>Contents</FONT></FONT></H3>
+		</TD>
+	</TR>
+	<TR>
+		<TD COLSPAN=3 WIDTH=100%>
+			<A HREF="#Introduction">Introduction</A><BR>
+			<A HREF="#Keywords">Keywords</A><BR>
+			<A HREF="#Basetypes">Basetypes</A><BR>
+			<A HREF="#Comments">Comments</A><BR>
+			<A HREF="#Constants">Constants</A><BR>
+			<A HREF="#Enumeration">Enumeration</A><BR>
+			<A HREF="#Structure">Structure</A><BR>
+			<A HREF="#Typedef">Typedef</A><BR>
+			<A HREF="#Exception">Exception</A><BR>
+			<A HREF="#Interface">Interface</A><BR>
+			<A HREF="#Module">Module</A><BR>
+			<A HREF="#Service">Service</A><BR>
+		</TD>
+	</TR>
+	<TR>
+		<TD COLSPAN=3 WIDTH=100% BGCOLOR="#666699">
+			<H3 ALIGN=LEFT STYLE="margin-top: 0cm; text-decoration: none"><A NAME="Introduction"></A>
+			<FONT COLOR="#ffffff"><FONT SIZE=4>Introduction</FONT></FONT></H3>
+		</TD>
+	</TR>
+	<TR>
+		<TD COLSPAN=3 WIDTH=100%>
+			<P>The unoidl is an idl language (interface description language)
+			which is similar to the corba idl. Idl is a language to describe
+			interfaces and types independently of any programming language and
+			hardware platform. An idl description is used by the idl compiler
+			to generate code for these interfaces in a selected target
+			language. The generated code provide the use of the described
+			interfaces in the selected target language. The mapping of the idl
+			description to the target language was defined in an appropriate
+			language binding.
+			</P>
+			<P>All possible idl definitions will be described now. The reader
+			who is intimate in C++ programming will see, that the syntax of
+			the idl is similar to the C++ syntax. Because the lexical
+			conventions of the idl and the structure of the definitions have a
+			large degree with the ANSI standard for C++.</P>
+		</TD>
+	</TR>
+	<TR>
+		<TD COLSPAN=3 WIDTH=100% BGCOLOR="#666699">
+			<H3><A NAME="Keywords"></A><FONT COLOR="#ffffff">Keywords</FONT></H3>
+		</TD>
+	</TR>
+	<TR>
+		<TD COLSPAN=3 WIDTH=100%>
+			<P>The following table shows all keywords of the unoidl. All the
+			keywords are reserved and cannot be used as an identifier.</P>
+		<TABLE WIDTH=100% BORDER=1 CELLPADDING=4 CELLSPACING=0>
+					<COL WIDTH=43*>
+					<COL WIDTH=43*>
+					<COL WIDTH=43*>
+					<COL WIDTH=43*>
+					<COL WIDTH=43*>
+					<COL WIDTH=43*>
+					<TR VALIGN=TOP>
+						<TD WIDTH=17%>
+							<p>any</p>
+						</TD>
+						<TD WIDTH=17%>
+							<p>attribute</p>
+						</TD>
+						<TD WIDTH=17%>
+							<p>byte</p>
+						</TD>
+						<TD WIDTH=17%>
+							<p>boolean</p>
+						</TD>
+						<TD WIDTH=17%>
+							<p>char</p>
+						</TD>
+						<TD WIDTH=17%>
+							<p>const</p>
+						</TD>
+					</TR>
+					<TR VALIGN=TOP>
+						<TD WIDTH=17%>
+							<p>createAllListener</p>
+						</TD>
+						<TD WIDTH=17%>
+							<p>double</p>
+						</TD>
+						<TD WIDTH=17%>
+							<p>enum</p>
+						</TD>
+						<TD WIDTH=17%>
+							<p>exception</p>
+						</TD>
+						<TD WIDTH=17%>
+							<p>"FALSE"</p>
+						</TD>
+						<TD WIDTH=17%>
+							<p>"False"</p>
+						</TD>
+					</TR>
+					<TR VALIGN=TOP>
+						<TD WIDTH=17%>
+							<p>float</p>
+						</TD>
+						<TD WIDTH=17%>
+							<p>getreflection</p>
+						</TD>
+						<TD WIDTH=17%>
+							<p>hyper</p>
+						</TD>
+						<TD WIDTH=17%>
+							<p>ident</p>
+						</TD>
+						<TD WIDTH=17%>
+							<p>identifier</p>
+						</TD>
+						<TD WIDTH=17%>
+							<p>in</p>
+						</TD>
+					</TR>
+					<TR VALIGN=TOP>
+						<TD WIDTH=17%>
+							<p>includereflection</p>
+						</TD>
+						<TD WIDTH=17%>
+							<p>inout</p>
+						</TD>
+						<TD WIDTH=17%>
+							<p>interface</p>
+						</TD>
+						<TD WIDTH=17%>
+							<p>language</p>
+						</TD>
+						<TD WIDTH=17%>
+							<p>long</p>
+						</TD>
+						<TD WIDTH=17%>
+							<p>map</p>
+						</TD>
+					</TR>
+					<TR VALIGN=TOP>
+						<TD WIDTH=17%>
+							<p>mapping</p>
+						</TD>
+						<TD WIDTH=17%>
+							<p>module</p>
+						</TD>
+						<TD WIDTH=17%>
+							<p>name</p>
+						</TD>
+						<TD WIDTH=17%>
+							<p>needs</p>
+						</TD>
+						<TD WIDTH=17%>
+							<p>object</p>
+						</TD>
+						<TD WIDTH=17%>
+							<p>observes</p>
+						</TD>
+					</TR>
+					<TR VALIGN=TOP>
+						<TD WIDTH=17%>
+							<p>optional</p>
+						</TD>
+						<TD WIDTH=17%>
+							<p>out</p>
+						</TD>
+						<TD WIDTH=17%>
+							<p>property</p>
+						</TD>
+						<TD WIDTH=17%>
+							<p>raises</p>
+						</TD>
+						<TD WIDTH=17%>
+							<p>readonly</p>
+						</TD>
+						<TD WIDTH=17%>
+							<p>service</p>
+						</TD>
+					</TR>
+					<TR VALIGN=TOP>
+						<TD WIDTH=17%>
+							<p>sequence</p>
+						</TD>
+						<TD WIDTH=17%>
+							<p>short</p>
+						</TD>
+						<TD WIDTH=17%>
+							<p>string</p>
+						</TD>
+						<TD WIDTH=17%>
+							<p>struct</p>
+						</TD>
+						<TD WIDTH=17%>
+							<p>"TRUE"</p>
+						</TD>
+						<TD WIDTH=17%>
+							<p>"True"</p>
+						</TD>
+					</TR>
+					<TR VALIGN=TOP>
+						<TD WIDTH=17%>
+							<p>typedef</p>
+						</TD>
+						<TD WIDTH=17%>
+							<p>uik</p>
+						</TD>
+						<TD WIDTH=17%>
+							<p>unsigned</p>
+						</TD>
+						<TD WIDTH=17%>
+							<p>version</p>
+						</TD>
+						<TD WIDTH=17%>
+							<p>virtual</p>
+						</TD>
+						<TD WIDTH=17%>
+							<p>void</p>
+						</TD>
+					</TR>
+				</TABLE>
+				<BR>
+		</TD>
+	</TR>
+	<TR>
+		<TD COLSPAN=3 WIDTH=100% BGCOLOR="#666699">
+			<H3><A NAME="Basetypes"></A><FONT COLOR="#ffffff">Basetypes</FONT></H3>
+		</TD>
+	</TR>
+	<TR>
+		<TD COLSPAN=3 WIDTH=100%>
+			<P>The unoidl support the following basetypes:</P>
+			<DL>
+				<DD STYLE="margin-bottom: 0.51cm"><CODE>any,
+				boolean, byte, char, double, float, hyper, long, short, string,
+				void, unsigned hyper, unsigned long, unsigned short</CODE>
+				</DD>
+			</DL>
+			<P>The values TRUE and
+			FALSE (True and False) are defined for the <B><I>boolean</I></B>
+			type. The type <B><I>byte</I></B> is
+			a 1 byte type and represents a type which is not modified by the
+			transport to another computer. The representation of the type <B><I>char</I></B>
+			can be different on a computer which hardware/software
+			architecture is different. It depends on the representation of the
+			used charset. The type any is a type which can represent all
+			possible idl types.</P>
+		</TD>
+	</TR>
+	<TR>
+		<TD COLSPAN=3 WIDTH=100% BGCOLOR="#666699">
+			<H3><A NAME="Comments"></A><FONT COLOR="#ffffff">Comments</FONT></H3>
+		</TD>
+	</TR>
+	<TR>
+		<TD COLSPAN=3 WIDTH=100%>
+			<P>Comments are used to describe the source code. If the comment
+			support a special convention, it can be used for automatically
+			generation of documentation. The unoidl support 4 kinds of
+			comments:</P>
+			<UL>
+				<li><p><b>/* comment */</b></p>
+				<p>All characters between /* and */ are ignored by the idl
+				compiler. The characters /* are also ignored, so encapsulated
+				comments (comments in comments) are not allowed.</P>
+				<li><p><b>// comment end_of_line</b></p>
+				<p>With the characters // starts a comment which ends automatic
+				at the end of the line. All characters after // up to the end_
+				of_ line character are ignored.</P>
+				<li><p><b>/** comment */</b></p>
+				<p>The characters /** shows that a special comment for automatic
+				documentation generation begins. This kind of comment will be
+				saved as a special documentation string by the compiler for the
+				idl definition which follow this comment.</P>
+				<li><p><b>/// comment</b></p>
+				<p>The characters /// shows that a special comment for automatic
+				documentation generation begins. All characters after /// up to
+				the end_ of_ line character are saved as a special
+				documentation string for the next valid idl definition.</P>
+			</UL>
+		</TD>
+	</TR>
+	<TR>
+		<TD COLSPAN=3 WIDTH=100% BGCOLOR="#666699">
+			<H3><A NAME="Constants"></A><FONT COLOR="#ffffff">Constants</FONT></H3>
+		</TD>
+	</TR>
+	<TR>
+		<TD COLSPAN=3 WIDTH=100%>
+			<P><I>Definition:</I></P>
+			<DL>
+				<DD STYLE="margin-bottom: 0.51cm"><CODE>const
+				&lt;TypeName&gt; &lt;ConstantName&gt; "=" &lt;Value&gt;
+				";"</CODE></DD></DL>
+			<P>
+			A constant definition begin with the keyword <B><I>const</I></B>
+			following by the identifier of a type (base_type), the identifier
+			of the constant and the assignment of a value. The value must be
+			in the range of the used type. The definition ends with a
+			semicolon. It is also possible to assign an expression. You can
+			combine values/expressions of the type [unsigned] hyper| long |
+			short with the operators *, /, %, +, -, &lt;&lt;, &gt;&gt;, &amp;,
+			^ and | which are known of C++.</P>
+		</TD>
+	</TR>
+	<TR>
+		<TD COLSPAN=3 WIDTH=100% BGCOLOR="#666699">
+			<H3><A NAME="Enumeration"></A><FONT COLOR="#ffffff">Enumeration</FONT></H3>
+		</TD>
+	</TR>
+	<TR>
+		<TD COLSPAN=3 WIDTH=100%>
+			<P><I>Definition:</I></P>
+			<DL>
+				<DD STYLE="margin-bottom: 0.51cm"><CODE>enum
+				&lt;EnumName&gt; "{" &lt;EnumValue&gt; [= Value] { ","
+				&lt;EnumValue&gt; [= Value] }* "}" ";"</CODE></DD></DL>
+			<P>
+			An enumeration definition begin with the keyword <B><I>enum</I></B>
+			following by the identifier of the enumeration type. The body of
+			the definition is bound with { } and the complete definition ends
+			with a semicolon. The body exists of an ordered list of
+			identifiers. It is possible to assign such an identifier a value
+			of the type long. The default numbering of the values is linear
+			and begin with 0 and crows with 1. If an identifier has an value,
+			all following identifiers without a value are numbered depending
+			on these last assignment of a value. All enum values of the body
+			are also known in the scope of enumeration type itself.</P>
+		</TD>
+	</TR>
+	<TR>
+		<TD COLSPAN=3 WIDTH=100% BGCOLOR="#666699">
+			<H3><A NAME="Structure"></A><FONT COLOR="#ffffff">Structure</FONT></H3>
+		</TD>
+	</TR>
+	<TR>
+		<TD COLSPAN=3 WIDTH=100%>
+			<P><I>Definition:</I></P>
+			<DL>
+				<DD STYLE="margin-bottom: 0.51cm"><CODE>struct
+				&lt;StructureName&gt; [ ":" &lt;ExistStructureName&gt;
+				]<BR>"{"<BR>{ &lt;ElementType&gt; &lt;ElementName&gt;
+				";" }+<BR>"}" ";"</CODE></DD></DL>
+			<P>
+			The definition of a structure begins with the keyword <B><I>struct</I></B>
+			following by the identifier of the structure. The body of the
+			definition is bound with { } and the complete definition ends with
+			a semicolon. Inside the body it is possible to define some
+			elements. An element definition begins with the identifier of the
+			type following by the identifier of the element name. The
+			definition end with a semicolon. The body of the structure is a
+			new namespace. Inside this namespace it is possible to use all
+			identifiers as names which are definite. It is possible to define
+			an inheritance for the structure. An inheritance will be defined
+			after the name identifier by a colon following an identifier of
+			the parent structure. Inheritance of structures is UNO specific
+			and not CORBA compatible.</P>
+		</TD>
+	</TR>
+	<TR>
+		<TD COLSPAN=3 WIDTH=100% BGCOLOR="#666699">
+			<H3><A NAME="Typedef"></A><FONT COLOR="#ffffff">Typedef</FONT></H3>
+		</TD>
+	</TR>
+	<TR>
+		<TD COLSPAN=3 WIDTH=100%>
+			<P><I>Definition:</I></P>
+			<DL>
+				<DD STYLE="margin-bottom: 0.51cm"><CODE>typedef
+				&lt;TypeName&gt; &lt;NewTypeName&gt; ";"</CODE></DD></DL>
+			<P>
+			A type definition begins with the keyword <B><I>typedef
+			</I></B>following by an identifier of an existing type and
+			the identifier of the new type. The definitions ends with a
+			semicolon</P>
+		</TD>
+	</TR>
+	<TR>
+		<TD COLSPAN=3 WIDTH=100% BGCOLOR="#666699">
+			<H3><A NAME="Exception"></A><FONT COLOR="#ffffff">Exception</FONT></H3>
+		</TD>
+	</TR>
+	<TR>
+		<TD COLSPAN=3 WIDTH=100%>
+			<P><I>Definition:</I></P>
+			<DL>
+				<DD STYLE="margin-bottom: 0.51cm"><CODE>exception
+				&lt;ExceptionName&gt; [ ":" &lt;ExistExceptionName&gt; ]<BR>
+				"{"<BR>
+				{ &lt;ElementType&gt; &lt;ElementName&gt; ";" }*<BR>
+				"}" ";"</CODE></DD></DL>
+			<P>
+			The definition of an exception begins with the keyword <B><I>exception</I></B>
+			following by the identifier of the exception. The body of the
+			definition is bound with { } and the complete definition ends with
+			a semicolon. Inside the body it is possible to define some
+			members. A member definition begins with the identifier of the
+			type following by the identifier of the member name. The
+			definition end with a semicolon. The body of the structure is a
+			new namespace. Inside this namespace it is possible to use all
+			identifiers as names which are definite. It is possible to define
+			an inheritance for the exception. An inheritance will be defined
+			after the name identifier by a colon following an identifier of
+			the parent exception. Inheritance of exceptions is UNO specific
+			and not CORBA compatible.</P>
+		</TD>
+	</TR>
+	<TR>
+		<TD COLSPAN=3 WIDTH=100% BGCOLOR="#666699">
+			<H3><A NAME="Interface"></A><FONT COLOR="#ffffff">Interface</FONT></H3>
+		</TD>
+	</TR>
+	<TR>
+		<TD COLSPAN=3 WIDTH=100%>
+			<P><I>Definition:</I></P>
+			<DL>
+				<DD STYLE="margin-bottom: 0.51cm"><CODE>"["
+				uik"("&lt;Uik&gt;")""," ident"("
+				"\""&lt;InterfaceName&gt;"\"" ","
+				&lt;VersionNummer&gt;")" "]"<BR>
+				interface
+				&lt;InterfaceName&gt; [ ":" &lt;InterfaceName&gt; {,
+				&lt;InterfaceName&gt;}* ] <BR>
+				"{"<BR>
+				{ &lt;typedef&gt;
+				| &lt;struct&gt; | &lt;exception&gt; | &lt;constant&gt; |
+				&lt;enumeration&gt; | &lt;interface&gt;}* { "["
+				[readonly ","] attribute "]" &lt;TypeName&gt;
+				&lt;AttributeName&gt; { "," &lt;AttributeName&gt;}* ";"
+				}*<BR>
+				{ [ "["const | oneway "]" ] &lt;TypeName&gt;
+				&lt;FunctionName&gt; "(" [ &lt;Parameter&gt; { ","
+				&lt;Parameter&gt;}* ] ")" [ &lt;Raises&gt; ] ";"
+				}*<BR>
+				"}" ";"<BR>
+				<BR>
+				&lt;Uik&gt; =
+				xxxxxxxx-xxxx-xxxx-xxxxxxxx-xxxxxxxx ; x &Icirc;{0-9a-fA-F}<BR>
+				&lt;Parameter&gt;
+				= "[" in | out | inout "]" &lt;TypeName&gt;
+				&lt;ParameterName&gt;<BR>
+				&lt;Raises&gt; = raises"("
+				&lt;ExceptionName&gt; { "," &lt;ExceptionName&gt;}* ")"</CODE>
+				</DD>
+			</DL>
+			<P>
+			An interface definition begins with an header which is bound with
+			[ ]. The header consists of an uik (universal interface key)
+			definition and an ident definition. The definition begins with the
+			keyword <B><I>uik</I></B> following
+			by a 32 byte number which is split in 5 blocks (8-4-4-8-8 byte)
+			and bound in ( ). The ident definition begins with the keyword
+			<B><I>ident</I></B> following by the
+			name of the interface and a version number. After the header
+			follows the keyword interfaces and an identifier for the interface
+			name. Optionally, an inheritance definition can follow. An
+			inheritance definition begins with a colon and one or more
+			identifiers of existing interfaces. The body of the interface is
+			bound with { } and the definition ends with a semicolon.<BR>An
+			interface opens a new namespace. There can be defined <A HREF="#Typedef">typedefs</A>,
+			<A HREF="#Structure">structs</A>, <A HREF="#Enumeration">enums</A>,
+			<A HREF="#Exception">exceptions</A>, <A HREF="#Constants">constants</A>
+			and <A HREF="#Interface">interfaces</A> and also specific
+			definitions for an interface:</P>
+			<UL>
+				<LI><P><CODE>"["
+				[readonly "," ] attribute "]" &lt;TypeName&gt;
+				&lt;AttributeName&gt; { "," &lt;AttributeName&gt;}*
+				";"</CODE><BR>
+				An
+				attribute definition begins with a header which is bound with [
+				]. In this header the keyword <B><I>attribute</I></B>
+				must be defined. Optional the keyword <B><I>readonly</I></B>
+				defined that the attribute can only accessed for reading. The
+				header follows an identifier for the attribute type and an
+				identifier for the attribute name or a list of identifiers. The
+				definition ends with a semicolon.</P>
+			</UL>
+			<UL>
+				<LI><P><CODE>"["const
+				| oneway "]" ] &lt;TypeName&gt; &lt;FunctionName&gt;
+				"(" [ &lt;Parameter&gt; { "," &lt;Parameter&gt;}*
+				] ")" [ &lt;Raises&gt; ] ";"</CODE><BR>
+				A
+				function definition begins with an optional header following by
+				an identifier for the return type and an identifier for the
+				function name. The header is bound with [ ] and consists of the
+				flags <B><I>oneway</I></B> or <B><I>const</I></B>
+				or both. Oneway means that the function is asynchronous and don`t
+				wait for a reply. To use this flag the function must return void,
+				don`t take any out or inout parameters and don`t raise an
+				exception. Const means that the function don`t change the state
+				of the interface. The name of the function follows a parameter
+				definition which is bound in ( ) and a raises expression which is
+				optional.
+				</P>
+				<LI><P><CODE>&lt;Parameter&gt;
+				= "[" in | out | inout "]" &lt;TypeName&gt;
+				&lt;ParameterName&gt;</CODE><BR>
+				The
+				parameter definition begins with the direction flag which is
+				bound with [ ]. Valid flags for the direction are <B><I>in</I></B>
+				( in parameter), <B><I>out</I></B>
+				(out parameter) or <B><I>inout</I></B>
+				(in and out parameter). The direction follows an identifier for
+				the parameter type and an identifier for the parameter name. More
+				than one parameter definitions are separated by comma.</P>
+				<LI><P><CODE>&lt;Raises&gt;
+				= raises"(" &lt;ExceptionName&gt; { ","
+				&lt;ExceptionName&gt;}* ")"</CODE><BR>
+				The
+				raises definition begins with the keyword raises following by one
+				or more identifiers of existing exceptions which are bound with (
+				). This named exceptions can be raised during the execution of
+				the function.</P>
+			</UL>
+		</TD>
+	</TR>
+	<TR>
+		<TD COLSPAN=3 WIDTH=100% BGCOLOR="#666699">
+			<H3><A NAME="Module"></A><FONT COLOR="#ffffff">Module</FONT></H3>
+		</TD>
+	</TR>
+	<TR>
+		<TD COLSPAN=3 WIDTH=100%>
+			<P><I>Definition:</I></P>
+			<DL>
+				<DD STYLE="margin-bottom: 0.51cm"><CODE>module
+				&lt;ModuleName&gt;<BR>
+				"{"<BR>
+				{ &lt;typedef&gt; |
+				&lt;struct&gt; | &lt;exception&gt; | &lt;constant&gt; |
+				&lt;enumeration&gt; | &lt;interface&gt; | &lt;module&gt; }*<BR>
+				"}" ";"
+				</CODE></DD>
+			</DL>
+			<P>
+			A module definition begins with the keyword <B><I>module</I></B>
+			following by the identifier of the module. The body of the
+			definition is bound with { } and the complete definition ends with
+			a semicolon. A module opens a new namespace and there can be
+			defined all valid idl definitions.</P>
+		</TD>
+	</TR>
+	<TR>
+		<TD COLSPAN=3 WIDTH=100% BGCOLOR="#666699">
+			<H3><A NAME="Service"></A><FONT COLOR="#ffffff">Service</FONT></H3>
+		</TD>
+	</TR>
+	<TR>
+		<TD COLSPAN=3 WIDTH=100%>
+			<P><I>Definition:</I></P>
+			<DL>
+				<DD STYLE="margin-bottom: 0.51cm"><CODE>service
+				&lt;ServiceName&gt;<BR>
+				"{"<BR>
+				{ "[" [readonly
+				"," ] property "]" &lt;TypeName&gt;
+				&lt;PropertyName&gt; { "," &lt;PropertyName&gt;}* ";"
+				}*<BR>
+				{ interface &lt;InterfaceName&gt; { ","
+				&lt;InterfaceName&gt; }* ";" }*<BR>
+				{ observes
+				&lt;InterfaceName&gt; { "," &lt;InterfaceName&gt; }*
+				";" }*<BR>
+				{ needs &lt;ServiceName&gt; { ","
+				&lt;ServiceName&gt; }* ";" }*<BR>
+				"}" ";"
+				</CODE></DD>
+			</DL>
+			<P>
+			A service definition begins with the keyword <B><I>service</I></B>
+			following by an identifier for the name of the service. Services
+			are principally for description and are UNO specific. The body of
+			the definition is bound with { } and the complete definition ends
+			with a semicolon.<BR>Definitions in a service:</P>
+			<UL>
+				<LI><P><CODE>"["
+				[readonly "," ] property "]" &lt;TypeName&gt;
+				&lt;PropertyName&gt; { "," &lt;PropertyName&gt;}* ";"
+				</CODE>
+				<A HREF="#object_property_def">(see object property 
+				definition)</A></p>
+				<p> A <i>property</i> definition begins with a header which is
+				bound with [ ].  In this header the keyword
+				<B><I>property</I></B> must be defined. Optional the keyword
+				<B><I>readonly</I></B> defined that the property can only
+				accessed for reading. The header follows an identifier for the
+				property type and an identifier for the property name or a list
+				of identifiers. The definition ends with a semicolon.</P>
+				<LI><P><CODE>interface
+				&lt;InterfaceName&gt; { "," &lt;InterfaceName&gt; }*
+				";"</CODE> <A HREF="#object_interface_def">(see
+				object interface definition)</A></p>
+				<p>An <i>interface</i> definition begins with the keyword
+				<B><I>interface</I></B> following by an identifier of an
+				existing interface or a list of identifiers of existing
+				interfaces. This definition in the scope of a service means
+				that the service provides the named interfaces. The definition
+				ends with a semicolon.</P>
+			</UL>
+			<UL>
+				<LI><P><CODE>observes
+				&lt;InterfaceName&gt; { "," &lt;interfaceName&gt; }*
+				";"</CODE> <A HREF="#object_observes_def">(see
+				object observes definition)</A></p>
+				<p>An <i>observes</i> definition begins with the keyword
+				<B><I>observes</I></B> following by an identifier of an
+				existing interface or a list of identifiers of existing
+				interfaces. This definition in the scope of a service means
+				that the service must observe the named interfaces. The
+				definition ends with a semicolon.</P>
+				<LI><P><CODE>needs
+				&lt;ServiceName&gt; { "," &lt;ServiceName&gt; }* ";"</CODE>
+				<A HREF="#object_needs_def">(see
+				object needs definition)</A></p>
+				<p>A <i>needs</i> definition begins with the keyword
+				<B><I>needs</I></B> following by an identifier of an existing
+				service or a list of identifiers of existing services. This
+				definition in the scope of a service means that the service
+				needs the named services. The definition ends with a
+				semicolon.</P>
+			</UL>
+		</TD>
+	</TR>
+	<TR>
+		<TD COLSPAN=3 WIDTH=100%>
+			<HR SIZE=1 NOSHADE>
+		</TD>
+	</TR>
+	<TR>
+		<TD WIDTH=50% BGCOLOR="#666699">
+			<P ALIGN=LEFT><FONT COLOR="#ffffff">
+			Author: <A HREF="mailto:juergen.schmidt@germany.sun.com"><FONT COLOR="#ffffff">J&uuml;rgen Schmidt</FONT></A> ($Date: 2004/10/29 02:01:05 $)<BR>
+			<I>Copyright 2001 Sun Microsystems, Inc., 901 San Antonio Road, Palo Alto, CA 94303 USA.</I></FONT>
+			</P>
+		</TD>
+	</TR>
+	<TR>
+		<TD COLSPAN=3 WIDTH=100%>
+			<HR SIZE=1 NOSHADE>
+		</TD>
+	</TR>
+</TABLE>
+<HR SIZE=3 NOSHADE>
+</BODY>
+</HTML>

Propchange: incubator/ooo/ooo-site/trunk/content/udk/common/man/idl.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/ooo/ooo-site/trunk/content/udk/common/man/idl_syntax.html
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/udk/common/man/idl_syntax.html?rev=1206895&view=auto
==============================================================================
--- incubator/ooo/ooo-site/trunk/content/udk/common/man/idl_syntax.html (added)
+++ incubator/ooo/ooo-site/trunk/content/udk/common/man/idl_syntax.html Sun Nov 27 22:49:46 2011
@@ -0,0 +1,534 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<HTML>
+<HEAD>
+	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=iso-8859-1">
+	<TITLE>Unoidl syntax description</TITLE>
+	<META NAME="GENERATOR" CONTENT="StarOffice/5.2 (Win32)">
+	<META NAME="CLASSIFICATION" CONTENT="Unoidl syntax description">
+	<META NAME="KEYWORDS" CONTENT="UNO,Unoidl,syntax,description">
+</HEAD>
+<BODY LINK="#444488" VLINK="#444488" BGCOLOR="#eeeeff">
+<TABLE WIDTH=100% BORDER=0 CELLPADDING=4 CELLSPACING=0 STYLE="page-break-before: always">
+	<COL WIDTH=75>
+	<TR>
+		<TD BGCOLOR="#666699">
+			<H1 ALIGN=CENTER STYLE="margin-top: 0cm; text-decoration: none"><A HREF="http://www.openoffice.org/"><IMG SRC="../../images/open_office_org_logo.gif" NAME="Grafik1" ALT="OpenOffice" ALIGN=RIGHT WIDTH=109 HEIGHT=54 BORDER=0></A><FONT COLOR="#ffffff"><FONT SIZE=6>Unoidl
+			syntax description</FONT></FONT></H1>
+		</TD>
+	</TR>
+</TABLE>
+<HR SIZE=3 noshade>
+<TABLE WIDTH=100% BORDER=0 CELLPADDING=4 CELLSPACING=0>
+  <COL WIDTH=61*> <COL WIDTH=162*> <COL WIDTH=32*> 
+  <TR> 
+    <TD COLSPAN=3 WIDTH=100% BGCOLOR="#666699"> 
+      <H3 ALIGN=LEFT STYLE="margin-top: 0cm; text-decoration: none"><FONT COLOR="#ffffff"><FONT SIZE=4>Contents</FONT></FONT></H3>
+    </TD>
+  </TR>
+  <TR> 
+    <TD COLSPAN=3 WIDTH=100%> 
+      <p><A HREF="#Introduction">Introduction</A><BR>
+        <A HREF="#Keywords">Keywords</A><BR>
+        <A HREF="#Array">Basetypes<br>
+        </A> <A HREF="#Comments">Comments</A> <A HREF="#Array"><br>
+        Array </A><br>
+        <a href="#Union">Union</a> </p>
+    </TD>
+  </TR>
+  <TR> 
+    <TD COLSPAN=3 WIDTH=100% BGCOLOR="#666699"> 
+      <H3 ALIGN=LEFT STYLE="margin-top: 0cm; text-decoration: none"><A NAME="Introduction"></A> 
+        <FONT COLOR="#ffffff"><FONT SIZE=4>Introduction</FONT></FONT></H3>
+    </TD>
+  </TR>
+  <TR> 
+    <TD COLSPAN=3 WIDTH=100%> 
+	<P>The unoidl is an idl language (interface description language) which is
+	similar to the corba idl. Idl is a language to describe interfaces and
+	types independently of any programming language and hardware platform.  An
+	idl description is used by the idl compiler to generate code for these
+	interfaces in a selected target language. The generated code provides the
+	use of the described interfaces in the selected target language. The
+	mapping of the idl description to the target language was defined in an
+	appropriate language binding. </P>
+	<P>All possible idl definitions will be described now. The reader who is
+	intimate in C++ programming will see, that the syntax of the idl is similar
+	to the C++ syntax. Because the lexical conventions of the idl and the
+	structure of the definitions have a large degree with the ANSI standard for
+	C++.</P>
+    </TD>
+  </TR>
+  <TR> 
+    <TD COLSPAN=3 WIDTH=100% BGCOLOR="#666699"> 
+      <H3><A NAME="Keywords"></A><FONT COLOR="#ffffff">Keywords</FONT></H3>
+    </TD>
+  </TR>
+  <TR> 
+    <TD COLSPAN=3 WIDTH=100%> 
+      <P>The following table shows all keywords of the unoidl. All the keywords 
+        are reserved and cannot be used as an identifier.</P>
+      <TABLE WIDTH=100% BORDER=1 CELLPADDING=4 CELLSPACING=0>
+        <TR VALIGN=TOP> 
+          <TD WIDTH=17%><b>any</b></TD>
+          <TD WIDTH=17%><b>attribute</b></TD>
+          <TD WIDTH=17%><b>boolean</b></TD>
+          <TD WIDTH=17%><b>bound</b></TD>
+          <TD WIDTH=17%><b>byte</b></TD>
+          <TD WIDTH=17%><b>case</b></TD>
+        </TR>
+        <TR VALIGN=TOP> 
+          <TD WIDTH=17%><b>char</b></TD>
+          <TD WIDTH=17%><b>const</b></TD>
+          <TD WIDTH=17%><b>constants</b></TD>
+          <TD WIDTH=17%><b>constrained</b></TD>
+          <TD WIDTH=17%><b>default</b></TD>
+          <TD WIDTH=17%><b>double</b></TD>
+        </TR>
+        <COL WIDTH=43*> <COL WIDTH=43*> <COL WIDTH=43*> <COL WIDTH=43*> <COL WIDTH=43*> 
+        <COL WIDTH=43*> 
+        <TR VALIGN=TOP> 
+          <TD WIDTH=17%> 
+            <P><b>enum</b></P>
+          </TD>
+          <TD WIDTH=17%><b>exception</b></TD>
+          <TD WIDTH=17%><b>float</b></TD>
+          <TD WIDTH=17%> 
+            <P><b>hyper</b></P>
+          </TD>
+          <TD WIDTH=17%> 
+            <P><b>in</b></P>
+          </TD>
+          <TD WIDTH=17%> 
+            <P><b>inout</b></P>
+          </TD>
+        </TR>
+        <TR VALIGN=TOP> 
+          <TD WIDTH=17%> 
+            <P><b>interface</b></P>
+          </TD>
+          <TD WIDTH=17%> 
+            <P><b>long</b></P>
+          </TD>
+          <TD WIDTH=17%> 
+            <P ALIGN=LEFT><b>maybeambigious</b></P>
+          </TD>
+          <TD WIDTH=17%> 
+            <P ALIGN=LEFT><b>maybedefault</b></P>
+          </TD>
+          <TD WIDTH=17%> 
+            <P><b>maybevoid</b></P>
+          </TD>
+          <TD WIDTH=17%> 
+            <P><b>module</b></P>
+          </TD>
+        </TR>
+        <tr valign=TOP> 
+          <td width=17%> 
+            <p><b>needs</b></p>
+          </td>
+          <td width=17%> 
+            <p><b>observes</b></p>
+          </td>
+          <td width=17%> 
+            <p><b>oneway</b></p>
+          </td>
+          <td width=17%> 
+            <p><b>optional</b></p>
+          </td>
+          <td width=17%> 
+            <p><b>out</b></p>
+          </td>
+          <td width=17%> 
+            <p><b>property</b></p>
+          </td>
+        </tr>
+        <TR VALIGN=TOP> 
+          <TD WIDTH=17%><b>raises</b></TD>
+          <TD WIDTH=17%><b>readonly</b></TD>
+          <TD WIDTH=17%><b>removable</b></TD>
+          <TD WIDTH=17%><b>sequence</b></TD>
+          <TD WIDTH=17%><b>service</b></TD>
+          <TD WIDTH=17%><b>short</b></TD>
+        </TR>
+        <TR VALIGN=TOP> 
+          <TD WIDTH=17%><b>string</b></TD>
+          <TD WIDTH=17%><b>struct</b></TD>
+          <TD WIDTH=17%><b>switch</b></TD>
+          <TD WIDTH=17%><b>transient</b></TD>
+          <TD WIDTH=17%><b>type</b></TD>
+          <TD WIDTH=17%><b>typedef</b></TD>
+        </TR>
+        <tr valign=TOP> 
+          <td width=17%><b>union</b></td>
+          <td width=17%><b>unsigned</b></td>
+          <td width=17%><b>void</b></td>
+          <td width=17%><b>FALSE</b></td>
+          <td width=17%><b>False</b></td>
+          <td width=17%><b>TRUE</b></td>
+        </tr>
+        <TR VALIGN=TOP> 
+          <TD WIDTH=17%><b>True</b></TD>
+          <TD WIDTH=17%>&nbsp;</TD>
+          <TD WIDTH=17%>&nbsp;</TD>
+          <TD WIDTH=17%>&nbsp;</TD>
+          <TD WIDTH=17%>&nbsp;</TD>
+          <TD WIDTH=17%>&nbsp;</TD>
+        </TR>
+      </TABLE>
+      <BR>
+      </TD>
+  </TR>
+  <tr> 
+    <td colspan=3 width=100% bgcolor="#666699"> 
+      <h3><a name="IDL_Specification"></a><font color="#FFFFFF">IDL language specification</font></h3>
+    </td>
+  </tr>
+  <tr> 
+    <td colspan=3 width=100%> 
+      <p><i>Definition:</i></p>
+      <pre>
+<b><a name="1"></a><font color="#FF0000">(1)</font> &lt;idl_specification&gt; := &lt;definition&gt;+
+
+<a name="2"></a><font color="#FF0000">(2)</font> &lt;definition&gt; := &lt;type_decl&gt; &quot;;&quot;
+                    | &lt;module_decl&gt; &quot;;&quot;
+                    | &lt;constant_decl&gt; &quot;;&quot;
+                    | &lt;exception_decl&gt; &quot;;&quot;
+                    | &lt;constants_decl&gt; &quot;;&quot;
+                    | &lt;service_decl&gt; &quot;;&quot;
+
+<font color="#FF0000"><a name="3"></a>(3)</font> &lt;type_decl&gt; := &lt;interface&gt;
+                   | &lt;struct_decl&gt;
+                   | &lt;enum_decl&gt;
+                   | &lt;union_decl&gt;
+                   | &quot;typedef&quot; &lt;type_spec&gt; &lt;declarator&gt; {&quot;,&quot; &lt;declarator&gt; }* 
+
+<a name="4"></a><font color="#FF0000">(4)</font> &lt;interface&gt; := &lt;interface_decl&gt;
+                   | &lt;forward_decl&gt;
+
+<font color="#FF0000"><a name="5"></a>(5)</font> &lt;forward_decl&gt; := &quot;interface&quot; &lt;identifier&gt;
+
+<font color="#FF0000"><a name="6"></a>(6)</font> &lt;interface_decl&gt; := &lt;interface_header&gt; &quot;{&quot; &lt;interface_body&gt; &quot;}&quot;
+
+<font color="#FF0000"><a name="7"></a>(7)</font> &lt;interface_header&gt; := &quot;interface&quot; &lt;identifier&gt; [ &lt;interface_inheritance&gt; ]
+
+<font color="#FF0000"><a name="8"></a>(8)</font> &lt;interface_inheritance&gt; := &quot;:&quot; &lt;interface_name&gt;
+
+<font color="#FF0000"><a name="9"></a>(9)</font> &lt;interface_name&gt; := &lt;scoped_name&gt;
+
+<font color="#FF0000"><a name="10"></a>(10)</font> &lt;scoped_name&gt; := &lt;identifier&gt;
+                      | &quot;::&quot; &lt;scoped_name&gt;
+                      | &lt;scoped_name&gt; &quot;::&quot; &lt;identifier&gt;
+
+<font color="#FF0000"><a name="11"></a>(11)</font> &lt;interface_body&gt; := &lt;export&gt;+
+
+<font color="#FF0000"><a name="12"></a>(12)</font> &lt;export&gt; := &lt;attribute_decl&gt; &quot;;&quot;
+                 | &lt;operation_decl&gt; &quot;;&quot;
+
+<font color="#FF0000"><a name="13"></a>(13)</font> &lt;attribute_decl&gt; := &lt;attribute_head&gt; &lt;type_spec&gt; &lt;declarator&gt; { &quot;,&quot; &lt;declarator&gt; }*
+
+<font color="#FF0000"><a name="14"></a>(14)</font> &lt;attribute_head&gt; := &quot;[&quot; [&quot;readonly&quot; &quot;,&quot;] &quot;attribute&quot; &quot;]&quot;
+                         | &quot;[&quot; &quot;attribute&quot; [&quot;,&quot; &quot;readonly&quot;] &quot;]&quot;
+
+
+<font color="#FF0000"><a name="15"></a>(15)</font> &lt;declarator&gt; := &lt;identifier&gt;
+                     | &lt;array_declarator&gt; 
+
+<font color="#FF0000"><a name="16"></a>(16)</font> &lt;array_declarator&gt; := &lt;identifier&gt; &lt;array_size&gt;+
+
+<font color="#FF0000"><a name="17"></a>(17)</font> &lt;array_size&gt; := &quot;[&quot; &lt;positive_int&gt; &quot;]&quot;
+
+<font color="#FF0000"><a name="18"></a>(18)</font> &lt;positive_int&gt; := &lt;const_expr&gt;
+
+<font color="#FF0000"><a name="19"></a>(19)</font> &lt;type_spec&gt; := &lt;simple_type_spec&gt;
+                    | constr_type_spec&gt;
+
+<font color="#FF0000"><a name="20"></a>(20)</font> &lt;simple_type_spec&gt; := &lt;base_type_spec&gt;
+                           | &lt;template_type_spec&gt;
+                           | &lt;scoped_name&gt;
+
+<font color="#FF0000"><a name="21"></a>(21)</font> &lt;base_type_spec&gt; := &lt;integer_type&gt;
+                         | &lt;floating_point_type&gt;
+                         | &lt;char_type&gt;
+                         | &lt;byte_type&gt;  
+                         | &lt;boolean_type&gt;
+                         | &lt;string_type&gt;
+                         | &lt;any_type&gt;
+                         | &lt;type_type&gt;
+
+<font color="#FF0000"><a name="22"></a>(22)</font> &lt;template_type&gt; := &lt;sequence_type&gt;
+                        | &lt;array_type&gt;
+
+<font color="#FF0000"><a name="23"></a>(23)</font> &lt;sequence_type&gt; := &quot;sequence&quot; &quot;&lt;&quot; &lt;type_spec&gt; &quot;&gt;&quot;
+
+<font color="#FF0000"><a name="24"></a>(24)</font> &lt;array_type&gt; := &lt;type_spec&gt; &lt;array_size&gt;+
+
+<font color="#FF0000"><a name="25"></a>(25)</font> &lt;floating_point_type&gt; := &quot;float&quot;
+                              | &quot;double&quot;
+
+<font color="#FF0000"><a name="26"></a>(26)</font> &lt;integer_type&gt; := &lt;signed_int&gt;
+                       | &lt;unsinged_int&gt;
+
+<font color="#FF0000"><a name="27"></a>(27)</font> &lt;signed_int&gt; := &quot;short&quot;
+                     | &quot;long&quot;
+                     | &quot;hyper&quot;
+
+
+<font color="#FF0000"><a name="28"></a>(28)</font> &lt;unsigned_int&gt; := &quot;unsigned&quot; &quot;short&quot;
+                       | &quot;unsigned&quot; &quot;long&quot;
+                       | &quot;unsigned&quot; &quot;hyper&quot;
+
+<font color="#FF0000"><a name="29"></a>(29)</font> &lt;char_type&gt; := &quot;char&quot;
+
+<font color="#FF0000"><a name="30"></a>(30)</font> &lt;type_type&gt; := &quot;type&quot;
+
+<font color="#FF0000"><a name="31"></a>(31)</font> &lt;string_type&gt; := &quot;string&quot;
+
+<font color="#FF0000"><a name="32"></a>(32)</font> &lt;byte_type&gt; := &quot;byte&quot;
+
+<font color="#FF0000"><a name="33"></a>(33)</font> &lt;any_type&quot; := &quot;any&quot;
+
+<font color="#FF0000"><a name="34"></a>(34)</font> &lt;boolean_type&gt; := &quot;boolean&quot;
+
+<font color="#FF0000"><a name="35"></a>(35)</font> &lt;constr_type_spec&gt; := &lt;struct_type&gt;
+                           | &lt;enum_type&gt;
+                           | &lt;union_type&gt;
+
+<font color="#FF0000"><a name="36"></a>(36)</font> &lt;struct_type&gt; := &quot;struct&quot; &lt;identifier&gt; [ &lt;struct_inheritance&gt; ] &quot;{&quot; &lt;member&gt;+ &quot;}&quot;
+
+<font color="#FF0000"><a name="37"></a>(37)</font> &lt;struct_inheritance&gt; := &quot;:&quot; &lt;scoped_name&gt;
+ 
+<font color="#FF0000"><a name="38"></a>(38)</font> &lt;member&gt; := &lt;type_spec&gt; &lt;declarator&gt; { &quot;,&quot; &lt;declarator&gt; }*
+
+<font color="#FF0000"><a name="39"></a>(39)</font> enum_type&gt; := enum &lt;identifier&gt; &quot;{&quot; &lt;enumerator&gt; { &quot;,&quot; &lt;enumerator&gt; }* &quot;}&quot;
+
+<font color="#FF0000"><a name="40"></a>(40)</font> &lt;enumerator&gt; := &lt;identifier&gt; [ &quot;=&quot; &lt;positive_int&gt; ]
+ 
+<font color="#FF0000"><a name="41"></a>(41)</font> &lt;union_type&gt; := &quot;union&quot; &lt;identifier&gt; &quot;switch&quot; &quot;(&quot; &lt;switch_type_spec&gt; &quot;)&quot;
+                       &quot;{&quot; &lt;switch_body&gt; &quot;}&quot;    
+  
+<font color="#FF0000"><a name="42"></a>(42)</font> &lt;switch_type_spec&gt; := &lt;integer_type&gt;
+                           | &lt;enum_type&gt;
+                           | &lt;scoped_name&gt; 
+
+<font color="#FF0000"><a name="43"></a>(43)</font> &lt;switch_body&gt; := &lt;case&gt;+
+
+<font color="#FF0000"><a name="44"></a>(44)</font> &lt;case&gt; := &lt;case_label&gt; &lt;element_spec&gt; &quot;;&quot;
+
+<font color="#FF0000"><a name="45"></a>(45)</font> &lt;case_label&gt; := &quot;case&quot; &lt;const_expr&gt; &quot;:&quot; 
+                     | &quot;default&quot; &quot;:&quot;;
+
+<font color="#FF0000"><a name="46"></a>(46)</font> &lt;element_spec&gt; := &lt;type_spec&gt; &lt;declarator&gt;
+
+<font color="#FF0000"><a name="47"></a>(47)</font> &lt;exception_decl&gt; := &quot;exception&quot; &lt;identifier&gt; [ &lt;exception_inheritance&gt; ] &quot;{&quot; &lt;member&gt;* &quot;}&quot;
+
+<font color="#FF0000"><a name="48"></a>(48)</font> &lt;exception_inheritance&gt; := &quot;:&quot; &lt;scoped_name&gt;
+ 
+<font color="#FF0000"><a name="49"></a>(49)</font> &lt;module_decl&gt; := &quot;module&quot; &lt;identifier&gt; &quot;{&quot; &lt;definition&gt;+ &quot;}&quot;
+
+<font color="#FF0000"><a name="50"></a>(50)</font> &lt;constant_decl&gt; := &quot;const&quot; &lt;const_type&gt; &lt;identifier&gt; &quot;=&quot; &lt;const_expr&gt;
+
+<font color="#FF0000"><a name="51"></a>(51)</font> &lt;const_type&gt; := &lt;integer_type&gt;
+                     | &lt;char_type&gt;
+                     | &lt;boolean_type&gt;
+                     | &lt;floating_point_type&gt;  
+                     | &lt;string_type&gt;
+                     | &lt;scoped_name&gt;
+
+<font color="#FF0000"><a name="52"></a>(52)</font> &lt;const_expr&gt; := &lt;or_expr&gt;
+
+<font color="#FF0000"><a name="53"></a>(53)</font> &lt;or_expr&gt; := &lt;xor_expr&gt;
+                  | &lt;or_expr&gt; &quot;|&quot; &lt;xor_expr&gt;
+
+<font color="#FF0000"><a name="54"></a>(54)</font> &lt;xor_expr&gt; := &lt;and_expr&gt;<br>                   | &lt;xor_expr&gt; &quot;^&quot; &lt;and_expr&gt;
+
+<font color="#FF0000"><a name="55"></a>(55)</font> &lt;and_expr&gt; := &lt;shift_expr&gt;
+                   | &lt;and_expr&gt; &quot;&amp;&quot; &lt;shift_expr&gt;
+
+<font color="#FF0000"><a name="56"></a>(56)</font> &lt;shift_expr&gt; := &lt;add_Expr&gt;
+                     | &lt;shift_expr &quot;&gt;&gt;&quot; &lt;add_expr&gt;
+                     | &lt;shift_expr &quot;&lt;&lt;&quot; &lt;add_expr&gt;
+
+<font color="#FF0000"><a name="57"></a>(57)</font> &lt;add_expr&gt; := &lt;mult_expr&gt;
+                   | &lt;add_expr&gt; &quot;+&quot; &lt;mult_expr&gt;
+                   | &lt;add_expr&gt; &quot;-&quot; &lt;mult_expr&gt;
+
+<font color="#FF0000"><a name="58"></a>(58)</font> &lt;mult_Expr&gt; := &lt;unary_expr&gt;
+                    | &lt;mult_expr&gt; &quot;*&quot; &lt;unary_expr&gt;
+                    | &lt;mult_expr&gt; &quot;/&quot; &lt;unary_expr&gt;
+                    | &lt;mult_expr&gt; &quot;%&quot; &lt;unary_expr&gt;
+
+<font color="#FF0000"><a name="59"></a>(59)</font> &lt;unary_expr&gt; := &lt;unary_operator&gt;&lt;primary_expr&gt;
+                     | &lt;primary_expr&gt;
+
+<font color="#FF0000"><a name="60"></a>(60)</font> &lt;unary_operator&gt; := &quot;-&quot; | &quot;+&quot; | &quot;~&quot;
+
+<font color="#FF0000"><a name="61"></a>(61)</font> &lt;primary_expr&gt; := &lt;scoped_name&gt;
+                       | &lt;literal&gt;
+                       | &quot;(&quot; &lt;const_expr&gt; &quot;)&quot;
+
+<font color="#FF0000"><a name="62"></a>(62)</font> &lt;literal&gt; := &lt;integer_literal&gt;
+                  | &lt;string_literal&gt;
+                  | &lt;character_literal&gt;
+                  | &lt;floating_point_literal&gt;
+                  | &lt;boolean_literal&gt;
+
+<font color="#FF0000"><a name="63"></a>(63)</font> &lt;boolean_literal&gt; := &quot;TRUE&quot;
+                          | &quot;True&quot;
+                          | &quot;FALSE&quot;
+                          | &quot;False&quot;
+<font color="#FF0000"><a name="64"></a>(64)</font> &lt;service_decl&gt; := &quot;service&quot; &lt;identifier&gt; &quot;{&quot; &lt;service_member&gt;+ &quot;}&quot;
+
+<font color="#FF0000"><a name="65"></a>(65)</font> &lt;service_member&gt; := &lt;property_decl&gt; &quot;;&quot;
+                         | &lt;support_decl&gt; &quot;;&quot;
+                         | &lt;export_decl&gt; &quot;;&quot;
+                         | &lt;observe_decl&gt; &quot;;&quot;
+                         | &lt;needs_decl&gt; &quot;;&quot;
+
+<font color="#FF0000"><a name="66"></a>(66)</font> &lt;property_decl&gt; := &lt;property_head&gt; &lt;type_spec&gt; &lt;declarator&gt; { &quot;,&quot; &lt;declarator&gt; }*
+
+<font color="#FF0000"><a name="67"></a>(67)</font> &lt;property_head&gt; := &quot;[&quot; {&lt;property_flags&gt; &quot;,&quot;}* &quot;property&quot; &quot;]&quot;
+                         | &quot;[&quot; &quot;property&quot; {&quot;,&quot; &lt;property_flags&gt;}* &quot;]&quot; 
+
+<font color="#FF0000"><a name="68"></a>(68)</font> &lt;property_flags&gt; := &quot;readonly&quot;
+                        | &quot;bound
+                        | &quot;constrained&quot;
+                        | &quot;maybeambigious&quot;
+                        | &quot;maybedefault&quot;
+                        | &quot;maybevoid&quot;
+                        | &quot;optional&quot;
+                        | &quot;removable&quot;
+                        | &quot;transient&quot;
+ 
+<font color="#FF0000"><a name="69"></a>(69)</font> &lt;support_decl&gt; := &quot;interface&quot; &lt;declarator&gt; { &quot;,&quot; &lt;declarator&gt; }*
+
+<font color="#FF0000"><a name="70"></a>(70)</font> &lt;export_decl&gt; := &quot;service&quot; &lt;declarator&gt; { &quot;,&quot; &lt;declarator&gt; }*
+ 
+<font color="#FF0000"><a name="71"></a>(71)</font> &lt;observe_decl&gt; := &quot;observe&quot; &lt;declarator&gt; { &quot;,&quot; &lt;declarator&gt; }*
+
+<font color="#FF0000"><a name="72"></a>(72)</font> &lt;needs_decl&gt; := &quot;needs&quot; &lt;declarator&gt; { &quot;,&quot; &lt;declarator&gt; }*
+
+<font color="#FF0000"><a name="73"></a>(73)</font> &lt;constants_decl&gt; := &quot;constants&quot; &lt;identifier&gt; &quot;{&quot; &lt;constant_decl&gt;+ &quot;}&quot;   
+|    </b></pre>
+    </td>
+  </tr>
+  <TR> 
+    <TD COLSPAN=3 WIDTH=100% BGCOLOR="#666699"> 
+      <H3><A NAME="Basetypes"></A><FONT COLOR="#ffffff">Basetypes</FONT></H3>
+    </TD>
+  </TR>
+  <TR> 
+    <TD COLSPAN=3 WIDTH=100%> 
+      <P>The unoidl supports the following basetypes:</P>
+      <table width="100%" border="1">
+        <tr> 
+          <td><b>any</b></td>
+          <td><b>boolean</b></td>
+          <td><b>byte</b></td>
+          <td><b>char</b></td>
+          <td><b>double</b></td>
+          <td><b>float</b></td>
+          <td><b>hyper</b></td>
+          <td><b>long</b></td>
+        </tr>
+        <tr> 
+          <td><b>short</b></td>
+          <td><b>string</b></td>
+          <td><b>type</b></td>
+          <td><b>void</b></td>
+          <td><b>unsigned hyper</b></td>
+          <td><b>unsigned long</b></td>
+          <td><b>unsigned short</b></td>
+          <td>&nbsp;</td>
+        </tr>
+      </table>
+	  <P>The values <b>TRUE</b> and <b>FALSE</b> (<b>True</b> and <b>False</b>)
+	  are defined for the <B><I>boolean</I></B> type. The type
+	  <B><I>byte</I></B> is a 1 byte type and represents a type which is not
+	  modified by the transport to another computer. The representation of the
+	  type <B><I>char</I></B> can be different on a computer which
+	  hardware/software architecture is different. It depends on the
+	  representation of the used charset. The type <b>any</b> is a type which
+	  can represent all possible idl types. The type <b>type</b> is a metatype
+	  which describes other types defined in IDL.</P>
+    </TD>
+  </TR>
+  <TR> 
+    <TD COLSPAN=3 WIDTH=100% BGCOLOR="#666699"> 
+      <H3><A NAME="Comments"></A><FONT COLOR="#ffffff">Comments</FONT></H3>
+    </TD>
+  </TR>
+  <TR> 
+    <TD COLSPAN=3 WIDTH=100%> 
+	  <P>Comments are used to describe the source code. If the comment support
+	  a special convention, it can be used for automatically generation of
+	  documentation.  The unoidl support 4 kinds of comments:</P>
+      <UL>
+        <LI> 
+          <p><b>/* comment */</b></p>
+		  <p>All characters between /* and */ are ignored by the idl compiler.
+		  The characters /* are also ignored, so encapsulated comments are not
+		  allowed.</P>
+        <LI> 
+          <p><b>// comment end_of_line</b></p>
+		  <p>With the characters // starts a comment which ends automatic at
+		  the end of the line. All characters after // up to the end_ of_ line
+		  character are ignored.</p>
+        <LI> 
+          <p><b>/** comment */</b></p>
+		  <p>The characters /** shows that a special comment for automatic
+		  documentation generation begins. This kind of comment will be saved
+		  as a special documentation string by the compiler for the idl
+		  definition which follow this comment.</p>
+        <LI> 
+          <p><b>/// comment</b></p>
+		  <p>The characters /// shows that a special comment for automatic
+		  documentation generation begins. All characters after /// up to the
+		  end_ of_ line character are saved as a special documentation string
+		  for the next valid idl definition.</p>
+      </UL>
+    </TD>
+  </TR>
+  <tr> 
+    <td colspan=3 width=100% bgcolor="#666699"> 
+      <h3><a name="Array"></a><font color="#FFFFFF">Array (not final, arrays can 
+        not be used in UNO at this time)</font></h3>
+    </td>
+  </tr>
+  <tr> 
+    <td colspan=3 width=100%> 
+      <p>Arrays are not final specified in the UNO IDL and can not be used with 
+        UNO at this time!!!</p>
+    </td>
+  </tr>
+  <tr> 
+    <td colspan=3 width=100% bgcolor="#666699"> 
+      <h3><a name="Union"></a><font color="#FFFFFF">Union (not final, unions can 
+        not be used in UNO at this time)</font></h3>
+    </td>
+  </tr>
+  <tr> 
+    <td colspan=3 width=100%> 
+      <p>Unions are not final specified in the UNO IDL and can not be used with 
+        UNO at this time!!!</p>
+    </td>
+  </tr>
+  <TR> 
+    <TD COLSPAN=3 WIDTH=100%> 
+      <HR SIZE=1 noshade>
+    </TD>
+  </TR>
+  <TR> 
+    <TD WIDTH=50% BGCOLOR="#666699"> 
+      <P ALIGN=LEFT><FONT COLOR="#ffffff"> Author: <A HREF="mailto:juergen.schmidt@germany.sun.com"><FONT COLOR="#ffffff">J&uuml;rgen 
+        Schmidt</FONT></A> ($Date: 2004/10/29 06:35:09 $)<BR>
+        <I>Copyright 2001 Sun Microsystems, Inc., 901 San Antonio Road, Palo Alto, CA 94303 USA.</I></FONT> 
+      </P>
+    </TD>
+  <TR> 
+    <TD COLSPAN=3 WIDTH=100%> 
+      <HR SIZE=1 noshade>
+    </TD>
+  </TR>
+</TABLE>
+</BODY>
+</HTML>

Propchange: incubator/ooo/ooo-site/trunk/content/udk/common/man/idl_syntax.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/JScriptWP_classes.gif
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/udk/common/man/images/JScriptWP_classes.gif?rev=1206895&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/JScriptWP_classes.gif
------------------------------------------------------------------------------
    svn:mime-type = image/gif

Added: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/OO-NetBeans-Dynamic-fs.jpg
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/udk/common/man/images/OO-NetBeans-Dynamic-fs.jpg?rev=1206895&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/OO-NetBeans-Dynamic-fs.jpg
------------------------------------------------------------------------------
    svn:mime-type = image/jpeg

Added: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/OO-NetBeans-Dynamic-serial.jpg
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/udk/common/man/images/OO-NetBeans-Dynamic-serial.jpg?rev=1206895&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/OO-NetBeans-Dynamic-serial.jpg
------------------------------------------------------------------------------
    svn:mime-type = image/jpeg

Added: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/aggregation.jpg
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/udk/common/man/images/aggregation.jpg?rev=1206895&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/aggregation.jpg
------------------------------------------------------------------------------
    svn:mime-type = image/jpeg

Added: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/binaryspec.gif
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/udk/common/man/images/binaryspec.gif?rev=1206895&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/binaryspec.gif
------------------------------------------------------------------------------
    svn:mime-type = image/gif

Added: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/component_environments.gif
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/udk/common/man/images/component_environments.gif?rev=1206895&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/component_environments.gif
------------------------------------------------------------------------------
    svn:mime-type = image/gif

Added: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/context_example1.gif
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/udk/common/man/images/context_example1.gif?rev=1206895&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/context_example1.gif
------------------------------------------------------------------------------
    svn:mime-type = image/gif

Added: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/context_example2.gif
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/udk/common/man/images/context_example2.gif?rev=1206895&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/context_example2.gif
------------------------------------------------------------------------------
    svn:mime-type = image/gif

Added: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/context_propagation.gif
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/udk/common/man/images/context_propagation.gif?rev=1206895&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/context_propagation.gif
------------------------------------------------------------------------------
    svn:mime-type = image/gif

Added: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/iiopbridge.gif
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/udk/common/man/images/iiopbridge.gif?rev=1206895&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/iiopbridge.gif
------------------------------------------------------------------------------
    svn:mime-type = image/gif

Added: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/jbu_draft_moduleadmin.gif
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/udk/common/man/images/jbu_draft_moduleadmin.gif?rev=1206895&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/jbu_draft_moduleadmin.gif
------------------------------------------------------------------------------
    svn:executable = *

Propchange: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/jbu_draft_moduleadmin.gif
------------------------------------------------------------------------------
    svn:mime-type = image/gif

Added: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/passing_interface_reference_acquire_in_advance.jpg
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/udk/common/man/images/passing_interface_reference_acquire_in_advance.jpg?rev=1206895&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/passing_interface_reference_acquire_in_advance.jpg
------------------------------------------------------------------------------
    svn:mime-type = image/jpeg

Added: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/passing_interface_reference_corba_uno.jpg
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/udk/common/man/images/passing_interface_reference_corba_uno.jpg?rev=1206895&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/passing_interface_reference_corba_uno.jpg
------------------------------------------------------------------------------
    svn:mime-type = image/jpeg

Added: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/passing_interface_reference_uno_uno.jpg
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/udk/common/man/images/passing_interface_reference_uno_uno.jpg?rev=1206895&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/passing_interface_reference_uno_uno.jpg
------------------------------------------------------------------------------
    svn:mime-type = image/jpeg

Added: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/pipe_inheritance.gif
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/udk/common/man/images/pipe_inheritance.gif?rev=1206895&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/pipe_inheritance.gif
------------------------------------------------------------------------------
    svn:mime-type = image/gif

Added: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/sec_dynamic.jpg
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/udk/common/man/images/sec_dynamic.jpg?rev=1206895&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/sec_dynamic.jpg
------------------------------------------------------------------------------
    svn:mime-type = image/jpeg

Added: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/sec_interprocess.jpg
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/udk/common/man/images/sec_interprocess.jpg?rev=1206895&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/sec_interprocess.jpg
------------------------------------------------------------------------------
    svn:mime-type = image/jpeg

Added: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/sec_overview.jpg
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/udk/common/man/images/sec_overview.jpg?rev=1206895&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/sec_overview.jpg
------------------------------------------------------------------------------
    svn:mime-type = image/jpeg

Added: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/sec_resource.jpg
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/udk/common/man/images/sec_resource.jpg?rev=1206895&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/sec_resource.jpg
------------------------------------------------------------------------------
    svn:mime-type = image/jpeg

Added: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/stream_active_sink.gif
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/udk/common/man/images/stream_active_sink.gif?rev=1206895&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/stream_active_sink.gif
------------------------------------------------------------------------------
    svn:mime-type = image/gif

Added: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/stream_chaining.gif
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/udk/common/man/images/stream_chaining.gif?rev=1206895&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/stream_chaining.gif
------------------------------------------------------------------------------
    svn:mime-type = image/gif

Added: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/stream_connected_chain.gif
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/udk/common/man/images/stream_connected_chain.gif?rev=1206895&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/stream_connected_chain.gif
------------------------------------------------------------------------------
    svn:mime-type = image/gif

Added: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/stream_connected_pipe.gif
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/udk/common/man/images/stream_connected_pipe.gif?rev=1206895&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/stream_connected_pipe.gif
------------------------------------------------------------------------------
    svn:mime-type = image/gif

Added: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/stream_datacontrol.gif
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/udk/common/man/images/stream_datacontrol.gif?rev=1206895&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/stream_datacontrol.gif
------------------------------------------------------------------------------
    svn:mime-type = image/gif

Added: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/stream_interfaces.gif
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/udk/common/man/images/stream_interfaces.gif?rev=1206895&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/stream_interfaces.gif
------------------------------------------------------------------------------
    svn:mime-type = image/gif

Added: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/stream_piping.gif
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/udk/common/man/images/stream_piping.gif?rev=1206895&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/stream_piping.gif
------------------------------------------------------------------------------
    svn:mime-type = image/gif

Added: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/stream_read.gif
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/udk/common/man/images/stream_read.gif?rev=1206895&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/stream_read.gif
------------------------------------------------------------------------------
    svn:mime-type = image/gif

Added: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/stream_read_and_convert.gif
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/udk/common/man/images/stream_read_and_convert.gif?rev=1206895&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/stream_read_and_convert.gif
------------------------------------------------------------------------------
    svn:mime-type = image/gif

Added: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/stream_source_sink.gif
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/udk/common/man/images/stream_source_sink.gif?rev=1206895&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/stream_source_sink.gif
------------------------------------------------------------------------------
    svn:mime-type = image/gif

Added: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/uno-url.gif
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/udk/common/man/images/uno-url.gif?rev=1206895&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/uno-url.gif
------------------------------------------------------------------------------
    svn:mime-type = image/gif

Added: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/uno-url.sxd
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/udk/common/man/images/uno-url.sxd?rev=1206895&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/uno-url.sxd
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/uno_soap.gif
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/udk/common/man/images/uno_soap.gif?rev=1206895&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/ooo/ooo-site/trunk/content/udk/common/man/images/uno_soap.gif
------------------------------------------------------------------------------
    svn:mime-type = image/gif

Added: incubator/ooo/ooo-site/trunk/content/udk/common/man/lifecycle.html
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/udk/common/man/lifecycle.html?rev=1206895&view=auto
==============================================================================
--- incubator/ooo/ooo-site/trunk/content/udk/common/man/lifecycle.html (added)
+++ incubator/ooo/ooo-site/trunk/content/udk/common/man/lifecycle.html Sun Nov 27 22:49:46 2011
@@ -0,0 +1,308 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+    "http:://www.w3.org/TR/html4/strict.dtd">
+<HTML>
+<HEAD>
+    <TITLE>UNO Object Life Cycle Model</TITLE>
+
+<meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">
+</head>
+<BODY>
+
+<TABLE WIDTH="100%" BORDER="0" CELLSPACING="0" CELLPADDING="4">
+    <TR><TD BGCOLOR="#666699">
+        <H1 ALIGN="CENTER" STYLE="margin-top: 0in; text-decoration: none"><!--
+            --><A HREF="http://www.openoffice.org"><IMG
+            SRC="../../images/open_office_org_logo.gif" ALT="OpenOffice.org"
+            ALIGN="RIGHT" BORDER="0"></A><FONT COLOR="White">UNO Object Life
+            Cycle Model</FONT></H1>
+    </TD></TR>
+</TABLE>
+<HR NOSHADE SIZE="3"/>
+
+<H1>Specification</H1>
+
+<P>This model is built on four abstractions: threads, objects, data items, and
+time.</P>
+
+<P>There is a set of <DFN>threads</DFN>, which are not further specified here
+(see <A href="execution.html"><CITE>UNO Execution Model</CITE></A> for
+details).  At any time, this thread pool owns a specific set of data items.</P>
+
+<P>For simplicity (but without loss of generality), a fixed, infinite set of
+<DFN>objects</DFN>,&nbsp;<VAR>O</VAR>, is assumed.  At any time, each object
+owns a specific set of data items.</P>
+
+<P><DFN>Data items</DFN> consist of values of the primitive and structured UNO
+types (see <A HREF="typesystem.html"><CITE>UNO Type System</CITE></A>), and of
+object references (representing the interface types).  An object reference is
+either the null reference or a reference to any object <VAR>o</VAR> &isin;
+<VAR>O</VAR>.</P>
+
+<P>At any time&nbsp;<VAR>t</VAR>, <VAR>TRef</VAR><SUB><VAR>t</VAR></SUB> &sube;
+<VAR>O</VAR> is the set of <DFN>objects directly referenced from the thread
+pool</DFN>.  These are all the objects referenced from the data items owned by
+the thread pool at time&nbsp;<VAR>t</VAR>.</P>
+
+<P>At any time&nbsp;<VAR>t</VAR>, for each object <VAR>o</VAR> &isin;
+<VAR>O</VAR>, <VAR>ref</VAR><SUB><VAR>t</VAR></SUB>(<VAR>o</VAR>) &sube;
+<VAR>O</VAR> is the set of <DFN>objects directly referenced from
+object&nbsp;<VAR>o</VAR></DFN>.  These are all the objects referenced from the
+data items owned by object&nbsp;<VAR>o</VAR> at time&nbsp;<VAR>t</VAR>.
+The function <VAR>ref</VAR><SUP>+</SUP><SUB><VAR>t</VAR></SUB> is the transitive
+hull of the function <VAR>ref</VAR><SUB><VAR>t</VAR></SUB>; at any
+time&nbsp;<VAR>t</VAR>,
+<VAR>ref</VAR><SUP>+</SUP><SUB><VAR>t</VAR></SUB>(<VAR>o</VAR>) represents the
+set of <DFN>objects referenced from object&nbsp;<VAR>o</VAR></DFN>.  Viewed as
+a relation, <VAR>ref</VAR><SUB><VAR>t</VAR></SUB> describes a directed graph
+with objects as vertices and object references as edges.  An <DFN>object
+reference circle</DFN> is a strongly connected component of that graph, with the
+restriction that it must contain at least one edge.  (Informally, an object
+reference circle is a maximal set of objects where each object can be reached
+from every other object via one or more object references.)</P>
+
+<P>At any time&nbsp;<VAR>t</VAR>,
+<VAR>TRef</VAR><SUP>+</SUP><SUB><VAR>t</VAR></SUB> :=
+<VAR>TRef</VAR><SUB><VAR>t</VAR></SUB> &cup;
+<FONT SIZE="+1">&cup;</FONT><SUB><VAR>o</VAR> &isin;
+<VAR>TRef</VAR><SUB><VAR>t</VAR></SUB></SUB>
+<VAR>ref</VAR><SUP>+</SUP><SUB><VAR>t</VAR></SUB>(o) is the set of <DFN>objects
+referenced from the thread pool</DFN>.</P>
+
+<P>At any time&nbsp;<VAR>t</VAR>, <VAR>O</VAR> can be partitioned into four
+disjoint subsets: the <DFN>immaterial objects</DFN>
+<VAR>Imm</VAR><SUB><VAR>t</VAR></SUB>, the <DFN>active objects</DFN>
+<VAR>Act</VAR><SUB><VAR>t</VAR></SUB>, the <DFN>done objects</DFN>
+<VAR>Don</VAR><SUB><VAR>t</VAR></SUB>, and the <DFN>unreachable objects</DFN>
+<VAR>Unr</VAR><SUB><VAR>t</VAR></SUB>.  Two of these are derived as follows:
+<VAR>Act</VAR><SUB><VAR>t</VAR></SUB> :=
+<VAR>TRef</VAR><SUP>+</SUP><SUB><VAR>t</VAR></SUB>, and
+<VAR>Unr</VAR><SUB><VAR>t</VAR></SUB> := <VAR>O</VAR> \
+(<VAR>Imm</VAR><SUB><VAR>t</VAR></SUB> &cup;
+<VAR>Act</VAR><SUB><VAR>t</VAR></SUB> &cup;
+<VAR>Don</VAR><SUB><VAR>t</VAR></SUB>).</P>
+
+<P>Initial state:</P>
+<UL>
+    <LI><VAR>TRef</VAR><SUB>0</SUB> := &empty;</LI>
+
+    <LI>for all <VAR>o</VAR> &isin; <VAR>O</VAR>,
+    <VAR>ref</VAR><SUB>0</SUB>(<VAR>o</VAR>) := &empty;</LI>
+
+    <LI><VAR>Imm</VAR><SUB>0</SUB> := <VAR>O</VAR></LI>
+
+    <LI><VAR>Don</VAR><SUB>0</SUB> := &empty;</LI>
+</UL>
+
+<P>Transitions:</P>
+<DL>
+    <DT><STRONG>adjust threads</STRONG></DT>
+    <DD><VAR>s</VAR> &sube;
+    <VAR>TRef</VAR><SUP>+</SUP><SUB><VAR>t</VAR></SUB>&emsp;&rarr;<BR/>
+    &emsp;<VAR>TRef</VAR><SUB><VAR>t</VAR> + 1</SUB> := <VAR>s</VAR><BR/>
+    &emsp;<VAR>Don</VAR><SUB><VAR>t</VAR> + 1</SUB> :=
+    <VAR>Don</VAR><SUB><VAR>t</VAR></SUB> &cup; {<VAR>o</VAR> &isin;
+    <VAR>TRef</VAR><SUP>+</SUP><SUB><VAR>t</VAR></SUB> \
+    <VAR>TRef</VAR><SUP>+</SUP><SUB><VAR>t</VAR> + 1</SUB> | <VAR>o</VAR>
+    &notin;
+    <VAR>ref</VAR><SUP>+</SUP><SUB><VAR>t</VAR> + 1</SUB>(<VAR>o</VAR>)}</DD>
+
+    <DT><STRONG>adjust object</STRONG></DT>
+    <DD><VAR>o</VAR> &isin; <VAR>TRef</VAR><SUP>+</SUP><SUB><VAR>t</VAR></SUB>,
+    <VAR>s</VAR> &sube;
+    <VAR>TRef</VAR><SUP>+</SUP><SUB><VAR>t</VAR></SUB>&emsp;&rarr;<BR/>
+    &emsp;<VAR>ref</VAR><SUB><VAR>t</VAR> + 1</SUB>(<VAR>o</VAR>) :=
+    <VAR>s</VAR><BR/>
+    &emsp;<VAR>Don</VAR><SUB><VAR>t</VAR> + 1</SUB> :=
+    <VAR>Don</VAR><SUB><VAR>t</VAR></SUB> &cup; {<VAR>o</VAR> &isin;
+    <VAR>TRef</VAR><SUP>+</SUP><SUB><VAR>t</VAR></SUB> \
+    <VAR>TRef</VAR><SUP>+</SUP><SUB><VAR>t</VAR> + 1</SUB> | <VAR>o</VAR>
+    &notin;
+    <VAR>ref</VAR><SUP>+</SUP><SUB><VAR>t</VAR> + 1</SUB>(<VAR>o</VAR>)}</DD>
+
+    <DT><STRONG>create object</STRONG></DT>
+    <DD><VAR>o</VAR> &isin;
+    <VAR>Imm</VAR><SUB><VAR>t</VAR></SUB>&emsp;&rarr;<BR/>
+    &emsp;<VAR>TRef</VAR><SUB><VAR>t</VAR> + 1</SUB> :=
+    <VAR>TRef</VAR><SUB><VAR>t</VAR></SUB> &cup; {<VAR>o</VAR>}<BR/>
+    &emsp;<VAR>Imm</VAR><SUB><VAR>t</VAR> + 1</SUB> :=
+    <VAR>Imm</VAR><SUB><VAR>t</VAR></SUB> \ {<VAR>o</VAR>}</DD>
+</DL>
+
+<H1>Explanation</H1>
+
+<P>Over time, each individual object can transition from <VAR>Imm</VAR> to
+<VAR>Act</VAR>, and then to either <VAR>Don</VAR> or <VAR>Unr</VAR>.  Each
+object starts out as immaterial.  The set of data items owned by an immaterial
+object (and hence its set of directly referenced objects) is empty.  An object
+becomes active once it has been created, and stays active as long as it is
+referenced from the thread pool.  The set of data items owned by an object (and
+hence its set of directly referenced objects) can only change while the object
+is active.  An object becomes done once neither it is referenced from the thread
+pool, nor is it a member of an object reference circle.  An object becomes
+unreachable once it is no longer referenced from the thread pool, but is a
+member of an object reference circle.  Unreachable objects are a problem, as
+they can cause resource leaks.  A desired strategy is to keep
+<VAR>Unr</VAR><SUB><VAR>t</VAR></SUB> empty at all times.</P>
+
+<P>Concepts from different language bindings map to the model's abstractions in
+different ways.  Two prototypical languages are C++ (providing constructors and
+destructors of objects, but no garbage collection) and Java (providing
+constructors and finalizers of objects, with automatic garbage collection).  To
+implement the UNO object life cycle model, the C++ language binding uses
+reference counting for both internal and external (bridged) objects.  The Java
+language binding relies on garbage collection for internal objects, and uses
+garbage collection together with reference counting for external (bridged)
+objects.</P>
+
+<P>For C++, the relation is as follows.  Calling the constructor of an object
+coincides with the object's transition from immaterial to active.  After an
+object's transition from active to done, the destructor of that object will
+eventually be called.  The destructor is called immediately if the object is
+only referenced locally, but it can be delayed arbitrarily if the object is
+referenced externally (over a bridge).  Unreachable objects cause memory leaks,
+as their destructors are never called.</P>
+
+<P>For Java, the relation is slightly different.  Again, calling the constructor
+of an object coincides with the object's transition from immaterial to active.
+After an object's transition from active to done, the finalizer of that object
+will eventually be called.  For an unreachable object, the finalizer will
+eventually be called if the object is only referenced locally; the finalizer
+will not be called (and the object will cause a memory leak) if the object is
+referenced externally (over a bridge).</P>
+
+<P>This has two implications:</P>
+<OL>
+    <LI>Object reference circles have to be avoided, as they can cause objects
+    to become unreachable.</LI>
+
+    <LI>Neither the C++ destructor, nor the Java finalizer of an object are good
+    places to release any resources held by an object, as calling the destructor
+    or finalizer can be delayed arbitrarily.</LI>
+</OL>
+
+<H1>Application</H1>
+
+<P>There are various strategies how to avoid or break object reference circles,
+and how to make objects release resources in a timely fashion.</P>
+
+<H2>Object Ownership</H2>
+
+<P>One strategy to cope with object reference circles is to allow them, but to
+ensure that they are broken before the involved objects become unreachable.
+Lets assume that {<VAR>o</VAR><SUB>1</SUB>, &hellip;,
+<VAR>o</VAR><SUB><VAR>n</VAR></SUB>}, <VAR>n</VAR> &ge; 1, form an object
+reference circle.  Exactly one of the objects in the circle is required to have
+a so-called <DFN>owner</DFN> <VAR>o</VAR>&prime; &notin;
+{<VAR>o</VAR><SUB>1</SUB>, &hellip;, <VAR>o</VAR><SUB><VAR>n</VAR></SUB>};
+assume that <VAR>o</VAR>&prime; is the owner of&nbsp;<VAR>o</VAR><SUB>1</SUB>.
+As long as there are <EM>any</EM> references to the circle (from objects outside
+the circle, or from the thread pool), it is required that <VAR>o</VAR>&prime;
+has a reference to <VAR>o</VAR><SUB>1</SUB>.</P>
+
+<P>Whenever the reference from the owner&nbsp;<VAR>o</VAR>&prime; to
+<VAR>o</VAR><SUB>1</SUB> is the only outside reference to the circle, there is a
+choice.  Either, the owner decides to keep the circle active, so that other
+outside references to the circle can be made in the future.  Or, the owner
+decides to be done with the circle.  In that case, <VAR>o</VAR>&prime; must
+ensure that the circle does not become unreachable when it cuts its last outside
+reference to&nbsp;<VAR>o</VAR><SUB>1</SUB>.  The easiest solution is that
+<VAR>o</VAR>&prime; tells <VAR>o</VAR><SUB>1</SUB> to break the circle, by
+clearing all references from <VAR>o</VAR><SUB>1</SUB> to any of
+{<VAR>o</VAR><SUB>1</SUB>, &hellip;, <VAR>o</VAR><SUB><VAR>n</VAR></SUB>}.  Note
+that this only works if the circle is sufficiently simple, i.e., if removing the
+references from <VAR>o</VAR><SUB>1</SUB> does not introduce any new (smaller)
+object reference circles.</P>
+
+<P>There are two difficulties with this approach:</P>
+<OL>
+    <LI>The owner has to notice when it has the only outside reference to the
+    circle, so that it can decide whether to keep the circle active or to be
+    done with it.</LI>
+
+    <LI>When the owner tells the circle to break, it has to be ensured that the
+    chosen algorithm causes no objects to become unreachable (by introducing any
+    smaller object reference circles).</LI>
+</OL>
+
+<H2>Components</H2>
+
+<P>The approach of <CODE>com.sun.star.lang.XComponent</CODE> is an adaptation of
+the object ownership strategy, that tries to avoid the two difficulties
+mentioned above.</P>
+
+<P>First, the owned object&nbsp;<VAR>o</VAR><SUB>1</SUB> (implementing
+<CODE>com.sun.star.lang.XComponent</CODE>) has a special <DFN>disposed</DFN>
+state (to which it transitions when the owner calls the <CODE>dispose</CODE>
+method).  In that state, it is still active, but behaves more or less as if it
+was done.  This allows the owner to initiate breaking the circle even while
+there are still other outside references to it.  Via those other references,
+<VAR>o</VAR><SUB>1</SUB> can still be reached, but it will be in its disposed
+state.</P>
+
+<P>That way, the owner does not need to notice exactly when it has the only
+outside reference to the circle.  Of course, users
+of&nbsp;<VAR>o</VAR><SUB>1</SUB> now have to cope with the disposed state.
+Generally, it should still be ensured that there is as little access as possible
+to the object after it has been disposed.</P>
+
+<P>Second, the <CODE>XComponent</CODE> approach is designed for simple
+(subject&ndash;observer) patterns of object reference circles, where
+<VAR>o</VAR><SUB>1</SUB> (the <DFN>subject</DFN>) has a reference to each of
+{<VAR>o</VAR><SUB>2</SUB>, &hellip;, <VAR>o</VAR><SUB><VAR>n</VAR></SUB>} (the
+<DFN>observers</DFN>), and each of the observers has a reference to the subject.
+To break such a circle without introducing any new circles, it suffices to clear
+all the references from the subject to the observers, for example.</P>
+
+<H2>Weak References</H2>
+
+<P>The combination of <CODE>com.sun.star.uno.XWeak</CODE>/<!--
+--><CODE>XAdapter</CODE>/<CODE>XReference</CODE> allows to have weak references
+to objects.  As long as the weakly referenced object is active,
+<CODE>XAdapter</CODE>'s <CODE>queryAdapted</CODE> returns a (true) reference to
+the object.  Once the weakly referenced object is done or unreachable,
+<CODE>queryAdapted</CODE> returns either a (true) reference to the object (thus
+effectively resurrecting the object), or a null reference.  Weak references can
+be used to avoid creating object reference circles, by replacing sufficiently
+many (true) references with weak references.</P>
+
+<P><EM>It has to be further investigated how weak references fit in with the UNO
+object life cycle model, and the object ownership and <CODE>XComponent</CODE>
+strategies presented above.</EM></P>
+
+<H2>Disposing</H2>
+
+<P>As explained, a UNO object that has acquired any references should release
+them well before the language binding has determined that the object is no
+longer active (e.g., via a destructor or finalizer call), as there can be an
+arbitrarily long time span between the object becoming done or unreachable, and
+the destructor or finalizer being called.  The UNO object should offer an
+explicit mechanism to release its resources, probably as a method of a supported
+interface.</P>
+
+<P>This is similar to the object ownership/<CODE>XComponent</CODE> strategy, in
+that in both cases some entity has to determine when to dispose an object
+(typically, a method named <CODE>dispose</CODE>, or similar, is used in both
+cases: in the <CODE>XComponent</CODE> case, disposing is used to break object
+reference circles; in this case, disposing is used to make an object release its
+resources).  A theoretically appealing solution would be that the last user of
+an object holding resources calls <CODE>dispose</CODE> once it has finished
+using it, but it can be difficult to determine when this condition occurs.
+Again, a simple solution is to introduce a special <DFN>disposed</DFN> state for
+the object holding the resources.  Then, some entity can call
+<CODE>dispose</CODE> on the object without knowing exactly whether there are
+still other references to it (but those other references then have to cope with
+the object being in disposed state).</P>
+
+<TABLE WIDTH="100%" BORDER="0" CELLSPACING="0" CELLPADDING="4">
+    <TR><TD BGCOLOR="#666699">
+        <P><FONT COLOR="White">Author:
+        <A HREF="mailto:stephan.bergmann@sun.com"><FONT COLOR="White">Stephan
+        Bergmann</FONT></A> (last modification $Date: 2004/10/29 07:16:43 $).
+        Copyright 2003 <A HREF="http://www.openoffice.org"><FONT
+        COLOR="White">OpenOffice.org</FONT></A> Foundation.  All rights
+        reserved.</FONT></P>
+    </TD></TR>
+</TABLE>
+
+</BODY>
+</HTML>

Propchange: incubator/ooo/ooo-site/trunk/content/udk/common/man/lifecycle.html
------------------------------------------------------------------------------
    svn:eol-style = native



Mime
View raw message