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 [10/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
Propchange: incubator/ooo/ooo-site/trunk/content/udk/common/man/tasks/api_docu_review.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/ooo/ooo-site/trunk/content/udk/common/man/tasks/apitests.html
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/udk/common/man/tasks/apitests.html?rev=1206895&view=auto
==============================================================================
--- incubator/ooo/ooo-site/trunk/content/udk/common/man/tasks/apitests.html (added)
+++ incubator/ooo/ooo-site/trunk/content/udk/common/man/tasks/apitests.html Sun Nov 27 22:49:46 2011
@@ -0,0 +1,169 @@
+<!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"/>
+   <meta name="Author" content="pluby"/>
+   <title>API Tests</title>
+<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; padding: 0.2cm; }
+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%" bgcolor=#666699 summary=header>
+<tr> <td>
+<h1> API Tests </h1>
+</td></tr>
+</table>
+
+
+<h2> Introduction </h2>
+
+<p>This document provides a list of header files, by module, that need API
+tests. At this time we are working on the sal module. However, once a set of
+API tests for the sal module is completed, we will add other UDK modules (e.g.
+vos, cppu, etc.) to this URL.
+
+<p>If you want to help out, please put your name in the "Responsible Engineer"
+column in the table below <b>before</b> starting any work. If you do not have
+commit priviledges to the CVS tree, please post your updates to the
+dev@udk.openoffice.org mailing list so that we can update this URL for you.
+
+
+<h2> Building and running the API test tool </h2>
+
+<p>The API test tool is a command line tool called <b>testshl</b>. Although the
+testshl command is not built as part of the OpenOffice.org build, you can
+build it manually by executing the following commands:
+
+<pre>
+cd $SRC_ROOT ; cvs -d `cat sal/CVS/Root` co -D "05/22/2001" sal solenv/inc/unxsols3.mk
+cd $SRC_ROOT ; cvs -d `cat sal/CVS/Root` co -A sal/inc/rtl/tres.hxx
+cd $SRC_ROOT ; cvs -d `cat sal/CVS/Root` co -A sal/tests
+cd $SRC_ROOT ; cvs -d `cat sal/CVS/Root` co -A testshl
+cd $SRC_ROOT/sal ; dmake -u ; deliver
+cd $SRC_ROOT/testshl/util ; dmake -u
+cd $SRC_ROOT/testshl/src ; dmake -u ; deliver
+</pre>
+
+<p>The testshl command takes 2 arguments: a shared library containing your test
+functions and a text file that lists the names of those test functions (an
+*.sce file). The source files for your test functions, the *.sce file, and the
+makfile.mk file that builds your shared library is normally put in a "tests"
+subdirectory of each module. For example, in the sal module, there is a
+sal/tests subdirectory. If you are implementing tests for a new module, you
+should create a "tests" subdirectory for that module and use the makefile.mk
+and *.sce files in sal/tests as a template.
+
+<p>Once you have successfully built the testshl command, you can build and
+execute your test functions by executing the following commands:
+
+<pre>
+cd $SRC_ROOT/(module-name)/tests ; dmake -u
+testshl $SRC_ROOT/(module-name)/$INPATH/lib/(test-library-name) $SRC_ROOT/(module-name)/tests/sce/(sce-name)
+</pre>
+
+<p>For example, to execute the test functions in sal/tests, you would execute
+the following commands:
+
+<pre>
+cd $SRC_ROOT/sal/tests ; dmake -u
+testshl $SRC_ROOT/sal/$INPATH/lib/librtl_apitest.so $SRC_ROOT/sal/tests/sce/rtl_apitest.sce
+testshl $SRC_ROOT/sal/$INPATH/lib/libosl_apitest.so $SRC_ROOT/sal/tests/sce/osl_apitest.sce
+</pre>
+
+<h2> Module: sal </h2>
+
+<table width="100%" border=5 summary="Module Testers">
+<tr>
+<th>
+Header File
+</th>
+<th>
+Responsible Engineer
+</th>
+<th>
+API Test Source File
+</th>
+<th>
+Status
+</th>
+</tr>
+
+<tr><td>sal/inc/osl/conditn.hxx</td><td><a href="mailto:gene.anaya@sun.com">gene.anaya@sun.com</a></td><td>osl_apitest_conditn.cxx</td><td>Implemented 7/11/2001</td></tr>
+<tr><td>sal/inc/osl/conditn.h</td><td><a href="mailto:gene.anaya@sun.com">gene.anaya@sun.com</a></td><td>osl_apitest_conditn.cxx</td><td>Implemented 7/11/2001</td></tr>
+<tr><td>sal/inc/osl/diagnose.h</td><td><a href="mailto:gene.anaya@sun.com">gene.anaya@sun.com</a></td><td>osl_apitest_diagnose.cxx</td><td>Implemented 7/11/2001</td></tr>
+<tr><td>sal/inc/osl/endian.h</td><td></td><td></td><td></td></tr>
+<tr><td>sal/inc/osl/file.h</td><td><a href="mailto:gene.anaya@sun.com">gene.anaya@sun.com</a></td><td>osl_apitest_file.cxx</td><td>Implemented 7/27/2001</td></tr>
+<tr><td>sal/inc/osl/file.hxx</td><td><a href="mailto:gene.anaya@sun.com">gene.anaya@sun.com</a></td><td>osl_apitest_file.cxx</td><td>Mostly Implemented 7/27/2001</td></tr>
+<tr><td>sal/inc/osl/interlck.h</td><td><a href="mailto:gene.anaya@sun.com">gene.anaya@sun.com</a></td><td>osl_apitest_interlck.cxx</td><td>Implemented 7/11/2001</td></tr>
+<tr><td>sal/inc/osl/module.h</td><td></td><td></td><td></td></tr>
+<tr><td>sal/inc/osl/module.hxx</td><td></td><td></td><td></td></tr>
+<tr><td>sal/inc/osl/mutex.h</td><td><a href="mailto:gene.anaya@sun.com">gene.anaya@sun.com</a></td><td>osl_apitest_mutex.cxx</td><td>Implemented 07/11/2001</td></tr>
+<tr><td>sal/inc/osl/mutex.hxx</td><td><a href="mailto:gene.anaya@sun.com">gene.anaya@sun.com</a></td><td>osl_apitest_mutex.cxx</td><td>Mostly Implemented</td></tr>
+<tr><td>sal/inc/osl/nlsupport.h</td><td><a href="mailto:gene.anaya@sun.com">gene.anaya@sun.com</a></td><td>osl_apitest_nlsupport.cxx</td><td>Implemented 7/11/2001</td></tr>
+<tr><td>sal/inc/osl/pipe.hxx</td><td><a href="mailto:gene.anaya@sun.com">gene.anaya@sun.com</a></td><td>osl_apitest_pipe.cxx</td><td>Mostly Implemented</td></tr>
+<tr><td>sal/inc/osl/pipe.h</td><td><a href="mailto:gene.anaya@sun.com">gene.anaya@sun.com</a></td><td>osl_apitest_pipe.cxx</td><td>Mostly Implemented</td></tr>
+<tr><td>sal/inc/osl/pipe_decl.hxx</td><td><a href="mailto:gene.anaya@sun.com">gene.anaya@sun.com</a></td><td>osl_apitest_pipe.cxx</td><td>see pipe.hxx</td></tr>
+<tr><td>sal/inc/osl/process.h</td><td></td><td></td><td></td></tr>
+<tr><td>sal/inc/osl/profile.h</td><td><a href="mailto:gene.anaya@sun.com">gene.anaya@sun.com</a></td><td>osl_apitest_profile.cxx</td><td>Implemented 7/14/2001</td></tr>
+<tr><td>sal/inc/osl/profile.hxx</td><td><a href="mailto:gene.anaya@sun.com">gene.anaya@sun.com</a></td><td>osl_apitest_profile.cxx</td><td>Implemented 7/14/2001</td></tr>
+<tr><td>sal/inc/osl/security.h</td><td></td><td></td><td></td></tr>
+<tr><td>sal/inc/osl/security.hxx</td><td></td><td></td><td></td></tr>
+<tr><td>sal/inc/osl/security_decl.hxx</td><td></td><td></td><td></td></tr>
+<tr><td>sal/inc/osl/semaphor.h</td><td></td><td></td><td></td></tr>
+<tr><td>sal/inc/osl/semaphor.hxx</td><td></td><td></td><td></td></tr>
+<tr><td>sal/inc/osl/signal.h</td><td></td><td></td><td></td></tr>
+<tr><td>sal/inc/osl/socket.h</td><td></td><td></td><td></td></tr>
+<tr><td>sal/inc/osl/socket.hxx</td><td></td><td></td><td></td></tr>
+<tr><td>sal/inc/osl/socket_decl.hxx</td><td></td><td></td><td></td></tr>
+<tr><td>sal/inc/osl/thread.h</td><td></td><td></td><td></td></tr>
+<tr><td>sal/inc/osl/thread.hxx</td><td></td><td></td><td></td></tr>
+<tr><td>sal/inc/osl/time.h</td><td><a href="mailto:gene.anaya@sun.com">gene.anaya@sun.com</a></td><td>osl_apitest_time.cxx</td><td>Implemented 7/11/2001</td></tr>
+<tr><td>sal/inc/osl/util.h</td><td><a href="mailto:gene.anaya@sun.com">gene.anaya@sun.com</a></td><td>osl_apitest_util.cxx</td><td>Implemented 7/11/2001</td></tr>
+<tr><td>sal/inc/rtl/byteseq.hxx</td><td></td><td></td><td></td></tr>
+<tr><td>sal/inc/rtl/alloc.h</td><td></td><td></td><td></td></tr>
+<tr><td>sal/inc/rtl/byteseq.h</td><td></td><td></td><td></td></tr>
+<tr><td>sal/inc/rtl/cipher.h</td><td></td><td></td><td></td></tr>
+<tr><td>sal/inc/rtl/crc.h</td><td></td><td></td><td></td></tr>
+<tr><td>sal/inc/rtl/digest.h</td><td></td><td></td><td></td></tr>
+<tr><td>sal/inc/rtl/locale.h</td><td></td><td></td><td></td></tr>
+<tr><td>sal/inc/rtl/locale.hxx</td><td></td><td></td><td></td></tr>
+<tr><td>sal/inc/rtl/memory.h</td><td></td><td></td><td></td></tr>
+<tr><td>sal/inc/rtl/process.h</td><td></td><td></td><td></td></tr>
+<tr><td>sal/inc/rtl/random.h</td><td></td><td></td><td></td></tr>
+<tr><td>sal/inc/rtl/ref.hxx</td><td></td><td></td><td></td></tr>
+<tr><td>sal/inc/rtl/strbuf.h</td><td><a href="mailto:babak.mahbod@sun.com">babak.mahbod@sun.com</a></td><td>rtl_StringBuffer.cxx</td><td>In Development</td></tr>
+<tr><td>sal/inc/rtl/strbuf.hxx</td><td><a href="mailto:babak.mahbod@sun.com">babak.mahbod@sun.com</a></td><td>rtl_OStringBuffer.cxx</td><td>In Development</td></tr>
+<tr><td>sal/inc/rtl/string.h</td><td><a href="mailto:babak.mahbod@sun.com">babak.mahbod@sun.com</a></td><td>rtl_String.cxx</td><td>In Development</td></tr>
+<tr><td>sal/inc/rtl/string.hxx</td><td><a href="mailto:babak.mahbod@sun.com">babak.mahbod@sun.com</a></td><td>rtl_OString.cxx</td><td>Last Update 07/27/01</td></tr>
+<tr><td>sal/inc/rtl/tencinfo.h</td><td></td><td></td><td></td></tr>
+<tr><td>sal/inc/rtl/textcvt.h</td><td></td><td></td><td></td></tr>
+<tr><td>sal/inc/rtl/textenc.h</td><td></td><td></td><td></td></tr>
+<tr><td>sal/inc/rtl/tres.hxx</td><td></td><td></td><td></td></tr>
+<tr><td>sal/inc/rtl/uri.h</td><td></td><td></td><td></td></tr>
+<tr><td>sal/inc/rtl/uri.hxx</td><td></td><td></td><td></td></tr>
+<tr><td>sal/inc/rtl/ustrbuf.h</td><td><a href="mailto:babak.mahbod@sun.com">babak.mahbod@sun.com</a></td><td>rtl_UStringBuffer.cxx</td><td>In Development</td></tr>
+<tr><td>sal/inc/rtl/ustrbuf.hxx</td><td><a href="mailto:babak.mahbod@sun.com">babak.mahbod@sun.com</a></td><td>rtl_OUStringBuffer.cxx</td><td>In Development</td></tr>
+<tr><td>sal/inc/rtl/uuid.h</td><td></td><td></td><td></td></tr>
+<tr><td>sal/inc/rtl/ustring.h</td><td><a href="mailto:babak.mahbod@sun.com">babak.mahbod@sun.com</a></td><td>rtl_UString.cxx</td><td>In Development</td></tr>
+<tr><td>sal/inc/rtl/ustring.hxx</td><td><a href="mailto:babak.mahbod@sun.com">babak.mahbod@sun.com</a></td><td>rtl_OUString.cxx</td><td>Last Update 07/27/01</td></tr>
+<tr><td>sal/inc/rtl/ustring.tmp</td><td></td><td></td><td></td></tr>
+<tr><td>sal/inc/rtl/bootstrap.h</td><td></td><td></td><td></td></tr>
+<tr><td>sal/inc/rtl/bootstrap.hxx</td><td></td><td></td><td></td></tr>
+<tr><td>sal/inc/rtl/unload.h</td><td></td><td></td><td></td></tr>
+<tr><td>sal/inc/sal/config.h</td><td></td><td></td><td></td></tr>
+<tr><td>sal/inc/sal/macros.h</td><td></td><td></td><td></td></tr>
+<tr><td>sal/inc/sal/main.h</td><td></td><td></td><td></td></tr>
+<tr><td>sal/inc/sal/types.h</td><td></td><td></td><td></td></tr>
+
+</table>
+
+</body>
+</html>

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

