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 [11/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/tutorial/writerdemo.html
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/udk/common/man/tutorial/writerdemo.html?rev=1206895&view=auto
==============================================================================
--- incubator/ooo/ooo-site/trunk/content/udk/common/man/tutorial/writerdemo.html (added)
+++ incubator/ooo/ooo-site/trunk/content/udk/common/man/tutorial/writerdemo.html Sun Nov 27 22:49:46 2011
@@ -0,0 +1,164 @@
+<html>
+<head>
+<style type="text/css">
+<!--
+a:active {color:blue;text-decoration:underline;}   /* selected link */
+a:visited {color:#8b008b;text-decoration:underline;}  /* visited link */
+a:link {color:blue;text-decoration:underline;}     /* unvisited link */
+a:hover {color:blue;background-color:#ffe4c4;text-decoration:underline;}   /* mouse over link */
+body { font-family:Helvetica,sans-serif;font-size:10pt;}
+p {font-family:Helvetica,sans-serif;font-size:10pt;}
+h1 { font-size:180%;color:black;}
+h2 { font-size:150%;color:black;}
+h3 { font-size:120%;color:black;font-weight:bold;}
+.code {white-space:nowrap;color:black;font-family:monospace;font-size:9pt;}
+.code_key {white-space:nowrap;color:blue;font-family:monospace;font-size:9pt;}
+.code_comment {white-space:nowrap;color:green;font-family:monospace;font-size:9pt;}
+-->
+</style>
+
+
+<meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">
+</head>
+<body>
+<p class="code">
+<span class="code_comment">'The service manager is always the starting point</span><br>
+<span class="code_comment">'If there is no office running then an office is started up</span><br>
+<span class="code_key">Set</span> objServiceManager= WScript.CreateObject("com.sun.star.ServiceManager")<br>
+<br>
+<span class="code_comment">'Create the CoreReflection service that is later used to create structs</span><br>
+<span class="code_key">Set</span> objCoreReflection= objServiceManager.createInstance("com.sun.star.reflection.CoreReflection")<br>
+<br>
+<span class="code_comment">'Create the Desktop</span><br>
+<span class="code_key">Set</span> objDesktop= objServiceManager.createInstance("com.sun.star.frame.Desktop")<br>
+<br>
+<span class="code_comment">'Open a new empty writer document</span><br>
+<Span Class="Code_Key">Dim</Span> args()<br>
+<span class="code_key">Set</span> objDocument= objDesktop.loadComponentFromURL("private:factory/swriter", "_blank", 0, args)<br>
+<br>
+<span class="code_comment">'Create a text object</span><br>
+<span class="code_key">Set</span> objText= objDocument.getText<br>
+<br>
+<span class="code_comment">'Create a cursor object</span><br>
+<span class="code_key">Set</span> objCursor= objText.createTextCursor<br>
+<br>
+<span class="code_comment">'Inserting some Text</span><br>
+objText.insertString objCursor, "The first line in the newly created text document." & vbLf, false<br>
+<br>
+<span class="code_comment">'Inserting a second line</span><br>
+objText.insertString objCursor, "Now we're in the second line", false<br>
+<br>
+<span class="code_comment">'Create instance of a text table with 4 columns and 4 rows</span><br>
+<span class="code_key">Set</span> objTable= objDocument.createInstance( "com.sun.star.text.TextTable")<br>
+objTable.initialize 4, 4<br>
+<br>
+<span class="code_comment">'Insert the table</span><br>
+objText.insertTextContent objCursor, objTable, false<br>
+<br>
+<span class="code_comment">'Get first row</span><br>
+<span class="code_key">Set</span> objRows= objTable.getRows<br>
+<span class="code_key">Set</span> objRow= objRows.getByIndex( 0)<br>
+<br>
+<span class="code_comment">'Set the table background color</span><br>
+objTable.setPropertyValue "BackTransparent", false<br>
+objTable.setPropertyValue "BackColor", 13421823<br>
+<br>
+<span class="code_comment">'Set a different background color for the first row</span><br>
+objRow.setPropertyValue "BackTransparent", false<br>
+objRow.setPropertyValue "BackColor", 6710932<br>
+<br>
+<span class="code_comment">'Fill the first table row</span><br>
+insertIntoCell "A1","FirstColumn", objTable <br>
+insertIntoCell "B1","SecondColumn", objTable<br>
+insertIntoCell "C1","ThirdColumn", objTable<br>
+insertIntoCell "D1","SUM", objTable<br>
+<br>
+objTable.getCellByName("A2").setValue 22.5<br>
+objTable.getCellByName("B2").setValue 5615.3<br>
+objTable.getCellByName("C2").setValue -2315.7<br>
+objTable.getCellByName("D2").setFormula"sum <A2:C2>"<br>
+<br>
+objTable.getCellByName("A3").setValue 21.5<br>
+objTable.getCellByName("B3").setValue 615.3<br>
+objTable.getCellByName("C3").setValue -315.7<br>
+objTable.getCellByName("D3").setFormula "sum <A3:C3>"<br>
+<br>
+objTable.getCellByName("A4").setValue 121.5<br>
+objTable.getCellByName("B4").setValue -615.3<br>
+objTable.getCellByName("C4").setValue 415.7<br>
+objTable.getCellByName("D4").setFormula "sum <A4:C4>"<br>
+<br>
+<span class="code_comment">'Change the CharColor and add a Shadow</span><br>
+objCursor.setPropertyValue "CharColor", 255<br>
+objCursor.setPropertyValue "CharShadowed", true<br>
+<br>
+<span class="code_comment">'Create a paragraph break</span><br>
+<span class="code_comment">'The second argument is a com::sun::star::text::ControlCharacter::PARAGRAPH_BREAK constant</span><br>
+objText.insertControlCharacter objCursor, 0 , false<br>
+<br>
+<span class="code_comment">'Inserting colored Text.</span><br>
+objText.insertString objCursor, " This is a colored Text - blue with shadow" & vbLf, false<br>
+<br>
+<span class="code_comment">'Create a paragraph break ( ControlCharacter::PARAGRAPH_BREAK).</span><br>
+objText.insertControlCharacter objCursor, 0, false <br>
+<br>
+<span class="code_comment">'Create a TextFrame.</span><br>
+<span class="code_key">Set</span> objTextFrame= objDocument.createInstance("com.sun.star.text.TextFrame")<br>
+<br>
+<span class="code_comment">'Create a Size struct.</span><br>
+<span class="code_key">Set</span> objSize= createStruct("com.sun.star.awt.Size")<br>
+objSize.Width= 15000<br>
+objSize.Height= 400<br>
+objTextFrame.setSize( objSize)<br>
+<br>
+<span class="code_comment">' TextContentAnchorType.AS_CHARACTER = 1</span><br>
+objTextFrame.setPropertyValue "AnchorType", 1<br>
+<br>
+<span class="code_comment">'insert the frame</span><br>
+objText.insertTextContent objCursor, objTextFrame, false<br>
+<br>
+<span class="code_comment">'Get the text object of the frame</span><br>
+<span class="code_key">Set</span> objFrameText= objTextFrame.getText<br>
+<br>
+<span class="code_comment">'Create a cursor object</span><br>
+<span class="code_key">Set</span> objFrameTextCursor= objFrameText.createTextCursor<br>
+<br>
+<span class="code_comment">'Inserting some Text</span><br>
+objFrameText.insertString objFrameTextCursor, "The first line in the newly created text frame.", _<br>
+                          false<br>
+objFrameText.insertString objFrameTextCursor, _<br>
+                          vbLf & "With this second line the height of the frame raises.", false <br>
+<br>
+<span class="code_comment">'Create a paragraph break</span><br>
+<span class="code_comment">'The second argument is a com::sun::star::text::ControlCharacter::PARAGRAPH_BREAK constant</span><br>
+objFrameText.insertControlCharacter objCursor, 0 , false<br>
+<br>
+<span class="code_comment">'Change the CharColor and add a Shadow</span><br>
+objCursor.setPropertyValue "CharColor", 65536<br>
+objCursor.setPropertyValue "CharShadowed", false<br>
+<br>
+<span class="code_comment">'Insert another string</span><br>
+objText.insertString objCursor, " That's all for now !!", false<br>
+<br>
+<span class="code_key">On Error Resume Next</span><br>
+<span class="code_key">&nbsp;&nbsp;If</span> Err <span class="code_key">Then</span><br>
+&nbsp;&nbsp;MsgBox "An error occurred"<br>
+<span class="code_key">End If</span><br>
+<br>
+<br>
+<span class="code_key">Sub</span> insertIntoCell( strCellName, strText, objTable) <br>
+&nbsp;&nbsp; <span class="code_key">Set</span> objCellText= objTable.getCellByName( strCellName)<br>
+&nbsp;&nbsp; <span class="code_key">Set</span> objCellCursor= objCellText.createTextCursor<br>
+&nbsp;&nbsp; objCellCursor.setPropertyValue "CharColor",16777215<br>
+&nbsp;&nbsp; objCellText.insertString objCellCursor, strText, false<br>
+<span class="code_key">End Sub</span><br>
+<br>
+<span class="code_key">Function</span> createStruct( strTypeName)<br>
+&nbsp;&nbsp; <span class="code_key">Set</span> classSize= objCoreReflection.forName( strTypeName)<br>
+&nbsp;&nbsp; <Span Class="Code_Key">Dim</Span> aStruct<br>
+&nbsp;&nbsp; classSize.createObject aStruct<br>
+&nbsp;&nbsp; <span class="code_key">Set</span> createStruct= aStruct<br>
+<span class="code_key">End Function</span><br>
+</p>
+</body>
+</html>
\ No newline at end of file

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

Added: incubator/ooo/ooo-site/trunk/content/udk/common/man/typenames.html
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/udk/common/man/typenames.html?rev=1206895&view=auto
==============================================================================
--- incubator/ooo/ooo-site/trunk/content/udk/common/man/typenames.html (added)
+++ incubator/ooo/ooo-site/trunk/content/udk/common/man/typenames.html Sun Nov 27 22:49:46 2011
@@ -0,0 +1,298 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html>
+<head>
+    <title>Type Names</title>
+    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
+<style type="text/css">
+	<!--
+h1 { text-align:center; margin-top: 0.2cm; text-decoration: none; color: #ffffff; font-size: 6; margin-top: 0.2cm}
+h2 { margin-top: 0.2cm; margin-bottom=0.1cm; color: #ffffff;
+     background-color: #666699 }
+li {margin-bottom: 0.2cm;}
+dl {margin-bottom: 0.2cm;}
+dd {margin-bottom: 0.2cm;}
+dt {margin-bottom: 0.2cm;}
+-->
+</style>
+</head>
+<body>
+
+<table width="100%" border="0" cellspacing="0" cellpadding="4" bgcolor="#666699"
+     summary=header>
+    <tr><td>
+        <h1> Type Names </h1>
+		</td><td>
+            <a href="http://www.openoffice.org"><img
+            src="../../images/open_office_org_logo.gif" alt="OpenOffice.org"
+            align="right" border="0"/></a>
+    </td></tr>
+</table>
+
+<p>This document describes how core UNO types (see
+<a href="typesystem.html"><cite>UNO Type System</cite></a>) and related UNOIDL
+entities (like typedefs, modules, and services) are named in binary UNO and in
+the UNO type registry.</p>
+
+<table border="1" summary="Uno types">
+    <thead>
+        <tr>
+            <th>UNO Type <var>t</var></th>
+            <th>Binary UNO Type Name <var>&beta;</var>(<var>t</var>)</th>
+            <th>UNO Type Registry Name <var>&rho;</var>(<var>t</var>)</th>
+        </tr>
+    </thead>
+    <tbody>
+        <tr>
+            <td><code>VOID</code></td>
+            <td><code>void</code></td>
+            <td><code>void</code></td>
+        </tr>
+        <tr>
+            <td><code>BOOLEAN</code></td>
+            <td><code>boolean</code></td>
+            <td><code>boolean</code></td>
+        </tr>
+        <tr>
+            <td><code>BYTE</code></td>
+            <td><code>byte</code></td>
+            <td><code>byte</code></td>
+        </tr>
+        <tr>
+            <td><code>SHORT</code></td>
+            <td><code>short</code></td>
+            <td><code>short</code></td>
+        </tr>
+        <tr>
+            <td><code>UNSIGNED SHORT</code></td>
+            <td><code>unsigned short</code></td>
+            <td><code>unsigned short</code></td>
+        </tr>
+        <tr>
+            <td><code>LONG</code></td>
+            <td><code>long</code></td>
+            <td><code>long</code></td>
+        </tr>
+        <tr>
+            <td><code>UNSIGNED LONG</code></td>
+            <td><code>unsigned long</code></td>
+            <td><code>unsigned long</code></td>
+        </tr>
+        <tr>
+            <td><code>HYPER</code></td>
+            <td><code>hyper</code></td>
+            <td><code>hyper</code></td>
+        </tr>
+        <tr>
+            <td><code>UNSIGNED HYPER</code></td>
+            <td><code>unsigned hyper</code></td>
+            <td><code>unsigned hyper</code></td>
+        </tr>
+        <tr>
+            <td><code>FLOAT</code></td>
+            <td><code>float</code></td>
+            <td><code>float</code></td>
+        </tr>
+        <tr>
+            <td><code>DOUBLE</code></td>
+            <td><code>double</code></td>
+            <td><code>double</code></td>
+        </tr>
+        <tr>
+            <td><code>CHAR</code></td>
+            <td><code>char</code></td>
+            <td><code>char</code></td>
+        </tr>
+        <tr>
+            <td><code>STRING</code></td>
+            <td><code>string</code></td>
+            <td><code>string</code></td>
+        </tr>
+        <tr>
+            <td><code>TYPE</code></td>
+            <td><code>type</code></td>
+            <td><code>type</code></td>
+        </tr>
+        <tr>
+            <td><code>ANY</code></td>
+            <td><code>any</code></td>
+            <td><code>any</code></td>
+        </tr>
+        <tr>
+            <td>Sequence type with component type&nbsp;<var>t</var>&prime;</td>
+            <td><code>[]</code><var>&beta;</var>(<var>t</var>&prime;)</td>
+            <td><code>[]</code><var>&rho;</var>(<var>t</var>&prime;)</td>
+        </tr>
+        <tr>
+            <td>Enum type with structured name <var>n</var><sub>1</sub><!--
+            --><code>.</code>&hellip;<code>.</code><!--
+            --><var>n</var><sub><var>k</var></sub>, <var>k</var> &gt; 0</td>
+            <td><var>n</var><sub>1</sub><code>.</code>&hellip;<code>.</code><!--
+            --><var>n</var><sub><var>k</var></sub></td>
+            <td><var>n</var><sub>1</sub><code>/</code>&hellip;<code>/</code><!--
+            --><var>n</var><sub><var>k</var></sub></td>
+        </tr>
+        <tr>
+            <td>Plain struct type with structured name
+            <var>n</var><sub>1</sub><code>.</code>&hellip;<code>.</code><!--
+            --><var>n</var><sub><var>k</var></sub>, <var>k</var> &gt; 0</td>
+            <td><var>n</var><sub>1</sub><code>.</code>&hellip;<code>.</code><!--
+            --><var>n</var><sub><var>k</var></sub></td>
+            <td><var>n</var><sub>1</sub><code>/</code>&hellip;<code>/</code><!--
+            --><var>n</var><sub><var>k</var></sub></td>
+        </tr>
+        <tr>
+            <td>Instantiated polymorphic struct type with polymorphic struct
+            type template with structured name <var>n</var><sub>1</sub><!--
+            --><code>.</code>&hellip;<code>.</code><!--
+            --><var>n</var><sub><var>kn</var></sub>, <var>kn</var> &gt; 0, and
+            type arguments &lang;<var>t</var><sub>1</sub>, &hellip;,
+            <var>t</var><sub><var>kt</var></sub>&rang;, <var>kt</var> &gt;
+            0</td>
+            <td><var>n</var><sub>1</sub><code>.</code>&hellip;<code>.</code><!--
+            --><var>n</var><sub><var>kn</var></sub><code>&lt;</code><!--
+            --><var>&beta;</var>(<var>t</var><sub>1</sub>)<code>,</code><!--
+            -->&hellip;<code>,</code><!--
+            --><var>&beta;</var>(<var>t</var><sub><var>kt</var></sub>)<!--
+            --><code>&gt;</code></td>
+            <td><var>n</var><sub>1</sub><code>/</code>&hellip;<code>/</code><!--
+            --><var>n</var><sub><var>kn</var></sub><code>&lt;</code><!--
+            --><var>&rho;</var>(<var>t</var><sub>1</sub>)<code>,</code><!--
+            -->&hellip;<code>,</code><!--
+            --><var>&rho;</var>(<var>t</var><sub><var>kt</var></sub>)<!--
+            --><code>&gt;</code></td>
+        </tr>
+        <tr>
+            <td>Exception type with structured name <var>n</var><sub>1</sub><!--
+            --><code>.</code>&hellip;<code>.</code><!--
+            --><var>n</var><sub><var>k</var></sub>, <var>k</var> &gt; 0</td>
+            <td><var>n</var><sub>1</sub><code>.</code>&hellip;<code>.</code><!--
+            --><var>n</var><sub><var>k</var></sub></td>
+            <td><var>n</var><sub>1</sub><code>/</code>&hellip;<code>/</code><!--
+            --><var>n</var><sub><var>k</var></sub></td>
+        </tr>
+        <tr>
+            <td>Interface type with structured name <var>n</var><sub>1</sub><!--
+            --><code>.</code>&hellip;<code>.</code><!--
+            --><var>n</var><sub><var>k</var></sub>, <var>k</var> &gt; 0</td>
+            <td><var>n</var><sub>1</sub><code>.</code>&hellip;<code>.</code><!--
+            --><var>n</var><sub><var>k</var></sub></td>
+            <td><var>n</var><sub>1</sub><code>/</code>&hellip;<code>/</code><!--
+            --><var>n</var><sub><var>k</var></sub></td>
+        </tr>
+        <tr>
+            <td><em>Polymorphic struct type template with structured name
+            <var>n</var><sub>1</sub><code>.</code>&hellip;<code>.</code><!--
+            --><var>n</var><sub><var>k</var></sub>, <var>k</var> &gt;
+            0</em></td>
+            <td>&mdash;</td>
+            <td><var>n</var><sub>1</sub><code>/</code>&hellip;<code>/</code><!--
+            --><var>n</var><sub><var>k</var></sub></td>
+        </tr>
+        <tr>
+            <td><em>Typedef with structured name <var>n</var><sub>1</sub><!--
+            --><code>.</code>&hellip;<code>.</code><!--
+            --><var>n</var><sub><var>k</var></sub>, <var>k</var> &gt;
+            0</em></td>
+            <td>&mdash;</td>
+            <td><var>n</var><sub>1</sub><code>/</code>&hellip;<code>/</code><!--
+            --><var>n</var><sub><var>k</var></sub></td>
+        </tr>
+        <tr>
+            <td><em>Module with structured name <var>n</var><sub>1</sub><!--
+            --><code>.</code>&hellip;<code>.</code><!--
+            --><var>n</var><sub><var>k</var></sub>, <var>k</var> &gt;
+            0</em></td>
+            <td>&mdash;</td>
+            <td><var>n</var><sub>1</sub><code>/</code>&hellip;<code>/</code><!--
+            --><var>n</var><sub><var>k</var></sub></td>
+        </tr>
+        <tr>
+            <td><em>Constant group with structured name
+            <var>n</var><sub>1</sub><code>.</code>&hellip;<code>.</code><!--
+            --><var>n</var><sub><var>k</var></sub>, <var>k</var> &gt;
+            0</em></td>
+            <td>&mdash;</td>
+            <td><var>n</var><sub>1</sub><code>/</code>&hellip;<code>/</code><!--
+            --><var>n</var><sub><var>k</var></sub></td>
+        </tr>
+        <tr>
+            <td><em>Service with structured name <var>n</var><sub>1</sub><!--
+            --><code>.</code>&hellip;<code>.</code><!--
+            --><var>n</var><sub><var>k</var></sub>, <var>k</var> &gt;
+            0</em></td>
+            <td>&mdash;</td>
+            <td><var>n</var><sub>1</sub><code>/</code>&hellip;<code>/</code><!--
+            --><var>n</var><sub><var>k</var></sub></td>
+        </tr>
+        <tr>
+            <td><em>Singleton with structured name <var>n</var><sub>1</sub><!--
+            --><code>.</code>&hellip;<code>.</code><!--
+            --><var>n</var><sub><var>k</var></sub>, <var>k</var> &gt;
+            0</em></td>
+            <td>&mdash;</td>
+            <td><var>n</var><sub>1</sub><code>/</code>&hellip;<code>/</code><!--
+            --><var>n</var><sub><var>k</var></sub></td>
+        </tr>
+    </tbody>
+</table>
+
+<p>Annotations:</p>
+<ul>
+    <li>Entries given in <em>italics</em> denote entities that are not types of
+    the core UNO type system.  They also have no correspondence in binary
+    UNO.</li>
+
+    <li>A <dfn>structured name</dfn> <var>n</var><sub>1</sub><code>.</code><!--
+    -->&hellip;<code>.</code><var>n</var><sub><var>k</var></sub>, <var>k</var>
+    &gt; 0, consists of a sequence of <dfn>structured name parts</dfn>,
+    separated by full stops (<code>.</code>).  Each structured name part must
+    satisfy the lexical rules
+<p>&emsp;<var>structured-name-part</var> = <var>lowercase-name</var> /
+    <var>uppercase-name</var><br/>
+    &emsp;<var>lowercase-name</var> = <var>lowercase</var>
+    *<var>alphanum</var><br/>
+    &emsp;<var>uppercase-name</var> = <var>uppercase</var> *<var>alphanum</var>
+    *(<code>_</code> +<var>alphanum</var>)<br/>
+    &emsp;<var>alphanum</var> = <var>alpha</var> / <var>digit</var><br/>
+    &emsp;<var>alpha</var> = <var>lowercase</var> / <var>uppercase</var><br/>
+    &emsp;<var>lowercase</var> = <code>a</code>&ndash;<code>z</code><br/>
+    &emsp;<var>uppercase</var> = <code>A</code>&ndash;<code>Z</code><br/>
+    &emsp;<var>digit</var> = <code>0</code>&ndash;<code>9</code></p>
+<li>For the purposes of binary UNO and the UNO type registry, it is an error for
+    any enum type, plain struct type, polymorphic struct type template,
+    exception type, or interface type to have a name that is not a structured
+    name, or that is a structured name (consisting of only a single structured
+    name part) that is equal to any of <code>void</code>, <code>boolean</code>,
+    <code>byte</code>, <code>short</code>, <code>long</code>,
+    <code>hyper</code>, <code>float</code>, <code>double</code>,
+    <code>char</code>, <code>string</code>, <code>type</code>, or
+    <code>any</code>.</li>
+<li>For the purposes of binary UNO, it is an error for any enum type, plain
+    struct type, polymorphic struct type template, exception type, or interface
+    type to have a name that is the same as the name of another enum type, plain
+    structure type, polymorphic struct type template, exception type, or
+    interface type.</li>
+<li>For the purposes of the UNO type registry, it is an error for any enum type,
+    plain struct type, polymorphic struct type template, exception type, or
+    interface type to have a name that is the same as the name of another enum
+    type, plain structure type, polymorphic struct type template, exception
+    type, interface type, typedef, module, constant group, service, or
+    singleton.</li>
+
+<li>For the purposes of binary UNO and the UNO type registry, it is an error
+    for any polymorphic struct type template to have zero type parameters.</li>
+</ul>
+
+<table width="100%" border="0" cellspacing="0" cellpadding="4" summary=footer>
+    <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/11/30 12:25:04 $).
+        Copyright 2004 <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/typenames.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/ooo/ooo-site/trunk/content/udk/common/man/typesystem.html
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/udk/common/man/typesystem.html?rev=1206895&view=auto
==============================================================================
--- incubator/ooo/ooo-site/trunk/content/udk/common/man/typesystem.html (added)
+++ incubator/ooo/ooo-site/trunk/content/udk/common/man/typesystem.html Sun Nov 27 22:49:46 2011
@@ -0,0 +1,538 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+    "http:://www.w3.org/TR/html4/strict.dtd">
+<HTML>
+<HEAD>
+    <TITLE>UNO Type System</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 Type
+            System</FONT></H1>
+    </TD></TR>
+</TABLE>
+<HR noshade size="3"/>
+
+<H1>The UNO Type System</H1>
+
+<P>This document describes the type system of core UNO, a distributed
+computation model.  It should not be confused with the larger type system of
+UNOIDL, a description language used to notate core UNO types and related,
+non&ndash;core-UNO entities like modules, typedefs, and constants.</P>
+
+<P>The UNO type system comprises two kinds of <DFN>entities</DFN>, namely
+<DFN>types</DFN> and <DFN>polymorphic struct type templates</DFN>.  Each entity
+has a unique <DFN>name</DFN>.</P>
+
+<P>The names of UNO type system entities are taken from an alphabet consisting
+of the Latin capital letters
+&ldquo;<CODE>A</CODE>&rdquo;&ndash;&ldquo;<CODE>Z</CODE>&rdquo;, the Latin small
+letters &ldquo;<CODE>a</CODE>&rdquo;&ndash;&ldquo;<CODE>z</CODE>&rdquo;, the
+digits &ldquo;<CODE>0</CODE>&rdquo;&ndash;&ldquo;<CODE>9</CODE>&rdquo;, the low
+line&nbsp;&ldquo;<CODE>_</CODE>&rdquo;, the full
+stop&nbsp;&ldquo;<CODE>.</CODE>&rdquo;, the
+comma&nbsp;&ldquo;<CODE>,</CODE>&rdquo;, the left square
+bracket&nbsp;&ldquo;<CODE>[</CODE>&rdquo;, the right square
+bracket&nbsp;&ldquo;<CODE>]</CODE>&rdquo;, the less-than
+sign&nbsp;&ldquo;<CODE>&lt;</CODE>&rdquo;, the greater-than
+sign&nbsp;&ldquo;<CODE>&gt;</CODE>&rdquo;, and the space&nbsp;&ldquo; &rdquo;.
+The names of certain entities are built from <DFN>identifiers</DFN>, which are
+specified by the following grammar:</P>
+
+<P>&nbsp;<VAR>identifier</VAR> &rarr; <VAR>segment</VAR>
+    (<CODE>.</CODE> <VAR>segment</VAR>)<SUP>*</SUP><BR/>
+&nbsp;<VAR>segment</VAR> &rarr; <VAR>blocks</VAR> | <VAR>block</VAR><BR/>
+&nbsp;<VAR>blocks</VAR> &rarr; <VAR>capital</VAR> <VAR>other</VAR><SUP>*</SUP>
+    (<CODE>_</CODE> <VAR>block</VAR>)<SUP>*</SUP><BR/>
+&nbsp;<VAR>block</VAR> &rarr; <VAR>other</VAR><SUP>+</SUP><BR/>
+&nbsp;<VAR>other</VAR> &rarr; <VAR>capital</VAR> |
+    <CODE>a</CODE>&ndash<CODE>z</CODE> | <CODE>0</CODE>&ndash<CODE>9</CODE><BR/>
+&nbsp;<VAR>capital</VAR> &rarr; <CODE>A</CODE>&ndash<CODE>Z</CODE></P>
+
+<P>(Since the names of UNO type system entities are unique, and some entities
+have certain fixed names that match the grammar for identifiers, and other
+entities have names that are arbitrary identifiers, it follows that those
+entities of the latter kind may not have as names identifiers that are already
+reserved by entities of the first kind&mdash;namely
+&ldquo;<CODE>void</CODE>&rdquo;, &ldquo;<CODE>boolean</CODE>&rdquo;,
+&ldquo;<CODE>byte</CODE>&rdquo;, &ldquo;<CODE>short</CODE>&rdquo;,
+&ldquo;<CODE>long</CODE>&rdquo;, &ldquo;<CODE>hyper</CODE>&rdquo;,
+&ldquo;<CODE>float</CODE>&rdquo;, &ldquo;<CODE>double</CODE>&rdquo;,
+&ldquo;<CODE>char</CODE>&rdquo;, &ldquo;<CODE>string</CODE>&rdquo;,
+&ldquo;<CODE>type</CODE>&rdquo;, and &ldquo;<CODE>any</CODE>&rdquo;.)</P>
+
+<P>Each UNO type&nbsp;<VAR>t</VAR> has a non-empty set of
+<DFN>values</DFN>&nbsp;<VAR>V</VAR><SUB><VAR>t</VAR></SUB>, and a
+<DFN>default value</DFN> <VAR>d</VAR><SUB><VAR>t</VAR></SUB> &isin;
+<VAR>V</VAR><SUB><VAR>t</VAR></SUB>.  Two UNO values are <DFN>equal</DFN> if and
+only if they have the same type&nbsp;<VAR>t</VAR> and both denote the same
+element of&nbsp;<VAR>V</VAR><SUB><VAR>t</VAR></SUB>.</P>
+
+<P>The UNO type system consists of the following (sets of) types:</P>
+<DL>
+    <DT><CODE>VOID</CODE></DT><DD>Values: {<CODE>unit</CODE>}.  Default value:
+    <CODE>unit</CODE>.  Name: &ldquo;<CODE>void</CODE>&rdquo;.</DD>
+
+    <DT><CODE>BOOLEAN</CODE></DT><DD>Values: {<CODE>false</CODE>,
+    <CODE>true</CODE>}.  Default value: <CODE>false</CODE>.  Name:
+    &ldquo;<CODE>boolean</CODE>&rdquo;.</DD>
+
+    <DT><CODE>BYTE</CODE></DT><DD>Values: [&minus;2<SUP>7</SUP> &hellip;
+    2<SUP>7</SUP>&nbsp;&minus;&nbsp;1].  Default value:&nbsp;0.  Name:
+    &ldquo;<CODE>byte</CODE>&rdquo;.</DD>
+
+    <DT><CODE>SHORT</CODE></DT><DD>Values: [&minus;2<SUP>15</SUP> &hellip;
+    2<SUP>15</SUP>&nbsp;&minus;&nbsp;1].  Default value:&nbsp;0.  Name:
+    &ldquo;<CODE>short</CODE>&rdquo;.</DD>
+
+    <DT><CODE>UNSIGNED SHORT</CODE></DT><DD>Values: [0 &hellip;
+    2<SUP>16</SUP>&nbsp;&minus;&nbsp;1].  Default value:&nbsp;0.  Name:
+    &ldquo;<CODE>unsigned short</CODE>&rdquo;.</DD>
+
+    <DT><CODE>LONG</CODE></DT><DD>Values: [&minus;2<SUP>31</SUP> &hellip;
+    2<SUP>31</SUP>&nbsp;&minus;&nbsp;1].  Default value:&nbsp;0.  Name:
+    &ldquo;<CODE>long</CODE>&rdquo;.</DD>
+
+    <DT><CODE>UNSIGNED LONG</CODE></DT><DD>Values: [0 &hellip;
+    2<SUP>32</SUP>&nbsp;&minus;&nbsp;1].  Default value:&nbsp;0.  Name:
+    &ldquo;<CODE>unsigned long</CODE>&rdquo;.</DD>
+
+    <DT><CODE>HYPER</CODE></DT><DD>Values: [&minus;2<SUP>63</SUP> &hellip;
+    2<SUP>63</SUP>&nbsp;&minus;&nbsp;1].  Default value:&nbsp;0.  Name:
+    &ldquo;<CODE>hyper</CODE>&rdquo;.</DD>
+
+    <DT><CODE>UNSIGNED HYPER</CODE></DT><DD>Values: [0 &hellip;
+    2<SUP>64</SUP>&nbsp;&minus;&nbsp;1].  Default value:&nbsp;0.  Name:
+    &ldquo;<CODE>unsigned hyper</CODE>&rdquo;.</DD>
+
+    <DT><CODE>FLOAT</CODE></DT><DD>Values: IEEE-754 single precision.  Default
+    value:&nbsp;0.  Name: &ldquo;<CODE>float</CODE>&rdquo;.</DD>
+
+    <DT><CODE>DOUBLE</CODE></DT><DD>Values: IEEE-754 double precision.  Default
+    value:&nbsp;0.  Name: &ldquo;<CODE>double</CODE>&rdquo;.</DD>
+
+    <DT><CODE>CHAR</CODE></DT><DD>Values: individual UTF-16 code units (see
+    definition&nbsp;D28a in
+    <A href="http://www.unicode.org/versions/Unicode4.0.0/ch03.pdf"><CITE>The
+    Unicode Standard, Version&nbsp;4.0; Chapter&nbsp;3:
+    Conformance</CITE></A>).  Default value: the UTF-16 code unit&nbsp;0.  Name:
+    &ldquo;<CODE>char</CODE>&rdquo;.</DD>
+
+    <DT><CODE>STRING</CODE></DT><DD>Values: arbitrary-length sequences of
+    Unicode scalar values (see definition&nbsp;D28 in
+    <A href="http://www.unicode.org/versions/Unicode4.0.0/ch03.pdf"><CITE>The
+    Unicode Standard, Version&nbsp;4.0; Chapter&nbsp;3:
+    Conformance</CITE></A>).  Default value: the zero-length sequence.  Name:
+    &ldquo;<CODE>string</CODE>&rdquo;.</DD>
+
+    <DT><CODE>TYPE</CODE></DT><DD>The values of this type are the disjoint union
+    of the following six sets of type descriptions:
+    <OL>
+        <LI>The set of descriptions for the simple types {<CODE>void</CODE>,
+        <CODE>boolean</CODE>, <CODE>byte</CODE>, <CODE>short</CODE>,
+        <CODE>unsigned short</CODE>, <CODE>long</CODE>, <CODE>unsigned
+        long</CODE>, <CODE>hyper</CODE>, <CODE>unsigned hyper</CODE>,
+        <CODE>float</CODE>, <CODE>double</CODE>, <CODE>char</CODE>,
+        <CODE>string</CODE>, <CODE>type</CODE>, <CODE>any</CODE>}.</LI>
+
+        <LI>The set of descriptions for sequence types, recursively consisting
+        of all the values of type <CODE>TYPE</CODE>.</LI>
+
+        <LI>The set of descriptions for enum types, consisting of all names of
+        enum types.</LI>
+
+        <LI>The set of descriptions for struct types, consisting of all names of
+        struct types.</LI>
+
+        <LI>The set of descriptions for exception types, consisting of all names
+        of exception types.</LI>
+
+        <LI>The set of descriptions for interface types, consisting of all names
+        of interface types.</LI>
+    </OL>  Default value: the description for the simple type <CODE>void</CODE>
+    (taken from the first of the six sets).  Name:
+    &ldquo;<CODE>type</CODE>&rdquo;.</DD>
+
+    <DT><CODE>ANY</CODE></DT><DD>The values of this type are the disjoint union
+    of the values of all non-any types.  Default value:
+    <VAR>d</VAR><SUB><CODE>VOID</CODE></SUB>.  Name:
+    &ldquo;<CODE>any</CODE>&rdquo;.<BR/>
+    A value of type <CODE>ANY</CODE> might be written as the tuple
+    &lang;<VAR>t</VAR>,&nbsp;<VAR>v</VAR>&rang;, where <VAR>t</VAR> is a non-any
+    type, and <VAR>v</VAR> is a value of type&nbsp;<VAR>t</VAR>.</DD>
+
+    <DT>Sequence types</DT><DD>For each non-void, non-exception
+    type&nbsp;<VAR>t</VAR>, there is a corresponding sequence type, whose values
+    are arbitrary-length sequences of values of the corresponding component
+    type&nbsp;<VAR>t</VAR>, and whose default value is the zero-length sequence.
+    The name of a sequence type is &ldquo;[]&rdquo; followed by the name of the
+    component type.<BR/>
+    A value of the sequence type with component type&nbsp;<VAR>t</VAR> might be
+    written as the sequence (<VAR>v</VAR><SUB>1</SUB>, &hellip;,
+    <VAR>v</VAR><SUB><VAR>k</VAR></SUB>), where <VAR>k</VAR> &ge; 0 is the
+    length, and each <VAR>v</VAR><SUB><VAR>i</VAR></SUB> is a value of
+    type&nbsp;<VAR>t</VAR>, for 0 &le; <VAR>i</VAR> &lt; <VAR>k</VAR>.</DD>
+
+    <DT>Enum types</DT><DD>For a (user-defined) enum type that contains members
+    of numeric values <VAR>n</VAR><SUB>1</SUB>, &hellip;,
+    <VAR>n</VAR><SUB><VAR>k</VAR></SUB>, (where <VAR>k</VAR> &gt; 0, and each
+    <VAR>n</VAR><SUB><VAR>i</VAR></SUB> is in the range [&minus;2<SUP>31</SUP>
+    &hellip; 2<SUP>31</SUP>&nbsp;&minus;&nbsp;1]), the values of that type are
+    {<VAR>n</VAR><SUB>1</SUB>, &hellip;, <VAR>n</VAR><SUB><VAR>k</VAR></SUB>}.
+    Default value:&nbsp;<VAR>n</VAR><SUB>1</SUB>.  The name of an enum type is
+    an identifier.<BR/>
+    An enum type might be written as the set {<VAR>n</VAR><SUB>1</SUB>, &hellip;
+    <VAR>n</VAR><SUB><VAR>k</VAR></SUB>}, where <VAR>k</VAR> &gt; 0, and
+    <VAR>n</VAR><SUB><VAR>i</VAR></SUB> &isin; [&minus;2<SUP>31</SUP> &hellip;
+    2<SUP>31</SUP>&nbsp;&minus;&nbsp;1], for 0 &le; <VAR>i</VAR> &lt;
+    <VAR>k</VAR>.  A value of that type might be written as <VAR>n</VAR> &isin;
+    {<VAR>n</VAR><SUB>1</SUB>, &hellip;
+    <VAR>n</VAR><SUB><VAR>k</VAR></SUB>}.</DD>
+
+    <DT>Struct types</DT><DD>The set of struct types is partitioned into the set
+    of <DFN>plain struct types</DFN> and the set of <DFN>instantiated
+    polymorphic struct types</DFN>.<BR/>
+    A (user-defined) <DFN>plain struct type</DFN> has an optional <DFN>direct
+    base</DFN>&nbsp;<VAR>b</VAR>, where <VAR>b</VAR> is a plain struct type, and
+    a list of <DFN>direct members</DFN> &lang;<VAR>m</VAR><SUB>1</SUB>,
+    &hellip;, <VAR>m</VAR><SUB><VAR>km</VAR></SUB>&rang;, <VAR>km</VAR> &ge; 0,
+    where each <VAR>m</VAR><SUB><VAR>i</VAR></SUB> has a name and a non-void,
+    non-exception type.  The name of a plain struct type is an identifier.<BR/>
+    A (user-defined) <DFN>polymorphic struct type template</DFN> has a list of
+    <DFN>type parameters</DFN> &lang;<VAR>&tau;</VAR><SUB>1</SUB>, &hellip;,
+    <VAR>&tau;</VAR><SUB><VAR>k&tau;</VAR></SUB>&rang;, <VAR>k&tau;</VAR> &gt;
+    0, and a list of <DFN>direct members</DFN> &lang;<VAR>m</VAR><SUB>1</SUB>,
+    &hellip;, <VAR>m</VAR><SUB><VAR>km</VAR></SUB>&rang;, <VAR>km</VAR> &ge; 0,
+    where each <VAR>m</VAR><SUB><VAR>i</VAR></SUB> has a name and either an
+    <DFN>explicit type</DFN> (a non-void, non-exception type) or a
+    <DFN>parameterized type</DFN> (a <VAR>&tau;</VAR><SUB><VAR>i</VAR></SUB>
+    with 0 &le; <VAR>i</VAR> &lt; <VAR>k&tau;</VAR>).  The name of a polymorphic
+    struct type template is an identifier.<BR/>
+    An <DFN>instantiated polymorphic struct type</DFN> is an instantiation of a
+    polymorphic struct type template:  Let <VAR>s</VAR> be a polymorphic struct
+    type template with type parameters &lang;<VAR>&tau;</VAR><SUB>1</SUB>,
+    &hellip;, <VAR>&tau;</VAR><SUB><VAR>k&tau;</VAR></SUB>&rang;,
+    <VAR>k&tau;</VAR> &gt; 0, and direct members &lang;<VAR>m</VAR><SUB>1</SUB>,
+    &hellip;, <VAR>m</VAR><SUB><VAR>km</VAR></SUB>&rang;, <VAR>km</VAR> &ge; 0.
+    Let &lang;<VAR>a</VAR><SUB>1</SUB>, &hellip;,
+    <VAR>a</VAR><SUB><VAR>k&tau;</VAR></SUB>&rang;, where each
+    <VAR>a</VAR><SUB><VAR>i</VAR></SUB> is a non-void, non-exception type that
+    is not an unsigned type, be a list of <DFN>type arguments</DFN>.  Then the
+    instantiated polymorphic struct type
+    <VAR>s</VAR>&lang;<VAR>a</VAR><SUB>1</SUB>, &hellip;,
+    <VAR>a</VAR><SUB><VAR>k&tau;</VAR></SUB>&rang; has a list of <DFN>direct
+    members</DFN> &lang;<VAR>m</VAR>&prime;<SUB>1</SUB>, &hellip;,
+    <VAR>m</VAR>&prime;<SUB><VAR>km</VAR></SUB>&rang;, where each
+    <VAR>m</VAR>&prime;<SUB><VAR>i</VAR></SUB> has the same name as
+    <VAR>m</VAR><SUB><VAR>i</VAR></SUB> and the following type: if
+    <VAR>m</VAR><SUB><VAR>i</VAR></SUB> has the explicit type&nbsp;<VAR>t</VAR>,
+    then <VAR>m</VAR>&prime;<SUB><VAR>i</VAR></SUB> has type&nbsp;<VAR>t</VAR>;
+    otherwise, if <VAR>m</VAR><SUB><VAR>i</VAR></SUB> has the parameterized
+    type&nbsp;<VAR>&tau;</VAR><SUB><VAR>j</VAR></SUB>, then
+    <VAR>m</VAR>&prime;<SUB><VAR>i</VAR></SUB> has
+    type&nbsp;<VAR>a</VAR><SUB><VAR>j</VAR></SUB>.  (An instantiated polymorphic
+    struct type may not have a direct base, and may not be the direct base of a
+    struct type.)  The name of <VAR>s</VAR>&lang;<VAR>a</VAR><SUB>1</SUB>,
+    &hellip;, <VAR>a</VAR><SUB><VAR>k&tau;</VAR></SUB>&rang; is the name
+    of&nbsp;<VAR>s</VAR>, followed by&nbsp;&ldquo;<CODE>&lt;</CODE>&rdquo;,
+    followed by the names of <VAR>a</VAR><SUB>1</SUB>, &hellip;,
+    <VAR>a</VAR><SUB><VAR>k&tau;</VAR></SUB>, separated from one another
+    by&nbsp;&ldquo;<CODE>,</CODE>&rdquo;, followed
+    by&nbsp;&ldquo;<CODE>&gt;</CODE>&rdquo;.<BR/>
+    The set of <DFN>members</DFN> of a struct type is the union of the set of
+    direct members and the set of members of the optional direct base (if
+    present).  No two different members of a given struct type may have the same
+    name.<BR/>
+    For a struct type with a list of members
+    &lang;<VAR>m</VAR><SUP>+</SUP><SUB>1</SUB>, &hellip;,
+    <VAR>m</VAR><SUP>+</SUP><SUB><VAR>km</VAR><SUP>+</SUP></SUB>&rang;,
+    <VAR>km</VAR><SUP>+</SUP> &ge; 0 (containing both the direct members and the
+    members of an optional direct base, if present, with associated types
+    <VAR>t</VAR><SUB><VAR>i</VAR></SUB>), the values of that type are
+    <VAR>km</VAR><SUP>+</SUP>-tuples of values of the types
+    <VAR>t</VAR><SUB>1</SUB>, &hellip;,
+    <VAR>t</VAR><SUB><VAR>km</VAR><SUP>+</SUP></SUB>.  The default value of that
+    type is &lang;<VAR>d</VAR><SUB><VAR>t</VAR><SUB>1</SUB></SUB>, &hellip;,
+    <VAR>d</VAR><SUB><VAR>t</VAR><SUB><VAR>km</VAR><SUP>+</SUP></SUB></SUB><!--
+    -->&rang;.<BR/>
+    A struct type may not be derived from itself, and may not recursively
+    contain itself as a member.  More formally: consider the directed
+    graph&nbsp;<VAR>G</VAR>, with the set of struct types as nodes, and with the
+    set of arcs defined as follows.  For each pair of struct types
+    <VAR>t</VAR><SUB>1</SUB>, <VAR>t</VAR><SUB>2</SUB>, where
+    type&nbsp;<VAR>t</VAR><SUB>1</SUB> is the base of
+    type&nbsp;<VAR>t</VAR><SUB>2</SUB>, there is a directed arc from
+    node&nbsp;<VAR>t</VAR><SUB>2</SUB> to node&nbsp;<VAR>t</VAR><SUB>1</SUB>.
+    For each pair of struct types <VAR>t</VAR><SUB>1</SUB>,
+    <VAR>t</VAR><SUB>2</SUB>, where type&nbsp;<VAR>t</VAR><SUB>1</SUB> has a
+    member of type&nbsp;<VAR>t</VAR><SUB>2</SUB>, there is a directed arc from
+    node&nbsp;<VAR>t</VAR><SUB>2</SUB> to
+    node&nbsp;<VAR>t</VAR><SUB>1</SUB>.  The resulting graph&nbsp;<VAR>G</VAR>
+    must not be cyclic.<BR/>
+    A struct type might be written as the tuple &lang;<VAR>t</VAR><SUB>1</SUB>,
+    &hellip;, <VAR>t</VAR><SUB><VAR>km</VAR><SUP>+</SUP></SUB>&rang;, where
+    <VAR>km</VAR><SUP>+</SUP> &ge; 0, and each
+    <VAR>t</VAR><SUB><VAR>i</VAR></SUB> is a non-void, non-exception type, for 0
+    &le; <VAR>i</VAR> &lt; <VAR>km</VAR><SUP>+</SUP>.  A value of that type
+    might be written as the tuple &lang;<VAR>v</VAR><SUB>1</SUB>, &hellip;,
+    <VAR>v</VAR><SUB><VAR>km</VAR><SUP>+</SUP></SUB>&rang;, where each
+    <VAR>v</VAR><SUB><VAR>i</VAR></SUB> is of
+    type&nbsp;<VAR>t</VAR><SUB><VAR>i</VAR></SUB>, for 0 &le; <VAR>i</VAR> &lt;
+    <VAR>km</VAR><SUP>+</SUP>.</DD>
+
+    <DT>Exception types</DT><DD>A (user-defined) exception type has an optional
+    <DFN>direct base</DFN>&nbsp;<VAR>b</VAR>, where <VAR>b</VAR> is an exception
+    type, and a list of <DFN>direct members</DFN>
+    &lang;<VAR>m</VAR><SUB>1</SUB>, &hellip;,
+    <VAR>m</VAR><SUB><VAR>km</VAR></SUB>&rang;, <VAR>km</VAR> &ge; 0, where each
+    <VAR>m</VAR><SUB><VAR>i</VAR></SUB> has a name and a non-void, non-exception
+    type.  The name of an exception type is an identifier.  There is an
+    exception type named &ldquo;<CODE>com.sun.star.uno.Exception</CODE>&rdquo;
+    which does not have a direct base.  There is also an exception type named
+    &ldquo;<CODE>com.sun.star.uno.RuntimeException</CODE>&rdquo; for which it is
+    unspecified whether it has no direct base or has
+    <CODE>com.sun.star.uno.Exception</CODE> as its base.  All other exception
+    types have a direct base.<BR/>
+    The set of <DFN>members</DFN> of an exception type is the union of the set
+    of direct members and the set of members of the optional direct base (if
+    present).  No two different members of a given exception type may have the
+    same name.<BR/>
+    For an exception type with a list of members
+    &lang;<VAR>m</VAR><SUP>+</SUP><SUB>1</SUB>, &hellip;,
+    <VAR>m</VAR><SUP>+</SUP><SUB><VAR>km</VAR><SUP>+</SUP></SUB>&rang;,
+    <VAR>km</VAR><SUP>+</SUP> &ge; 0 (containing both the direct members and the
+    members of an optional direct base, if present, with associated types
+    <VAR>t</VAR><SUB><VAR>i</VAR></SUB>), the values of that type are
+    <VAR>km</VAR><SUP>+</SUP>-tuples of values of the types
+    <VAR>t</VAR><SUB>1</SUB>, &hellip;,
+    <VAR>t</VAR><SUB><VAR>km</VAR><SUP>+</SUP></SUB>.  The default value of that
+    type is &lang;<VAR>d</VAR><SUB><VAR>t</VAR><SUB>1</SUB></SUB>, &hellip;,
+    <VAR>d</VAR><SUB><VAR>t</VAR><SUB><VAR>km</VAR><SUP>+</SUP></SUB></SUB><!--
+    -->&rang;.<BR/>
+    An exception type may not be derived from itself.  More formally: consider
+    the directed graph&nbsp;<VAR>G</VAR>, with the set of exception types as
+    nodes, and with the set of arcs defined as follows.  For each pair of
+    exception types <VAR>t</VAR><SUB>1</SUB>, <VAR>t</VAR><SUB>2</SUB>, where
+    type&nbsp;<VAR>t</VAR><SUB>1</SUB> is the base of
+    type&nbsp;<VAR>t</VAR><SUB>2</SUB>, there is a directed arc from
+    node&nbsp;<VAR>t</VAR><SUB>2</SUB> to node&nbsp;<VAR>t</VAR><SUB>1</SUB>.
+    The resulting graph&nbsp;<VAR>G</VAR> must not be cyclic.<BR/>
+    An exception type might be written as the tuple
+    &lang;<VAR>t</VAR><SUB>1</SUB>, &hellip;,
+    <VAR>t</VAR><SUB><VAR>km</VAR><SUP>+</SUP></SUB>&rang;, where
+    <VAR>km</VAR><SUP>+</SUP> &ge; 0, and each
+    <VAR>t</VAR><SUB><VAR>i</VAR></SUB> is a non-void, non-exception type, for 0
+    &le; <VAR>i</VAR> &lt; <VAR>km</VAR><SUP>+</SUP>.  A value of that type
+    might be written as the tuple &lang;<VAR>v</VAR><SUB>1</SUB>, &hellip;,
+    <VAR>v</VAR><SUB><VAR>km</VAR><SUP>+</SUP></SUB>&rang;, where each
+    <VAR>v</VAR><SUB><VAR>i</VAR></SUB> is of
+    type&nbsp;<VAR>t</VAR><SUB><VAR>i</VAR></SUB>, for 0 &le; <VAR>i</VAR> &lt;
+    <VAR>km</VAR><SUP>+</SUP>.</DD>
+
+    <DT>Interface types</DT><DD>For a (user-defined) interface type, the values
+    of that type are the null reference plus references to any UNO objects that
+    implement that interface type, and the default value is the null reference.
+    Each interface type has a list of <DFN>direct bases</DFN>
+    &lang;<VAR>b</VAR><SUB>1</SUB>, &hellip;,
+    <VAR>b</VAR><SUB><VAR>kb</VAR></SUB>&rang;, <VAR>kb</VAR> &ge; 0, where each
+    <VAR>b</VAR><SUB><VAR>i</VAR></SUB> is an interface type, and all the
+    <VAR>b</VAR><SUB><VAR>i</VAR></SUB> are mutually different.  Each interface
+    type has a list of <DFN>direct attributes</DFN>
+    &lang;<VAR>a</VAR><SUB>1</SUB>, &hellip;,
+    <VAR>a</VAR><SUB><VAR>ka</VAR></SUB>&rang;, <VAR>ka</VAR> &ge; 0, and a list
+    of <DFN>direct methods</DFN>, &lang;<VAR>m</VAR><SUB>1</SUB>, &hellip;,
+    <VAR>m</VAR><SUB><VAR>km</VAR></SUB>&rang;, <VAR>km</VAR> &ge; 0.
+    Collectively, the direct attributes and direct methods of an interface type
+    are called the <DFN>direct members</DFN> of that interface type.<BR/>
+    The name of an interface type is an identifier.  There is an interface type
+    named &ldquo;<CODE>com.sun.star.uno.XInterface</CODE>&rdquo;, which has an
+    empty list of direct bases, an empty list of direct attributes, and an empty
+    list of direct methods.  All other interface types have a non-empty list of
+    direct bases.<BR/>
+    Each direct attribute of an interface type has a name, a non-void,
+    non-exception type, and is either <DFN>read&ndash;write</DFN> or
+    <DFN>read-only</DFN>.<BR/>
+    Each direct method of an interface type has a name, a list of arguments
+    &lang;<VAR>r</VAR><SUB>1</SUB>, &hellip;,
+    <VAR>r</VAR><SUB><VAR>kr</VAR></SUB>&rang;, <VAR>kr</VAR> &ge; 0, a
+    non-exception return type, a list of exception types
+    &lang;<VAR>e</VAR><SUB>1</SUB>, &hellip;,
+    <VAR>e</VAR><SUB><VAR>ke</VAR></SUB>&rang;, <VAR>ke</VAR> &ge; 0, and is
+    either <DFN>synchronous</DFN> or <DFN>one-way</DFN>.  Each
+    argument&nbsp;<VAR>r</VAR><SUB><VAR>i</VAR></SUB> has a name, a non-void,
+    non-exception type, and is either <DFN>in</DFN>, <DFN>out</DFN>, or
+    <DFN>in&ndash;out</DFN>.  No two different arguments of a given method may
+    have the same name.  For a method that is one-way, none of the arguments may
+    be out or in&ndash;out, the return type must be <CODE>VOID</CODE>, and the
+    list of exception types must be empty.<BR/>
+    The set of <DFN>members</DFN> of an interface type is the union of the set
+    of direct members and the set of <DFN>inherited members</DFN>.  The set of
+    inherited members of an interface type is the union of the sets of members
+    of all its direct bases.  No two different members of a given interface type
+    may have the same name.<BR/>
+    An interface type may not be derived from itself.  More formally: consider
+    the directed graph&nbsp;<VAR>G</VAR>, with the set of interface types as
+    nodes, and with the set of arcs defined as follows.  For each pair of
+    interface types <VAR>t</VAR><SUB>1</SUB>, <VAR>t</VAR><SUB>2</SUB>, where
+    type&nbsp;<VAR>t</VAR><SUB>1</SUB> is a direct base of
+    type&nbsp;<VAR>t</VAR><SUB>2</SUB>, there is a directed arc from
+    node&nbsp;<VAR>t</VAR><SUB>2</SUB> to node&nbsp;<VAR>t</VAR><SUB>1</SUB>.
+    The resulting graph&nbsp;<VAR>G</VAR> must not be cyclic.<BR/>
+    An interface type may not have as direct base a type that it also has as
+    indirect base.  More formally: define the set of <DFN>bases</DFN> of an
+    interface type&nbsp;<VAR>t</VAR> to be the union of the set of the direct
+    bases of&nbsp;<VAR>t</VAR> and the sets of bases of all the direct bases
+    of&nbsp;<VAR>t</VAR>.  Then, for any interface type&nbsp;<VAR>t</VAR>, none
+    of the direct bases of&nbsp;<VAR>t</VAR> must be a member of the set of
+    bases of any of the direct bases of&nbsp;<VAR>t</VAR>.</DD>
+</DL>
+
+<P>The <DFN>non-void, non-exception</DFN> UNO types are <CODE>BOOLEAN</CODE>,
+<CODE>BYTE</CODE>, <CODE>SHORT</CODE>, <CODE>UNSIGNED SHORT</CODE>,
+<CODE>LONG</CODE>, <CODE>UNSIGNED LONG</CODE>, <CODE>HYPER</CODE>,
+<CODE>UNSIGNED HYPER</CODE>, <CODE>FLOAT</CODE>, <CODE>DOUBLE</CODE>,
+<CODE>CHAR</CODE>, <CODE>STRING</CODE>, <CODE>TYPE</CODE>, <CODE>ANY</CODE>, the
+sequence types, the enum types, the struct types, and the interface types.</P>
+
+<P>The <DFN>non-any</DFN> UNO types are <CODE>VOID</CODE>, <CODE>BOOLEAN</CODE>,
+<CODE>BYTE</CODE>, <CODE>SHORT</CODE>, <CODE>UNSIGNED SHORT</CODE>,
+<CODE>LONG</CODE>, <CODE>UNSIGNED LONG</CODE>, <CODE>HYPER</CODE>,
+<CODE>UNSIGNED HYPER</CODE>, <CODE>FLOAT</CODE>, <CODE>DOUBLE</CODE>,
+<CODE>CHAR</CODE>, <CODE>STRING</CODE>, <CODE>TYPE</CODE>, the sequence types,
+the enum types, the struct types, the exception types, and the interface
+types.</P>
+
+<P>The <DFN>non-exception</DFN> UNO types are <CODE>VOID</CODE>,
+<CODE>BOOLEAN</CODE>, <CODE>BYTE</CODE>, <CODE>SHORT</CODE>, <CODE>UNSIGNED
+SHORT</CODE>, <CODE>LONG</CODE>, <CODE>UNSIGNED LONG</CODE>, <CODE>HYPER</CODE>,
+<CODE>UNSIGNED HYPER</CODE>, <CODE>FLOAT</CODE>, <CODE>DOUBLE</CODE>,
+<CODE>CHAR</CODE>, <CODE>STRING</CODE>, <CODE>TYPE</CODE>, <CODE>ANY</CODE>, the
+sequence types, the enum types, the struct types, and the interface types.</P>
+
+<P>The <DFN>basic</DFN> UNO types are <CODE>VOID</CODE>, <CODE>BOOLEAN</CODE>,
+<CODE>BYTE</CODE>, <CODE>SHORT</CODE>, <CODE>UNSIGNED SHORT</CODE>,
+<CODE>LONG</CODE>, <CODE>UNSIGNED LONG</CODE>, <CODE>HYPER</CODE>,
+<CODE>UNSIGNED HYPER</CODE>, <CODE>FLOAT</CODE>, <CODE>DOUBLE</CODE>, and
+<CODE>CHAR</CODE>.
+
+<P>The <DFN>simple</DFN> UNO types are <CODE>VOID</CODE>,
+<CODE>BOOLEAN</CODE>, <CODE>BYTE</CODE>, <CODE>SHORT</CODE>,
+<CODE>UNSIGNED SHORT</CODE>, <CODE>LONG</CODE>, <CODE>UNSIGNED LONG</CODE>,
+<CODE>HYPER</CODE>, <CODE>UNSIGNED HYPER</CODE>, <CODE>FLOAT</CODE>,
+<CODE>DOUBLE</CODE>, <CODE>CHAR</CODE>, <CODE>STRING</CODE>, <CODE>TYPE</CODE>,
+and <CODE>ANY</CODE>.  The <DFN>complex</DFN> UNO types are the sequence types,
+the enum types, the struct types, the exception types, and the interface
+types.</P>
+
+<P>The <DFN>primitive</DFN> UNO types are <CODE>VOID</CODE>,
+<CODE>BOOLEAN</CODE>, <CODE>BYTE</CODE>, <CODE>SHORT</CODE>,
+<CODE>UNSIGNED SHORT</CODE>, <CODE>LONG</CODE>, <CODE>UNSIGNED LONG</CODE>,
+<CODE>HYPER</CODE>, <CODE>UNSIGNED HYPER</CODE>, <CODE>FLOAT</CODE>,
+<CODE>DOUBLE</CODE>, <CODE>CHAR</CODE>, <CODE>STRING</CODE>, <CODE>TYPE</CODE>,
+and the enum types.  The <DFN>structured</DFN> UNO types are <CODE>ANY</CODE>,
+the sequence types, the struct types, and the exception types.  Note that the
+interface types are considered neither primitive nor structured.</P>
+
+<P>The <DFN>aggregating</DFN> UNO types are the struct types and the exception
+types.</P>
+
+<P>The <DFN>fundamental</DFN> UNO types are <CODE>VOID</CODE>,
+<CODE>BOOLEAN</CODE>, <CODE>BYTE</CODE>, <CODE>SHORT</CODE>, <CODE>UNSIGNED
+SHORT</CODE>, <CODE>LONG</CODE>, <CODE>UNSIGNED LONG</CODE>, <CODE>HYPER</CODE>,
+<CODE>UNSIGNED HYPER</CODE>, <CODE>FLOAT</CODE>, <CODE>DOUBLE</CODE>,
+<CODE>CHAR</CODE>, <CODE>STRING</CODE>, <CODE>TYPE</CODE>, <CODE>ANY</CODE>, and
+the sequence types.  The <DFN>named</DFN> UNO types are the enum types, the
+struct types, the exception types, and the interface types.</P>
+
+<P>The <DFN>unsigned</DFN> UNO types are <CODE>UNSIGNED SHORT</CODE>,
+<CODE>UNSIGNED LONG</CODE>, <CODE>UNSIGNED HYPER</CODE>, and each sequence type
+whose component type is an unsigned type.</P>
+
+<H2>Function Indices</H2>
+
+<P>Often, a mapping between the members of a given interface type and a subset
+of the integers (so called <DFN>function indices</DFN>) is needed.  In the
+following, one such mapping is defined, to be consistently used wherever the
+concept of function indices is needed in conjunction with UNO.</P>
+
+<P>For an interface type&nbsp;<VAR>t</VAR>, define the list of direct bases
+&lang;<VAR>b</VAR><SUB>1</SUB>, &hellip;,
+<VAR>b</VAR><SUB><VAR>kb</VAR></SUB>&rang;, <VAR>kb</VAR> &ge; 0, the list of
+direct attributes &lang;<VAR>a</VAR><SUB>1</SUB>, &hellip;,
+<VAR>a</VAR><SUB><VAR>ka</VAR></SUB>&rang;, <VAR>ka</VAR> &ge; 0, and the list
+of direct methods &lang;<VAR>m</VAR><SUB>1</SUB>, &hellip;,
+<VAR>m</VAR><SUB><VAR>km</VAR></SUB>&rang;, <VAR>km</VAR> &ge; 0, as above.
+Additionally, define the list of <DFN>direct attribute functions</DFN>
+of&nbsp;<VAR>t</VAR>, written &lang;<VAR>af</VAR><SUB>1</SUB>, &hellip;,
+<VAR>af</VAR><SUB><VAR>kaf</VAR></SUB>&rang;, <VAR>kaf</VAR> &ge; 0, as the
+result of substituting in the list &lang;<VAR>a</VAR><SUB>1</SUB>, &hellip;,
+<VAR>a</VAR><SUB><VAR>ka</VAR></SUB>&rang; each element
+<VAR>a</VAR><SUB><VAR>i</VAR></SUB> with either one or two new elements,
+retaining the overall order.  If the argument
+<VAR>a</VAR><SUB><VAR>i</VAR></SUB> is read&ndash;write, then it is replaced
+with the two elements <VAR>G</VAR>(<VAR>a</VAR><SUB><VAR>i</VAR></SUB>) and
+<VAR>S</VAR>(<VAR>a</VAR><SUB><VAR>i</VAR></SUB>), in that order; if the
+argument <VAR>a</VAR><SUB><VAR>i</VAR></SUB> is read-only, then it is replaced
+with the single element <VAR>G</VAR>(<VAR>a</VAR><SUB><VAR>i</VAR></SUB>).  (The
+attribute function <VAR>G</VAR>(<VAR>a</VAR>) represents a getter function for
+the attribute&nbsp;<VAR>a</VAR>, while the attribute function
+<VAR>S</VAR>(<VAR>a</VAR>) represents a setter function for&nbsp;<VAR>a</VAR>.)
+Additionally, define the set of <DFN>member functions</DFN> of&nbsp;<VAR>t</VAR>
+to be the set of members of&nbsp;<VAR>t</VAR>, but with all attributes replaced
+with the respective attribute functions.</P>
+
+<P>The algorithm <VAR>functionIndices</VAR>, to construct a bijective mapping
+from function indices (a subset of the integers) to member functions of a given
+interface type, in pseudo-code notation:</P>
+
+<P>&nbsp;type <VAR>S</VAR>: set of interface type<BR/>
+&nbsp;type <VAR>M</VAR>: map from integer to member function<BR/>
+&nbsp;function <VAR>fI</VAR>(<VAR>t</VAR>: interface type, <VAR>T</VAR>:
+    <VAR>S</VAR>, <VAR>n</VAR>: integer, <VAR>&mu;</VAR>: <VAR>M</VAR>):
+    &lang;<VAR>S</VAR>, integer, <VAR>M</VAR>&rang;<BR/>
+&nbsp;&nbsp;if <VAR>t</VAR> &notin; <VAR>T</VAR><BR/>
+&nbsp;&nbsp;&nbsp;for <VAR>i</VAR> &larr; 1 &hellip; <VAR>kb</VAR><BR/>
+&nbsp;&nbsp;&nbsp;&nbsp;&lang;<VAR>T</VAR>, <VAR>n</VAR>, <VAR>&mu;</VAR>&rang;
+    &larr; <VAR>fI</VAR>(<VAR>b</VAR><SUB><VAR>i</VAR></SUB>, <VAR>T</VAR>,
+    <VAR>n</VAR>, <VAR>&mu;</VAR>)<BR/>
+&nbsp;&nbsp;&nbsp;for <VAR>i</VAR> &larr; 1 &hellip; <VAR>kaf</VAR><BR/>
+&nbsp;&nbsp;&nbsp;&nbsp;<VAR>&mu;</VAR> &larr; <VAR>&mu;</VAR> &cup;
+    {<VAR>n</VAR> + <VAR>i</VAR> &minus; 1 &rarr;
+    <VAR>af</VAR><SUB><VAR>i</VAR></SUB>}<BR/>
+&nbsp;&nbsp;&nbsp;for <VAR>i</VAR> &larr; 1 &hellip; <VAR>km</VAR><BR/>
+&nbsp;&nbsp;&nbsp;&nbsp;<VAR>&mu;</VAR> &larr; <VAR>&mu;</VAR> &cup;
+    {<VAR>n</VAR> + <VAR>kaf</VAR> + <VAR>i</VAR> &minus; 1 &rarr;
+    <VAR>m</VAR><SUB><VAR>i</VAR></SUB>}<BR/>
+&nbsp;&nbsp;&nbsp;<VAR>T</VAR> &larr; <VAR>T</VAR> &cup; {<VAR>t</VAR>}<BR/>
+&nbsp;&nbsp;&nbsp;<VAR>n</VAR> &larr; <VAR>n</VAR> + <VAR>kaf</VAR> +
+    <VAR>km</VAR><BR/>
+&nbsp;&nbsp;return &lang;<VAR>T</VAR>, <VAR>n</VAR>, <VAR>&mu;</VAR>&rang;<BR/>
+&nbsp;function <VAR>functionIndices</VAR>(<VAR>t</VAR>: interface type):
+    <VAR>M</VAR><BR/>
+&nbsp;&nbsp;&lang;<VAR>T</VAR>, <VAR>n</VAR>, <VAR>&mu;</VAR>&rang; &larr;
+    <VAR>fI</VAR>(<VAR>t</VAR>, &empty;, 3, &empty;)<BR/>
+&nbsp;&nbsp;return <VAR>&mu;</VAR></P>
+
+<P><EM>That the function indices start at three, instead of at zero, has
+historic reasons:  Indices 0&ndash;2 are reserved for the three pseudo methods
+of <CODE>com.sun.star.uno.XInterface</CODE> (<CODE>queryInterface</CODE>,
+<CODE>acquire</CODE>, and <CODE>release</CODE>).</EM></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: 2006/02/17 14:02:45 $).
+        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/typesystem.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/ooo/ooo-site/trunk/content/udk/common/man/uno.html
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/udk/common/man/uno.html?rev=1206895&view=auto
==============================================================================
--- incubator/ooo/ooo-site/trunk/content/udk/common/man/uno.html (added)
+++ incubator/ooo/ooo-site/trunk/content/udk/common/man/uno.html Sun Nov 27 22:49:46 2011
@@ -0,0 +1,224 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<HTML>
+<HEAD>
+	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=windows-1252"/>
+	<TITLE>Overview: Universal Network Objects (UNO)</TITLE>
+	<META NAME="GENERATOR" CONTENT="StarOffice 6.0  (Win32)"/>
+	<META NAME="CREATED" CONTENT="20001010;19542253"/>
+	<META NAME="CHANGEDBY" CONTENT="Hans-Peter Burow"/>
+	<META NAME="CHANGED" CONTENT="20020122;10014478"/>
+	<META NAME="CLASSIFICATION" CONTENT="Overview Universal Network Objects (UNO)"/>
+	<META NAME="KEYWORDS" CONTENT="UNO,Overview"/>
+<style type="text/css">
+<!--
+h1 { text-align:center; margin-top: 0.2cm; text-decoration: none; color: #ffffff; font-size: 6; margin-top: 0.2cm}
+h2 { margin-top: 0.2cm; margin-bottom=0.1cm; color: #ffffff; background-color: #666699 }
+li {margin-bottom: 0.2cm;}
+dl {margin-bottom: 0.2cm;}
+dd {margin-bottom: 0.2cm;}
+dt {margin-bottom: 0.2cm;}
+-->
+</style>
+</HEAD>
+<body>
+<TABLE WIDTH=100% BORDER=0 CELLPADDING=4 CELLSPACING=0 BGCOLOR="#666699"
+    summary=header>
+	<TR>
+		<TD>
+			<H1> Overview: Universal Network Objects (UNO) </H1>
+		</TD>
+	</TR>
+</TABLE>
+
+<h2> Overview </h2>
+
+			<P>UNO is a component model that offers inter-operability between
+			different programming languages, different objects models,
+			different machine architectures, and different processes; either in a
+			LAN or via the Internet. 
+			</P>
+			<P>The <A HREF="#applications">StarOffice and Sun ONE Webtop</A>
+			products have proven the usability of UNO in complex real world
+			applications. Developers that want to use, extend, or modify the
+			functionality of one of the products will do this using UNO. 
+			</P>
+			<P>UNO is not limited to the above applications. The base
+			libraries of UNO are independent of StarOffice and can be used as
+			a framework for other applications. 
+			</P>
+			<P>UNO is freely available (it is distributed under the LGPL
+			license) and currently supports Java, C and C++ (on windows, Linux,
+			and Solaris). A bridge for COM OLE Automation already exists. 
+			</P>
+			<P>UNO is developed by the OpenOffice.org community including the Sun
+			Microsystems development labs.<!-- ******************************************************
+* TECHNICAL DETAILS
+******************************************************
+ -->
+						</P>
+<h2><a name="tech_details"></A> Some technical details </h2>
+
+<P>UNO is interface based, as are COM and CORBA. Components implement
+			interfaces compliant to their interface specification. Multiple
+			components communicate only via their interfaces. This allows 
+			implementing one component in a different language or to move an
+			implementation to another machine, without modifying the other's
+			components. This gives you huge flexibility and preserves earlier
+			invested efforts. 
+			</P>
+			<P STYLE="margin-bottom: 0cm">Each component lives in a <STRONG>U</STRONG>no
+			<STRONG>R</STRONG>untime <STRONG>E</STRONG>nvironment (<STRONG>URE</STRONG>).
+			A URE is identified by the implementation language (e.g., C++,
+			Java, <SPAN LANG="en-US">Perl</SPAN>, ...) and the current
+			process. There is no performance overhead for components, that are
+			instantiated within the same URE, e.g., in C++, a call from
+			component A to B is just a virtual call. The calls between
+			components from different UREs are bridged by UNO. 
+			</P>
+
+<center><img src="images/component_environments.gif" name="Grafik1" align=middle width=511 height=294 border=0 alt="Connecting Environments"/></center>
+
+			<P>In general, calls are bridged through a single <EM>dispatch</EM>
+			method. This method is, in general, easy to implement for 
+			interprocess bridges or bridges to interpreting languages. There
+			is <STRONG>no generated code</STRONG> for stubs or<SPAN LANG="en-US">
+			proxies. </SPAN>All necessary conversions are done by the generic
+			dispatch method. The information about the method signature is
+			retrieved dynamically from a <STRONG>type library</STRONG>. This
+			type library is reused by every bridge, so only the number of
+			entries in the type library grows with a growing number of types.
+			This reduces build time and memory consumption at runtime;
+			nevertheless, bridging is as fast as generated code. 
+			</P>
+			<P>UNO-interfaces are specified in IDL. All UNO-interfaces must be
+			derived from a superinterface, that offers acquire, release, and a
+			queryInterface method (comparable to COM). The lifetime of
+			UNO-objects is controlled by <STRONG>global reference counting</STRONG>.
+			<STRONG>Exceptions</STRONG> are used for error handling. 
+			</P>
+			<P>UNO guarantees <STRONG>object identity</STRONG>, <STRONG>thread
+			identity</STRONG>, and the <STRONG>sequence of calls</STRONG>. 
+			</P>
+			<UL>
+				<li>object identity<br/>
+				Two interfaces' references can be compared for equality. UNO
+				guarantees, that the result is correct, no matter whether the
+				result is true or false. 
+
+				<li>thread identity<br/>
+				In UNO every
+				thread is named by a globally unique thread identifier. A thread
+				leaving the process via an interprocess bridge is identified when
+				entering the process, again, some callstack levels higher. The same
+				thread will execute the new call thus guaranteeing that any
+				thread dependent resources stay the same (such as thread local
+				storage, lock of mutexes, etc.).
+
+				<li>sequence of calls<br/>
+				UNO allows declaring a method oneway
+				(or asynchron). Multiple, oneway calls are guaranteed to be
+				executed in the same sequence as they were called. 
+
+			</UL>
+			<P>A sequence of oneway calls can be<SPAN LANG="en-US">
+			transferred </SPAN>and executed extremely fast via an interprocess
+			connection. The UNO interprocess protocol is optimized for low
+			bandwidth connections. 
+			</P>
+			<P>Have a look a this document, <A HREF="concept/unointro.html">Uno Intro</A>,
+			for further technical information.<!-- **************************************************************************
+* A P P L I C A T I O N S   B U I L T   O N   U N O
+**************************************************************************
+ -->
+						</P>
+
+<h2><a name="applications"></a> Applications built on UNO </h2>
+
+<P>This chapter discusses some actual use cases of UNO and the benefits
+the applications derived from UNO.</P>
+
+<h3>StarOffice (or OpenOffice.org)</h3>
+
+			<P>StarOffice is a fully featured office productivity suite. 
+			</P>
+			<P>StarOffice mainly uses the C++ -in-process functionality of
+			UNO. Before UNO, the StarOffice development suffered very much from
+			incompatible changes (e.g., adding a new virtual method or a new
+			member to a class) in one of the base libraries. This forced a
+			complete rebuild of the product, which roughly consumed 2 days and
+			was done only once a week. These incompatible updates were be
+			reduced considerably by using UNO, and as a result the whole work became
+			more efficient. Please have a look at this document, 
+			<A HREF="uno_the_idea.html">Uno the Idea</A>, for a more complete explanation. 
+			</P>
+			<P>Java components in StarOffice (e.g., the pgp-integration) use
+			the Java-C++ bridge to access the StarOffice API. External
+			developers can easily integrate their desired<SPAN LANG="en-US">
+			functionality </SPAN>in StarOffice using this bridge. 
+			</P>
+			<P>External developers can use the UNO-interprocess bridge to
+			access StarOffice-API from a different process for remote office
+			control. 
+			</P>
+
+<h3>Sun ONE Webtop</h3>
+
+			<P>Sun ONE Webtop is a highly distributed application. It provides
+			a fully featured office productivity suite via the Internet.
+			Office documents can be accessed via various clients
+			(WebBrowser-Plugins, PDAs, HTML-Clients, etc.).</P>
+			<P>UNO is used in the communication between the WebBrowser-Plugin
+			and the office application server. All outputdevice-calls (e.g.,
+			DrawRect, DrawLine, and SetColor) necessary to paint a scene are
+			transmitted via the Internet connection (the necessary performance
+			is reached by declaring those calls oneway).</P>
+			<P>UNO is used to bridge between <STRONG>Java Server Pages</STRONG>
+			(running within the webserver) and the Universal Content Broker (a
+			C++ process that is responsible for data access).<!-- ******************************************************
+* OTHER COMPONENT MODELS
+******************************************************
+ -->
+						</P>
+
+<h2><a name="other_models"></a> UNO, COM, CORBA, and Java RMI </h2>
+
+			<P>It is often asked, why a new component model (UNO) has been
+			developed, instead of using already existing ones (such as
+			COM/DCOM, CORBA, or Java RMI). The main reason is that the other
+			object models don't provide the functionality needed for
+			applications such as StarOffice or Sun ONE Webtop. 
+			</P>
+			<UL>
+				<LI><P STYLE="margin-bottom: 0cm">COM/DCOM does not allow for use
+				of exceptions, which is of eminent important for advanced error
+				handling. 
+				</P>
+				<LI><P STYLE="margin-bottom: 0cm">CORBA is only a standard for
+				remote communication, there is only very poor support for in
+				process<SPAN LANG="en-US"> communication </SPAN>(IIOP in
+				process), which is too slow for most applications. See also the 
+				<A HREF="comparison_uno_corba.html">CORBA-UNO comparison document</A>
+								</P>
+				<LI><P>Java RMI is only useful within a Java environment, but there
+				is a need for a technology for bridging between different
+				languages. 
+				</P>
+			</UL>
+			<P>Additionally, the code generation needed, e.g., in COM or CORBA,
+			results in huge libraries if there are many types. For each new
+			bridge, new generated glue code would be necessary, which becomes
+			too difficult to handle. 
+			</P>
+
+<table summary=footer width=100% bgcolor=#666699>
+	<TR>
+		<td>
+			<FONT COLOR="#ffffff"><SPAN LANG="en-US">Author</SPAN>: <A HREF="mailto:joerg.budischewski@sun.com"><FONT COLOR="#ffffff">J&ouml;rg
+			Budischewski</FONT></A> ($Date: 2004/12/05 12:54:40 $)<br/><i>Copyright
+			2002 Sun Microsystems, Inc., 901 San Antonio Road, Palo Alto, CA
+			94303 USA.</i></font>
+		</TD>
+	</TR>
+</TABLE>
+</BODY>
+</HTML>

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

Added: incubator/ooo/ooo-site/trunk/content/udk/common/man/uno_components.html
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/udk/common/man/uno_components.html?rev=1206895&view=auto
==============================================================================
--- incubator/ooo/ooo-site/trunk/content/udk/common/man/uno_components.html (added)
+++ incubator/ooo/ooo-site/trunk/content/udk/common/man/uno_components.html Sun Nov 27 22:49:46 2011
@@ -0,0 +1,181 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<HTML>
+<HEAD>
+	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=iso-8859-1"/>
+	<TITLE>C++ UNO Components</TITLE>
+	<META NAME="GENERATOR" CONTENT="StarOffice/5.2 (Win32)"/>
+	<META NAME="CLASSIFICATION" CONTENT="C++ UNO Components"/>
+	<META NAME="KEYWORDS" CONTENT="C++,UNO,Components"/>
+<style type="text/css">
+	<!--
+h1 { text-align:center; margin-top: 0.2cm; text-decoration: none; color: #ffffff; font-size: 6; margin-top: 0.2cm}
+h2 { margin-top: 0.2cm; margin-bottom=0.1cm; color: #ffffff;
+     background-color: #666699 }
+li {margin-bottom: 0.2cm;}
+dl {margin-bottom: 0.2cm;}
+dd {margin-bottom: 0.2cm;}
+dt {margin-bottom: 0.2cm;}
+-->
+</style>
+</HEAD>
+<BODY>
+<TABLE WIDTH=100% BORDER=0 CELLPADDING=4 CELLSPACING=0 BGCOLOR="#666699"
+    summary=Header>
+	<TR>
+		<TD>
+			<h1> C++ UNO Components </h1>
+		</td><td>
+			<a href="http://www.openoffice.org/"><img src="../../images/open_office_org_logo.gif" name="Grafik1" alt="OpenOffice.org" align=right width=109 height=54 border=0/></A>
+		</TD>
+	</TR>
+</TABLE>
+
+<h2> Contents </h2>
+<blockquote>
+			<A HREF="#Overview">Overview</A><br/>
+			<A HREF="#Cpp_Components">C++ Components</A><br/>
+</blockquote>
+
+<h2><A NAME="Overview"></A> Overview </h2>
+
+<P>UNO components, normally, provide an implementation of one or
+			more services. A service description is written in idl. A service
+			describes the interaction of different interfaces to support a
+			special functionality. An idl description of a service specifies a
+			set of interfaces which supports the expected functionality. It
+			can also contain references to other services which are needed for
+			this service. A service could be implemented by more than one
+			component. At this time, the component which is registered last,
+			will be used as the default implementation for the supported
+			services of this component.
+			</P>
+			
+      <P>It is also possible to register or revoke components at runtime. For 
+        this it is necessary to use a registration service (<A HREF="http://api.openoffice.org/common/ref/com/sun/star/registry/ImplementationRegistration.html">com.sun.star.registry.ImplementationRegistration</A>) 
+        to register external components in the runtime environment of the office 
+        suite. It should be possible to use almost any programming language to implement 
+        a component, since only two things are necessary: first, an appropriate language 
+        binding for the programming language used, and second, an appropriate 
+        loader service for components implemented in this language. </P>
+
+<h2><A NAME="Cpp_Components"></A> C++ Components </h2>
+	
+<P>C++ UNO components are usually implemented as shared libraries. Such a shared 
+        library must provide a special interface which contains 4 exported 
+        &quot;C&quot; functions. These functions are searched by the appropriate loader 
+        service (&quot;com.sun.star.loader.SharedLibrary&quot;) to register the 
+        component or to instantiate an object providing the service. </P>
+      <P>The exported &quot;C&quot; functions are: </P>
+
+      <blockquote>
+        <p><B>component_getDescriptionFunc<br/>
+          </B><B>component_getImplementationEnvironmentFunc<br/>
+          </B><B>component_writeInfo<br/>
+          </B><B>component_getFactory</B> </p>
+      </blockquote>
+      <DL>
+        <DT> <B>component_getDescriptionFunc</B></DT>
+        <DD> <I>Syntax: </I> </DD>
+        <DD> <CODE>extern &quot;C&quot; const sal_Char* SAL_CALL component_getDescriptionFunc(void); 
+          </CODE> </DD>
+        <DD> <FONT COLOR="#000000">This function is optional but should be supported. 
+          The function should return an XML formatted string describing the contents 
+          of the component. This function could be generated from a general XML 
+          component description. Such a description contains information about 
+          the name, the supported services, the needed services, the needed types, 
+          and so on. For more details, see </FONT><A HREF="component_description.html"><FONT COLOR="#000000">XML 
+          Component Description</FONT></A><FONT COLOR="#000000">. Any component 
+          should provide such an XML description. </FONT> </DD>
+        <DT> <B>component_getImplementationEnvironmentFunc</B></DT>
+        <DD> <I>Syntax:</I> </DD>
+        <DD> <CODE>extern &quot;C&quot; void SAL_CALL component_getImplementationEnvironmentFunc(const 
+          sal_Char** ppEnvTypeName, uno_Environment** ppEnv ); </CODE> </DD>
+        <DD> Function to determine the <!-- used --> implementation environment of the component. This 
+          function shows the runtime environment how to use the <B><I>void*</I></B> 
+          parameters of <B>component_writeInfoFunc</B> and <B>component_getFactoryFunc</B>. 
+          A component, implemented in C++, uses the C++ environment. The UNO runtime 
+          must map the <B><I>void*</I></B> parameters from the C++ environment to 
+          the current environment. If the environment is NOT session specific,  
+          i.e., it needs no additional context, then this function should return the 
+          environment type name and leave ppEnv (0). </DD>
+        <DT> <B>component_writeInfo</B></DT>
+        <DD> Syntax: </DD>
+        <DD> <CODE>extern &quot;C&quot; sal_Bool SAL_CALL component_writeInfoFunc(void* 
+          pServiceManager, void* pRegistryKey ); </CODE> </DD>
+        <DD STYLE="margin-bottom: 0.5cm"> Function to write component specific 
+          data in a reserved section in the registry, at least, the supported services 
+          of the component. <B>pRegistryKey</B> refers to a reserved section in 
+          the registry. Any component should have a unique implementation name 
+          to specify their own subsection under this key. <B>pServiceManager</B> 
+          specifies the current service manager. The service manager could be 
+          used at this time to get information from other services which are 
+          important for this component (this parameter is seldom used).</DD>
+      </DL>
+
+      <BLOCKQUOTE STYLE="margin-left: 4cm; margin-right: 4cm"><FONT COLOR="#000000">Structure 
+        of an implementation section: </FONT> </BLOCKQUOTE>
+
+      <PRE STYLE="margin-left: 2cm; margin-right: 2cm; margin-bottom: 0.1cm"><FONT COLOR="#000000"><FONT FACE="Courier"><FONT SIZE=2>/IMPLEMENTATIONS/&lt;implementation_name&gt;/UNO/SERVICES/&lt;service_name1&gt;[/attribute_subkeys]</FONT></FONT></FONT>
+<FONT COLOR="#000000"><FONT FACE="Courier"><FONT SIZE=2>                                                   /&lt;service_name2&gt;...</FONT></FONT></FONT>
+<FONT COLOR="#000000"><FONT FACE="Courier"><FONT SIZE=2>                                                    ...</FONT></FONT></FONT>
+<FONT COLOR="#000000"><FONT FACE="Courier"><FONT SIZE=2>                                     [/REGISTRY_LINKS]</FONT></FONT></FONT>
+<FONT COLOR="#000000"><FONT FACE="Courier"><FONT SIZE=2>                                          (AsciiListValue)</FONT></FONT></FONT>
+<FONT COLOR="#000000"><FONT FACE="Courier"><FONT SIZE=2>                                          &lt;registry_link1&gt;</FONT></FONT></FONT>
+<FONT COLOR="#000000"><FONT FACE="Courier"><FONT SIZE=2>                                          &lt;registry_link2&gt;</FONT></FONT></FONT>
+<FONT COLOR="#000000"><FONT FACE="Courier"><FONT SIZE=2>                                           ...</FONT></FONT></FONT>
+<FONT COLOR="#000000"><FONT FACE="Courier"><FONT SIZE=2>                                     [/DATA]</FONT></FONT></FONT></PRE>
+
+<BLOCKQUOTE STYLE="margin-left: 4cm; margin-right: 4cm"><FONT COLOR="#000000">Under 
+        the reserved key &quot;.../UNO/SERVICES&quot; there could be one or more services
+				specified as a subkey with the name of the service.  
+        Each service key could also have subkeys to specify service-specific attributes. 
+        &quot;.../REGISTRY_LINKS&quot; specifies also a reserved key which is 
+        interpreted by the registration service. This key must have an ASCII list 
+        value. The values of these lists, specifies links which are created by the 
+        registration service. The notation of such a link name shows where the 
+        link is created and where the target is. If the link name begins with 
+        '/' the link will be created under the rootkey, if not the link will be 
+        created relative to the &lt;implementation_name&gt;. If the linkname contains  
+        a unique '%', then the part after the '%' is used as the link target; otherwise, 
+        the link target is the &lt;implementation_name&gt;. If a link target is 
+        specified, it is always relative to the &lt;implementation_name&gt;. To specify one's 
+        own service specific data, it is useful to create a special &quot;.../DATA&quot; 
+        section. </FONT> </BLOCKQUOTE>
+      <DL> 
+        <DT><B>component_getFactory</B></DT>
+        <DD> <I>Syntax: </I> </DD>
+        <DD> <CODE>extern &quot;C&quot; void* SAL_CALL component_getFactoryFunc(const 
+          sal_Char* pImplName, void* pServiceManager, void* pRegistryKey ); </CODE> 
+        </DD>
+        <DD> This Function returns a factory to create component instances. The first 
+          time a component instance will be created, this function is called and 
+          the returned factory is registered in the service manager. <B>pImplName</B> 
+          specifies the name of the implementation which the factory will create. 
+          It is possible to have more than one implementation in a shared library. 
+          <B>pServiceManager</B> points to the current service manager. This service 
+          manager should be given to the factory and later to any instances, so 
+          that all instances created in the environment of this service manager 
+          use this one. <B>pRegistryKey</B> points to the implementation key 
+          specified by <B>pImplName</B>. This key should also be given to the 
+          factory and later to every instance when there are component specific 
+          data in the implementation section, that will later be used. </DD>
+        <DT> <B>Example</B></DT>
+
+        <DD> <FONT COLOR="#000000">Under </FONT><A HREF="../../cpp/man/component_tutorial.html"><FONT COLOR="#000000">Component 
+          Tutorial</FONT></A><FONT COLOR="#000000">, you will find a simple example of 
+          how to create a C++ UNO component. You will also find typical implementations 
+          of the C-functions which are necessary to support the C++ component 
+          interface. </FONT> </DD>
+      </DL>
+
+<table summary=footer width=100% bgcolor=#666699>
+	<TR>
+		<TD>
+			<FONT COLOR="#ffffff">
+			Author: <A HREF="mailto:juergen.schmidt@germany.sun.com"><FONT COLOR="#ffffff">J&uuml;rgen Schmidt</FONT></A> ($Date: 2004/11/30 13:11:29 $)<br/>
+			<I>Copyright 2001 Sun Microsystems, Inc., 901 San Antonio Road, Palo Alto, CA 94303 USA.</I></FONT>
+		</TD>
+	</TR>
+</TABLE>
+</BODY>
+</HTML>

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



Mime
View raw message