Added: incubator/ooo/ooo-site/trunk/content/udk/common/man/tasks/tasks.html
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/udk/common/man/tasks/tasks.html?rev=1206895&view=auto
==============================================================================
--- incubator/ooo/ooo-site/trunk/content/udk/common/man/tasks/tasks.html (added)
+++ incubator/ooo/ooo-site/trunk/content/udk/common/man/tasks/tasks.html Sun Nov 27 22:49:46 2011
@@ -0,0 +1,12 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+"http://www.w3.org/TR/2000/REC-xhtml1-20000126/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+        <meta http-equiv="refresh" content="3; URL=http://wiki.services.openoffice.org/wiki/Uno/Todo" />
+<meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">
+</head>
+<body>
+<p class="Header">Redirecting....</p>
+
+</body>
+</html>

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

Added: incubator/ooo/ooo-site/trunk/content/udk/common/man/tools.html
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/udk/common/man/tools.html?rev=1206895&view=auto
==============================================================================
--- incubator/ooo/ooo-site/trunk/content/udk/common/man/tools.html (added)
+++ incubator/ooo/ooo-site/trunk/content/udk/common/man/tools.html Sun Nov 27 22:49:46 2011
@@ -0,0 +1,864 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<HTML>
+<HEAD>
+	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=iso-8859-1">
+	<TITLE>The UNO tools</TITLE>
+	<META NAME="GENERATOR" CONTENT="StarOffice/5.2 (Win32)">
+	<META NAME="CLASSIFICATION" CONTENT="The UNO rdbumaker">
+	<META NAME="KEYWORDS" CONTENT="UNO,rdbumaker">
+</HEAD>
+<BODY LINK="#444488" VLINK="#444488" BGCOLOR="#eeeeff"><A NAME="__Top__"></A>
+<TABLE WIDTH=100% BORDER=0 CELLPADDING=4 CELLSPACING=0>
+	<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>The 
+        UNO tools</FONT></FONT></H1>
+		</TD>
+	</TR>
+</TABLE>
+<hr size=3 noshade>
+<table width=100% border=0 cellpadding=4 cellspacing=0>
+  <tr> 
+    <td colspan=3 width=100% bgcolor="#666699"> 
+      <div align="center"><font size="6" color="#FFFFFF">Contents</font></div>
+    </td>
+  </tr>
+  <tr> 
+    <td colspan=3 width=100%> 
+      <hr size=1 noshade>
+    </td>
+  </tr>
+  <tr> 
+    <td colspan=3 width=100%> 
+      <ul>
+        <li><a href="#unoidl">unoidl</a></li>
+        <li><a href="#idlc">idlc</a></li>
+        <li><a href="#cppumaker">cppumaker</a></li>
+        <li><a href="#cunomaker">cunomaker</a></li>
+        <li><a href="#javamaker">javamaker</a></li>
+        <li><a href="#rdbmaker">rdbmaker</a></li>
+        <li><a href="#regcomp">regcomp</a></li>
+        <li><a href="#regmerge">regmerge</a></li>
+        <li><a href="#regview">regview</a></li>
+        <li><a href="#xml2cmp">xml2cmp</a></li>
+        <li><a href="#unoexe">uno</a></li>
+      </ul>
+    </td>
+  </tr>
+  <col width=85*> <col width=85*> <col width=85*> 
+</table>
+<HR SIZE=3 noshade>
+<table width=100% border=0 cellpadding=4 cellspacing=0>
+  <tr> 
+    <td colspan=3 width=100% bgcolor="#666699"> 
+      <div align="center"><font size="6" color="#FFFFFF"><a name="unoidl"></a>unoidl</font></div>
+    </td>
+  </tr>
+  <tr> 
+    <td colspan=3 width=100%> 
+      <hr size=1 noshade>
+    </td>
+  </tr>
+  <col width=85*> <col width=85*> <col width=85*> 
+  <tr> 
+    <td colspan=3 width=100% bgcolor="#666699"> 
+      <h3 align=LEFT style="margin-top: 0cm; text-decoration: none"><font color="#ffffff"><font size=4>Usage:</font></font></h3>
+    </td>
+  </tr>
+  <tr> 
+    <td colspan=3 width=100%> 
+      <p>The idl compiler transforms interface definitions written in idl into 
+        urd files. The urd files are then merged into the type library 
+        (rdb). You can find a syntax description for IDL <a href="idl.html">here</a>. 
+      </p>
+      <p><b>unoidl [flag | file]*</b></p>
+      <p><b>Legal flags:</b></p>
+      <dl> 
+          <dt style="margin-right: 1cm; margin-bottom: 0.5cm">-E </dt>
+          <dd style="margin-right: 1cm; margin-bottom: 0.5cm"> runs preprocessor 
+            only, prints on stdout </dd>
+          <dt style="margin-right: 1cm; margin-bottom: 0.5cm"> -D&lt;name&gt; 
+          </dt>
+          <dd style="margin-right: 1cm; margin-bottom: 0.5cm"> defines macro for 
+            the preprocessor </dd>
+          <dt style="margin-right: 1cm; margin-bottom: 0.5cm"> -OH&lt;dir&gt; 
+          </dt>
+          <dd style="margin-right: 1cm; margin-bottom: 0.5cm"> produce output 
+            files in dir (pathname) </dd>
+          <dt style="margin-right: 1cm; margin-bottom: 0.5cm"> -I&lt;dir&gt; </dt>
+          <dd style="margin-right: 1cm; margin-bottom: 0.5cm"> includes dir in 
+            search path for preprocessor </dd>
+          <dt style="margin-right: 1cm; margin-bottom: 0.5cm"> -V </dt>
+          <dd style="margin-right: 1cm; margin-bottom: 0.5cm"> prints version 
+            info then exits </dd>
+          <dt style="margin-right: 1cm; margin-bottom: 0.5cm"> -Wb,arg1,argn </dt>
+          <dd style="margin-right: 1cm; margin-bottom: 0.5cm"> passes args to 
+            BE </dd>
+          <dt style="margin-right: 1cm; margin-bottom: 0.5cm"> -B&lt;backend&gt; 
+          </dt>
+          <dd style="margin-right: 1cm; margin-bottom: 0.5cm"> use backend for 
+            code generation </dd>
+          <dd style="margin-right: 1cm; margin-bottom: 0.5cm"> supported backend 
+            is 'urd' for Uno Reflection Data. </dd>
+          <dd style="margin-right: 1cm; margin-bottom: 0.5cm">This option is optional because default is using 'urd' backend.</dd>
+          <dt style="margin-right: 1cm; margin-bottom: 0.5cm"> -Mdepend[=match] 
+          </dt>
+          <dd style="margin-right: 1cm; margin-bottom: 0.5cm"> generate dependencies 
+            for all generated files, to stdout. Files beginning with 'match' are 
+            not used for dependencies. No dependencies for the doc backend. </dd>
+          <dt style="margin-right: 1cm; margin-bottom: 0.5cm"> -h </dt>
+          <dd style="margin-right: 1cm; margin-bottom: 0.5cm"> prints this usage 
+            message and exits </dd>
+          <dt style="margin-right: 1cm; margin-bottom: 0.5cm"> -v </dt>
+          <dd style="margin-right: 1cm; margin-bottom: 0.5cm"> traces compilation 
+            stages </dd>
+          <dt style="margin-right: 1cm; margin-bottom: 0.5cm"> -w </dt>
+          <dd style="margin-right: 1cm"> suppresses IDL compiler warning messages 
+          </dd>
+      </dl>
+    </td>
+  </tr>
+  <tr> 
+    <td colspan=3 width=100%> 
+      <hr size=1 noshade>
+    </td>
+  </tr>
+</table>
+<hr size=3 noshade>
+<table width=100% border=0 cellpadding=4 cellspacing=0>
+  <tr> 
+    <td colspan=3 width=100% bgcolor="#666699"> 
+      <div align="center"><font size="6" color="#FFFFFF"><a name="idlc"></a>idlc</font></div>
+    </td>
+  </tr>
+  <tr> 
+    <td colspan=3 width=100%> 
+      <hr size=1 noshade>
+    </td>
+  </tr>
+  <col width=85*> <col width=85*> <col width=85*> 
+  <tr> 
+    <td colspan=3 width=100% bgcolor="#666699"> 
+      <h3 align=LEFT style="margin-top: 0cm; text-decoration: none"><font color="#ffffff"><font size=4>Usage:</font></font></h3>
+    </td>
+  </tr>
+  <tr> 
+    <td colspan=3 width=100%> 
+      <p>'idlc' is a new idl compiler. We made some changes in the IDL language 
+        specification to simplify the syntax.</p>
+      <p>The idl compiler transforms interface definitions, written in idl, into 
+        urd files. The urd files are then merged into the type library 
+        (rdb). You can find a syntax description for IDL <a href="idl_syntax.html">here</a>. 
+      </p>
+      <p><b>idlc [-options] file_1 ... file_n | @&lt;filename&gt;</b></p>
+      <dl> 
+        <dt style="margin-right: 1cm; margin-bottom: 0.5cm">file_1 ... file_n</dt>
+        <dd style="margin-right: 1cm; margin-bottom: 0.5cm">specifies one or more idl files. 
+	  Only files with the extension '.idl' are valid.</dd>
+        <dt style="margin-right: 1cm; margin-bottom: 0.5cm">@&lt;filename&gt;</dt>
+        <dd style="margin-right: 1cm; margin-bottom: 0.5cm">filename specifies the name of a command file.</dd>
+      </dl>
+      <p><b>Options:</b></p>
+      <dl> 
+          <dt style="margin-right: 1cm; margin-bottom: 0.5cm">-O&lt;path&gt;</dt>
+          <dd style="margin-right: 1cm; margin-bottom: 0.5cm">path describes the output directory. 
+	    The generated output is a registry file with the same name as the idl input file.</dd>
+          <dt style="margin-right: 1cm; margin-bottom: 0.5cm">-I&lt;path&gt;</dt>
+          <dd style="margin-right: 1cm; margin-bottom: 0.5cm">path specifies 
+            a directory where include files are located, that will be searched by the preprocessor. 
+            Multiple directories can be combined with ';'.</dd>
+          <dt style="margin-right: 1cm; margin-bottom: 0.5cm">-D&lt;name&gt;</dt>
+          <dd style="margin-right: 1cm; margin-bottom: 0.5cm">name defines a 
+            macro for the preprocessor.</dd>
+          <dt style="margin-right: 1cm; margin-bottom: 0.5cm">-C</dt>
+          <dd style="margin-right: 1cm; margin-bottom: 0.5cm">generate complete 
+            type information, including additional service information and documentation.</dd>
+          <dt style="margin-right: 1cm; margin-bottom: 0.5cm">-h|?</dt>
+          <dd style="margin-right: 1cm; margin-bottom: 0.5cm">print this help message and exit. </dd>
+      </dl>
+      </td>
+  </tr>
+  <tr> 
+    <td colspan=3 width=100%> 
+      <hr size=1 noshade>
+    </td>
+  </tr>
+</table>
+<hr size=3 noshade>
+<TABLE WIDTH=100% BORDER=0 CELLPADDING=4 CELLSPACING=0>
+  <TR> 
+    <TD COLSPAN=3 WIDTH=100% BGCOLOR="#666699"> 
+      <div align="center"><font size="6" color="#FFFFFF"><a name="cppumaker"></a>cppumaker</font></div>
+    </TD>
+  </TR>
+  <tr> 
+    <td colspan=3 width=100%> 
+      <hr size=1 noshade>
+    </td>
+  </tr>
+  <COL WIDTH=85*> <COL WIDTH=85*> <COL WIDTH=85*> 
+  <TR> 
+    <TD COLSPAN=3 WIDTH=100% BGCOLOR="#666699"> 
+      <H3 ALIGN=LEFT STYLE="margin-top: 0cm; text-decoration: none"><FONT COLOR="#ffffff"><FONT SIZE=4>Usage:</FONT></FONT></H3>
+    </TD>
+  </TR>
+  <TR> 
+    <TD COLSPAN=3 WIDTH=100%> 
+      <P>The cppumaker generates a C++ representation for idl types. The cppumaker 
+        works on a typelibrary which is generated by the unoidl. It generates 
+        the output for all specified types and for all types the specified types 
+        depends on.</P>
+      <p><b>cppumaker [-options] file_1 ... file_n</b></p>
+      <p><b><span style="text-decoration: none">Options</span></b>:</p>
+      <dl> 
+          <dt style="margin-right: 1cm; margin-bottom: 0.5cm">-O&lt;path&gt; </dt>
+          <dd style="margin-right: 1cm; margin-bottom: 0.5cm"> path describes 
+            the root directory for the generated output. The output directory 
+            tree is generated under this directory. </dd>
+          <dt style="margin-right: 1cm; margin-bottom: 0.5cm"> -T&lt;name&gt; 
+          </dt>
+          <dd style="margin-right: 1cm; margin-bottom: 0.5cm"> name specifies 
+            a type or a list of types. The output for this [t1;...] type is generated. 
+            If no '-T' option is specified, then output for all types is generated. 
+          </dd>
+          <dt style="margin-right: 1cm; margin-bottom: 0.5cm"> -B&lt;name&gt; 
+          </dt>
+          <dd style="margin-right: 1cm"> name specifies the base node. All types 
+            are searched under this node. Default is the root '/' of the registry 
+            files. </dd>
+          <dt style="margin-right: 1cm; margin-bottom: 0.5cm"> -L|-C </dt>
+          <dd style="margin-right: 1cm"> In general, the cppumaker tool generates 
+            getCppuType() functions in three ways:<br>
+            <br>
+          </dd>
+          <dd style="margin-right: 1cm"> 
+            <ol>
+              <li>no option (default)<br>
+                This generates headers so that UNO runs correctly as long 
+                as: 
+                <dl> 
+                  <dt style="margin-right: 1cm; margin-bottom: 0.5cm">-- one compiler 
+                    compiled all code (no bridging needed for inter-component 
+                    communication)</dt>
+                  <dt style="margin-right: 1cm; margin-bottom: 0.5cm">-- no marshaling 
+                    is needed (no bridging needed for interprocess communication)</dt>
+                  <dt style="margin-right: 1cm; margin-bottom: 0.5cm">-- no scripting 
+                    is needed (in general, this needs full type description support) 
+                  </dt>
+                </dl>
+              <li>-L (_ONLY_ usable on Windows!)<br>
+                This option generates the shortest getCppuType() functions, but 
+                needs a running type description manager (+provider) reading all 
+                type information from the applicat.rdb! ==> !! Cannot be used 
+                at setup startup, because no applicat.rdb is involved at this 
+                early stage!! 
+              <li>-C (fully comprehensive type information)<br>
+                This options generates the longest form of getCppuType() functions, 
+                including a comprehensive description of a type, thus there is 
+                no need for a type description manager (+provider) reading types 
+                from applicat.rdb: 
+                <dl> 
+                  <dt style="margin-right: 1cm; margin-bottom: 0.5cm"> -- limitation: 
+                    only previously used types are provided by the runtime (i.e., 
+                    only types which were previously registered due to a getCppuType() 
+                    call are accessible by name)</dt>
+                </dl>
+            </ol>
+            <br>
+            So, please keep these limitations in mind if you are not sure that 
+            there is a running type description manager (+provider) reading from 
+            applicat.rdb. </dd>
+          <dt style="margin-right: 1cm; margin-bottom: 0.5cm"> -G</dt>
+          <dd style="margin-right: 1cm"> generate only target files which do 
+            not exist.</dd>
+          <dt style="margin-right: 1cm; margin-bottom: 0.5cm"> -Gc</dt>
+          <dd style="margin-right: 1cm"> generate only target files whose content 
+            will be changed.</dd>
+      </dl>
+		</TD>
+  </TR>
+  <tr> 
+    <td colspan=3 width=100%> 
+      <hr size=1 noshade>
+    </td>
+  </tr>
+</TABLE>
+<HR SIZE=3 noshade>
+<table width=100% border=0 cellpadding=4 cellspacing=0>
+  <tr> 
+    <td colspan=3 width=100% bgcolor="#666699"> 
+      <div align="center"><font size="6" color="#FFFFFF"><a name="cunomaker"></a>cunomaker</font></div>
+    </td>
+  </tr>
+  <tr> 
+    <td colspan=3 width=100%> 
+      <hr size=1 noshade>
+    </td>
+  </tr>
+  <col width=85*> <col width=85*> <col width=85*> 
+  <tr> 
+    <td colspan=3 width=100% bgcolor="#666699"> 
+      <h3 align=LEFT style="margin-top: 0cm; text-decoration: none"><font color="#ffffff"><font size=4>Usage:</font></font></h3>
+    </td>
+  </tr>
+  <tr> 
+    <td colspan=3 width=100%> 
+      <p>The cunomaker generates a C representation for idl types. The cunomaker 
+        works on a typelibrary which is generated by the unoidl. It generates 
+        the output for all specified types and for all types the specified types 
+        depends on.</p>
+      <p><b>cunomaker [-options] file_1 ... file_n</b></p>
+      <p><b><span style="text-decoration: none">Options:</span></b>:</p>
+      <dl> 
+          <dt style="margin-right: 1cm; margin-bottom: 0.5cm">-O&lt;path&gt; </dt>
+          <dd style="margin-right: 1cm; margin-bottom: 0.5cm"> path describes 
+            the root directory for the generated output. The output directory 
+            tree is generated under this directory. </dd>
+          <dt style="margin-right: 1cm; margin-bottom: 0.5cm"> -T&lt;name&gt; 
+          </dt>
+          <dd style="margin-right: 1cm; margin-bottom: 0.5cm"> name specifies 
+            a type or a list of types. The output for this [t1;...] type is generated. 
+            If no '-T' option is specified, then output for all types is generated. 
+          </dd>
+          <dt style="margin-right: 1cm; margin-bottom: 0.5cm"> -B&lt;name&gt; 
+          </dt>
+          <dd style="margin-right: 1cm"> name specifies the base node. All types 
+            are searched under this node. Default is the root '/' of the registry 
+            files. </dd>
+          <dt>-U activate the generating of a getCppuType function</dt>
+          <dt style="margin-right: 1cm; margin-bottom: 0.5cm"> -C </dt>
+          <dd style="margin-right: 1cm"> In general, the cunomaker tool generates 
+            getCppuType_&lt;name&gt;() functions in two ways: <br>
+            <br>
+          </dd>
+          <dd style="margin-right: 1cm"> 
+            <ol>
+              <li>no option (default)<br>
+                This generates headers so that UNO runs correctly as long 
+                as: 
+                <dl> 
+                  <dt style="margin-right: 1cm; margin-bottom: 0.5cm">-- one compiler 
+                    compiled all code (no bridging needed for inter component 
+                    communication)</dt>
+                  <dt style="margin-right: 1cm; margin-bottom: 0.5cm">-- no marshaling 
+                    is needed (no bridging needed for interprocess communication)</dt>
+                  <dt style="margin-right: 1cm; margin-bottom: 0.5cm">-- no scripting 
+                    is needed (in general, this needs full type description support) 
+                  </dt>
+                </dl>
+              <li>-C (fully comprehensive type information)<br>
+                This options generates the longest form of getCppuType_&lt;name&gt;() 
+                functions, including a comprehensive description of a type, thus 
+                there is no need for a type description manager (+provider) reading 
+                types from applicat.rdb: 
+                <dl> 
+                  <dt style="margin-right: 1cm; margin-bottom: 0.5cm"> -- limitation: 
+                    only previously used types are provided by the runtime (i.e., 
+                    only types which were previously registered due to a getCppuType() 
+                    call are accessible by name)</dt>
+                </dl>
+            </ol>
+            <br>
+            So, please keep these limitations in mind if you are not sure that 
+            there is a running type description manager (+provider) reading from 
+            applicat.rdb. </dd>
+          <dt style="margin-right: 1cm; margin-bottom: 0.5cm"> -G</dt>
+          <dd style="margin-right: 1cm"> generate only target files which do 
+            not exist.</dd>
+          <dt style="margin-right: 1cm; margin-bottom: 0.5cm"> -Gc</dt>
+          <dd style="margin-right: 1cm"> generates only target files whose content 
+            will be changed.</dd>
+      </dl>
+    </td>
+  </tr>
+  <tr> 
+    <td colspan=3 width=100%> 
+      <hr size=1 noshade>
+    </td>
+  </tr>
+</table>
+<hr size=3 noshade>
+<table width=100% border=0 cellpadding=4 cellspacing=0>
+  <tr> 
+    <td colspan=3 width=100% bgcolor="#666699"> 
+      <div align="center"><font size="6" color="#FFFFFF"><a name="javamaker"></a>javamaker</font></div>
+    </td>
+  </tr>
+  <tr> 
+    <td colspan=3 width=100%> 
+      <hr size=1 noshade>
+    </td>
+  </tr>
+  <col width=85*> <col width=85*> <col width=85*> 
+  <tr> 
+    <td colspan=3 width=100% bgcolor="#666699"> 
+      <h3 align=LEFT style="margin-top: 0cm; text-decoration: none"><font color="#ffffff"><font size=4>Usage:</font></font></h3>
+    </td>
+  </tr>
+  <tr> 
+    <td colspan=3 width=100%> 
+      <p>The javamaker generates the appropriate java file for each idl type. 
+        The javamaker works on a typelibrary which is generated by the unoidl. 
+        It generates the output for all specified types and for all types the 
+        specified types depends on.</p>
+      <p><b>javamaker [-options] file_1 ... file_n</b></p>
+      <p><b>Options:</b></p>
+      <dl> 
+          <dt style="margin-right: 1cm; margin-bottom: 0.5cm">-O&lt;path&gt; </dt>
+          <dd style="margin-right: 1cm; margin-bottom: 0.5cm"> path describes 
+            the root directory for the generated output. The output directory 
+            tree is generated under this directory. </dd>
+          <dt style="margin-right: 1cm; margin-bottom: 0.5cm"> -T&lt;name&gt; 
+          </dt>
+          <dd style="margin-right: 1cm; margin-bottom: 0.5cm"> name specifies 
+            a type or a list of types. The output for this [t1;...] type is generated. 
+            If no '-T' option is specified, then output for all types is generated. 
+          </dd>
+          <dt style="margin-right: 1cm; margin-bottom: 0.5cm"> -B&lt;name&gt; 
+          </dt>
+          <dd style="margin-right: 1cm; font-weight: medium"> name specifies the 
+            base node. All types are searched under this node. Default is the 
+            root '/' of the registry files. </dd>
+      </dl>
+      </td>
+  </tr>
+  <tr> 
+    <td colspan=3 width=100%> 
+      <hr size=1 noshade>
+    </td>
+  </tr>
+</table>
+<hr size=3 noshade>
+<table width=100% border=0 cellpadding=4 cellspacing=0>
+  <tr> 
+    <td colspan=3 width=100% bgcolor="#666699"> 
+      <div align="center"><font size="6" color="#FFFFFF"><a name="rdbmaker"></a>rdbmaker</font></div>
+    </td>
+  </tr>
+  <tr> 
+    <td colspan=3 width=100%> 
+      <hr size=1 noshade>
+    </td>
+  </tr>
+  <col width=85*> <col width=85*> <col width=85*> 
+  <tr> 
+    <td colspan=3 width=100% bgcolor="#666699"> 
+      <h3 align=LEFT style="margin-top: 0cm; text-decoration: none"><font color="#ffffff"><font size=4>Usage:</font></font></h3>
+    </td>
+  </tr>
+  <tr> 
+    <td colspan=3 width=100%> 
+      <p>The rdbmaker generates subsets of the typelibrary. The rdbmaker works 
+        on a typelibrary which is generated by the unoidl. It generates a subset 
+        of the typelibrary which contains all specified types and all types the 
+        specified types depends on. This could be used to provide all types and 
+        only the necessary types for a component.</p>
+      <p><b>rdbmaker [-options] file_1 ... file_n</b></p>
+      <p><b>Options:</b></p>
+      <dl> 
+          <dt style="margin-right: 1cm; margin-bottom: 0.5cm">-O&lt;fileName&gt; 
+          </dt>
+          <dd style="margin-right: 1cm; margin-bottom: 0.5cm"> filename specifies 
+            the name of the generated registry or text file. </dd>
+          <dt style="margin-right: 1cm; margin-bottom: 0.5cm"> -L </dt>
+          <dd style="margin-right: 1cm; margin-bottom: 0.5cm"> specifies that 
+            only a text file is generated with the names of the specified types 
+            and their dependencies. Default is that a registry file will be created. 
+          </dd>
+          <dt style="margin-right: 1cm; margin-bottom: 0.5cm"> -T&lt;name&gt; 
+          </dt>
+          <dd style="margin-right: 1cm; margin-bottom: 0.5cm"> name specifies 
+            a type or a list of types. The output for this [t1;...] type is generated. 
+            If no '-T' option is specified, then output for all types is generated. 
+          </dd>
+          <dt style="margin-right: 1cm; margin-bottom: 0.5cm"> -FT&lt;name&gt; 
+          </dt>
+          <dd style="margin-right: 1cm; margin-bottom: 0.5cm"> name specifies 
+            a type or a list of types. For these types, nothing will be generated. 
+          </dd>
+          <dt style="margin-right: 1cm; margin-bottom: 0.5cm"> -F&lt;file&gt; 
+          </dt>
+          <dd style="margin-right: 1cm; margin-bottom: 0.5cm"> file specifies 
+            a text file. For the specified types in this file, nothing will be 
+            generated. </dd>
+          <dt style="margin-right: 1cm; margin-bottom: 0.5cm"> -B&lt;name&gt; 
+          </dt>
+          <dd style="margin-right: 1cm; font-weight: medium"> name specifies the 
+            base node. All types are searched under this node. Default is the 
+            root '/' of the registry files. </dd>
+      </dl>
+    </td>
+  </tr>
+  <tr> 
+    <td colspan=3 width=100%> 
+      <hr size=1 noshade>
+    </td>
+  </tr>
+</table>
+<hr size=3 noshade>
+<table width=100% border=0 cellpadding=4 cellspacing=0>
+  <tr> 
+    <td colspan=3 width=100% bgcolor="#666699"> 
+      <div align="center"><font size="6" color="#FFFFFF"><a name="regcomp"></a>regcomp</font></div>
+    </td>
+  </tr>
+  <tr> 
+    <td colspan=3 width=100%> 
+      <hr size=1 noshade>
+    </td>
+  </tr>
+  <col width=85*> <col width=85*> <col width=85*> 
+  <tr> 
+    <td colspan=3 width=100% bgcolor="#666699"> 
+      <h3 align=LEFT style="margin-top: 0cm; text-decoration: none"><font color="#ffffff"><font size=4>Usage:</font></font></h3>
+    </td>
+  </tr>
+  <tr> 
+    <td colspan=3 width=100%> 
+      <p>Regcomp is a tool to register|revoke external UNO components into|from 
+        a registry which is used for an UNO environment.</p>
+      <p><b>regcomp -register [-br registryfile] -r registryfile -c locationUrl 
+        [-l componentLoaderUrl] </b> </p>
+      <p><b>recomp -revoke [-br registryfile] -r registryfile -c locationUrl </b> 
+      </p>
+      <p style="text-decoration: none"><b>Parameters: </b> </p>
+      <ul>
+        <li> 
+          <p>command: </p>
+          <p>-register = register a new extern component. </p>
+          <p>-revoke = revoke an extern component. </p>
+        <li>-br registryfile = the name of the registry used for bootstrapping 
+          the program. If the bootstrap registry is specified and has the same 
+          name as the registration registry, the -r option is optional. 
+        <li>-r registryfile = the name of the registry (will be created if it does not 
+          exist) where the component should be registered. 
+        <li>-c locationUrls = the location of an component (DLL, Class name, or 
+          an url of a jar file) or a list of urls separated by ';'s. Note, if a 
+          list of urls is specified, the components must all need the same loader. 
+        <li> 
+          <p>-l componentLoaderUrl = the name of the needed loader, if no loader 
+            is specified the 'com.sun.star.loader.SharedLibrary' is used. loaders: 
+            com.sun.star.loader.SharedLibrary | com.sun.star.loader.Java.</p>
+        
+      </ul>
+      </td>
+  </tr>
+  <tr> 
+    <td colspan=3 width=100%> 
+      <hr size=1 noshade>
+    </td>
+  </tr>
+</table>
+<hr size=3 noshade>
+<table width=100% border=0 cellpadding=4 cellspacing=0>
+  <tr> 
+    <td colspan=3 width=100% bgcolor="#666699"> 
+      <div align="center"><font size="6" color="#FFFFFF"><a name="regmerge"></a>regmerge</font></div>
+    </td>
+  </tr>
+  <tr> 
+    <td colspan=3 width=100%> 
+      <hr size=1 noshade>
+    </td>
+  </tr>
+  <col width=85*> <col width=85*> <col width=85*> 
+  <tr> 
+    <td colspan=3 width=100% bgcolor="#666699"> 
+      <h3 align=LEFT style="margin-top: 0cm; text-decoration: none"><font color="#ffffff"><font size=4>Usage:</font></font></h3>
+    </td>
+  </tr>
+  <tr> 
+    <td colspan=3 width=100%> 
+      <p>Regmerge is a small tool to merge different registry files under a specified 
+        key into another registry file. If a value already exists in the targetfile 
+        the value would be overwritten by the value of the sourcefile.</p>
+      <dl> 
+        <dd><b>regmerge mergefile mergeKeyName regfile_1 ... regfile_n</b></dd>
+        <dd> <b>regmerge @regcmds</b></dd>
+      </dl>
+    </td>
+  </tr>
+  <tr> 
+    <td colspan=3 width=100%> 
+      <hr size=1 noshade>
+    </td>
+  </tr>
+</table>
+<hr size=3 noshade>
+<table width=100% border=0 cellpadding=4 cellspacing=0>
+  <tr> 
+    <td colspan=3 width=100% bgcolor="#666699"> 
+      <div align="center"><font size="6" color="#FFFFFF"><a name="regview"></a>regview</font></div>
+    </td>
+  </tr>
+  <tr> 
+    <td colspan=3 width=100%> 
+      <hr size=1 noshade>
+    </td>
+  </tr>
+  <col width=85*> <col width=85*> <col width=85*> 
+  <tr> 
+    <td colspan=3 width=100% bgcolor="#666699"> 
+      <h3 align=LEFT style="margin-top: 0cm; text-decoration: none"><font color="#ffffff"><font size=4>Usage:</font></font></h3>
+    </td>
+  </tr>
+  <tr> 
+    <td colspan=3 width=100%> 
+      <dl> 
+        <dt>Regview is a small tool to show the content of a registry file. The 
+          tool dumps the hierarchical structure and the values of the nodes to 
+          stdout in a human readable form.</dt>
+        <dd><br>
+        </dd>
+        <dt><b>regview registryfile [keyName]</b></dt>
+      </dl>
+      </td>
+  </tr>
+  <tr> 
+    <td colspan=3 width=100%> 
+      <hr size=1 noshade>
+    </td>
+  </tr>
+</table>
+<hr size=3 noshade>
+<table width=100% border=0 cellpadding=4 cellspacing=0>
+  <tr> 
+    <td colspan=3 width=100% bgcolor="#666699"> 
+      <div align="center"><font size="6" color="#FFFFFF"><a name="xml2cmp"></a>xml2cmp</font></div>
+    </td>
+  </tr>
+  <tr> 
+    <td colspan=3 width=100%> 
+      <hr size=1 noshade>
+    </td>
+  </tr>
+  <col width=85*> <col width=85*> <col width=85*> 
+  <tr> 
+    <td colspan=3 width=100% bgcolor="#666699"> 
+      <h3 align=LEFT style="margin-top: 0cm; text-decoration: none"><font color="#ffffff"><font size=4>Usage:</font></font></h3>
+    </td>
+  </tr>
+  <tr> 
+    <td colspan=3 width=100%> 
+      <p style="margin-bottom: 0cm">The tool xml2cmp.exe parses .xml files, which 
+        contain the descriptions of components that implement UNO services. Each 
+        .xml file refers to one library. The library may contain one or more component 
+        descriptions. <br>
+        There are two ways of using xml2cmp.exe: </p>
+      <ul>
+        <li><b>xml2cmp [-func funcFile] [-html htmlFile] [-types typeFile] Xml_FileName<br>
+		  </b>This version parses the file &lt;xml_filename&gt; and produces
+		  three possible 
+          types of output, each of which is optional, but there must be at least 
+          one of them.<br>
+        </li>
+      </ul>
+      <blockquote> 
+        <p>Options:</p>
+      </blockquote>
+        <ul>
+          <li> -func funcFile <br>
+            produces a file with the name &lt;funcfile&gt;. This should be .c / .cxx 
+            / .cpp or similar kind of source code file. This file contains the 
+            definition of the function const sal_Char * SAL_CALL component_getDescriptionFunc(); 
+            which returns the parsed file as ASCII text. </li>
+<!-- rh: Is this option below correct?  hfml or should it be html? -->
+          <li>- html htmlFile<br>
+            produces a file with the name &lt;htmlfile&gt;. It should be a .htm / .html 
+            file. That file contains the contents of the parsed file in HTML-readable 
+            form. </li>
+          <li>-types typeFile<br>
+            produces a textfile with the name &lt;typefile&gt;. This textfile is intended 
+            to be included in a makefile and contains the definition of a variable<br>
+            &lt;libraryname&gt;<br>
+            &lt;libraryName&gt;_XML2CMPTYPES= 
+            &lt;type_used_by_LibraryName_1&gt; \<br>
+            &lt;type_used_by_LibraryName_2&gt; \<br>
+            ... <br>
+            <br>
+            So, the variable &lt;libraryName&gt;_XML2CMPTYPES contains 
+            a list of the types, used by that library.</li>
+        </ul>
+      <blockquote> 
+        <p>All output of this first version of xml2cmp is put into the working directory. 
+        </p>
+      </blockquote>
+      <ul>
+        <li><b>xml2cmp -ix &lt;sourcedirectory&gt; &lt;outputdirectory&gt;
+          [&lt;tagname1&gt; [ &lt;tagname2&gt; ...]] <br>
+          </b>This version parses all .xml files which are found in &lt;sourcedirectory&gt;
+          or its subdirectories. It produces the .html output of all parsed .xml 
+          files (as in version 1 above). Also, it produces a file, named xmlindex.html. 
+<!-- rh: Check changes in the sentence below for correctness. I'm not really sure what you mean. -->
+          This is an HTML file which contains tables alphabetically ordered on 
+          the left side, which allows assigning, from one XML-tags' contents to another 
+          (of all original parsed .xml files). The following tables are produced 
+          ("Module" refers to a library): <br>
+          <br>
+          SupportedService -&gt; ModuleName<br>
+          ModuleName -&gt; SupportedService<br>
+          &lt;tagname1&gt; -&gt; ComponentName<br>
+          &lt;tagname2&gt; -&gt; ComponentName<br>
+          ... <br>
+          <br>
+          All output files of the second version of xml2cmp are put to the &lt;outputDirectory&gt;. 
+        </li>
+      </ul>
+      <p>&nbsp;</p>
+      </td>
+  </tr>
+  <tr> 
+    <td colspan=3 width=100%> 
+      <hr size=3 noshade>
+      <table width=100% border=0 cellpadding=4 cellspacing=0>
+        <tr> 
+          <td colspan=3 width=100% bgcolor="#666699"> 
+            <div align="center"><font size="6" color="#FFFFFF"><a name="unoexe"></a>uno.exe</font></div>
+          </td>
+        </tr>
+        <tr> 
+          <td colspan=3 width=100%> 
+            <hr size=1 noshade>
+          </td>
+        </tr>
+        <col width=85*> <col width=85*> <col width=85*> 
+        <tr> 
+          <td colspan=3 width=100% bgcolor="#666699"> 
+            <h3 align=LEFT style="margin-top: 0cm; text-decoration: none"><font color="#ffffff"><font size=4>Usage:</font></font></h3>
+          </td>
+        </tr>
+        <tr> 
+          <td colspan=3 width=100%> 
+              <p>The UNO-starter is for running a component or service process, 
+                providing a runtime environment. Raising a component might look 
+                like this </p>
+              <p><code>[c:\] uno.exe -c MyComponent -l mycomp.dll -r myregistry.rdb 
+                -- foo bar </code> </p>
+              <p>or </p>
+              <p><code>[c:\] uno.exe -s foo.bar.FooBarService -r myregistry.rdb 
+                -- foo bar </code> </p>
+              <p>The starter loads the component and instantiates it. The component 
+                must export the interface <a href="http://api.openoffice.org/common/ref/com/sun/star/lang/XMain.html">com.sun.star.lang.XMain</a>: 
+              </p>
+              <p><code>interface XMain : com::sun::star::uno::XInterface <br>
+                { <br>
+                &nbsp;&nbsp;&nbsp; /** This method is called to run the component. 
+                <br>
+                &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;BR&gt; <br>
+                &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @param aArguments command 
+                line arguments <br>
+                &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @return process error 
+                code to be returned to system <br>
+                &nbsp;&nbsp;&nbsp; */ <br>
+                &nbsp;&nbsp;&nbsp; long run( [in] sequence&lt; string &gt; arguments 
+                ); <br>
+                }; </code> </p>
+              <p>Method run() will be called and returns the error code given,  
+                back to the system. If the uno starter is executed with the -u 
+                (URL) option, then XInitialization is used instead of XMain. The 
+                -u option is described later. </p>
+            <dl> 
+			<dd>
+              <p><b>Command line parameters: </b> </p>
+              <p><code>uno (-c <i>ComponentImplementationName</i> -l <i>LocationUrl 
+                </i>| -s <i>ServiceName</i>) <br>
+                [-ro <i>ReadOnlyRegistry1</i>] [-ro <i>ReadOnlyRegistry2</i>] 
+                ... [-rw <i>ReadWriteRegistry</i>]<br>
+                [-u uno:(socket[,host=<i>HostName</i>][,port=<i>nnn</i>]|pipe[,name=<i>PipeName</i>]);iiop|urp;<i>Name</i> 
+                <br>
+                [--singleaccept] [--singleinstance]] <br>
+                [-- A<i>rgument1 Argument2 </i>...] </code> </p>
+              <p>You can either specify a component implementation name and a 
+                component location url (e.g., a shared library or jar file) or 
+                you specify the service name of a registered service. </p>
+              <ul>
+                <li> 
+                  <p><i>ComponentImplementationName</i> <br>
+                    <i>ComponentImplementationName </i>is the implementation name 
+                    of the component, e.g., MyFooServiceImpl. </p>
+                <li> 
+                  <p><i>LocationUrl</i> <br>
+                    <i>LocationUrl </i>is the file name of a shared library or jar 
+                    file. </p>
+                <li> 
+                  <p><i>ServiceName</i> <br>
+                    You can also specify a <i>ServiceName </i>if your component 
+                    is already registered. This looks for any registered component 
+                    implementation in the registry. </p>
+                <li> 
+                  <p><i>Registries<br>
+                    </i>The optional <i>Registries </i>(e.g., c:\myreg.rdb) are 
+                    used by the ServiceManager. The <font face="Courier New, Courier, mono">ro</font> 
+                    ones are opened for reading only; whereas, a single <font face="Courier New, Courier, mono">rw</font> 
+                    one will be opened for reading and writing. If the <font face="Courier New, Courier, mono">rw</font> 
+                    one does not exist, then it may be created. Components may 
+                    read and write to store their persistent state. </p>
+                
+              </ul>
+              <p>The -u (URL) option provides the opportunity to accept incoming 
+                connections and distribute component instances to other processes. 
+                Clients resolve outer process objects using the com.sun.star.connection.UnoUrlResolver 
+                service with this url. The starter accepts incoming client connections 
+                of the clients' com.sun.star.connection.UrlResolver service and 
+                provides the desired instance. <br>
+                Component instances started via -u are not run using the XMain 
+                interface, they are initialized via the XInitialization interface, 
+                given the command line params.</p>
+              <ul>
+                <li> 
+                  <p><code><span style="font-style: normal">HostName</span></code><i><br>
+                    </i>Specifying a host name might be necessary to distinguish 
+                    the network interface to be used, if a machine is part of 
+                    two networks.</p>
+                <li> 
+                  <p><code><span style="font-style: normal">PipeName</span></code><i><br>
+                    </i>Name of a named pipe.</p>
+                <li> 
+                  <p><code><span style="font-style: normal">Name</span></code><i><br>
+                    </i>Identifier for <!-- demanded --> called component instances.</p>
+                <li> 
+                  <p><tt>--singleaccept<br>
+                    </tt>The uno starter will accept one connection, provide the 
+                    component instance and die.</p>
+                <li> 
+                  <p><tt>--singleinstance<br>
+                    </tt>The uno starter will accept any number of connections, 
+                    but will provide the same single component instance any time 
+                    instead of creating a new instance for each connection. </p>
+              </ul>
+              <dt><b>Service <a href="http://api.openoffice.org/common/ref/com/sun/star/bridge/UnoUrlResolver.html">com.sun.star.bridge.UnoUrlResolver</a><br>
+                <br>
+                </b></dt>
+              <dd>You can easily connect to a server started with the -u (url) 
+                option by using this service giving the same url to resolve. The 
+                service provides you an instance from remote.</dd>
+              <dt>&nbsp;</dt>
+            </dl>
+          </td>
+        </tr>
+        <tr> 
+          <td colspan=3 width=100%> 
+            <hr size=1 noshade>
+          </td>
+        </tr>
+      </table>
+<hr size=1 noshade>
+    </td>
+  </tr>
+</table>
+<hr size=3 noshade>
+<table width=100% border=0 cellpadding=4 cellspacing=0>
+  <col width=85*> <col width=85*> <col width=85*> 
+  <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 07:54:59 $)<br>
+        <I>Copyright 2001 Sun Microsystems, Inc., 901 San Antonio Road, Palo Alto, CA 94303 USA.</I></font> 
+      </p>
+    </td>
+</table>
+<hr size=3 noshade>
+</BODY>
+</HTML>

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

Added: incubator/ooo/ooo-site/trunk/content/udk/common/man/tutorial/office_automation.html
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/udk/common/man/tutorial/office_automation.html?rev=1206895&view=auto
==============================================================================
--- incubator/ooo/ooo-site/trunk/content/udk/common/man/tutorial/office_automation.html (added)
+++ incubator/ooo/ooo-site/trunk/content/udk/common/man/tutorial/office_automation.html Sun Nov 27 22:49:46 2011
@@ -0,0 +1,333 @@
+<!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></title>
+
+<style type="text/css">
+<!--
+a.content:active {color:blue;text-decoration:underline;}   /* selected link */
+a.content:visited {color:#8b008b;text-decoration:underline;}  /* visited link */
+a.content:link {color:blue;text-decoration:underline;}     /* unvisited link */
+a.content: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;margin-top: 0.4cm;}
+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>
+</head>
+
+<body>
+
+<h1>Automating OpenOffice.org</h1>
+<h2>Introduction</h2>
+<p>The OpenOffice.org (OOo) supports Microsoft's Automation technology on different Windows platforms ( Windows
+95,98, ME, 2000, NT4). It enables clients to control the office externally.
+Client programs can be contained within executables or scripts. In order to make
+use of the Automation capability, a client must be coded in a programming
+language that supports Automation. There are a variety of appropriate languages
+and development environments available, such as Visual C++, Visual Basic, Delphi,
+VBScript and JScript. In order to use a scripting language one needs a script
+controller that executes the script. Common controllers are the Internet
+Explorer as well as the Windows Script Host (WSH).</p>
+<p>To give you an impression on how Automation works with OOo, here is a quick
+example:</p>
+
+<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(&quot;com.sun.star.ServiceManager&quot;)<br />
+
+<span class="code_comment">'Create the Desktop</span><br />
+<span class="code_key">Set</span> objDesktop= objServiceManager.createInstance(&quot;com.sun.star.frame.Desktop&quot;)<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(&quot;private:factory/swriter&quot;,_<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+&quot;_blank&quot;, 0, args)<br />
+
+<span class="code_comment">'Create a text object</span><br />
+<span class="code_key">Set</span> objText= objDocument.getText<br />
+
+<span class="code_comment">'Create a cursor object</span><br />
+<span class="code_key">Set</span> objCursor= objText.createTextCursor<br />
+
+<span class="code_comment">'Inserting some Text</span><br />
+objText.insertString objCursor, &quot;The first line in the newly created text document.&quot;&amp;_<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vbLf, false<br />
+</p>
+<p>
+This script opens a new writer document and inserts some text. If OOo is not already
+running, then an instance is started up automatically. <br />
+To run this example put the code into a file named test.vbs and run it with the
+Windows Script Host (WSH). That can be done by entering the command line:
+</p>
+<pre>
+   cscript test.vbs
+</pre>
+<p>in a command line window. Alternatively one can double click the file entry
+in the Explorer (if in doubt, look at the documentation at <a class="content" href="http://msdn.microsoft.com/scripting/default.htm">http://msdn.microsoft.com/scripting/default.htm</a>).
+As you may have noticed, this examples is written in VBScript but you can also
+use JScript with the WSH.</p>
+
+<h2>Automation Objects</h2>
+<p>In order to do automating tasks by an external client one needs to know what
+automation objects are offered by the server. Currently the The <a class="content" href="http://api.openoffice.org/basic/man/tutorial/tutorial.pdf">StarOffice
+Programmers Tutorial</a> provides this information.</p>
+<h2>Service Manager</h2>
+<p>As shown in the example at the beginning of this document, one creates a
+service manager first. The service manager is the starting point for all
+external automation tasks. It can be instantiated as every ordinary ActiveX
+control. How this is done, depends on the programming language being used. The
+WSH, for example, provides a function on the WScript object that performs
+instantiation.
+</p>
+<p class="code">
+<span class="code_key">Set</span> objServiceManager= WScript.CreateObject(&quot;com.sun.star.ServiceManager&quot;)
+</p>
+<p>
+This function can also be used in JScript when it is run by the WSH.
+Alternatively one can use the <code>ActiveXObject</code> object.
+</p>
+<p class="code">
+<span class="code_key">var</span> objServiceManager= <span class="code_key">new</span> ActiveXObject(&quot;com.sun.star.ServiceManager&quot;);
+</p>
+<p>
+Once instantiated, the service manager allows access to different office components,
+for example
+</p>
+<p class="code">
+<span class="code_key">Set</span>  objDesktop= objServiceManager.createInstance(&quot;com.sun.star.frame.Desktop&quot;)
+</p>
+<p>
+This is essentially the same as calling
+</p>
+<p class="code">
+objDesktop= createunoservice(&quot;com.sun.star.frame.Desktop&quot;)
+</p>
+<p>
+as is done within StarBasic (see <a class="content" href="http://api.openoffice.org/basic/man/tutorial/tutorial.pdf"> StarOffice Programmers
+Tutorial</a>).
+</p>
+
+<h2>Creation of Types in untyped Languages</h2>
+<p>Languages, such as VBScript and JScript, do not provide types. That is, the
+declaration of variables do not require a type specifier:
+</p>
+<p class="code">
+<span class="code_comment">//JScript</span>&nbsp;
+<span class="code_key"><br />
+var</span> variableOfFloat;<br />
+<span class="code_key">var</span> variableOfBool;<br />
+<br />
+<span class="code_comment">'VBScript</span>&nbsp;
+<span class="code_key"><br />
+Dim</span> variableOfFloat<br />
+<span class="code_key">Dim</span> variableOfBool<br />
+<br />
+<span class="code_comment">// C++</span>&nbsp;
+<span class="code_key"><br />
+float</span> variableOfFloat;<br />
+<span class="code_key">bool</span> variableOfBool;
+</p>
+<p>In some rare situations you might need to have a concrete type. One can
+create them in two ways:</p>
+<p class="code">
+<span class="code_key">Set</span> objServiceManager= WScript.CreateObject(&quot;com.sun.star.ServiceManager&quot;)<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(_<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+&quot;com.sun.star.reflection.CoreReflection&quot;)<br />
+<span class="code_comment">'get a type description class for float</span><br />
+<span class="code_key">Set</span> classSize= objCoreReflection.forName(<b>&quot;float&quot;</b>)<br />
+<span class="code_comment">'create the actual object</span><br />
+<span class="code_key">Dim</span> <b>aFloat</b><br />
+classSize.createObject aFloat<br />
+</p>
+<p>
+The other way goes like this:
+</p>
+<p class="code">
+<span class="code_key">Set</span>  objServiceManager= WScript.CreateObject(&quot;com.sun.star.ServiceManager&quot;)<br />
+<span class="code_key">Set</span> aFloat= objServiceManager.Bridge_GetValueObject()<br />
+aFloat.Set &quot;float&quot;, 3.14<br />
+</p>
+<p>
+The second approach uses a special object, which was dubbed
+<code>&quot;ValueObject&quot;</code>, that can be obtained from any office object by calling
+<code>Bridge_GetValueObject</code>. This value must be explicitly told what type it
+represents, for more information about this object see the <a class="content" href="../spec/ole_bridge.html#a7">documentation
+about the OLE bridge</a>.
+</p>
+<p>You should try to use concrete types when a function that takes an <code>any</code>
+argument produces an error. Such an error could indicate a type mismatch.</p>
+
+<h3>Background Information</h3>
+<p>The interfaces of the office usually take parameters of concrete types.
+However, there is a type, the <code>&quot;any&quot;</code>, that can contain values of
+different types, much as the <code>VARIANT</code> type. When a function expects an <code>any</code> then
+the OLE bridge does not know what exactly has to be in the <code>any</code> but it tries to
+convert the scripting parameter according to fixed rules (e.g. <code>long</code> to <code>long</code>,
+<code>double</code> to <code>double</code>). Let us have a look at these two functions:</p>
+<p class="code">
+<span class="code_key">void</span> funcA( <span class="code_key">float</span> f);<br />
+<span class="code_key">void</span> funcB( any a);<br />
+</p>
+<p>When funcA is called in a script, then the OLE bridge receives a <code>VARIANT</code>
+argument. The bridge knows that <code>funcA</code> expects a <code>float</code>, therefore it converts
+the <code>VARIANT</code> into a <code>float</code> value. When <code>funcB</code> is called, the bridge needs to
+convert the value within the <code>any</code>. However, the available type information about
+the function only tells the argument type, which is an <code>any</code> in this case. Without
+type information for the contained type, the bridge converts the value into an
+UNO type according to build-in conversion rules.</p>
+<p>An example:</p>
+<p class="code">someObj.funcB 3.14<br />
+</p>
+<p>The bridge will receive a <code>VARIANT</code> that contains a <code>double</code> (VBScript,
+JScript). The bridge will do a default conversion into a <code>double</code> and create
+an <code>any</code> which is being assigned the <code>double</code>. The implementation of
+<code>funcB</code> receives an
+argument of type <code>any</code> that contains a value of type <code>double</code>. A tolerant
+implementation should convert an <code>any</code> into the expected type. But
+unfortunately, this
+is not always case. If <code>funcB</code> is not tolerant and expects a <code>float</code> rather then a
+<code>double</code>, then it might throw an exception.</p>
+<p>In most cases the bridge will be able to do a correct conversion. However, it
+will not work as shown in example above.</p>
+<p>A possible source of errors is the <code>XPropertySet</code> interface with its methods
+<code>setPropertyValue</code> and <code>getPropertyValue</code> which are frequently used when
+ writing
+automating programs.</p>
+
+<h2>Creation of Structs</h2>
+<p>If the OOo API requires a struct as argument then the struct has to be
+obtained from the office. It is not possible to declare a struct oneself. To
+make this more intelligible, let us assume there is an office function that
+takes a struct of type <code>Size</code>.
+</p>
+<p class="code">
+<span class="code_comment">// the interface function, that will be called from script</span><br />
+<span class="code_key">void</span> XShape::setSize( Size aSize)<br />
+</p>
+<p>and the struct is declared as follows:</p>
+
+<p class="code">
+<span class="code_comment">// idl</span><br />
+<span class="code_key">struct</span> Size<br />
+{<br />
+&nbsp; long Width;<br />
+&nbsp; long Height;<br />
+}<br />
+</p>
+<p>You cannot write code like this ( VBScript):</p>
+<p class="code">
+<span class="code_key">Class</span> Size<br />
+&nbsp;
+  <span class="code_key">Dim</span> Width<br />
+&nbsp;
+  <span class="code_key">Dim</span> Height<br />
+<span class="code_key">End Class</span><br />
+<br />
+<span class="code_comment">'obtain object that implements XShape</span><br />
+...<br />
+<span class="code_comment">'now set the size</span><br />
+<span class="code_key">call</span> objXShape.setSize( <span class="code_key">new</span> Size)<br />
+</p>
+<p>
+There are to ways to create the struct
+</p>
+<p class="code">
+<span class="code_key">Set</span> objServiceManager= WScript.CreateObject(&quot;com.sun.star.ServiceManager&quot;)<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(_<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+&quot;com.sun.star.reflection.CoreReflection&quot;)<br />
+<span class="code_comment">'get a type description class for Size</span><br />
+<span class="code_key">Set</span> classSize= objCoreReflection.forName( <b>&quot;Size&quot;</b> )<br />
+<span class="code_comment">'create the actual object</span><br />
+<span class="code_key">Dim</span> aSize<br />
+classSize.createObject aStruct<br />
+<span class="code_comment">'use aSize</span><br />
+aSize.Width= 100<br />
+aSize.Height= 12<br />
+<br />
+objXShape.setSize aSize<br />
+</p>
+<p>
+And this is the other way
+</p>
+<p class="code">
+<span class="code_key">Set</span> objServiceManager= WScript.CreateObject(&quot;com.sun.star.ServiceManager&quot;)<br />
+<span class="code_key">Set</span> aSize= objServiceManager.Bridge_GetStruct(&quot;Size&quot;)<br />
+<span class="code_comment">'use aSize</span><br />
+aSize.Width= 100<br />
+aSize.Height= 12<br />
+<br />
+objXShape.setSize aSize<br />
+</p>
+<p>
+The <code>Bridge_GetStruct</code> function can be called on any OOo object. The function
+is also available in JScript.
+</p>
+<h2>Out Parameter</h2>
+<p>Lots of interface functions take out or in/out - parameter. In some languages,
+such as Jscript and Java, those function arguments are not supported. To use
+those functions regardless, we specified that in/out and out parameters are
+passed as arrays. The example below shows how this is done in JScript.</p>
+<p class="code">
+<span class="code_comment">// the function takes an out-parameter</span><br />
+<span class="code_key">var</span> out= <span class="code_key">new</span> Array();<br />
+object.functionOut(out);<br />
+<span class="code_key">var</span> value= out[0];<br />
+<br />
+<span class="code_comment">// the function takes an in/out-parameter</span><br />
+<span class="code_key">var</span> inout= <span class="code_key">new</span> Array();<br />
+inout[0]=123;<br />
+object.functionInOut( inout);<br />
+<span class="code_key">var</span> value= inout[0];<br />
+</p>
+<p>As one can tell from the examples, the value of the out-parameter is accessible
+at index 0 within the array. For in/out - parameters, one puts the in - value at
+index 0 of the array.
+</p>
+<p>One can also use <code>ValueObjects</code> as in/out and out parameter. See the <a class="content" href="http://udk.openoffice.org/common/man/spec/ole_bridge.html#a7">documentation
+about the OLE bridge</a> for more details.</p>
+
+<h2>Listener Objects (Event Sinks)</h2>
+<p>Some components send events. In order to receive events, one has to implement
+a listener. A listener is distinguished by implementing a listener interface. To
+receive those events, one has to connect the event source with the listener. An
+event source usually offers a function, that takes the listener interface as
+argument. One only has to implement the listener interface and pass an instance
+of the listener as argument to the appropriate function.&nbsp;</p>
+<p>This does not only work with listeners. It is possible to implement all other
+interfaces an pass them to the office component. Currently, those interfaces can
+only be implemented in C++ and in JScript.&nbsp;</p>
+<p>You can find more details in the <a class="content" href="http://udk.openoffice.org/common/man/spec/ole_bridge.html#a10">documentation
+about the OLE bridge</a>.</p>
+
+<h2>Visual Basic specific hints</h2>
+<p>The UNO&nbsp; interface functions which do not have a return value (i.e.
+return <code><span class="code_key">void</span></code>), are mapped to sub routines, for example:</p>
+<p class="code">
+<span class="code_comment">// definition of UNO function</span><br />
+<span class="code_key">void</span> func( long val);<br />
+<br />
+<span class="code_comment">'VBScript call</span><br />
+func val<br />
+<span class="code_comment">'or</span><br />
+<span class="code_key">call</span> func( val)<br />
+</p>
+<h2>Examples</h2>
+<p>
+<a class="content" href="writerdemo.html">WriterDemo.vbs</a>
+</p>
+</body>
+</html>

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

Added: incubator/ooo/ooo-site/trunk/content/udk/common/man/tutorial/uno_registries.html
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/udk/common/man/tutorial/uno_registries.html?rev=1206895&view=auto
==============================================================================
--- incubator/ooo/ooo-site/trunk/content/udk/common/man/tutorial/uno_registries.html (added)
+++ incubator/ooo/ooo-site/trunk/content/udk/common/man/tutorial/uno_registries.html Sun Nov 27 22:49:46 2011
@@ -0,0 +1,410 @@
+<!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"/>
+   <meta name="Author" content="Gast"/>
+   <title>Registries in UNO</title>
+<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 BORDER=0 CELLSPACING=0 CELLPADDING=4 WIDTH="100%" BGCOLOR="#666699"
+    summary="header">
+<tr>
+<td>
+<h1> Registries in UNO </h1>
+</td>
+</tr>
+</table>
+
+<h2> Contents </h2>
+
+<!-- ************************ OVERVIEW ***************************************    -->
+<a href="#Overview">Overview</a><br/>
+<a href="#view">Viewing registries</a><br/>
+<a href="#tools">Command line registry tools</a><br/>
+<a href="#office">Adding components to the office</a><br/>
+<a href="#bootstrap">Bootstrapping arbitrary UNO C++ processes</a><br/>
+
+<h2 id="Overview"> Overview </h2>
+<p>This document provides information about meaning and usage of UNO-registries
+within arbitrary UNO processes.
+
+<p>
+UNO-registries store binary data in a tree-like structure. It has nothing to do
+with the windows registry (except that they follow a similar concept). UNO-registries mainly
+store two types of data
+
+<ol>
+<li> Type-library<br/>
+     In order to be able to invoke UNO-calls from BASIC or invoke UNO-calls via a
+     interprocess-connection, the core UNO bridges need information about the used datatypes.
+     <p>UNO has chosen to store these information into a typelibrary, so that the same
+     data is reusable from any bridge. This is in opposite to for instance the CORBA approach,
+     where for every datatype C-code is generated which needs to be compiled and linked into
+     huge libraries.
+<li> Information about registered components<br/>
+     One basic concept of UNO is to simply be able to create an instance of a service by name
+     via a so called ServiceManager.
+     The association between the service name and the shared-library (where the necessary
+     compiled code is to be found) is stored into a UNO-registry.
+</ol>
+
+<p>Both types of data are <strong>absolutely necessary to run a UNO-C++
+process</strong>. Lack of the
+one or the other information generally leads to fast termination or crash of the program,
+so please avoid this. UNO processes in general open there registries during startup and
+close them when the process terminates.
+
+<p>
+Both types of data are in general stored into a file with a <em>.rdb</em>-suffix (
+<strong>r</strong>egistry <strong>d</strong>ata<strong>b</strong>ase ).
+
+<p> This documents explains more details about the two types of data, explains the
+tools how to prepare a proper registry and the different possibilities about how to
+bootstrap a C++ process with a registry. Another chapter deals with the registries used
+in OpenOffice.org.
+
+<h2 id="view"> Viewing registries </h2>
+
+<h3> UNO typelibrary</h3>
+
+To be useable by a UNO C++ process, all type descriptions must be available within the registry
+under the /UCR main key (UCR = <strong>U</strong>no <strong>C</strong>ore <strong>R</strong>eflection).
+
+You can have a look at the file office-install/program/applicat.rdb using the regview tool, which
+comes with the office development kit.
+
+
+For instance <br/>
+<p>
+<code>
+$ regview applicat.rdb /UCR
+</code> <br/>
+<p>
+dumps all type descriptions used within the office to stdout. One can check if a certain type
+is included within the registry by invoking the following command
+
+<pre>
+$ regview applicat.rdb /UCR/com/sun/star/bridge/XUnoUrlResolver
+
+/UCR/com/sun/star/bridge/XUnoUrlResolver
+ Value: Type = RG_VALUETYPE_BINARY
+        Size = 461
+        Data = minor version: 0
+               major version: 1
+               type: 'interface'
+               uik: { 0x00000000-0x0000-0x0000-0x00000000-0x00000000 }
+               name: 'com/sun/star/bridge/XUnoUrlResolver'
+               super name: 'com/sun/star/uno/XInterface'
+               Doku: ""
+               IDL source file: "O:\UDK303\src\udkapi\com\sun\star\bridge\XUnoUrlResolver.idl"
+               number of fields: 0
+               number of methods: 1
+               method #0: com/sun/star/uno/XInterface resolve([in] string sUnoUrl)
+	           raises com/sun/star/connection/NoConnectException,
+		          com/sun/star/connection/ConnectionSetupException,
+			  com/sun/star/lang/IllegalArgumentException
+	       Doku: ""
+               number of references: 0
+</pre>
+<p>
+The regview-tool knows the format of the binary blob containing the typedescription and
+dumps it in a human readable form.
+
+
+<h3>Registered services</h3>
+Only the UNO component itself provides the data about its implementations.
+To save loading each available UNO component into memory when starting a UNO
+process,
+the data is assembled once (e.g. during setup) and stored into a registry. This process
+is called <em>component registration</em>. Tools for performing this task are discussed below.
+
+<p>For an installed OpenOffice.org, the applicat.rdb contains the registry information. The data
+is stored within the /IMPLEMENTATIONS and /SERVICES key. Below you can find a sample
+SERVICES key for the <code>com.sun.star.io.Pipe</code>-service.
+
+<pre>
+$ regview applicat.rdb /SERVICES/com.sun.star.io.Pipe
+
+/SERVICES/com.sun.star.io.Pipe
+ Value: Type = RG_VALUETYPE_STRINGLIST
+        Size = 38
+        Len  = 1
+        Data = 0 = "com.sun.star.comp.io.stm.Pipe"
+</pre>
+
+<p>
+It just contains one <em>implementation name</em> (it may contain more than one, but in
+general only the first is used). Within the IMPLEMENTATIONS section, you can find the following
+entry :
+
+<pre>
+$ regview applicat.rdb /IMPLEMENTATIONS/com.sun.star.comp.io.stm.Pipe
+
+/IMPLEMENTATIONS/com.sun.star.comp.io.stm.Pipe
+ / UNO
+   / ACTIVATOR
+     Value: Type = RG_VALUETYPE_STRING
+            Size = 34
+            Data = "com.sun.star.loader.SharedLibrary"
+
+   / SERVICES
+     / com.sun.star.io.Pipe
+   / LOCATION
+     Value: Type = RG_VALUETYPE_STRING
+            Size = 8
+            Data = "stm.dll"
+</pre>
+
+<p>
+The implementations section holds three types of data.
+<ol>
+<li> The loader to be used when the component is requested at runtime (here
+<code>com.sun.star.loader.SharedLibrary</code>).
+<li> The services, which are supported by this implementation.
+<li> The URL to the file, which the loader uses to access the library (the URL
+may be given relative as it is in this case).
+</ol>
+
+<h2 id="tools"> Command line registry tools </h2>
+
+<p>There are various tools to create, modify and use registries. The command
+line options are discussed in detail <a href="../tools.html">here</a>. This
+chapter shows some common use cases.</p>
+
+<h3>General</h3>
+
+<p>The <strong>regmerge</strong> tool is used to merge multiple registries into
+a subkey of an existing or new registry. For instance
+
+<ol>
+<li>
+<pre>
+$ regmerge new.rdb / test1.rdb test2.rdb
+</pre>
+
+<p> merges the contents of test1.rdb and test2.rdb into the file new.rdb. The names of the
+keys are preserved, because both registries are merged into the root-key. In case new.rdb
+existed before, the previous contents remain in new.rdb unless there exist identical keynames
+in either test1.rdb and test2.rdb. In this case, the content of these keys is overwritten with
+the ones in test1.rdb or test2.rdb. So the above command is semantically identical to
+
+<pre>
+$ regmerge new.rdb / test1.rdb
+$ regmerge new.rdb / test2.rdb
+</pre>
+
+
+<li><pre>
+$ regmerge myapp_types.rdb /UCR test1.urd test2.urd
+</pre>
+<p>
+merges the contents of test1.urd and test2.urd into the file myapp_types.rdb. The names of the
+keys in test1.urd and test2.urd get a /UCR prepended. ( The files produced by the idl-compiler
+have a .urd-suffix. The regmerge tool needs to be run before the typelibrary can be used in a
+program, because the /UCR key must be prepended ).
+</ol>
+
+<h3 id="registration"> Component registration</h3>
+<p>
+Components can be registered using the <a href="../tools.html#regcomp">regcomp</a>-tool.
+In the example below the components necessary to establish an interprocess
+connection (e.g. to a running
+OpenOffice.org) get registered into the myapp_services.rdb.
+
+<pre>
+$ regcomp -register -r myapp_services.rdb \
+                    -c uuresolver.dll     \
+                    -c brdgfctr.dll       \
+                    -c acceptor.dll       \
+                    -c connectr.dll       \
+		    -c remotebridge.dll
+</pre>
+(\ means here command line continuation).
+<p>The option -r gives the registry, where the information shall be written to.
+If it doesn't exist, it is created, otherwise the new data is added (in case
+there are older keys, they get overwritten). The option -c can be given multiple
+times, it is followed by a single library name, that shall be registered.
+
+<p>
+Registering a <strong>java-component</strong> is currently more complicated (we are
+working on improving the process). It works only in a installed office environment
+(office-install/program must be your current working directory),
+the office setup must point to a valid java installation (you may start jvmsetup from
+the office/program directory to verify this), and java must be enabled (see
+Extras/Options/General/Security). On Windows, you MUST copy the regcomp.exe into
+the office/program directory.
+
+<pre>
+$ regcomp -register -br applicat.rdb \
+                    -l com.sun.star.loader.Java2 \
+                    -r applict.rdb \
+                    -c file:///i:/o641d3pro/program/JavaTestComponent.jar 
+</pre>
+<p>
+The -br option is used to give the regcomp-tool a registry to work on, because the regcomp-tool
+doesn't know, in which library the java-loader is to be found. The -l option gives the
+service name of the loader to use for the component (it must be com.sun.star.loader.Java2 ).
+The option can be omitted for C++ components, because regcomp defaults to the
+com.sun.star.loader.SharedLibrary loader. The option -c gives the (MANDATORY ABSOLUTE) file URL to the
+java component.
+
+<h3>UNO typelibrary</h3>
+<p>There are several tools, that currently access the typelibrary directly, they are mainly
+used during building. 
+
+<ul>
+<li> <a href="../tools.html#idlc">idlc</a><br/>
+   Compiles .idl into .urd-registry-files.
+<li> <a href="../tools.html#cppumaker">cppumaker</a><br/>
+   Generates C++ header for a given UNO typelist.
+<li> <a href="../tools.html#cunomaker">cunomaker</a><br/>
+   Generates C for a given UNO typelist.
+<li> <a href="../tools.html#javamaker">javamaker</a><br/>
+   Generates java-files for a given typelist.
+<li> <a href="../tools.html#rdbmaker">rdbmaker</a><br/>
+   Create a new registry by extracting given types (including dependent types) from
+   another registry.
+<li> regcompare<br/>
+   Compares a typelibrary to a reference typelibrary and checks for compatibility.
+</ul>
+
+<h2 id="office"> Adding components to the office </h2>
+
+<p>StarOffice 6.0 (or OpenOffice.org 1.0) uses 2 registries, the applicat.rdb (which can be found
+at office-install/program/applicat.rdb) and the user60.rdb (which can be found in the home
+directory on Unix and within the application data directory of your personal windows profile).
+
+<p>
+The applicat.rdb contains all types which are used by the office. During setup, all
+chosen components get registered also into the applicat.rdb.
+
+<p> The user-specific user60.rdb is opened for write access and is by default empty.
+
+<h3>How to add a component to an office installation ?</h3>
+A component may bring along new types and new component registration information.
+There are multiple ways how
+to integrate a new component into the office (with different advantages/disadvantages) :
+
+<ol>
+<li> merge new types into the applicat.rdb and register the component into the applicat.rdb
+<p>
+Merged types can't be removed anymore. It offers maximal startup performance, as there
+is only one registry. In a network installation, the component is available for EVERY user.
+This may lead to problems in a network installation, in case there are running offices
+using the applicat.rdb during the merge process. This should be avoided.
+
+<li> put the new types and component registration information registry into a separate file
+somewhere in the file system and modify the bootstrap variables.
+
+<p> The new component can then be easily removed later on (by changing the bootstrap
+variables to there original values). It
+maybe a little slower during startup (as type lookups are now performed over two registries).
+No matter how the bootstrap variables are modified (see below), it is safe to do it in a network
+installation also with running user-offices. 
+
+<p> There are multiple ways to modify the bootstrap variables (see therefor the 
+<a href="../concept/uno_default_bootstrapping.html">
+UNO bootstrapping document</a>). Here are only two suggestions.
+<ul>
+<li> modify the uno.ini
+<p>after installation, the uno.ini contains the following lines
+<pre>
+[Bootstrap]
+UNO_TYPES=$SYSBINDIR/applicat.rdb
+UNO_SERVICES=$SYSBINDIR/applicat.rdb
+</pre>
+Please change this to something like
+<pre>
+[Bootstrap]
+UNO_TYPES=$SYSBINDIR/applicat.rdb $SYSBINDIR/mycomponent_types.rdb
+UNO_SERVICES=$SYSBINDIR/applicat.rdb $SYSBINDIR/mycomponent_services.rdb
+</pre>
+The new component then gets available as soon as the offices get restarted (note
+that also the quickstarter needs to be terminated to really terminate the office process !).
+
+<li> pass the new values for the bootstrap variables via the command line
+<p> e.g.<br/>
+<pre>
+soffice "-env:UNO_TYPES=$SYSBINDIR/applicat.rdb file:///path/to/local/mycomponent_types.rdb" \
+ "-env:UNO_SERVICES=$SYSBINDIR/applicat.rdb file:///path/to/local/mycomponent_services.rdb" 
+</pre>
+Here only this office is started with the new component enabled (make sure, the office
+really has terminated before !!). 
+
+</ul>
+<li> register the new component via StarBasic.
+<p>In the ODK examples can be found a BASIC library called regcomp, which can simply be imported
+into the office via Tools/Macro/Organizer/Libraries/Append. Starting the first basic macro from
+this library opens a dialog which allows to select a component to be registered. (This is a
+very new feature, it may not yet be within your version of the ODK).
+
+<p>In this case, registration data will be written into the user60.rdb and is therefor available
+only for the current office-user. The component is useable directly after registration. You
+currently cannot add new types via this method, in case your component needs this, you need to do
+it in one of the ways described above.
+
+</ol>
+
+<h2 id="bootstrap"> Bootstrapping arbitrary UNO C++ processes </h2>
+
+<p>There are many ways to bootstrap an UNO C++ application (probably too many). For every way
+you need to properly prepare one or multiple registry files.
+
+<h3>Preparing registries</h3>
+In general you should have different files for registered components and typelibraries.
+There are multiple reasons therefor
+<ul>
+<li> Typelibraries and component registration data are very different kind of data and are
+     used from different core components ( servicemanager and registrytypeprovider ).
+<li> Often typelibraries are more static than component registration registries, meaning
+that during development phases, the types are often fixed while libraries are changed or
+added. Therefor typelibraries in general need less frequent updates.
+<li> In order to write into a registry, you need exclusive access. No other process may
+read or write from this registry during this time.
+<li> Often two different applications may share the type registry but have different
+component registries.
+</ul>
+
+So no matter which of the below bootstrapmethods you choose, you should prepare two registries,
+one which contains the types and the other one which contains the registered components. The
+type registry should be the applicat.rdb found in the ODK plus additional self defined types
+(in fact you may not need all types from the applicat.rdb, in case you are
+looking for a minimal solution, you can use the rdbmaker tool to reduce the
+types to an absolute minimum).
+<!-- The service-registry should be (unfinished thought) -->
+
+
+
+<h3>Bootstrapping mechanisms</h3>
+In the following all ways of bootstrapping an UNO component context are explained. 
+
+<h4>The uno.exe tool</h4>
+TODO
+<h4>C++ UNO bootstrapping via cppu::defaultBootstrap_InitialComponentContext()</h4>
+TODO
+<h4>C++ UNO bootstrapping via cppu::createRegistryServiceFactory()</h4>
+TODO
+<h4>Java UNO bootstrapping via com.sun.star.comp.helper.Bootstrap.createInitialComponentContext()</h4>
+<p>TODO</p>
+
+<table width=100% summary="Footer">
+<tr>
+<td BGCOLOR="#666699"><font color="#FFFFFF">Author: <a href="mailto:joerg.budischewski@germany.sun.com">Joerg
+Budischewski</a> ($Date: 2004/11/27 04:05:11 $)
+<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/tutorial/uno_registries.html
------------------------------------------------------------------------------
    svn:eol-style = native



Mime
View raw message