diff -u -r omni301/CREDITS omni/CREDITS
--- omni301/CREDITS	Fri Aug 18 15:09:40 2000
+++ omni/CREDITS	Wed Sep 27 16:00:21 2000
@@ -72,7 +72,7 @@
 Name:         David Riddoch
 Email:        djr@uk.research.att.com
 Organisation: AT&T Laboratories, Cambridge
-Description:  DSI, DII, DynAny and misc. omniORB core
+Description:  POA, DSI, DII, DynAny and misc. omniORB core
 
 Name:         James Riden
 Email:        jamesr@europe.com
diff -u -r omni301/PORTING omni/PORTING
--- omni301/PORTING	Tue Jul  4 16:24:35 2000
+++ omni/PORTING	Mon Oct  2 17:35:39 2000
@@ -35,7 +35,7 @@
 
 2. Porting omniidl
 
-   omniidl requires Python 1.5.2, which is available from
+   omniidl requires Python 1.5.2 or higher, which is available from
 
      http://www.python.org/download/
 
diff -u -r omni301/README.FIRST omni/README.FIRST
--- omni301/README.FIRST	Fri Aug 18 15:09:40 2000
+++ omni/README.FIRST	Mon Oct  2 17:35:39 2000
@@ -1,7 +1,7 @@
 This is version 3.0 of omniORB. We also refer to this version as omniORB3.
 
-This release is a minor release since omniORB 3.0.0.  For a summary of
-changes since the last release, please read the file ReleaseNote_omniORB_301.
+This release is a minor release since omniORB 3.0.1.  For a summary of
+changes since the last release, please read the file ReleaseNote_omniORB_302.
 
 omniORB3 is copyright AT&T Laboratories - Cambridge. It is free
 software. The programs in omniORB3 are distributed under the GNU
@@ -55,10 +55,10 @@
 
 CHANGES_240      - contains details of changes from 2.2.0 to 2.4.0.
 
-ReleaseNote_omniORB_301 - release notes of 3.0.1
+ReleaseNote_omniORB_302 - release notes of 3.0.2
 
 IMPORTANT NOTE for users upgrading from 2.7.1 or earlier:
-   Since 2.8.0, omniORB2 has been updated to CORBA 2.3. In order to comply 
+   Since 2.8.0, omniORB has been updated to CORBA 2.3. In order to comply 
    with the 2.3 specification, it is necessary to change the
    semantics of the extraction of string, object reference and typecode
    from an Any. Please read CHANGES_280 for details.
Only in omni: README.Python
diff -u -r omni301/README.SunC++5 omni/README.SunC++5
--- omni301/README.SunC++5	Thu Jul 13 16:26:23 2000
+++ omni/README.SunC++5	Mon Oct  2 17:35:40 2000
@@ -1,12 +1,17 @@
-Sun C++ 4.2 is currently what we use to compile code to put into service.
+Sun C++ 4.2 is currently what we use to compile code to put into
+service.
 
-More testing with the Sun C++ 5.0 and the new Forte Workshop v6.0 has revealed
-a problem that has not been resolved. omniORB servers or clients built with
-this compiler frequently core-dump on a Solaris 2.7 SMP machine when
-simultaneously multiple connections are bloken. This can be provoked by
-running multiple threads in a client program, all poking the same remote
-object and then kill the server or the client. Looking at the stack trace
-under dbx, it seems to go wrong in the exception unwinding when more than
-one thread is in the unwinding state. Effort to reproduce the bug in a
-small test program has been unsuccessful. Investigation continues. 
+We believe that the problems with Sun C++ 5.0 and Forte Workshop v6.0
+have now been worked around.
 
+omniORB servers or clients built with this compiler would frequently
+core-dump on a Solaris 2.7 SMP machine when multiple connections were
+simultaneously broken. This could be provoked by running multiple
+threads in a client program, all poking the same remote object and
+then killing the server or the client. Looking at the stack trace
+under dbx, it seems to go wrong in the exception unwinding when more
+than one thread is in the unwinding state.
+
+Explicitly installing an uncaught exception handler seems to avoid the
+problem. If you still see these symptoms, then the bug is obviously
+more pernicious than we thought.
diff -u -r omni301/README.hpux11 omni/README.hpux11
--- omni301/README.hpux11	Thu Jul 13 16:26:23 2000
+++ omni/README.hpux11	Mon Oct  2 17:35:40 2000
@@ -8,7 +8,7 @@
 
 Otherwise, you have to treak the build process of python to get python to
 install properly. On HPUX 11.00 (haven't tested on 10.x), the python 1.5.2
-source from python.org does not build out of the box. Some treakings are
+source from python.org does not build out of the box. Some tweakings are
 required.  The source from HP Software Porting And Archive Centre
 (http://hpux.cs.utah.edu/) is a good starting point but unfortunately the
 binary package cannot load C++ shared library as python extension modules.
diff -u -r omni301/README.unix omni/README.unix
--- omni301/README.unix	Thu Jul 13 16:26:23 2000
+++ omni/README.unix	Mon Oct  2 17:35:40 2000
@@ -13,8 +13,8 @@
 
   o Solaris 2.{5,6}/ Sun SparcCompiler C++ version 4.2
   o Windows NT / Windows 95 / Visual C++ version 5.0 (and also version 6.0)
+  o Linux 2.x (x86)/gcc-2.95/binutils-2.9.1.0.14/GNU Libc version 2
   o Linux 2.0 (x86)/ GNU C++ compiler version 2.7.2 /libc-5/ Linuxthreads 0.5
-  o Linux 2.0 (x86)/gcc-2.95/binutils-2.9.1.0.14/GNU Libc version 2
   o HPUX 11.00/ aC++
   o SGI Irix 6.x/SGI C++ compiler 7.2
 
@@ -79,8 +79,8 @@
   compiler that comes with your platform may not be the right version.
 
 
-  2. Set the location of a Python 1.5.2 interpreter
-  -------------------------------------------------
+  2. Set the location of a Python interpreter
+  -------------------------------------------
 
   Edit ./mk/platforms/<platform>.mk, where <platform> is the platform
   name you set in config.mk.
@@ -88,8 +88,8 @@
   Uncomment the 'PYTHON =' line, and set it to the path of your Python
   interpreter.
 
-  If you do not have Python 1.5.2, you can download the full source
-  distribution from
+  If you do not have Python 1.5.2 or higher, you can download the full
+  source distribution from
 
     http://www.python.org/download/
 
@@ -97,10 +97,10 @@
 
     ftp://ftp.uk.research.att.com/pub/omniORB/python/py152.tgz
 
-  Alternatively, on Solaris, Linux, IRIX and HPUX (and Windows, but this is
-  README.unix!) you can download a minimal version of Python which
-  contains just the functionality required by omniidl. Download it
-  from
+  Alternatively, on Solaris, Linux, IRIX and HPUX (and Windows, but
+  this is README.unix!) you can download a minimal version of Python
+  which contains just the functionality required by omniidl. Download
+  it from
 
     ftp://ftp.uk.research.att.com/pub/omniORB/python/
 
diff -u -r omni301/README.win32 omni/README.win32
--- omni301/README.win32	Thu Jul 13 16:26:23 2000
+++ omni/README.win32	Mon Oct  2 17:35:40 2000
@@ -66,8 +66,8 @@
 download it from our web site at 
 http://www.uk.research.att.com/omniORB/omniORB.html)
 
-omniidl requires Python 1.5.2. You can download the full Python
-distribution from
+omniidl requires Python 1.5.2 pr higher. You can download the full
+Python distribution from
 
      http://www.python.org/download/download_windows.html
 
@@ -75,10 +75,10 @@
 
      ftp://ftp.uk.research.att.com/pub/omniORB/python/py152.exe
 
-Alternatively, for Windows on x86, you can install a minimal
-version of Python which contains just the functionality required
-by omniidl. The Win32 binary distribution of omniORB comes with this
-minimal python package. Download it from
+Alternatively, for Windows on x86, you can install a minimal version
+of Python which contains just the functionality required by omniidl.
+The Win32 binary distribution of omniORB comes with this minimal
+python package. Download it from
 
      ftp://ftp.uk.research.att.com/pub/omniORB/python/omnipython-x86_win32.zip
 
@@ -89,8 +89,8 @@
 Configure the naming service
 =============================
  
-  If you are upgrading from 2.2.0, please read the important information about
-  omniNames at the end of this note.
+  If you are upgrading from 2.2.0, please read the important
+  information about omniNames at the end of this note.
 
   You have to configure the omniORB runtime and the naming service,
   consult the user guides in ./doc for details. For a quick start,
Only in omni301: ReleaseNote_omniORB_301
Only in omni: ReleaseNote_omniORB_302
Only in omni301: THIS_IS_omniORB_3_0_1
Only in omni: THIS_IS_omniORB_3_0_2
Only in omni: bugfixes-301.xml
diff -u -r omni301/bugfixes.xml omni/bugfixes.xml
--- omni301/bugfixes.xml	Fri Aug 18 15:09:41 2000
+++ omni/bugfixes.xml	Mon Oct  2 17:35:38 2000
@@ -1,7 +1,7 @@
 <?xml version="1.0" standalone="yes"?>
 <?xml-stylesheet type="text/xsl" href="bugfixes.xsl"?>
 
-<!-- The following bugs have been fixed since the omniORB 3.0.1     -->
+<!-- The following bugs have been fixed since the omniORB 3.0.2     -->
 <!-- release. This file is transformed into html with bugfixes.xsl. -->
 
 <!-- Editors: make sure the content you add is well-formed XML.     -->
diff -u -r omni301/bugfixes.xsl omni/bugfixes.xsl
--- omni301/bugfixes.xsl	Fri Aug 18 15:09:40 2000
+++ omni/bugfixes.xsl	Mon Oct  2 17:35:38 2000
@@ -19,7 +19,7 @@
   <tr>
     <td width="15%"><img src="images/omniORB3logo.gif"/></td>
     <td align="center" bgcolor="#000000"><h1 class="banner">
-        <font color="#FFFFFF"><em>omniORB 3.0.0 Bug List</em></font></h1>
+        <font color="#FFFFFF"><em>omniORB 3.0.2 Bug List</em></font></h1>
     </td>
 
     <td width="15%"><p align="center">
@@ -70,14 +70,14 @@
         <tr><td>
 
 	  <p>
-	  The following bugs in omniORB 3.0.1 have been fixed. You can
+	  The following bugs in omniORB 3.0.2 have been fixed. You can
 	  get the fixes in three ways:</p>
 
           <ul><li>Update from <a href="cvs.html">CVS</a> in the
                   <code>"omni3_develop"</code> branch.</li>
 
-              <li>Apply <a href="ftp://ftp.uk.research.att.com/pub/omniORB/omniORB3/omniORB_301_bugfixes.patch">this
-                  patch</a> to the omniORB 3.0.1 distribution.</li>
+              <li>Apply <a href="ftp://ftp.uk.research.att.com/pub/omniORB/omniORB3/omniORB_302_bugfixes.patch">this
+                  patch</a> to the omniORB 3.0.2 distribution.</li>
 
               <li>Download the latest <a
               href="ftp://ftp.uk.research.att.com/pub/omniORB/omniORB_3_snapshots/">source
@@ -88,9 +88,10 @@
           <p>
           The bugs page for earlier versions can be found here:
           <ul> 
-              <li><a href='bug300.html'>3.0.0</a> </li>
-	      <li><a href='omniORBbug_old.html'>for 2.8.0 and earlier</a></li>
-           </ul>
+              <li><a href="bug301.html">3.0.1</a></li>
+              <li><a href="bug300.html">3.0.0</a></li>
+	      <li><a href="omniORBbug_old.html">for 2.8.0 and earlier</a></li>
+          </ul>
 
           </p>
 
@@ -121,14 +122,20 @@
   </html>
 </xsl:template>
 
+<xsl:template match="buglist">
+    <xsl:apply-templates/>
+</xsl:template>
+
+
 <xsl:template match="bug">
 
-    <a><xsl:attribute name="name">bug<xsl:value-of select="@id"/>
-       </xsl:attribute>
-    </a>
     <tr><td>Summary:</td>
         <td><b><xsl:value-of select="summary"/></b>
-            (bug number <xsl:value-of select="@id"/>)</td>
+            (bug number <xsl:value-of select="@id"/>)
+            <a><xsl:attribute name="name">bug<xsl:value-of select="@id"/>
+               </xsl:attribute>
+            </a>
+        </td>
     </tr>
 
     <tr><td>Date:      </td><td><xsl:value-of select="@date"/></td></tr>
diff -u -r omni301/doc/omniORB/index.html omni/doc/omniORB/index.html
--- omni301/doc/omniORB/index.html	Tue Jul  4 16:24:13 2000
+++ omni/doc/omniORB/index.html	Tue Sep 19 12:26:41 2000
@@ -81,58 +81,59 @@
 <LI><A HREF="omniORB006.html#toc32"> POA request holding timeout</A>
 <LI><A HREF="omniORB006.html#toc33"> Obsolete Initial Object Reference Bootstrapping</A>
 <LI><A HREF="omniORB006.html#toc34"> GIOP Lowest Common Denominator Mode</A>
-<LI><A HREF="omniORB006.html#toc35"> Trapping omniORB Internal Errors</A>
-<LI><A HREF="omniORB006.html#toc36"> System Exception Handlers</A>
-<LI><A HREF="omniORB006.html#toc37"> Location forwarding</A>
+<LI><A HREF="omniORB006.html#toc35"> GIOP Requesting Principal field</A>
+<LI><A HREF="omniORB006.html#toc36"> Trapping omniORB Internal Errors</A>
+<LI><A HREF="omniORB006.html#toc37"> System Exception Handlers</A>
+<LI><A HREF="omniORB006.html#toc38"> Location forwarding</A>
 </UL>
 <LI><A HREF="omniORB007.html"> Interface Type Checking</A>
 <UL>
-<LI><A HREF="omniORB007.html#toc38"> Introduction</A>
-<LI><A HREF="omniORB007.html#toc39"> Basic Interface Type Checking</A>
-<LI><A HREF="omniORB007.html#toc40"> Interface Inheritance</A>
+<LI><A HREF="omniORB007.html#toc39"> Introduction</A>
+<LI><A HREF="omniORB007.html#toc40"> Basic Interface Type Checking</A>
+<LI><A HREF="omniORB007.html#toc41"> Interface Inheritance</A>
 </UL>
 <LI><A HREF="omniORB008.html"> Connection Management</A>
 <UL>
-<LI><A HREF="omniORB008.html#toc41"> Background</A>
-<LI><A HREF="omniORB008.html#toc42"> The Model</A>
-<LI><A HREF="omniORB008.html#toc43"> Idle Connection Shutdown and Remote Call Timeout</A>
-<LI><A HREF="omniORB008.html#toc44"> Interoperability Considerations</A>
-<LI><A HREF="omniORB008.html#toc45"> Connection Acceptance</A>
+<LI><A HREF="omniORB008.html#toc42"> Background</A>
+<LI><A HREF="omniORB008.html#toc43"> The Model</A>
+<LI><A HREF="omniORB008.html#toc44"> Idle Connection Shutdown and Remote Call Timeout</A>
+<LI><A HREF="omniORB008.html#toc45"> Interoperability Considerations</A>
+<LI><A HREF="omniORB008.html#toc46"> Connection Acceptance</A>
 </UL>
 <LI><A HREF="omniORB009.html"> Type Any and TypeCode</A>
 <UL>
-<LI><A HREF="omniORB009.html#toc46"> Example using type Any</A>
-<LI><A HREF="omniORB009.html#toc47"> Type Any in omniORB</A>
-<LI><A HREF="omniORB009.html#toc48"> TypeCode in omniORB</A>
-<LI><A HREF="omniORB009.html#toc49"> Source Listing</A>
+<LI><A HREF="omniORB009.html#toc47"> Example using type Any</A>
+<LI><A HREF="omniORB009.html#toc48"> Type Any in omniORB</A>
+<LI><A HREF="omniORB009.html#toc49"> TypeCode in omniORB</A>
+<LI><A HREF="omniORB009.html#toc50"> Source Listing</A>
 </UL>
 <LI><A HREF="omniORB010.html"> Dynamic Management of Any Values</A>
 <UL>
-<LI><A HREF="omniORB010.html#toc50"> C++ mapping</A>
-<LI><A HREF="omniORB010.html#toc51"> The DynAny Interface</A>
-<LI><A HREF="omniORB010.html#toc52"> The DynStruct Interface</A>
-<LI><A HREF="omniORB010.html#toc53"> The DynSequence Interface</A>
-<LI><A HREF="omniORB010.html#toc54"> The DynArray Interface</A>
-<LI><A HREF="omniORB010.html#toc55"> The DynEnum Interface</A>
-<LI><A HREF="omniORB010.html#toc56"> The DynUnion Interface</A>
-<LI><A HREF="omniORB010.html#toc57"> Duplicate DynAny References</A>
-<LI><A HREF="omniORB010.html#toc58"> Other Operations</A>
+<LI><A HREF="omniORB010.html#toc51"> C++ mapping</A>
+<LI><A HREF="omniORB010.html#toc52"> The DynAny Interface</A>
+<LI><A HREF="omniORB010.html#toc53"> The DynStruct Interface</A>
+<LI><A HREF="omniORB010.html#toc54"> The DynSequence Interface</A>
+<LI><A HREF="omniORB010.html#toc55"> The DynArray Interface</A>
+<LI><A HREF="omniORB010.html#toc56"> The DynEnum Interface</A>
+<LI><A HREF="omniORB010.html#toc57"> The DynUnion Interface</A>
+<LI><A HREF="omniORB010.html#toc58"> Duplicate DynAny References</A>
+<LI><A HREF="omniORB010.html#toc59"> Other Operations</A>
 </UL>
 <LI><A HREF="omniORB011.html"> The Dynamic Invocation Interface</A>
 <UL>
-<LI><A HREF="omniORB011.html#toc59"> Overview</A>
-<LI><A HREF="omniORB011.html#toc60"> Pseudo Objects</A>
-<LI><A HREF="omniORB011.html#toc61"> Creating Requests</A>
-<LI><A HREF="omniORB011.html#toc62"> Invoking Operations</A>
-<LI><A HREF="omniORB011.html#toc63"> Multiple Requests</A>
+<LI><A HREF="omniORB011.html#toc60"> Overview</A>
+<LI><A HREF="omniORB011.html#toc61"> Pseudo Objects</A>
+<LI><A HREF="omniORB011.html#toc62"> Creating Requests</A>
+<LI><A HREF="omniORB011.html#toc63"> Invoking Operations</A>
+<LI><A HREF="omniORB011.html#toc64"> Multiple Requests</A>
 </UL>
 <LI><A HREF="omniORB012.html"> The Dynamic Skeleton Interface</A>
 <UL>
-<LI><A HREF="omniORB012.html#toc64"> Overview</A>
-<LI><A HREF="omniORB012.html#toc65"> DSI Types</A>
-<LI><A HREF="omniORB012.html#toc66"> Creating Dynamic Implementations</A>
-<LI><A HREF="omniORB012.html#toc67"> Registering Dynamic Objects</A>
-<LI><A HREF="omniORB012.html#toc68"> Example</A>
+<LI><A HREF="omniORB012.html#toc65"> Overview</A>
+<LI><A HREF="omniORB012.html#toc66"> DSI Types</A>
+<LI><A HREF="omniORB012.html#toc67"> Creating Dynamic Implementations</A>
+<LI><A HREF="omniORB012.html#toc68"> Registering Dynamic Objects</A>
+<LI><A HREF="omniORB012.html#toc69"> Example</A>
 </UL>
 <LI><A HREF="omniORB013.html"> hosts_access(5)</A>
 <LI><A HREF="omniORB014.html"> References</A>
diff -u -r omni301/doc/omniORB/omniORB001.html omni/doc/omniORB/omniORB001.html
--- omni301/doc/omniORB/omniORB001.html	Tue Jul  4 16:24:13 2000
+++ omni/doc/omniORB/omniORB001.html	Tue Sep 19 12:26:41 2000
@@ -16,7 +16,7 @@
 <H1>Chapter&nbsp;1&nbsp;&nbsp; Introduction</H1>
 omniORB is an Object Request Broker (ORB) that implements the 2.3
 specification of the Common Object Request Broker Architecture
-(CORBA)&nbsp;[<A HREF="omniORB014.html#corba23-spec"><CITE>OMG99a</CITE></A>]<A NAME="text1" HREF="#note1"><SUP><FONT SIZE=2>1</FONT></SUP></A>. It has passed the Open
+(CORBA)&nbsp;[<A HREF="omniORB014.html#corba23-spec"><CITE>OMG99</CITE></A>]<A NAME="text1" HREF="#note1"><SUP><FONT SIZE=2>1</FONT></SUP></A>. It has passed the Open
 Group CORBA compliant testsuite and is one of the three ORBs to have
 been granted the CORBA brand in June 1999<A NAME="text2" HREF="#note2"><SUP><FONT SIZE=2>2</FONT></SUP></A>.<BR>
 <BR>
diff -u -r omni301/doc/omniORB/omniORB002.html omni/doc/omniORB/omniORB002.html
--- omni301/doc/omniORB/omniORB002.html	Thu Jul 13 16:26:15 2000
+++ omni/doc/omniORB/omniORB002.html	Tue Sep 19 12:26:41 2000
@@ -51,7 +51,7 @@
     string echoString(in string mesg);
 };
 </PRE>If you are new to IDL, you can learn about its syntax in Chapter 3 of
-the CORBA specification 2.3&nbsp;[<A HREF="omniORB014.html#corba23-spec"><CITE>OMG99a</CITE></A>]. For the moment, you
+the CORBA specification 2.3&nbsp;[<A HREF="omniORB014.html#corba23-spec"><CITE>OMG99</CITE></A>]. For the moment, you
 only need to know that the interface consists of a single operation,
 <TT>echoString()</TT>, which takes a string as an argument and returns a
 copy of the same string.<BR>
@@ -251,7 +251,7 @@
 <TT>Echo_ptr</TT>. These operations deal mainly with CORBA's dynamic
 interfaces. You do not have to understand them in order to use the C++
 mapping provided via the stubs. For details, please read the CORBA
-specification&nbsp;[<A HREF="omniORB014.html#corba23-spec"><CITE>OMG99a</CITE></A>], chapter 23.<BR>
+specification&nbsp;[<A HREF="omniORB014.html#corba23-spec"><CITE>OMG99</CITE></A>], chapter 23.<BR>
 <BR>
 Since object references must be released explicitly, their usage is
 prone to error and can lead to memory leakage. The mapping defines the
@@ -533,7 +533,7 @@
 A POA's behaviour is governed by its <I>policies</I>. The Root POA has
 suitable policies for many simple servers, and closely matches the
 `policies' used by omniORB 2's BOA. See Chapter 11 of the CORBA 2.3
-specification[<A HREF="omniORB014.html#corba23-spec"><CITE>OMG99a</CITE></A>] for details of all the POA policies
+specification[<A HREF="omniORB014.html#corba23-spec"><CITE>OMG99</CITE></A>] for details of all the POA policies
 which are available.</DL>
 <H3>2.8.3&nbsp;&nbsp; Object initialisation</H3><DL COMPACT=compact>
 <DT>Line 9<DD><BR>An instance of the Echo object is initialised using the <TT>new</TT>
@@ -811,7 +811,7 @@
 argument (defaulted to true) which indicates whether or not it should
 delete the servant object. For full details of using tie templates,
 see section&nbsp;23.36.7 of the CORBA 2.3 C++ mapping
-specification&nbsp;[<A HREF="omniORB014.html#corba23-spec"><CITE>OMG99a</CITE></A>].<BR>
+specification&nbsp;[<A HREF="omniORB014.html#corba23-spec"><CITE>OMG99</CITE></A>].<BR>
 <BR>
 <A NAME="toc15"></A>
 <H2>2.12&nbsp;&nbsp; Source Listings</H2>
@@ -1664,7 +1664,7 @@
 with id and kind fields which contain `.' and `/' characters. See
 chapter&nbsp;<A HREF="omniORB004.html#chap:ins">4</A> of this manual, and chapter 3 of the CORBA
 services specification, as updated for the Interoperable Naming
-Service&nbsp;[<A HREF="omniORB014.html#inschapters"><CITE>OMG99b</CITE></A>].
+Service&nbsp;[<A HREF="omniORB014.html#inschapters"><CITE>OMG00</CITE></A>].
 </DL>
 <HR>
 <A HREF="omniORB001.html"><IMG SRC ="previous_motif.gif" ALT="Previous"></A>
diff -u -r omni301/doc/omniORB/omniORB003.html omni/doc/omniORB/omniORB003.html
--- omni301/doc/omniORB/omniORB003.html	Tue Jul  4 16:24:12 2000
+++ omni/doc/omniORB/omniORB003.html	Tue Sep 19 12:26:42 2000
@@ -17,7 +17,7 @@
 <H1>Chapter&nbsp;3&nbsp;&nbsp; C++ language mapping</H1>
 Now that you are familiar with the basics, it is important to
 familiarise yourself with the standard IDL to C++ language mapping.
-The mapping is described in detail in&nbsp;[<A HREF="omniORB014.html#corba23-spec"><CITE>OMG99a</CITE></A>]. If you have
+The mapping is described in detail in&nbsp;[<A HREF="omniORB014.html#corba23-spec"><CITE>OMG99</CITE></A>]. If you have
 not done so, you should obtain a copy of the document and use that as
 the programming guide to omniORB.<BR>
 <BR>
@@ -124,7 +124,7 @@
 <LI> The proprietary omniORB 2 LifeCycle extensions are no longer
 supported. All of the facilities it offered can be implemented with
 the POA interfaces, and the <TT>omniORB::LOCATION_FORWARD</TT>
-exception (see section&nbsp;<A HREF="omniORB006.html#sec:locationForward">6.12</A>). Code which used the
+exception (see section&nbsp;<A HREF="omniORB006.html#sec:locationForward">6.13</A>). Code which used the
 old interfaces will have to be rewritten.</UL><HR>
 <A HREF="omniORB002.html"><IMG SRC ="previous_motif.gif" ALT="Previous"></A>
 <A HREF="index.html"><IMG SRC ="contents_motif.gif" ALT="Contents"></A>
diff -u -r omni301/doc/omniORB/omniORB004.html omni/doc/omniORB/omniORB004.html
--- omni301/doc/omniORB/omniORB004.html	Thu Jul 13 16:26:15 2000
+++ omni/doc/omniORB/omniORB004.html	Tue Sep 19 12:26:42 2000
@@ -17,7 +17,7 @@
 <H1>Chapter&nbsp;4&nbsp;&nbsp; Interoperable Naming Service</H1>
 <A NAME="chap:ins"></A>omniORB 3 supports the Interoperable Naming Service (INS), which will
 be part of CORBA 2.4. The following is a summary of the new facilities
-described in the INS edited chapters document&nbsp;[<A HREF="omniORB014.html#inschapters"><CITE>OMG99b</CITE></A>].<BR>
+described in the INS edited chapters document&nbsp;[<A HREF="omniORB014.html#inschapters"><CITE>OMG00</CITE></A>].<BR>
 <BR>
 <A NAME="toc18"></A>
 <H2>4.1&nbsp;&nbsp; Object URIs</H2>As well as accepting IOR-format strings, <TT>ORB::string_to_object()</TT>
@@ -367,7 +367,7 @@
 <BR>
 <HR WIDTH="50%" SIZE=1><DL>
 <DT><A NAME="note14" HREF="#text14"><FONT SIZE=5>1</FONT></A><DD> Not 2089 as
-printed in [<A HREF="omniORB014.html#inschapters"><CITE>OMG99b</CITE></A>]!
+printed in [<A HREF="omniORB014.html#inschapters"><CITE>OMG00</CITE></A>]!
 
 <DT><A NAME="note15" HREF="#text15"><FONT SIZE=5>2</FONT></A><DD> In
 fact, a strict reading of the specification says that it should be
diff -u -r omni301/doc/omniORB/omniORB005.html omni/doc/omniORB/omniORB005.html
--- omni301/doc/omniORB/omniORB005.html	Tue Jul  4 16:24:12 2000
+++ omni/doc/omniORB/omniORB005.html	Tue Sep 19 12:26:42 2000
@@ -48,6 +48,9 @@
 <TR><TD ALIGN=left NOWRAP><TT>-N</TT></TD>
 <TD ALIGN=left NOWRAP>Do not run the preprocessor.</TD>
 </TR>
+<TR><TD ALIGN=left NOWRAP><TT>-T</TT></TD>
+<TD ALIGN=left NOWRAP>Use a temporary file, not a pipe, for preprocessor output.</TD>
+</TR>
 <TR><TD ALIGN=left NOWRAP><TT>-Wp</TT><I>arg</I>[,<I>arg</I>...]</TD>
 <TD ALIGN=left NOWRAP>Send arguments to the preprocessor.</TD>
 </TR>
@@ -98,6 +101,15 @@
 specify a different preprocessor to omnicpp. Beware that line
 directives inserted by other preprocessors are likely to confuse
 omniidl.<BR>
+<BR>
+
+<H4> Windows 9x</H4>The output from the C preprocessor is normally fed to the omniidl
+parser through a pipe. On some Windows 98 machines (but not all!) the
+pipe does not work, and the preprocessor output is echoed to the
+screen. When this happens, the omniidl parser sees an empty file, and
+produces useless stub files with strange long names. To avoid the
+problem, use the `<TT>-T</TT>' option to create a temporary file
+between the two stages.<BR>
 <BR>
 
 <H3>5.1.2&nbsp;&nbsp; Forward-declared interfaces</H3>If you have an IDL file like:<BR>
diff -u -r omni301/doc/omniORB/omniORB006.html omni/doc/omniORB/omniORB006.html
--- omni301/doc/omniORB/omniORB006.html	Thu Jul 13 16:26:15 2000
+++ omni/doc/omniORB/omniORB006.html	Tue Sep 19 12:26:42 2000
@@ -74,7 +74,7 @@
 <TD ALIGN=left NOWRAP>See section&nbsp;<A HREF="omniORB011.html#dii_invoke">11.4</A>.</TD>
 </TR>
 <TR><TD ALIGN=left NOWRAP><TT>-ORBabortOnInternalError </TT>&lt;<I>0 or 1</I>&gt;</TD>
-<TD ALIGN=left NOWRAP>See section&nbsp;<A HREF="#sec_fatal">6.10</A>.</TD>
+<TD ALIGN=left NOWRAP>See section&nbsp;<A HREF="#sec_fatal">6.11</A>.</TD>
 </TR>
 <TR><TD ALIGN=left NOWRAP><TT>-ORBverifyObjectExistsAndType </TT>&lt;<I>0 or 1</I>&gt;</TD>
 <TD ALIGN=left NOWRAP>See section&nbsp;<A HREF="#sec_lcd">6.9</A>.</TD>
@@ -366,7 +366,18 @@
 effect.<BR>
 <BR>
 <A NAME="toc35"></A>
-<H2>6.10&nbsp;&nbsp; Trapping omniORB Internal Errors</H2>
+<H2>6.10&nbsp;&nbsp; GIOP Requesting Principal field</H2>In versions 1.0 and 1.1 of the GIOP specification, request messages
+contain a `principal' field which was intended to identify the client.
+The meaning of the principal field was never specified, and its use is
+now deprecated. The field is not present in GIOP 1.2. omniORB normally
+uses the string `<TT>nobody</TT>' in the principal field. However,
+some systems (e.g. the GNOME desktop environment) use the principal
+field as an authentication mechanism, so omniORB allows you to
+configure the principal by setting the <TT>OMNIORB_PRINCIPAL</TT>
+environment variable.<BR>
+<BR>
+<A NAME="toc36"></A>
+<H2>6.11&nbsp;&nbsp; Trapping omniORB Internal Errors</H2>
 <A NAME="sec_fatal"></A><PRE>
 class fatalException {
 public:
@@ -392,8 +403,8 @@
 <BR>
 <BR>
 <BR>
-<A NAME="toc36"></A>
-<H2>6.11&nbsp;&nbsp; System Exception Handlers</H2>By default, all system exceptions which are raised during an operation
+<A NAME="toc37"></A>
+<H2>6.12&nbsp;&nbsp; System Exception Handlers</H2>By default, all system exceptions which are raised during an operation
 invocation, with the exception of <TT>CORBA::TRANSIENT</TT>, are
 propagated to the application code. Some applications may prefer to
 trap these exceptions within the proxy objects so that the application
@@ -414,7 +425,7 @@
 in the address space.<BR>
 <BR>
 
-<H3>6.11.1&nbsp;&nbsp; CORBA::TRANSIENT handlers</H3>When a <TT>CORBA::TRANSIENT</TT> exception is raised by the ORB runtime,
+<H3>6.12.1&nbsp;&nbsp; CORBA::TRANSIENT handlers</H3>When a <TT>CORBA::TRANSIENT</TT> exception is raised by the ORB runtime,
 the default behaviour of the proxy objects is to retry indefinitely
 until the operation succeeds. Successive retries will be delayed
 progressively by multiples of
@@ -513,7 +524,7 @@
    // The proxy object of myobj will call my_transient_handler2 from now on.
 }
 </PRE>
-<H3>6.11.2&nbsp;&nbsp; CORBA::COMM_FAILURE</H3>When the ORB runtime fails to establish a network connection to the
+<H3>6.12.2&nbsp;&nbsp; CORBA::COMM_FAILURE</H3>When the ORB runtime fails to establish a network connection to the
 remote object and none of the conditions listed above for raising a
 <TT>CORBA::TRANSIENT</TT> is applicable, it raises a
 <TT>CORBA::COMM_FAILURE</TT> exception.<BR>
@@ -543,7 +554,7 @@
 <TT>CORBA::TRANSIENT</TT>.<BR>
 <BR>
 
-<H3>6.11.3&nbsp;&nbsp; CORBA::SystemException</H3>To report an error condition, the ORB runtime may raise other system
+<H3>6.12.3&nbsp;&nbsp; CORBA::SystemException</H3>To report an error condition, the ORB runtime may raise other system
 exceptions. If the exception is neither <TT>CORBA::TRANISENT</TT> nor
 <TT>CORBA::COMM_FAILURE</TT>, the default behaviour of the proxy
 objects is to propagate this exception to the application.
@@ -568,8 +579,8 @@
 </PRE>The functions are equivalent to their counterparts for
 <TT>CORBA::TRANSIENT</TT>.<BR>
 <BR>
-<A NAME="toc37"></A>
-<H2>6.12&nbsp;&nbsp; Location forwarding</H2>
+<A NAME="toc38"></A>
+<H2>6.13&nbsp;&nbsp; Location forwarding</H2>
 <A NAME="sec:locationForward"></A>Any CORBA operation invocation can return a <TT>LOCATION_FORWARD</TT>
 message to the caller, indicating that it should retry the invocation
 on a new object reference. The standard allows ServantManagers to
diff -u -r omni301/doc/omniORB/omniORB007.html omni/doc/omniORB/omniORB007.html
--- omni301/doc/omniORB/omniORB007.html	Thu Jul 13 16:26:15 2000
+++ omni/doc/omniORB/omniORB007.html	Tue Sep 19 12:26:42 2000
@@ -23,7 +23,7 @@
 is useful to understand the underlying mechanism in order to interpret
 the error conditions reported by the ORB.<BR>
 <BR>
-<A NAME="toc38"></A>
+<A NAME="toc39"></A>
 <H2>7.1&nbsp;&nbsp; Introduction</H2>In GIOP/IIOP, an object reference is encoded as an Interoperable
 Object Reference (IOR) when it is sent across a network connection.
 The IOR contains a Repository ID (RepoId) and one or more
@@ -67,7 +67,7 @@
 RepoId. However, it may receive null RepoId from other ORBs. In that
 case, it will use the mechanism described below to ensure type safety.<BR>
 <BR>
-<A NAME="toc39"></A>
+<A NAME="toc40"></A>
 <H2>7.2&nbsp;&nbsp; Basic Interface Type Checking</H2>
 <A NAME="sec_intf"></A>The ORB is provided with the interface information by the stubs via
 the <TT>proxyObjectFactory</TT> class. For an interface <TT>A</TT>, the
@@ -138,7 +138,7 @@
 </OL>To handle this situation, the ORB must find out the type information
 dynamically. This is explained in the next section.<BR>
 <BR>
-<A NAME="toc40"></A>
+<A NAME="toc41"></A>
 <H2>7.3&nbsp;&nbsp; Interface Inheritance</H2>When the ORB receives an IOR of interface type B when it expects the
 type to be A, it must find out if B inherits from A. When the ORB has
 no local knowledge of the type B, it must work out the type of B
diff -u -r omni301/doc/omniORB/omniORB008.html omni/doc/omniORB/omniORB008.html
--- omni301/doc/omniORB/omniORB008.html	Tue Jul  4 16:24:11 2000
+++ omni/doc/omniORB/omniORB008.html	Tue Sep 19 12:26:42 2000
@@ -17,7 +17,7 @@
 <H1>Chapter&nbsp;8&nbsp;&nbsp; Connection Management</H1>
 <A NAME="ch_conn"></A>This chapter describes how omniORB manages network connections.<BR>
 <BR>
-<A NAME="toc41"></A>
+<A NAME="toc42"></A>
 <H2>8.1&nbsp;&nbsp; Background</H2>In CORBA, the ORB is the `middleware' that allows a client to invoke
 an operation on an object without regard to its implementation or
 location. In order to invoke an operation on an object, a client needs
@@ -49,7 +49,7 @@
 connections and the programming interface to fine tune the management
 policy.<BR>
 <BR>
-<A NAME="toc42"></A>
+<A NAME="toc43"></A>
 <H2>8.2&nbsp;&nbsp; The Model</H2>omniORB is designed from the ground up to be fully multi-threaded. The
 objective is to maximise the degree of concurrency and at the same
 time eliminate any unnecessary thread overhead. Another objective is
@@ -91,7 +91,7 @@
 value can be increased to a maximum of a thousand or more by changing
 the `ulimit' in the shell.<BR>
 <BR>
-<A NAME="toc43"></A>
+<A NAME="toc44"></A>
 <H2>8.3&nbsp;&nbsp; Idle Connection Shutdown and Remote Call Timeout</H2>
 <A NAME="sec_shut"></A>Inside the ORB, a thread is dedicated to scan for idle connections.
 The thread looks after both the outgoing connections and the incoming
@@ -154,7 +154,7 @@
 </PRE>The scan can be disabled completely by setting the scan granularity to
 0.<BR>
 <BR>
-<A NAME="toc44"></A>
+<A NAME="toc45"></A>
 <H2>8.4&nbsp;&nbsp; Interoperability Considerations</H2>The IIOP specification allows both the client and the server to
 shutdown a connection unilaterally. When one end is about to shutdown
 a connection, it should send a closeConnection message to the other
@@ -178,7 +178,7 @@
 in the application code and retry, or to turn off the idle connection
 shutdown inside the omniORB server.<BR>
 <BR>
-<A NAME="toc45"></A>
+<A NAME="toc46"></A>
 <H2>8.5&nbsp;&nbsp; Connection Acceptance</H2>
 <A NAME="sec_accept"></A>omniORB provides the hook to implement a connection acceptance policy.
 Inside the ORB runtime, a thread is dedicated to receive new
diff -u -r omni301/doc/omniORB/omniORB009.html omni/doc/omniORB/omniORB009.html
--- omni301/doc/omniORB/omniORB009.html	Thu Jul 13 16:26:14 2000
+++ omni/doc/omniORB/omniORB009.html	Tue Sep 19 12:26:43 2000
@@ -24,7 +24,7 @@
 presented. This is followed by sections describing the behaviour of
 type Any and TypeCode in omniORB. For further information on type
 Any, refer to the C++ Mapping section of the CORBA 2.3
-specification&nbsp;[<A HREF="omniORB014.html#corba23-spec"><CITE>OMG99a</CITE></A>], and for more information on
+specification&nbsp;[<A HREF="omniORB014.html#corba23-spec"><CITE>OMG99</CITE></A>], and for more information on
 TypeCode, refer to the Interface Repository chapter in the CORBA core
 section of the CORBA 2.3 specification.<BR>
 <BR>
@@ -45,7 +45,7 @@
 <TT>omniORB::omniORB_27_CompatibleAnyExtraction</TT> can be set to
 revert the any extraction operators to the old semantics.</DL><HR SIZE=2><BR>
 <BR>
-<A NAME="toc46"></A>
+<A NAME="toc47"></A>
 <H2>9.1&nbsp;&nbsp; Example using type Any</H2>Before going through this example, you should make sure that you have
 read and understood the examples in chapter&nbsp;<A HREF="omniORB002.html#ch_basic">2</A>. The
 source code for this example is included in the omniORB distribution,
@@ -234,7 +234,7 @@
 Note that there are special rules for inserting and extracting arrays
 (using the <TT>_forany</TT> types), and for inserting and extracting
 bounded strings, booleans, chars, and octets. Please refer to the C++
-Mapping chapter of the CORBA 2.3 specification&nbsp;[<A HREF="omniORB014.html#corba23-spec"><CITE>OMG99a</CITE></A>] for
+Mapping chapter of the CORBA 2.3 specification&nbsp;[<A HREF="omniORB014.html#corba23-spec"><CITE>OMG99</CITE></A>] for
 further information.<BR>
 <BR>
 <HR SIZE=2><DL COMPACT=compact>
@@ -255,7 +255,7 @@
 transitional measure and in the long run, applications should be
 written to use the new behaviour.</DL><HR SIZE=2><BR>
 <BR>
-<A NAME="toc47"></A>
+<A NAME="toc48"></A>
 <H2>9.2&nbsp;&nbsp; Type Any in omniORB</H2>
 <A NAME="anyOmniORB"></A>This section contains some notes on the use and behaviour of type Any
 in omniORB.<BR>
@@ -388,7 +388,7 @@
 protect the Any with a mutex, as this condition should rarely arise,
 and adding a mutex would lead to performance penalties.<BR>
 <BR>
-<A NAME="toc48"></A>
+<A NAME="toc49"></A>
 <H2>9.3&nbsp;&nbsp; TypeCode in omniORB</H2>This section contains some notes on the use and behaviour of TypeCode
 in omniORB<BR>
 <BR>
@@ -421,7 +421,7 @@
 };
 </PRE>A TypeCode, <TT>_tc_Test6</TT>, will be generated to describe the
 struct <TT>Test6</TT>. The operations defined in the TypeCode interface
-(see section 10.7 of the CORBA 2.3 specification&nbsp;[<A HREF="omniORB014.html#corba23-spec"><CITE>OMG99a</CITE></A>])
+(see section 10.7 of the CORBA 2.3 specification&nbsp;[<A HREF="omniORB014.html#corba23-spec"><CITE>OMG99</CITE></A>])
 can be used to query the TypeCode about the type it represents.<BR>
 <BR>
 
@@ -458,7 +458,7 @@
 changed to enforce strict equality. The pre-2.8.0 behaviour can be
 obtained with <TT>equivalent()</TT>.<BR>
 <BR>
-<A NAME="toc49"></A>
+<A NAME="toc50"></A>
 <H2>9.4&nbsp;&nbsp; Source Listing</H2>
 <H3>9.4.1&nbsp;&nbsp; anyExample_impl.cc</H3><PRE>
 // anyExample_impl.cc - This is the source code of the example used in
diff -u -r omni301/doc/omniORB/omniORB010.html omni/doc/omniORB/omniORB010.html
--- omni301/doc/omniORB/omniORB010.html	Thu Jul 13 16:26:14 2000
+++ omni/doc/omniORB/omniORB010.html	Tue Sep 19 12:26:43 2000
@@ -45,7 +45,7 @@
 <TT>valuetype</TT>. Future releases of omniORB will be updated to
 implement the interface as defined in CORBA 2.3.<BR>
 <BR>
-<A NAME="toc50"></A>
+<A NAME="toc51"></A>
 <H2>10.1&nbsp;&nbsp; C++ mapping</H2><PRE>
 // namespace CORBA
 
@@ -227,7 +227,7 @@
   static DynArray_ptr _narrow(DynAny_ptr);
   static DynArray_ptr _nil();
 };
-</PRE><A NAME="toc51"></A>
+</PRE><A NAME="toc52"></A>
 <H2>10.2&nbsp;&nbsp; The DynAny Interface</H2>
 <A NAME="dynany"></A>
 <H3>10.2.1&nbsp;&nbsp; Example: extract data values from an Any</H3>If an Any contains a value of one of the basic data types, its value
@@ -516,7 +516,7 @@
 non-basic types: struct, sequence, array, enum and union<A NAME="text24" HREF="#note24"><SUP><FONT SIZE=2>4</FONT></SUP></A>. The next few sections will provide more details on
 these interfaces.<BR>
 <BR>
-<A NAME="toc52"></A>
+<A NAME="toc53"></A>
 <H2>10.3&nbsp;&nbsp; The DynStruct Interface</H2>When a DynAny object is created through the <TT>create_dyn_any()</TT>
 operation and the any value contains a struct type, a <TT>DynStruct</TT>
 object is created. The DynAny reference returned can be narrowed to a
@@ -588,7 +588,7 @@
 <TT>current_member_kind()</TT>, to return information about the
 current component.<BR>
 <BR>
-<A NAME="toc53"></A>
+<A NAME="toc54"></A>
 <H2>10.4&nbsp;&nbsp; The DynSequence Interface</H2>Like struct values, sequence values can be traversed using the
 operations introduced in section&nbsp;<A HREF="#dynany">10.2</A>. The first sequence
 element can be accessed as the first DynAny component, the second
@@ -640,12 +640,12 @@
 <TT>set_elements()</TT> operation is provided to insert all the sequence
 elements.<BR>
 <BR>
-<A NAME="toc54"></A>
+<A NAME="toc55"></A>
 <H2>10.5&nbsp;&nbsp; The DynArray Interface</H2>Array values are handled by the DynArray interface. The DynArray
 interface is the same as the DynSequence interface except that the
 former does not provide the set length and get length operations.<BR>
 <BR>
-<A NAME="toc55"></A>
+<A NAME="toc56"></A>
 <H2>10.6&nbsp;&nbsp; The DynEnum Interface</H2>Enum values are handled by the DynEnum interface. A DynEnum object
 contains a single component which is the enum value. This value cannot
 be extracted or inserted using the get and insert operations of the
@@ -656,7 +656,7 @@
 extracted or inserted as a string. The <TT>value_as_ulong()</TT> operation
 allows the enum value to be extracted or inserted as an unsigned long.<BR>
 <BR>
-<A NAME="toc56"></A>
+<A NAME="toc57"></A>
 <H2>10.7&nbsp;&nbsp; The DynUnion Interface</H2>Union values are handled by the DynUnion interface. Unfortunately, the
 CORBA 2.2 specification does not define the DynUnion interface in
 sufficient details to nail down its intended usage<A NAME="text25" HREF="#note25"><SUP><FONT SIZE=2>5</FONT></SUP></A>. In this section, we try to fill in the gaps and describe a
@@ -909,7 +909,7 @@
 interface and not to rely on the ORB to behave as omniORB does under
 these ambiguous conditions.<BR>
 <BR>
-<A NAME="toc57"></A>
+<A NAME="toc58"></A>
 <H2>10.8&nbsp;&nbsp; Duplicate DynAny References</H2>Like any CORBA object and psuedo object references, a DynAny reference
 can be duplicated using the <TT>_duplicate()()</TT> operations. When an
 application has obtained multiple DynAny references to the same DynAny
@@ -919,7 +919,7 @@
 the current component pointer to be changed, subsequent calls through
 other references will operate on the new current component pointer.<BR>
 <BR>
-<A NAME="toc58"></A>
+<A NAME="toc59"></A>
 <H2>10.9&nbsp;&nbsp; Other Operations</H2>The following is a short summary of the other operations in the DynAny
 interface which have not been covered in previous sections:<BR>
 <BR>
diff -u -r omni301/doc/omniORB/omniORB011.html omni/doc/omniORB/omniORB011.html
--- omni301/doc/omniORB/omniORB011.html	Thu Jul 13 16:26:14 2000
+++ omni/doc/omniORB/omniORB011.html	Tue Sep 19 12:26:43 2000
@@ -29,9 +29,9 @@
 in the <TT>src/examples/dii</TT> directory. The DII makes extensive use
 of the type Any, so ensure that you have read chapter&nbsp;<A HREF="omniORB009.html#ch_any">9</A>.
 For more information refer to the Dynamic Invocation Interface and C++
-Mapping sections of the CORBA specification&nbsp;[<A HREF="omniORB014.html#corba23-spec"><CITE>OMG99a</CITE></A>].<BR>
+Mapping sections of the CORBA specification&nbsp;[<A HREF="omniORB014.html#corba23-spec"><CITE>OMG99</CITE></A>].<BR>
 <BR>
-<A NAME="toc59"></A>
+<A NAME="toc60"></A>
 <H2>11.1&nbsp;&nbsp; Overview</H2>To invoke an operation on a CORBA object an application needs an
 object reference, the name of the operation and a list of the
 parameters. In addition the application must know whether the
@@ -49,7 +49,7 @@
 the invocation causes an exception to be thrown then this may be
 retrieved and inspected, or the return value on success.<BR>
 <BR>
-<A NAME="toc60"></A>
+<A NAME="toc61"></A>
 <H2>11.2&nbsp;&nbsp; Pseudo Objects</H2>The DII defines a number of psuedo-object types, all defined in the
 <TT>CORBA</TT> namespace. These objects behave in many ways like CORBA
 objects. They should only be accessed by reference (through
@@ -60,7 +60,7 @@
 These pseudo objects, although defined in pseudo-IDL in the
 specification do not follow the normal mapping for CORBA objects. In
 particular the memory management rules are different---see the CORBA
-2.3 specification&nbsp;[<A HREF="omniORB014.html#corba23-spec"><CITE>OMG99a</CITE></A>] for more details. New instances
+2.3 specification&nbsp;[<A HREF="omniORB014.html#corba23-spec"><CITE>OMG99</CITE></A>] for more details. New instances
 of these objects may only be created by the ORB. A number of methods
 are defined in <TT>CORBA::ORB</TT> to do this.<BR>
 <BR>
@@ -236,7 +236,7 @@
   static Environment_ptr _duplicate(Environment_ptr);
   static Environment_ptr _nil();
 };
-</PRE><A NAME="toc61"></A>
+</PRE><A NAME="toc62"></A>
 <H2>11.3&nbsp;&nbsp; Creating Requests</H2><TT>CORBA::Object</TT> defines three methods which may be used to create
 a <TT>Request</TT> object which may be used to perform a single
 operation invocation on that object:<BR>
@@ -317,7 +317,7 @@
 CORBA::Request_var req = obj-&gt;_request("anOpn");
 req-&gt;add_in_arg() &lt;&lt;= (const char*) "Hello World!";
 req-&gt;set_return_type(CORBA::_tc_short);
-</PRE><A NAME="toc62"></A>
+</PRE><A NAME="toc63"></A>
 <H2>11.4&nbsp;&nbsp; Invoking Operations</H2>
 <A NAME="dii_invoke"></A>Once the <TT>Request</TT> object has been properly constructed, the
 operation may be invoked by calling one of the following methods on
@@ -390,7 +390,7 @@
 could be one of the methods to retrieve values from the request, or
 <TT>get_response()</TT>.<BR>
 <BR>
-<A NAME="toc63"></A>
+<A NAME="toc64"></A>
 <H2>11.5&nbsp;&nbsp; Multiple Requests</H2>The following methods are provided by the ORB to enable multiple requests to
 be invoked asynchronously.<BR>
 <BR>
diff -u -r omni301/doc/omniORB/omniORB012.html omni/doc/omniORB/omniORB012.html
--- omni301/doc/omniORB/omniORB012.html	Thu Jul 13 16:26:14 2000
+++ omni/doc/omniORB/omniORB012.html	Tue Sep 19 12:26:43 2000
@@ -33,7 +33,7 @@
 facilities are available. This chapter describes an approach to
 building DSI servers which works with omniORB 3.<BR>
 <BR>
-<A NAME="toc64"></A>
+<A NAME="toc65"></A>
 <H2>12.1&nbsp;&nbsp; Overview</H2>When an ORB receives an invocation request, the information includes
 the object reference and the name of the operation. Typically this
 information is used by the ORB to select a servant object and call
@@ -64,7 +64,7 @@
 <LI> a way to set the returned values
 
 <LI> a way to throw user-defined exceptions.
-</UL><A NAME="toc65"></A>
+</UL><A NAME="toc66"></A>
 <H2>12.2&nbsp;&nbsp; DSI Types</H2>
 <H3>12.2.1&nbsp;&nbsp; PortableServer::DynamicImplementation</H3>This class must be sub-classed by the application to provide an
 implementation for DSI objects. The method <TT>invoke()</TT> will be called
@@ -113,7 +113,7 @@
   };
   ...
 };
-</PRE><A NAME="toc66"></A>
+</PRE><A NAME="toc67"></A>
 <H2>12.3&nbsp;&nbsp; Creating Dynamic Implementations</H2>The application must override the <TT>invoke()</TT> method of
 <TT>DynamicImplementation</TT> to provide an implementation for DSI
 objects. This method must behave as follows:<BR>
@@ -165,13 +165,13 @@
 Within the <TT>invoke()</TT> method <TT>_this()</TT> may be called to obtain the
 object reference. This method may not be used at any other time.<BR>
 <BR>
-<A NAME="toc67"></A>
+<A NAME="toc68"></A>
 <H2>12.4&nbsp;&nbsp; Registering Dynamic Objects</H2>To use a <TT>DynamicImplementation</TT> servant, a CORBA object must be
 created and associated with it, just as for any other servant. Dynamic
 servants can also be created on demand by Servant Managers, just like
 static servants.<BR>
 <BR>
-<A NAME="toc68"></A>
+<A NAME="toc69"></A>
 <H2>12.5&nbsp;&nbsp; Example</H2>This implementation of <TT>DynamicImplementation::invoke()</TT> is taken
 from an example which can be found in the omniORB distribution. The
 <TT>echoString()</TT> operation is declared in IDL as:<BR>
diff -u -r omni301/doc/omniORB/omniORB014.html omni/doc/omniORB/omniORB014.html
--- omni301/doc/omniORB/omniORB014.html	Fri Aug 18 15:09:36 2000
+++ omni/doc/omniORB/omniORB014.html	Tue Sep 19 12:26:43 2000
@@ -39,17 +39,17 @@
  1998.<BR>
 <BR>
 
-<DT><A NAME="corba23-spec"><FONT COLOR=purple>[OMG99a]</FONT></A><DD>
+<DT><A NAME="corba23-spec"><FONT COLOR=purple>[OMG99]</FONT></A><DD>
 Object Management Group.
 <EM>The </EM><EM>C</EM><EM>ommon </EM><EM>O</EM><EM>bject </EM><EM>R</EM><EM>equest </EM><EM>B</EM><EM>roker: </EM><EM>A</EM><EM>rchitecture and
  Specification</EM>, 2.3.1 edition, October 1999.
 From <A HREF="http://cgi.omg.org/corba/cichpter.html"><TT>http://cgi.omg.org/corba/cichpter.html</TT></A>.<BR>
 <BR>
 
-<DT><A NAME="inschapters"><FONT COLOR=purple>[OMG99b]</FONT></A><DD>
+<DT><A NAME="inschapters"><FONT COLOR=purple>[OMG00]</FONT></A><DD>
 Object Management Group.
-<EM>INS Naming edited chapters document</EM>, December 1999.
-From <A HREF="http://cgi.omg.org/cgi-bin/doc?ptc/99-12-03"><TT>http://cgi.omg.org/cgi-bin/doc?ptc/99-12-03</TT></A>.<BR>
+<EM>Interoperable Naming Service revised chapters</EM>, August 2000.
+From <A HREF="http://cgi.omg.org/cgi-bin/doc?ptc/00-08-07"><TT>http://cgi.omg.org/cgi-bin/doc?ptc/00-08-07</TT></A>.<BR>
 <BR>
 
 <DT><A NAME="tjr96b"><FONT COLOR=purple>[Ric96a]</FONT></A><DD>
diff -u -r omni301/doc/omniidl.html omni/doc/omniidl.html
--- omni301/doc/omniidl.html	Tue Jul  4 16:24:15 2000
+++ omni/doc/omniidl.html	Tue Sep 19 12:26:39 2000
@@ -77,6 +77,9 @@
 <TR><TD ALIGN=left NOWRAP><TT>-N</TT></TD>
 <TD ALIGN=left NOWRAP>Do not run the preprocessor.</TD>
 </TR>
+<TR><TD ALIGN=left NOWRAP><TT>-T</TT></TD>
+<TD ALIGN=left NOWRAP>Use a temporary file, not a pipe, for preprocessor output.</TD>
+</TR>
 <TR><TD ALIGN=left NOWRAP><TT>-Wp</TT><I>arg</I>[,<I>arg</I>...]</TD>
 <TD ALIGN=left NOWRAP>Send arguments to the preprocessor.</TD>
 </TR>
@@ -98,6 +101,9 @@
 <TR><TD ALIGN=left NOWRAP><TT>-C</TT><I>dir</I></TD>
 <TD ALIGN=left NOWRAP>Change directory to <I>dir</I> before writing output files.</TD>
 </TR>
+<TR><TD ALIGN=left NOWRAP><TT>-i</TT></TD>
+<TD ALIGN=left NOWRAP>Run the front end and back-ends, then enter the interactive loop.</TD>
+</TR>
 <TR><TD ALIGN=left NOWRAP><TT>-d</TT></TD>
 <TD ALIGN=left NOWRAP>Dump the parsed IDL then exit, without running a back-end.</TD>
 </TR>
@@ -143,6 +149,17 @@
 omnicpp. Beware that line directives inserted by other preprocessors
 are likely to confuse <FONT COLOR=purple>omniidl</FONT>.<BR>
 <BR>
+<!--TOC subsubsection Windows 9x-->
+
+<H4>1.3.1&nbsp;&nbsp; Windows 9x</H4><!--SEC END -->
+The output from the C preprocessor is normally fed to the <FONT COLOR=purple>omniidl</FONT>
+parser through a pipe. On some Windows 98 machines (but not all!) the
+pipe does not work, and the preprocessor output is echoed to the
+screen. When this happens, the <FONT COLOR=purple>omniidl</FONT> parser sees an empty file,
+and produces useless stub files with strange long names. To avoid the
+problem, use the `<TT>-T</TT>' option to create a temporary file
+between the two stages.<BR>
+<BR>
 <!--TOC subsection Forward-declared interfaces-->
 
 <H3>1.4&nbsp;&nbsp; Forward-declared interfaces</H3><!--SEC END -->
@@ -184,9 +201,19 @@
 </PRE>the <TT>-k</TT> flag will attach the comment to <TT>op1()</TT>;
 the <TT>-K</TT> flag will attach it to <TT>op2()</TT>.<BR>
 <BR>
+<!--TOC subsection Interactive loop-->
+
+<H3>1.6&nbsp;&nbsp; Interactive loop</H3><!--SEC END -->
+When <FONT COLOR=purple>omniidl</FONT> is given the <TT>-i</TT> option, it runs the compiler
+front-end and any back-ends specified, and then drops into Python's
+interactive command loop. Within the interactive loop, you can
+<TT>import omniidl</TT>. The parsed AST is then available as
+<TT>omniidl.idlast.tree</TT>. This mode is useful for investigating the
+parsed tree.<BR>
+<BR>
 <!--TOC subsection Copyright-->
 
-<H3>1.6&nbsp;&nbsp; Copyright</H3><!--SEC END -->
+<H3>1.7&nbsp;&nbsp; Copyright</H3><!--SEC END -->
 All parts of <FONT COLOR=purple>omniidl</FONT> are licensed under the GNU General Public
 License, available in the file <TT>COPYING</TT>.<BR>
 <BR>
@@ -335,6 +362,12 @@
   &gt;&gt;&gt; pruneScope(['A','B','C','D'],['A','B','D'])
   ['C','D']
 </PRE>
+<DT><TT>relativeScope(from,dest)</TT><DD><BR>Given two globally-scoped name lists, return a minimal scoped name
+ list which identifies the destination scope, without clashing with
+ another identifier. If the only valid result is a globally-scoped
+ name, the result list is prefixed with <TT>None</TT>.<BR>
+<BR>
+
 <DT><TT>slashName(sn,from)</TT><DD>
 
 <DT><TT>dotName(sn,from)</TT><DD>
@@ -487,7 +520,9 @@
 <DT><TT>abstract()</TT><DD><BR>Boolean: true if the interface is declared abstract.<BR>
 <BR>
 
-<DT><TT>inherits()</TT><DD><BR>List of <TT>Interface</TT> objects from which this one inherits.<BR>
+<DT><TT>inherits()</TT><DD><BR>List of interfaces from which this one inherits. Each list member is
+ either an <TT>Interface</TT> object, or a <TT>Declarator</TT> object
+ belonging to a typedef to an interface.<BR>
 <BR>
 
 <DT><TT>contents()</TT><DD><BR>List of <TT>Decl</TT> objects for all items declared within this
@@ -509,7 +544,7 @@
  declaration or <TT>None</TT> if there is no full declaration.</DL><HR SIZE=2><BR>
 <BR>
 <HR SIZE=2><BR><DIV ALIGN=center><B><TT>omniidl.idlast.Const (Decl,DeclRepoId)</TT></B></DIV><BR><DIV ALIGN=center><I>Constant declaration</I></DIV><DL COMPACT=compact>
-<DT><TT>constType()</TT><DD><BR><TT>IdlType.Type</TT> object of the constant. Aliases not stripped.<BR>
+<DT><TT>constType()</TT><DD><BR><TT>idltype.Type</TT> object of the constant. Aliases not stripped.<BR>
 <BR>
 
 <DT><TT>constKind()</TT><DD><BR>TypeCode kind of the constant with aliases stripped. So for a
@@ -518,7 +553,7 @@
   typedef long MyLong;
   const MyLong foo = 123;
 </PRE><TT>constKind()</TT> will return <TT>tk_long</TT>, but
- <TT>constType()</TT> will return an <TT>IdlType.Declared</TT> object
+ <TT>constType()</TT> will return an <TT>idltype.Declared</TT> object
  (see page&nbsp;<A HREF="#cls:typeDeclared">??</A>) which refers to <TT>MyLong</TT>'s
  typedef <TT>Declarator</TT> object.<BR>
 <BR>
@@ -526,7 +561,7 @@
 <DT><TT>value()</TT><DD><BR>Value of the constant. Either an integer or an <TT>Enumerator</TT>
  object.</DL><HR SIZE=2><BR>
 <BR>
-<HR SIZE=2><BR><DIV ALIGN=center><B><TT>omniidl.idlast.Declarator (Decl,DeclRepoId)</TT></B></DIV><BR><DIV ALIGN=center><I>Declarator used in typedefs, struct members, etc.</I></DIV><DL COMPACT=compact>
+<HR SIZE=2><BR><DIV ALIGN=center><B><TT>omniidl.idlast.Declarator (Decl,DeclRepoId)</TT></B></DIV><BR><DIV ALIGN=center><I>Declarator used in typedefs, struct members, attributes, etc.</I></DIV><DL COMPACT=compact>
 <DT><TT>sizes()</TT><DD><BR>List of array sizes, or <TT>None</TT> if it is a simple declarator.<BR>
 <BR>
 
@@ -534,7 +569,7 @@
  if the object is not a typedef declarator.</DL><HR SIZE=2><BR>
 <BR>
 <HR SIZE=2><BR><DIV ALIGN=center><B><TT>omniidl.idlast.Typedef (Decl)</TT></B></DIV><BR><DIV ALIGN=center><I>Typedef declaration</I></DIV><DL COMPACT=compact>
-<DT><TT>aliasType()</TT><DD><BR><TT>IdlType.Type</TT> object that this is an alias to.<BR>
+<DT><TT>aliasType()</TT><DD><BR><TT>idltype.Type</TT> object that this is an alias to.<BR>
 <BR>
 
 <DT><TT>constrType()</TT><DD><BR>Boolean: true if the alias type was constructed within this typedef
@@ -545,7 +580,7 @@
 <DT><TT>declarators()</TT><DD><BR>List of <TT>Declarator</TT> objects.</DL><HR SIZE=2><BR>
 <BR>
 <HR SIZE=2><BR><DIV ALIGN=center><B><TT>omniidl.idlast.Member (Decl)</TT></B></DIV><BR><DIV ALIGN=center><I>Member of a struct or exception</I></DIV><DL COMPACT=compact>
-<DT><TT>memberType()</TT><DD><BR><TT>IdlType.Type</TT> object for the type of this member.<BR>
+<DT><TT>memberType()</TT><DD><BR><TT>idltype.Type</TT> object for the type of this member.<BR>
 <BR>
 
 <DT><TT>constrType()</TT><DD><BR>Boolean: true if the member type was constructed within the member
@@ -591,7 +626,7 @@
 <DT><TT>labels()</TT><DD><BR>List of <TT>CaseLabel</TT> objects.<BR>
 <BR>
 
-<DT><TT>caseType()</TT><DD><BR><TT>IdlType.Type</TT> object for the case type.<BR>
+<DT><TT>caseType()</TT><DD><BR><TT>idltype.Type</TT> object for the case type.<BR>
 <BR>
 
 <DT><TT>constrType()</TT><DD><BR>Boolean: true if the case type was constructed within the case.<BR>
@@ -600,7 +635,7 @@
 <DT><TT>declarator()</TT><DD><BR><TT>Declarator</TT> object</DL><HR SIZE=2><BR>
 <BR>
 <HR SIZE=2><BR><DIV ALIGN=center><B><TT>omniidl.idlast.Union (Decl,DeclRepoId)</TT></B></DIV><BR><DIV ALIGN=center><I>Union declaration</I></DIV><DL COMPACT=compact>
-<DT><TT>switchType()</TT><DD><BR><TT>IdlType.Type</TT> object corresponding to the switch type.<BR>
+<DT><TT>switchType()</TT><DD><BR><TT>idltype.Type</TT> object corresponding to the switch type.<BR>
 <BR>
 
 <DT><TT>constrType()</TT><DD><BR>Boolean: true if the switch type was declared within the switch
@@ -622,10 +657,15 @@
 <DT><TT>readonly()</TT><DD><BR>Boolean: true if the attribute is read only.<BR>
 <BR>
 
-<DT><TT>attrType()</TT><DD><BR><TT>IdlType.Type</TT> object for the attribute's type.<BR>
+<DT><TT>attrType()</TT><DD><BR><TT>idltype.Type</TT> object for the attribute's type.<BR>
+<BR>
+
+<DT><TT>declarators()</TT><DD><BR>List of <TT>Declarator</TT> objects for this attribute. All
+ declarators are guaranteed to be simple.<BR>
 <BR>
 
-<DT><TT>identifiers()</TT><DD><BR>List of strings containing the attribute identifiers. e.g. for the
+<DT><TT>identifiers()</TT><DD><BR>Convenience function returning a list of strings containing the
+ attribute identifiers from the declarators. e.g. for the
  declaration<BR>
 <BR>
 <PRE>
@@ -642,19 +682,16 @@
 <DT><TT>is_out()</TT><DD><BR>Boolean: true if out or inout.<BR>
 <BR>
 
-<DT><TT>paramType()</TT><DD><BR><TT>IdlType.Type</TT> object for the parameter type.<BR>
+<DT><TT>paramType()</TT><DD><BR><TT>idltype.Type</TT> object for the parameter type.<BR>
 <BR>
 
 <DT><TT>identifier()</TT><DD><BR>String containing the parameter identifier.</DL><HR SIZE=2><BR>
 <BR>
-<HR SIZE=2><BR><DIV ALIGN=center><B><TT>omniidl.idlast.Operation (Decl)</TT></B></DIV><BR><DIV ALIGN=center><I>Operation declaration</I></DIV><DL COMPACT=compact>
+<HR SIZE=2><BR><DIV ALIGN=center><B><TT>omniidl.idlast.Operation (Decl,DeclRepoId)</TT></B></DIV><BR><DIV ALIGN=center><I>Operation declaration</I></DIV><DL COMPACT=compact>
 <DT><TT>oneway()</TT><DD><BR>Boolean: true if the operation is one way.<BR>
 <BR>
 
-<DT><TT>returnType()</TT><DD><BR><TT>IdlType.Type</TT> object for the return type.<BR>
-<BR>
-
-<DT><TT>identifier()</TT><DD><BR>String containing the operation identifier.<BR>
+<DT><TT>returnType()</TT><DD><BR><TT>idltype.Type</TT> object for the return type.<BR>
 <BR>
 
 <DT><TT>parameters()</TT><DD><BR>List of <TT>Parameter</TT> objects.<BR>
@@ -674,7 +711,7 @@
 <DT><TT>memberAccess()</TT><DD><BR>Integer: 0 == public, 1 == private.<BR>
 <BR>
 
-<DT><TT>memberType()</TT><DD><BR><TT>IdlType.Type</TT> object for member type.<BR>
+<DT><TT>memberType()</TT><DD><BR><TT>idltype.Type</TT> object for member type.<BR>
 <BR>
 
 <DT><TT>constrType()</TT><DD><BR>Boolean: true if the member type is declared within the StateMember.<BR>
@@ -696,7 +733,7 @@
  valuetype declaration or <TT>None</TT> if there is no full declaration.</DL><HR SIZE=2><BR>
 <BR>
 <HR SIZE=2><BR><DIV ALIGN=center><B><TT>omniidl.idlast.ValueBox (Decl,DeclRepoId)</TT></B></DIV><BR><DIV ALIGN=center><I>Boxed valuetype declaration</I></DIV><DL COMPACT=compact>
-<DT><TT>boxedType()</TT><DD><BR><TT>IdlType.Type</TT> object for the boxed type.<BR>
+<DT><TT>boxedType()</TT><DD><BR><TT>idltype.Type</TT> object for the boxed type.<BR>
 <BR>
 
 <DT><TT>constrType()</TT><DD><BR>Boolean: true if boxed type is declared inside the valuetype
@@ -756,6 +793,10 @@
 <DT><TT>kind()</TT><DD><BR>TypeCode kind of type.<BR>
 <BR>
 
+<DT><TT>unalias()</TT><DD><BR>Return an equivalent <TT>Type</TT> object with top-level aliases
+ stripped. Only has an effect with typedef types.<BR>
+<BR>
+
 <DT><TT>accept(visitor)</TT><DD><BR>Visitor pattern accept.</DL><HR SIZE=2><BR>
 <BR>
 The basic CORBA types (null, void, short, long, unsigned short,
@@ -776,7 +817,7 @@
 <DT><TT>bound()</TT><DD><BR>Bound of a bounded wstring, or 0 for unbounded wstrings.</DL><HR SIZE=2><BR>
 <BR>
 <HR SIZE=2><BR><DIV ALIGN=center><B><TT>omniidl.idltype.Sequence (Type)</TT></B></DIV><BR><DIV ALIGN=center><I>Sequence type</I></DIV><DL COMPACT=compact>
-<DT><TT>seqType()</TT><DD><BR><TT>IdlType.Type</TT> object representing what the sequence contains.<BR>
+<DT><TT>seqType()</TT><DD><BR><TT>idltype.Type</TT> object representing what the sequence contains.<BR>
 <BR>
 
 <DT><TT>bound()</TT><DD><BR>Bound of a bounded sequence, or 0 for unbounded sequences.</DL><HR SIZE=2><BR>
diff -u -r omni301/doc/tex/cover.tex omni/doc/tex/cover.tex
--- omni301/doc/tex/cover.tex	Thu Mar 13 14:47:16 1997
+++ omni/doc/tex/cover.tex	Mon Oct  2 17:35:39 2000
@@ -10,8 +10,7 @@
 
 \begin{center}
 {\Huge The OMNI Document Set}\\[10mm]
-{\Large ORL}\\[5mm]
-{\Large 13 Mar 1997}
+{\Large AT\&T Laboratories Cambridge}\\[5mm]
 \end{center}
 
 \vspace*{3cm}
@@ -19,7 +18,7 @@
 \centerline{\rule{5.in}{.02in}}
 \vspace*{1cm}
 \noindent {\Large \it The OMNI Development Environment}\\[3mm]
-{\Large \it The omniORB2 User's Guide}\\[3mm]
+{\Large \it The omniORB User's Guide}\\[3mm]
 {\Large \it The OMNI Thread Abstraction}\\[3mm]
 {\Large \it omniParTcl -- Creating Tcl/Tk GUIs for C++ applications}\\[5mm]
 {\Large \it CORBA IDL Syntax ({\small \it reprinted from the CORBA 2.0 specification})}\\[3mm]
diff -u -r omni301/doc/tex/omniORB.bib omni/doc/tex/omniORB.bib
--- omni301/doc/tex/omniORB.bib	Fri Aug 18 15:09:40 2000
+++ omni/doc/tex/omniORB.bib	Tue Sep 19 12:26:27 2000
@@ -31,11 +31,11 @@
 
 @Manual{inschapters,
   key =          {OMG},
-  title = 	 {INS Naming edited chapters document},
+  title = 	 {Interoperable Naming Service revised chapters},
   organization = {Object Management Group},
-  month =	 {December},
-  year =	 1999,
-  note =	 {From \weburl{http://cgi.omg.org/cgi-bin/doc?ptc/99-12-03}}
+  month =	 {August},
+  year =	 2000,
+  note =	 {From \weburl{http://cgi.omg.org/cgi-bin/doc?ptc/00-08-07}}
 }
 
 @Manual{tjr96a,
diff -u -r omni301/doc/tex/omniORB.tex omni/doc/tex/omniORB.tex
--- omni301/doc/tex/omniORB.tex	Thu Jul 13 16:26:24 2000
+++ omni/doc/tex/omniORB.tex	Tue Sep 19 12:26:27 2000
@@ -2933,6 +2933,9 @@
 \cmdline{-N}
      \> Do not run the preprocessor.\\
 
+\cmdline{-T}
+     \> Use a temporary file, not a pipe, for preprocessor output.\\
+
 \cmdline{-Wp}\textit{arg}[,\textit{arg}\dots]
      \> Send arguments to the preprocessor.\\
 
@@ -2987,6 +2990,16 @@
 directives inserted by other preprocessors are likely to confuse
 omniidl.
 
+\subsubsection{Windows 9x}
+
+The output from the C preprocessor is normally fed to the omniidl
+parser through a pipe. On some Windows 98 machines (but not all!)  the
+pipe does not work, and the preprocessor output is echoed to the
+screen. When this happens, the omniidl parser sees an empty file, and
+produces useless stub files with strange long names. To avoid the
+problem, use the `\cmdline{-T}' option to create a temporary file
+between the two stages.
+
 
 \subsection{Forward-declared interfaces}
 
@@ -3615,6 +3628,18 @@
 line option \cmdline{-ORBverifyObjectExistsAndType} has the same
 effect.
 
+
+\section{GIOP Requesting Principal field}
+
+In versions 1.0 and 1.1 of the GIOP specification, request messages
+contain a `principal' field which was intended to identify the client.
+The meaning of the principal field was never specified, and its use is
+now deprecated. The field is not present in GIOP 1.2. omniORB normally
+uses the string `\texttt{nobody}' in the principal field. However,
+some systems (e.g.\ the GNOME desktop environment) use the principal
+field as an authentication mechanism, so omniORB allows you to
+configure the principal by setting the \envvar{OMNIORB_PRINCIPAL}
+environment variable.
 
 
 \section{Trapping omniORB Internal Errors}
diff -u -r omni301/doc/tex/omniidl.tex omni/doc/tex/omniidl.tex
--- omni301/doc/tex/omniidl.tex	Tue Jul  4 16:24:35 2000
+++ omni/doc/tex/omniidl.tex	Tue Sep 19 12:26:28 2000
@@ -16,6 +16,7 @@
 \newcommand{\intf}[1]{\texttt{#1}}
 \newcommand{\op}[1]{\texttt{#1()}}
 \newcommand{\cmdline}[1]{\texttt{#1}}
+\newcommand{\code}[1]{\texttt{#1}}
 
 \newcommand{\dfunc}[1]{\item[\func{#1}]\mbox{}\\}
 \newcommand{\cfunc}[1]{\item[\func{#1}]}
@@ -193,6 +194,9 @@
 \cmdline{-N}
      \> Do not run the preprocessor.\\
 
+\cmdline{-T}
+     \> Use a temporary file, not a pipe, for preprocessor output.\\
+
 \cmdline{-Wp}\textit{arg}[,\textit{arg}\dots]
      \> Send arguments to the preprocessor.\\
 
@@ -214,6 +218,9 @@
 \cmdline{-C}\textit{dir}
      \> Change directory to \textit{dir} before writing output files.\\
 
+\cmdline{-i}
+     \> Run the front end and back-ends, then enter the interactive loop.\\
+
 \cmdline{-d}
      \> Dump the parsed IDL then exit, without running a back-end.\\
 
@@ -264,6 +271,16 @@
 omnicpp. Beware that line directives inserted by other preprocessors
 are likely to confuse \omniidl.
 
+\subsubsection{Windows 9x}
+
+The output from the C preprocessor is normally fed to the \omniidl\
+parser through a pipe. On some Windows 98 machines (but not all!)  the
+pipe does not work, and the preprocessor output is echoed to the
+screen. When this happens, the \omniidl\ parser sees an empty file,
+and produces useless stub files with strange long names. To avoid the
+problem, use the `\cmdline{-T}' option to create a temporary file
+between the two stages.
+
 
 \subsection{Forward-declared interfaces}
 
@@ -315,6 +332,16 @@
 
 
 
+\subsection{Interactive loop}
+
+When \omniidl\ is given the \cmdline{-i} option, it runs the compiler
+front-end and any back-ends specified, and then drops into Python's
+interactive command loop. Within the interactive loop, you can
+\code{import omniidl}. The parsed AST is then available as
+\code{omniidl.idlast.tree}. This mode is useful for investigating the
+parsed tree.
+
+
 \subsection{Copyright}
 
 All parts of \omniidl\ are licensed under the GNU General Public
@@ -483,6 +510,12 @@
   ['C','D']
 \end{verbatim}
 
+\dfunc{relativeScope(from,dest)}
+  Given two globally-scoped name lists, return a minimal scoped name
+  list which identifies the destination scope, without clashing with
+  another identifier. If the only valid result is a globally-scoped
+  name, the result list is prefixed with \var{None}.
+
 \cfunc{slashName(sn,from)}
 \cfunc{dotName(sn,from)}
 \dfunc{ccolonName(sn,from)}
@@ -670,7 +703,9 @@
   Boolean: true if the interface is declared abstract.
 
 \dfunc{inherits()}
-  List of \class{Interface} objects from which this one inherits.
+  List of interfaces from which this one inherits. Each list member is
+  either an \class{Interface} object, or a \class{Declarator} object
+  belonging to a typedef to an interface.
 
 \dfunc{contents()}
   List of \class{Decl} objects for all items declared within this
@@ -706,7 +741,7 @@
   {Constant declaration}
 
 \dfunc{constType()}
-  \class{IdlType.Type} object of the constant. Aliases not stripped.
+  \class{idltype.Type} object of the constant. Aliases not stripped.
 
 \dfunc{constKind()}
   TypeCode kind of the constant with aliases stripped. So for a
@@ -718,7 +753,7 @@
 \end{verbatim}
   %
   \func{constKind()} will return \var{tk\_long}, but
-  \func{constType()} will return an \class{IdlType.Declared} object
+  \func{constType()} will return an \class{idltype.Declared} object
   (see page~\pageref{cls:typeDeclared}) which refers to \var{MyLong}'s
   typedef \class{Declarator} object.
 
@@ -731,7 +766,7 @@
 
 \begin{classdesc}
   {omniidl.idlast.Declarator (Decl,DeclRepoId)}
-  {Declarator used in typedefs, struct members, etc.}
+  {Declarator used in typedefs, struct members, attributes, etc.}
 
 \dfunc{sizes()}
   List of array sizes, or \var{None} if it is a simple declarator.
@@ -748,7 +783,7 @@
   {Typedef declaration}
 
 \dfunc{aliasType()}
-  \class{IdlType.Type} object that this is an alias to.
+  \class{idltype.Type} object that this is an alias to.
 
 \dfunc{constrType()}
   Boolean: true if the alias type was constructed within this typedef
@@ -769,7 +804,7 @@
   {Member of a struct or exception}
 
 \dfunc{memberType()}
-  \class{IdlType.Type} object for the type of this member.
+  \class{idltype.Type} object for the type of this member.
 
 \dfunc{constrType()}
   Boolean: true if the member type was constructed within the member
@@ -845,7 +880,7 @@
   List of \class{CaseLabel} objects.
 
 \dfunc{caseType()}
-  \class{IdlType.Type} object for the case type.
+  \class{idltype.Type} object for the case type.
 
 \dfunc{constrType()}
   Boolean: true if the case type was constructed within the case.
@@ -861,7 +896,7 @@
   {Union declaration}
 
 \dfunc{switchType()}
-  \class{IdlType.Type} object corresponding to the switch type.
+  \class{idltype.Type} object corresponding to the switch type.
 
 \dfunc{constrType()}
   Boolean: true if the switch type was declared within the switch
@@ -904,10 +939,15 @@
   Boolean: true if the attribute is read only.
 
 \dfunc{attrType()}
-  \class{IdlType.Type} object for the attribute's type.
+  \class{idltype.Type} object for the attribute's type.
+
+\dfunc{declarators()}
+  List of \class{Declarator} objects for this attribute. All
+  declarators are guaranteed to be simple.
 
 \dfunc{identifiers()}
-  List of strings containing the attribute identifiers. e.g.\ for the
+  Convenience function returning a list of strings containing the
+  attribute identifiers from the declarators. e.g.\ for the
   declaration
 
 \begin{verbatim}
@@ -933,7 +973,7 @@
   Boolean: true if out or inout.
 
 \dfunc{paramType()}
-  \class{IdlType.Type} object for the parameter type.
+  \class{idltype.Type} object for the parameter type.
 
 \dfunc{identifier()}
   String containing the parameter identifier.
@@ -942,17 +982,14 @@
 
 
 \begin{classdesc}
-  {omniidl.idlast.Operation (Decl)}
+  {omniidl.idlast.Operation (Decl,DeclRepoId)}
   {Operation declaration}
 
 \dfunc{oneway()}
   Boolean: true if the operation is one way.
 
 \dfunc{returnType()}
-  \class{IdlType.Type} object for the return type.
-
-\dfunc{identifier()}
-  String containing the operation identifier.
+  \class{idltype.Type} object for the return type.
 
 \dfunc{parameters()}
   List of \class{Parameter} objects.
@@ -986,7 +1023,7 @@
   Integer: 0 == public, 1 == private.
 
 \dfunc{memberType()}
-  \class{IdlType.Type} object for member type.
+  \class{idltype.Type} object for member type.
 
 \dfunc{constrType()}
   Boolean: true if the member type is declared within the StateMember.
@@ -1030,7 +1067,7 @@
   {Boxed valuetype declaration}
 
 \dfunc{boxedType()}
-  \class{IdlType.Type} object for the boxed type.
+  \class{idltype.Type} object for the boxed type.
 
 \dfunc{constrType()}
   Boolean: true if boxed type is declared inside the valuetype
@@ -1110,6 +1147,10 @@
 \dfunc{kind()}
   TypeCode kind of type.
 
+\dfunc{unalias()}
+  Return an equivalent \class{Type} object with top-level aliases
+  stripped. Only has an effect with typedef types.
+
 \dfunc{accept(visitor)}
   Visitor pattern accept.
 
@@ -1154,7 +1195,7 @@
   {Sequence type}
 
 \dfunc{seqType()}
-  \class{IdlType.Type} object representing what the sequence contains.
+  \class{idltype.Type} object representing what the sequence contains.
 
 \dfunc{bound()}
   Bound of a bounded sequence, or 0 for unbounded sequences.
diff -u -r omni301/idl/COS/CosRelationships.idl omni/idl/COS/CosRelationships.idl
--- omni301/idl/COS/CosRelationships.idl	Fri Aug 18 15:09:25 2000
+++ omni/idl/COS/CosRelationships.idl	Mon Sep 11 15:14:42 2000
@@ -65,6 +65,7 @@
 			raises (RoleTypeError,
 					MaxCardinalityExceeded,
 					DegreeError,
+                                        DuplicateRoleName,
 					UnknownRoleName);
 	};
 
diff -u -r omni301/idl/omniLifeCycle.idl omni/idl/omniLifeCycle.idl
--- omni301/idl/omniLifeCycle.idl	Thu Jul 13 16:26:07 2000
+++ omni/idl/omniLifeCycle.idl	Sat Sep 20 18:08:55 1997
@@ -30,9 +30,6 @@
 // This MUST NOT be compiled with omniidl -l
 
 /* $Log: omniLifeCycle.idl,v $
-/* Revision 1.4  2000/07/13 15:26:07  dpg1
-/* Merge from omni3_develop for 3.0 release.
-/*
 /* Revision 1.1  1997/09/20 17:08:55  dpg1
 /* Initial revision
 /*
diff -u -r omni301/include/omniORB3/CORBA.h omni/include/omniORB3/CORBA.h
--- omni301/include/omniORB3/CORBA.h	Fri Aug 18 15:09:20 2000
+++ omni/include/omniORB3/CORBA.h	Fri Aug 11 14:50:08 2000
@@ -29,12 +29,6 @@
 
 /*
  $Log: CORBA.h,v $
- Revision 1.4  2000/08/18 14:09:20  dpg1
- Merge from omni3_develop for 3.0.1 release.
-
- Revision 1.3  2000/07/13 15:26:06  dpg1
- Merge from omni3_develop for 3.0 release.
-
  Revision 1.1.2.13  2000/08/11 13:50:08  sll
  Added external guard in CORBA.h to ensure that any idl that include
  CosNaming.idl will compile as expected.
diff -u -r omni301/include/omniORB3/CORBA_basetypes.h omni/include/omniORB3/CORBA_basetypes.h
--- omni301/include/omniORB3/CORBA_basetypes.h	Fri Aug 18 15:09:20 2000
+++ omni/include/omniORB3/CORBA_basetypes.h	Mon Aug  7 16:34:32 2000
@@ -28,12 +28,6 @@
 
 /*
  $Log: CORBA_basetypes.h,v $
- Revision 1.4  2000/08/18 14:09:20  dpg1
- Merge from omni3_develop for 3.0.1 release.
-
- Revision 1.3  2000/07/13 15:26:06  dpg1
- Merge from omni3_develop for 3.0 release.
-
  Revision 1.1.2.2  2000/08/07 15:34:32  dpg1
  Partial back-port of long long from omni3_1_develop.
 
diff -u -r omni301/include/omniORB3/CORBA_sysdep.h omni/include/omniORB3/CORBA_sysdep.h
--- omni301/include/omniORB3/CORBA_sysdep.h	Fri Aug 18 15:09:20 2000
+++ omni/include/omniORB3/CORBA_sysdep.h	Mon Sep 25 12:03:27 2000
@@ -32,11 +32,8 @@
 
 /*
  $Log: CORBA_sysdep.h,v $
- Revision 1.4  2000/08/18 14:09:20  dpg1
- Merge from omni3_develop for 3.0.1 release.
-
- Revision 1.3  2000/07/13 15:26:06  dpg1
- Merge from omni3_develop for 3.0 release.
+ Revision 1.1.2.18  2000/09/25 11:03:27  dpg1
+ Remove use of _T as a template class name
 
  Revision 1.1.2.17  2000/08/17 09:00:53  dpg1
  GCC claims to support long long on all platforms.
@@ -414,13 +411,6 @@
 // conflicts with the Status type defined in the CORBA namespace.
 // To remove this error, make sure that the offending header file is included
 // after omniORB2/CORBA.h.
-#endif
-
-#ifdef _T
-#error "Name conflict: _T is defined as a macro in a header file included before this."
-// FreeBSD's ctype.h, and maybe other files, define _T. omniORB uses
-// _T in various places as a class name. Fix this error by moving the
-// offending header after all omniORB includes.
 #endif
 
 
diff -u -r omni301/include/omniORB3/CORBA_vartypes.h omni/include/omniORB3/CORBA_vartypes.h
--- omni301/include/omniORB3/CORBA_vartypes.h	Thu Jul 13 16:26:05 2000
+++ omni/include/omniORB3/CORBA_vartypes.h	Tue Jun 27 17:15:08 2000
@@ -28,9 +28,6 @@
 
 /*
  $Log: CORBA_vartypes.h,v $
- Revision 1.3  2000/07/13 15:26:05  dpg1
- Merge from omni3_develop for 3.0 release.
-
  Revision 1.1.2.3  2000/06/27 16:15:08  sll
  New classes: _CORBA_String_element, _CORBA_ObjRef_Element,
  _CORBA_ObjRef_tcDesc_arg to support assignment to an element of a
diff -u -r omni301/include/omniORB3/GIOP.h omni/include/omniORB3/GIOP.h
--- omni301/include/omniORB3/GIOP.h	Thu Jul 13 16:26:05 2000
+++ omni/include/omniORB3/GIOP.h	Fri Sep 24 10:51:40 1999
@@ -31,9 +31,6 @@
 
 /*
   $Log: GIOP.h,v $
-  Revision 1.3  2000/07/13 15:26:05  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.1.2.1  1999/09/24 09:51:40  djr
   Moved from omniORB2 + some new files.
 
diff -u -r omni301/include/omniORB3/IIOP.h omni/include/omniORB3/IIOP.h
--- omni301/include/omniORB3/IIOP.h	Thu Jul 13 16:26:05 2000
+++ omni/include/omniORB3/IIOP.h	Thu May 25 09:45:54 2000
@@ -31,9 +31,6 @@
 
 /*
   $Log: IIOP.h,v $
-  Revision 1.3  2000/07/13 15:26:05  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.1.2.4  2000/05/25 08:45:54  dpg1
   Forgot _core_attr onn IIOP::DEFAULT_CORBALOC_PORT
 
diff -u -r omni301/include/omniORB3/IOP.h omni/include/omniORB3/IOP.h
--- omni301/include/omniORB3/IOP.h	Thu Jul 13 16:26:05 2000
+++ omni/include/omniORB3/IOP.h	Fri Sep 24 10:51:41 1999
@@ -31,9 +31,6 @@
 
 /*
   $Log: IOP.h,v $
-  Revision 1.3  2000/07/13 15:26:05  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.1.2.1  1999/09/24 09:51:41  djr
   Moved from omniORB2 + some new files.
 
diff -u -r omni301/include/omniORB3/boa.h omni/include/omniORB3/boa.h
--- omni301/include/omniORB3/boa.h	Thu Jul 13 16:26:05 2000
+++ omni/include/omniORB3/boa.h	Mon Sep  4 10:09:43 2000
@@ -28,8 +28,11 @@
 
 /*
   $Log: boa.h,v $
-  Revision 1.3  2000/07/13 15:26:05  dpg1
-  Merge from omni3_develop for 3.0 release.
+  Revision 1.1.2.4  2000/09/04 09:09:43  dpg1
+  Remove #include <iostream.h> accidentally left over from debugging.
+
+  Revision 1.1.2.3  2000/08/30 10:14:39  dpg1
+  BOA constructor with object key failed to set the key in the servant.
 
   Revision 1.1.2.2  2000/03/03 14:29:16  djr
   Improvement to BOA skeletons (less generated code).
@@ -42,7 +45,6 @@
 #ifndef __OMNIORB_BOA_H__
 #define __OMNIORB_BOA_H__
 
-
 //////////////////////////////////////////////////////////////////////
 ////////////////////////// omniOrbBoaServant /////////////////////////
 //////////////////////////////////////////////////////////////////////
@@ -77,7 +79,7 @@
   virtual omniObjRef* _do_get_interface();
   // Overrides omniServant.
 
-
+protected:
   omniOrbBoaKey pd_key;
   // This is used only for construction/initialisation.
   // When the object is activated, the key in the id is
diff -u -r omni301/include/omniORB3/bufferedStream.h omni/include/omniORB3/bufferedStream.h
--- omni301/include/omniORB3/bufferedStream.h	Fri Aug 18 15:09:20 2000
+++ omni/include/omniORB3/bufferedStream.h	Mon Aug  7 16:34:33 2000
@@ -29,12 +29,6 @@
 
 /*
   $Log: bufferedStream.h,v $
-  Revision 1.4  2000/08/18 14:09:20  dpg1
-  Merge from omni3_develop for 3.0.1 release.
-
-  Revision 1.3  2000/07/13 15:26:05  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.1.2.3  2000/08/07 15:34:33  dpg1
   Partial back-port of long long from omni3_1_develop.
 
diff -u -r omni301/include/omniORB3/callDescriptor.h omni/include/omniORB3/callDescriptor.h
--- omni301/include/omniORB3/callDescriptor.h	Thu Jul 13 16:26:05 2000
+++ omni/include/omniORB3/callDescriptor.h	Fri Sep 24 10:51:43 1999
@@ -28,9 +28,6 @@
 
 /*
  $Log: callDescriptor.h,v $
- Revision 1.3  2000/07/13 15:26:05  dpg1
- Merge from omni3_develop for 3.0 release.
-
  Revision 1.1.2.1  1999/09/24 09:51:43  djr
  Moved from omniORB2 + some new files.
 
diff -u -r omni301/include/omniORB3/giopDriver.h omni/include/omniORB3/giopDriver.h
--- omni301/include/omniORB3/giopDriver.h	Thu Jul 13 16:26:05 2000
+++ omni/include/omniORB3/giopDriver.h	Thu Sep 30 12:49:27 1999
@@ -29,9 +29,6 @@
 
 /*
   $Log: giopDriver.h,v $
-  Revision 1.3  2000/07/13 15:26:05  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.1.2.2  1999/09/30 11:49:27  djr
   Implemented catching user-exceptions in GIOP_S for all compilers.
 
diff -u -r omni301/include/omniORB3/omniInternal.h omni/include/omniORB3/omniInternal.h
--- omni301/include/omniORB3/omniInternal.h	Fri Aug 18 15:09:20 2000
+++ omni/include/omniORB3/omniInternal.h	Thu Aug 17 16:37:51 2000
@@ -29,12 +29,6 @@
 
 /*
   $Log: omniInternal.h,v $
-  Revision 1.4  2000/08/18 14:09:20  dpg1
-  Merge from omni3_develop for 3.0.1 release.
-
-  Revision 1.3  2000/07/13 15:26:05  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.1.2.11  2000/08/17 15:37:51  sll
   Merged RTEMS port.
 
diff -u -r omni301/include/omniORB3/omniORB.h omni/include/omniORB3/omniORB.h
--- omni301/include/omniORB3/omniORB.h	Fri Aug 18 15:09:20 2000
+++ omni/include/omniORB3/omniORB.h	Mon Aug  7 16:34:33 2000
@@ -29,12 +29,6 @@
 
 /*
   $Log: omniORB.h,v $
-  Revision 1.4  2000/08/18 14:09:20  dpg1
-  Merge from omni3_develop for 3.0.1 release.
-
-  Revision 1.3  2000/07/13 15:26:05  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.1.2.9  2000/08/07 15:34:33  dpg1
   Partial back-port of long long from omni3_1_develop.
 
diff -u -r omni301/include/omniORB3/omniObjKey.h omni/include/omniORB3/omniObjKey.h
--- omni301/include/omniORB3/omniObjKey.h	Thu Jul 13 16:26:05 2000
+++ omni/include/omniORB3/omniObjKey.h	Fri Sep 24 10:51:47 1999
@@ -29,9 +29,6 @@
  
 /*
   $Log: omniObjKey.h,v $
-  Revision 1.3  2000/07/13 15:26:05  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.1.2.1  1999/09/24 09:51:47  djr
   Moved from omniORB2 + some new files.
 
diff -u -r omni301/include/omniORB3/omniObjRef.h omni/include/omniORB3/omniObjRef.h
--- omni301/include/omniORB3/omniObjRef.h	Thu Jul 13 16:26:05 2000
+++ omni/include/omniORB3/omniObjRef.h	Wed Mar  1 17:57:42 2000
@@ -29,9 +29,6 @@
 
 /*
   $Log: omniObjRef.h,v $
-  Revision 1.3  2000/07/13 15:26:05  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.1.2.4  2000/03/01 17:57:42  dpg1
   New omniObjRef::_compatibleServant() function to support object
   references and servants written for languages other than C++.
diff -u -r omni301/include/omniORB3/omniServant.h omni/include/omniORB3/omniServant.h
--- omni301/include/omniORB3/omniServant.h	Thu Jul 13 16:26:05 2000
+++ omni/include/omniORB3/omniServant.h	Wed Oct 27 18:32:09 1999
@@ -29,9 +29,6 @@
  
 /*
   $Log: omniServant.h,v $
-  Revision 1.3  2000/07/13 15:26:05  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.1.2.2  1999/10/27 17:32:09  djr
   omni::internalLock and objref_rc_lock are now pointers.
 
diff -u -r omni301/include/omniORB3/omniURI.h omni/include/omniORB3/omniURI.h
--- omni301/include/omniORB3/omniURI.h	Thu Jul 13 16:26:05 2000
+++ omni/include/omniORB3/omniURI.h	Mon Sep  4 10:09:43 2000
@@ -28,12 +28,10 @@
 //	*** PROPRIETARY INTERFACE ***
 //
 
-#include <iostream.h>
-
-// $Id: omniURI.h,v 1.3 2000/07/13 15:26:05 dpg1 Exp $
+// $Id: omniURI.h,v 1.1.2.2 2000/09/04 09:09:43 dpg1 Exp $
 // $Log: omniURI.h,v $
-// Revision 1.3  2000/07/13 15:26:05  dpg1
-// Merge from omni3_develop for 3.0 release.
+// Revision 1.1.2.2  2000/09/04 09:09:43  dpg1
+// Remove #include <iostream.h> accidentally left over from debugging.
 //
 // Revision 1.1.2.1  2000/04/27 10:37:12  dpg1
 // Interoperable Naming Service
diff -u -r omni301/include/omniORB3/poa.h omni/include/omniORB3/poa.h
--- omni301/include/omniORB3/poa.h	Thu Jul 13 16:26:04 2000
+++ omni/include/omniORB3/poa.h	Mon Sep 25 12:03:28 2000
@@ -28,8 +28,8 @@
 
 /*
   $Log: poa.h,v $
-  Revision 1.3  2000/07/13 15:26:04  dpg1
-  Merge from omni3_develop for 3.0 release.
+  Revision 1.1.2.8  2000/09/25 11:03:28  dpg1
+  Remove use of _T as a template class name
 
   Revision 1.1.2.7  2000/06/27 16:15:08  sll
   New classes: _CORBA_String_element, _CORBA_ObjRef_Element,
@@ -202,28 +202,28 @@
 
   class ObjectId_var {
   public:
-    typedef ObjectId _T;
-    typedef ObjectId_var _T_var;
+    typedef ObjectId T;
+    typedef ObjectId_var T_var;
 
     inline ObjectId_var() : pd_seq(0) {}
-    inline ObjectId_var(_T* s) : pd_seq(s) {}
-    inline ObjectId_var(const _T_var& sv) {
+    inline ObjectId_var(T* s) : pd_seq(s) {}
+    inline ObjectId_var(const T_var& sv) {
       if( sv.pd_seq ) {
-        pd_seq = new _T;
+        pd_seq = new T;
         *pd_seq = *sv.pd_seq;
       } else
         pd_seq = 0;
     }
     inline ~ObjectId_var() { if( pd_seq ) delete pd_seq; }
 
-    inline _T_var& operator = (_T* s) {
+    inline T_var& operator = (T* s) {
       if( pd_seq )  delete pd_seq;
       pd_seq = s;
       return *this;
     }
-    inline _T_var& operator = (const _T_var& sv) {
+    inline T_var& operator = (const T_var& sv) {
       if( sv.pd_seq ) {
-        if( !pd_seq )  pd_seq = new _T;
+        if( !pd_seq )  pd_seq = new T;
         *pd_seq = *sv.pd_seq;
       } else if( pd_seq ) {
         delete pd_seq;
@@ -233,45 +233,45 @@
     }
 
     inline CORBA::Octet& operator [] (_CORBA_ULong i) {   return (*pd_seq)[i]; }
-    inline _T* operator -> () { return pd_seq; }
+    inline T* operator -> () { return pd_seq; }
 #if defined(__GNUG__) && __GNUG__ == 2 && __GNUC_MINOR__ == 7
-    inline operator _T& () const { return *pd_seq; }
+    inline operator T& () const { return *pd_seq; }
 #else
-    inline operator const _T& () const { return *pd_seq; }
-    inline operator _T& () { return *pd_seq; }
+    inline operator const T& () const { return *pd_seq; }
+    inline operator T& () { return *pd_seq; }
 #endif
 
-    inline const _T& in() const { return *pd_seq; }
-    inline _T& inout() { return *pd_seq; }
-    inline _T*& out() { if (pd_seq) { delete pd_seq; pd_seq = 0; } return pd_seq; }
-    inline _T* _retn() { _T* tmp = pd_seq; pd_seq = 0; return tmp; }
+    inline const T& in() const { return *pd_seq; }
+    inline T& inout() { return *pd_seq; }
+    inline T*& out() { if (pd_seq) { delete pd_seq; pd_seq = 0; } return pd_seq; }
+    inline T* _retn() { T* tmp = pd_seq; pd_seq = 0; return tmp; }
 
     friend class ObjectId_out;
 
   private:
-    _T* pd_seq;
+    T* pd_seq;
   };
 
   class ObjectId_out {
   public:
-    typedef ObjectId _T;
-    typedef ObjectId_var _T_var;
+    typedef ObjectId T;
+    typedef ObjectId_var T_var;
 
-    inline ObjectId_out(_T*& s) : _data(s) { _data = 0; }
-    inline ObjectId_out(_T_var& sv)
-      : _data(sv.pd_seq) { sv = (_T*) 0; }
+    inline ObjectId_out(T*& s) : _data(s) { _data = 0; }
+    inline ObjectId_out(T_var& sv)
+      : _data(sv.pd_seq) { sv = (T*) 0; }
     inline ObjectId_out(const ObjectId_out& s) : _data(s._data) { }
     inline ObjectId_out& operator=(const ObjectId_out& s) { _data = s._data; return *this; }
-    inline ObjectId_out& operator=(_T* s) { _data = s; return *this; }
-    inline operator _T*&() { return _data; }
-    inline _T*& ptr() { return _data; }
-    inline _T* operator->() { return _data; }
+    inline ObjectId_out& operator=(T* s) { _data = s; return *this; }
+    inline operator T*&() { return _data; }
+    inline T*& ptr() { return _data; }
+    inline T* operator->() { return _data; }
     inline CORBA::Octet& operator [] (_CORBA_ULong i) {   return (*_data)[i]; }
-    _T*& _data;
+    T*& _data;
 
   private:
     ObjectId_out();
-    ObjectId_out operator=( const _T_var&);
+    ObjectId_out operator=( const T_var&);
   };
 
   //////////////////////////////////////////////////////////////////////
diff -u -r omni301/include/omniORB3/poa_defs.h omni/include/omniORB3/poa_defs.h
--- omni301/include/omniORB3/poa_defs.h	Thu Jul 13 16:26:04 2000
+++ omni/include/omniORB3/poa_defs.h	Tue Jun 27 17:15:08 2000
@@ -28,9 +28,6 @@
 
 /*
   $Log: poa_defs.h,v $
-  Revision 1.3  2000/07/13 15:26:04  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.1.2.5  2000/06/27 16:15:08  sll
   New classes: _CORBA_String_element, _CORBA_ObjRef_Element,
   _CORBA_ObjRef_tcDesc_arg to support assignment to an element of a
diff -u -r omni301/include/omniORB3/poa_operators.h omni/include/omniORB3/poa_operators.h
--- omni301/include/omniORB3/poa_operators.h	Thu Jul 13 16:26:04 2000
+++ omni/include/omniORB3/poa_operators.h	Fri Sep 24 10:51:50 1999
@@ -28,9 +28,6 @@
 
 /*
   $Log: poa_operators.h,v $
-  Revision 1.3  2000/07/13 15:26:04  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.1.2.1  1999/09/24 09:51:50  djr
   Moved from omniORB2 + some new files.
 
diff -u -r omni301/include/omniORB3/poa_poa.h omni/include/omniORB3/poa_poa.h
--- omni301/include/omniORB3/poa_poa.h	Thu Jul 13 16:26:04 2000
+++ omni/include/omniORB3/poa_poa.h	Fri Sep 24 10:51:51 1999
@@ -28,9 +28,6 @@
 
 /*
   $Log: poa_poa.h,v $
-  Revision 1.3  2000/07/13 15:26:04  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.1.2.1  1999/09/24 09:51:51  djr
   Moved from omniORB2 + some new files.
 
diff -u -r omni301/include/omniORB3/proxyFactory.h omni/include/omniORB3/proxyFactory.h
--- omni301/include/omniORB3/proxyFactory.h	Thu Jul 13 16:26:04 2000
+++ omni/include/omniORB3/proxyFactory.h	Fri Sep 24 10:51:52 1999
@@ -29,9 +29,6 @@
 
 /*
  $Log: proxyFactory.h,v $
- Revision 1.3  2000/07/13 15:26:04  dpg1
- Merge from omni3_develop for 3.0 release.
-
  Revision 1.1.2.1  1999/09/24 09:51:52  djr
  Moved from omniORB2 + some new files.
 
diff -u -r omni301/include/omniORB3/rope.h omni/include/omniORB3/rope.h
--- omni301/include/omniORB3/rope.h	Thu Jul 13 16:26:04 2000
+++ omni/include/omniORB3/rope.h	Tue Jun 27 16:43:31 2000
@@ -29,9 +29,6 @@
 
 /*
   $Log: rope.h,v $
-  Revision 1.3  2000/07/13 15:26:04  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.1.2.4  2000/06/27 15:43:31  sll
   New member Strand::isOutgoing().
 
diff -u -r omni301/include/omniORB3/seqtemplates.h omni/include/omniORB3/seqtemplates.h
--- omni301/include/omniORB3/seqtemplates.h	Thu Jul 13 16:26:04 2000
+++ omni/include/omniORB3/seqtemplates.h	Fri Sep 24 10:51:53 1999
@@ -28,9 +28,6 @@
 
 /*
  $Log: seqtemplates.h,v $
- Revision 1.3  2000/07/13 15:26:04  dpg1
- Merge from omni3_develop for 3.0 release.
-
  Revision 1.1.2.1  1999/09/24 09:51:53  djr
  Moved from omniORB2 + some new files.
 
diff -u -r omni301/include/omniORB3/stringtypes.h omni/include/omniORB3/stringtypes.h
--- omni301/include/omniORB3/stringtypes.h	Thu Jul 13 16:26:04 2000
+++ omni/include/omniORB3/stringtypes.h	Tue Sep 19 10:10:33 2000
@@ -29,8 +29,8 @@
 
 /*
  $Log: stringtypes.h,v $
- Revision 1.3  2000/07/13 15:26:04  dpg1
- Merge from omni3_develop for 3.0 release.
+ Revision 1.1.2.5  2000/09/19 09:10:33  dpg1
+ String_var, _member, _element operator= now check for self-assignment.
 
  Revision 1.1.2.4  2000/06/27 16:15:08  sll
  New classes: _CORBA_String_element, _CORBA_ObjRef_Element,
@@ -123,9 +123,11 @@
   }
 
   inline _CORBA_String_var& operator=(const _CORBA_String_var& s) {
-    omni::freeString(_data);
-    _data = 0;
-    if( (const char*)s )  _data = string_dup(s);
+    if (&s != this) {
+      omni::freeString(_data);
+      _data = 0;
+      if( (const char*)s )  _data = string_dup(s);
+    }
     return *this;
   }
 
@@ -213,11 +215,13 @@
   }
 
   inline _CORBA_String_member& operator=(const _CORBA_String_member& s) {
-    omni::freeString(_ptr);
-    if (s._ptr && s._ptr != omni::empty_string)
-      _ptr = _CORBA_String_var::string_dup(s._ptr);
-    else
-      _ptr = s._ptr;
+    if (&s != this) {
+      omni::freeString(_ptr);
+      if (s._ptr && s._ptr != omni::empty_string)
+	_ptr = _CORBA_String_var::string_dup(s._ptr);
+      else
+	_ptr = s._ptr;
+    }
     return *this;
   }
 
@@ -321,14 +325,16 @@
   }
 
   inline _CORBA_String_element& operator=(const _CORBA_String_element& s) {
-    if (pd_rel) {
-      omni::freeString(pd_data);
-      if (s.pd_data && s.pd_data != omni::empty_string)
-	pd_data = _CORBA_String_var::string_dup(s.pd_data);
-      else
+    if (&s != this) {
+      if (pd_rel) {
+	omni::freeString(pd_data);
+	if (s.pd_data && s.pd_data != omni::empty_string)
+	  pd_data = _CORBA_String_var::string_dup(s.pd_data);
+	else
+	  pd_data = (char*)s.pd_data;
+      } else
 	pd_data = (char*)s.pd_data;
-    } else
-      pd_data = (char*)s.pd_data;
+    }
     return *this;
   }
 
diff -u -r omni301/include/omniORB3/stringtypes.h.old omni/include/omniORB3/stringtypes.h.old
--- omni301/include/omniORB3/stringtypes.h.old	Thu Jul 13 16:26:04 2000
+++ omni/include/omniORB3/stringtypes.h.old	Fri Sep 24 10:51:55 1999
@@ -29,9 +29,6 @@
 
 /*
  $Log: stringtypes.h.old,v $
- Revision 1.3  2000/07/13 15:26:04  dpg1
- Merge from omni3_develop for 3.0 release.
-
  Revision 1.1.2.1  1999/09/24 09:51:55  djr
  Moved from omniORB2 + some new files.
 
diff -u -r omni301/include/omniORB3/tracedthread.h omni/include/omniORB3/tracedthread.h
--- omni301/include/omniORB3/tracedthread.h	Fri Aug 18 15:09:20 2000
+++ omni/include/omniORB3/tracedthread.h	Wed Jul 19 18:25:14 2000
@@ -29,12 +29,6 @@
 
 /*
   $Log: tracedthread.h,v $
-  Revision 1.4  2000/08/18 14:09:20  dpg1
-  Merge from omni3_develop for 3.0.1 release.
-
-  Revision 1.3  2000/07/13 15:26:04  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.1.2.3  2000/07/19 17:25:14  dpg1
   Thread tracing turned off.
 
@@ -50,8 +44,11 @@
 #ifndef __OMNI_TRACEDTHREAD_H__
 #define __OMNI_TRACEDTHREAD_H__
 
+
 // Uncomment the following line to turn mutex/condition variable tracing on:
+
 //#define OMNIORB_ENABLE_LOCK_TRACES
+
 
 //////////////////////////////////////////////////////////////////////
 ////////////////////////// omni_tracedmutex //////////////////////////
diff -u -r omni301/include/omniORB3/userexception.h omni/include/omniORB3/userexception.h
--- omni301/include/omniORB3/userexception.h	Thu Jul 13 16:26:04 2000
+++ omni/include/omniORB3/userexception.h	Thu Jan 27 10:55:44 2000
@@ -28,9 +28,6 @@
 
 /*
  $Log: userexception.h,v $
- Revision 1.3  2000/07/13 15:26:04  dpg1
- Merge from omni3_develop for 3.0 release.
-
  Revision 1.1.2.7  2000/01/27 10:55:44  djr
  Mods needed for powerpc_aix.  New macro OMNIORB_BASE_CTOR to provide
  fqname for base class constructor for some compilers.
diff -u -r omni301/mk/mklib.mk omni/mk/mklib.mk
--- omni301/mk/mklib.mk	Fri Aug 18 15:09:34 2000
+++ omni/mk/mklib.mk	Wed Aug 23 18:31:14 2000
@@ -105,9 +105,9 @@
 ##############################################################################
 ifdef Win32Platform
 
-all:: mkstaticdbug mkshareddbug
+all:: mkstaticdbug
 
-export:: mkstaticdbug mkshareddbug
+export:: mkstaticdbug
 
 #####################################################
 #      Static debug libraries
@@ -138,6 +138,11 @@
 #####################################################
 #      DLL debug libraries
 #####################################################
+ifdef BuildSharedLibrary
+
+all:: mkshareddbug
+
+export:: mkshareddbug
 
 dbugshlib := shareddebug/$(shell $(SharedLibraryDebugFullName) $(namespec))
 MDFLAGS += -p shareddebug/
@@ -165,5 +170,7 @@
 veryclean::
 	$(RM) shareddebug/*.o
 	@(dir=shareddebug; $(CleanSharedLibrary))
+
+endif
 
 endif
diff -u -r omni301/mk/platforms/alpha_osf1_3.2.mk omni/mk/platforms/alpha_osf1_3.2.mk
--- omni301/mk/platforms/alpha_osf1_3.2.mk	Fri Aug 18 15:09:34 2000
+++ omni/mk/platforms/alpha_osf1_3.2.mk	Mon Oct  2 17:35:01 2000
@@ -137,7 +137,7 @@
  set -x; \
  $(RM) $@; \
   ld -shared -soname $$soname -set_version $$soname -o $@ \
- $(IMPORT_LIBRARY_FLAGS) $(filter-out $(LibSuffixPattern),$^) $$extralibs; \
+ $(IMPORT_LIBRARY_FLAGS) $(filter-out $(LibSuffixPattern),$^) $$extralibs \
   -lcxxstd -lcxx -lexc -lots -lc;
 endef
 
diff -u -r omni301/mk/platforms/alpha_osf1_4.0.mk omni/mk/platforms/alpha_osf1_4.0.mk
--- omni301/mk/platforms/alpha_osf1_4.0.mk	Fri Aug 18 15:09:34 2000
+++ omni/mk/platforms/alpha_osf1_4.0.mk	Mon Oct  2 17:35:01 2000
@@ -158,7 +158,7 @@
  set -x; \
  $(RM) $@; \
   ld -shared -soname $$soname -set_version $$soname -o $@ \
- $(IMPORT_LIBRARY_FLAGS) $(filter-out $(LibSuffixPattern),$^) $$extralibs; \
+ $(IMPORT_LIBRARY_FLAGS) $(filter-out $(LibSuffixPattern),$^) $$extralibs \
   -lcxxstd -lcxx -lexc -lots -lc;
 endef
 
Only in omni/mk/platforms: i586_linux_2.0_glibc2.1_gcc2.96.mk
diff -u -r omni301/mk/platforms/pc486_rtems_4.5.0.mk omni/mk/platforms/pc486_rtems_4.5.0.mk
--- omni301/mk/platforms/pc486_rtems_4.5.0.mk	Fri Aug 18 15:09:33 2000
+++ omni/mk/platforms/pc486_rtems_4.5.0.mk	Thu Aug 17 16:37:51 2000
@@ -1,6 +1,6 @@
 ###########################################################################
 #
-# $Header: /cvsroot/omni/mk/platforms/pc486_rtems_4.5.0.mk,v 1.2 2000/08/18 14:09:33 dpg1 Exp $
+# $Header: /cvsroot/omni/mk/platforms/pc486_rtems_4.5.0.mk,v 1.1.2.1 2000/08/17 15:37:51 sll Exp $
 #
 # Copyright (c) 1999-2000 ConnectTel, Inc. All Rights Reserved.
 #  
@@ -17,9 +17,6 @@
 # MODIFICATION/HISTORY:
 #
 # $Log: pc486_rtems_4.5.0.mk,v $
-# Revision 1.2  2000/08/18 14:09:33  dpg1
-# Merge from omni3_develop for 3.0.1 release.
-#
 # Revision 1.1.2.1  2000/08/17 15:37:51  sll
 # Merged RTEMS port.
 #
diff -u -r omni301/mk/rtems.mk omni/mk/rtems.mk
--- omni301/mk/rtems.mk	Fri Aug 18 15:09:34 2000
+++ omni/mk/rtems.mk	Mon Oct  2 17:35:41 2000
@@ -1,6 +1,6 @@
 ###########################################################################
 #
-# $Header: /cvsroot/omni/mk/rtems.mk,v 1.2 2000/08/18 14:09:34 dpg1 Exp $
+# $Header: /cvsroot/omni/mk/rtems.mk,v 1.1.2.4 2000/10/02 16:35:41 dpg1 Exp $
 #
 # Copyright (c) 1999-2000 ConnectTel, Inc. All Rights Reserved.
 #  
@@ -13,8 +13,8 @@
 # MODIFICATION/HISTORY:
 #
 # $Log: rtems.mk,v $
-# Revision 1.2  2000/08/18 14:09:34  dpg1
-# Merge from omni3_develop for 3.0.1 release.
+# Revision 1.1.2.4  2000/10/02 16:35:41  dpg1
+# Updates for 3.0.2 release
 #
 # Revision 1.1.2.3  2000/08/18 11:15:43  sll
 # Make current tree into omniORB 3.0.1 release.
@@ -222,7 +222,7 @@
 #
 CorbaImplementation = OMNIORB
 
-OMNIORB_VERSION = 3.0.1
+OMNIORB_VERSION = 3.0.2
 OMNIORB_MAJOR_VERSION = $(word 1,$(subst ., ,$(OMNIORB_VERSION)))
 OMNIORB_MINOR_VERSION = $(word 2,$(subst ., ,$(OMNIORB_VERSION)))
 OMNIORB_MICRO_VERSION = $(word 3,$(subst ., ,$(OMNIORB_VERSION)))
diff -u -r omni301/mk/unix.mk omni/mk/unix.mk
--- omni301/mk/unix.mk	Fri Aug 18 15:09:34 2000
+++ omni/mk/unix.mk	Mon Oct  2 17:35:41 2000
@@ -127,7 +127,7 @@
 # CORBA stuff
 #
 
-OMNIORB_VERSION = 3.0.1
+OMNIORB_VERSION = 3.0.2
 OMNIORB_MAJOR_VERSION = $(word 1,$(subst ., ,$(OMNIORB_VERSION)))
 OMNIORB_MINOR_VERSION = $(word 2,$(subst ., ,$(OMNIORB_VERSION)))
 OMNIORB_MICRO_VERSION = $(word 3,$(subst ., ,$(OMNIORB_VERSION)))
diff -u -r omni301/mk/win32.mk omni/mk/win32.mk
--- omni301/mk/win32.mk	Fri Aug 18 15:09:34 2000
+++ omni/mk/win32.mk	Mon Oct  2 17:35:41 2000
@@ -414,7 +414,7 @@
 
 # Note that the DLL version is being used, so link to omniorb3_rt.lib
 
-OMNIORB_VERSION = 3.0.1
+OMNIORB_VERSION = 3.0.2
 OMNIORB_MAJOR_VERSION = $(word 1,$(subst ., ,$(OMNIORB_VERSION)))
 OMNIORB_MINOR_VERSION = $(word 2,$(subst ., ,$(OMNIORB_VERSION)))
 OMNIORB_MICRO_VERSION = $(word 3,$(subst ., ,$(OMNIORB_VERSION)))
diff -u -r omni301/src/appl/omniMapper/omniMapper.cc omni/src/appl/omniMapper/omniMapper.cc
--- omni301/src/appl/omniMapper/omniMapper.cc	Thu Jul 13 16:26:04 2000
+++ omni/src/appl/omniMapper/omniMapper.cc	Mon Jun 19 16:25:57 2000
@@ -21,11 +21,8 @@
 //  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
 //  02111-1307, USA.
 
-// $Id: omniMapper.cc,v 1.3 2000/07/13 15:26:04 dpg1 Exp $
+// $Id: omniMapper.cc,v 1.1.2.2 2000/06/19 15:25:57 dpg1 Exp $
 // $Log: omniMapper.cc,v $
-// Revision 1.3  2000/07/13 15:26:04  dpg1
-// Merge from omni3_develop for 3.0 release.
-//
 // Revision 1.1.2.2  2000/06/19 15:25:57  dpg1
 // Explicit cast to (const char*) when using String_var with logger.
 //
diff -u -r omni301/src/appl/omniNames/INSMapper.h omni/src/appl/omniNames/INSMapper.h
--- omni301/src/appl/omniNames/INSMapper.h	Thu Jul 13 16:26:03 2000
+++ omni/src/appl/omniNames/INSMapper.h	Wed May 24 18:13:07 2000
@@ -22,11 +22,8 @@
 //  USA.
 //
 
-// $Id: INSMapper.h,v 1.3 2000/07/13 15:26:03 dpg1 Exp $
+// $Id: INSMapper.h,v 1.1.2.1 2000/05/24 17:13:07 dpg1 Exp $
 // $Log: INSMapper.h,v $
-// Revision 1.3  2000/07/13 15:26:03  dpg1
-// Merge from omni3_develop for 3.0 release.
-//
 // Revision 1.1.2.1  2000/05/24 17:13:07  dpg1
 // omniNames now creates a forwarding agent with object key `NameService'
 // if the root context doesn't already have that key.
diff -u -r omni301/src/lib/omniORB2/dynamic/any.cc omni/src/lib/omniORB2/dynamic/any.cc
--- omni301/src/lib/omniORB2/dynamic/any.cc	Thu Jul 13 16:26:03 2000
+++ omni/src/lib/omniORB2/dynamic/any.cc	Tue Jun 27 17:15:09 2000
@@ -30,9 +30,6 @@
 
 /*
  * $Log: any.cc,v $
- * Revision 1.20  2000/07/13 15:26:03  dpg1
- * Merge from omni3_develop for 3.0 release.
- *
  * Revision 1.18.6.6  2000/06/27 16:15:09  sll
  * New classes: _CORBA_String_element, _CORBA_ObjRef_Element,
  * _CORBA_ObjRef_tcDesc_arg to support assignment to an element of a
diff -u -r omni301/src/lib/omniORB2/dynamic/constants.cc omni/src/lib/omniORB2/dynamic/constants.cc
--- omni301/src/lib/omniORB2/dynamic/constants.cc	Thu Jul 13 16:26:03 2000
+++ omni/src/lib/omniORB2/dynamic/constants.cc	Wed Sep 22 15:26:28 1999
@@ -28,9 +28,6 @@
 
 /*
   $Log: constants.cc,v $
-  Revision 1.3  2000/07/13 15:26:03  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.1.2.1  1999/09/22 14:26:28  djr
   Major rewrite of orbcore to support POA.
 
diff -u -r omni301/src/lib/omniORB2/dynamic/context.cc omni/src/lib/omniORB2/dynamic/context.cc
--- omni301/src/lib/omniORB2/dynamic/context.cc	Thu Jul 13 16:26:03 2000
+++ omni/src/lib/omniORB2/dynamic/context.cc	Thu Jun 22 11:40:11 2000
@@ -29,9 +29,6 @@
 
 /*
  $Log: context.cc,v $
- Revision 1.13  2000/07/13 15:26:03  dpg1
- Merge from omni3_develop for 3.0 release.
-
  Revision 1.9.6.4  2000/06/22 10:40:11  dpg1
  exception.h renamed to exceptiondefs.h to avoid name clash on some
  platforms.
diff -u -r omni301/src/lib/omniORB2/dynamic/context.h omni/src/lib/omniORB2/dynamic/context.h
--- omni301/src/lib/omniORB2/dynamic/context.h	Thu Jul 13 16:26:02 2000
+++ omni/src/lib/omniORB2/dynamic/context.h	Wed Sep 22 15:26:29 1999
@@ -28,9 +28,6 @@
 
 /*
  $Log: context.h,v $
- Revision 1.6  2000/07/13 15:26:02  dpg1
- Merge from omni3_develop for 3.0 release.
-
  Revision 1.4.6.1  1999/09/22 14:26:29  djr
  Major rewrite of orbcore to support POA.
 
diff -u -r omni301/src/lib/omniORB2/dynamic/dynAny.cc omni/src/lib/omniORB2/dynamic/dynAny.cc
--- omni301/src/lib/omniORB2/dynamic/dynAny.cc	Thu Jul 13 16:26:02 2000
+++ omni/src/lib/omniORB2/dynamic/dynAny.cc	Thu Jun 22 11:40:12 2000
@@ -29,9 +29,6 @@
 
 /* 
    $Log: dynAny.cc,v $
-   Revision 1.12  2000/07/13 15:26:02  dpg1
-   Merge from omni3_develop for 3.0 release.
-
    Revision 1.8.6.5  2000/06/22 10:40:12  dpg1
    exception.h renamed to exceptiondefs.h to avoid name clash on some
    platforms.
diff -u -r omni301/src/lib/omniORB2/dynamic/dynAny.h omni/src/lib/omniORB2/dynamic/dynAny.h
--- omni301/src/lib/omniORB2/dynamic/dynAny.h	Thu Jul 13 16:26:02 2000
+++ omni/src/lib/omniORB2/dynamic/dynAny.h	Tue Oct 26 21:18:20 1999
@@ -29,9 +29,6 @@
 
 /*
  $Log: dynAny.h,v $
- Revision 1.6  2000/07/13 15:26:02  dpg1
- Merge from omni3_develop for 3.0 release.
-
  Revision 1.2.8.3  1999/10/26 20:18:20  sll
  DynAny no longer do alias expansion on the typecode. In other words, all
  aliases in the typecode are preserved.
diff -u -r omni301/src/lib/omniORB2/dynamic/dynAnyNil.cc omni/src/lib/omniORB2/dynamic/dynAnyNil.cc
--- omni301/src/lib/omniORB2/dynamic/dynAnyNil.cc	Tue Jul  4 16:23:15 2000
+++ omni/src/lib/omniORB2/dynamic/dynAnyNil.cc	Tue Sep 19 11:13:51 2000
@@ -203,7 +203,7 @@
 /////////////////////////// omniNilDynEnum ///////////////////////////
 //////////////////////////////////////////////////////////////////////
 
-class omniNilDynEnum : public CORBA::DynEnum, omniNilDynAny {
+class omniNilDynEnum : public CORBA::DynEnum, public omniNilDynAny {
 public:
   virtual char* value_as_string() {
     _CORBA_invoked_nil_pseudo_ref();
@@ -238,7 +238,7 @@
 ////////////////////////// omniNilDynStruct //////////////////////////
 //////////////////////////////////////////////////////////////////////
 
-class omniNilDynStruct : public CORBA::DynStruct, omniNilDynAny {
+class omniNilDynStruct : public CORBA::DynStruct, public omniNilDynAny {
 public:
   virtual char*  current_member_name() {
     _CORBA_invoked_nil_pseudo_ref();
@@ -274,7 +274,7 @@
 /////////////////////////// omniNilDynUnion //////////////////////////
 //////////////////////////////////////////////////////////////////////
 
-class omniNilDynUnion : public CORBA::DynUnion, omniNilDynAny {
+class omniNilDynUnion : public CORBA::DynUnion, public omniNilDynAny {
 public:
   virtual CORBA::Boolean set_as_default() {
     _CORBA_invoked_nil_pseudo_ref();
@@ -325,7 +325,7 @@
 ///////////////////////// omniNilDynSequence /////////////////////////
 //////////////////////////////////////////////////////////////////////
 
-class omniNilDynSequence : public CORBA::DynSequence, omniNilDynAny {
+class omniNilDynSequence : public CORBA::DynSequence, public omniNilDynAny {
 public:
   virtual CORBA::ULong length() {
     _CORBA_invoked_nil_pseudo_ref();
@@ -360,7 +360,7 @@
 /////////////////////////// omniNilDynArray //////////////////////////
 //////////////////////////////////////////////////////////////////////
 
-class omniNilDynArray : public CORBA::DynArray, omniNilDynAny {
+class omniNilDynArray : public CORBA::DynArray, public omniNilDynAny {
 public:
   virtual CORBA::AnySeq* get_elements() {
     _CORBA_invoked_nil_pseudo_ref();
diff -u -r omni301/src/lib/omniORB2/dynamic/dynamicLib.cc omni/src/lib/omniORB2/dynamic/dynamicLib.cc
--- omni301/src/lib/omniORB2/dynamic/dynamicLib.cc	Thu Jul 13 16:26:02 2000
+++ omni/src/lib/omniORB2/dynamic/dynamicLib.cc	Wed Sep 22 15:26:33 1999
@@ -29,9 +29,6 @@
 
 /*
   $Log: dynamicLib.cc,v $
-  Revision 1.3  2000/07/13 15:26:02  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.1.2.1  1999/09/22 14:26:33  djr
   Major rewrite of orbcore to support POA.
 
diff -u -r omni301/src/lib/omniORB2/dynamic/serverRequest.cc omni/src/lib/omniORB2/dynamic/serverRequest.cc
--- omni301/src/lib/omniORB2/dynamic/serverRequest.cc	Thu Jul 13 16:26:02 2000
+++ omni/src/lib/omniORB2/dynamic/serverRequest.cc	Thu Jun 22 11:40:13 2000
@@ -29,9 +29,6 @@
 
 /*
  $Log: serverRequest.cc,v $
- Revision 1.9  2000/07/13 15:26:02  dpg1
- Merge from omni3_develop for 3.0 release.
-
  Revision 1.7.6.3  2000/06/22 10:40:13  dpg1
  exception.h renamed to exceptiondefs.h to avoid name clash on some
  platforms.
diff -u -r omni301/src/lib/omniORB2/dynamic/sharedlib/dir.mk omni/src/lib/omniORB2/dynamic/sharedlib/dir.mk
--- omni301/src/lib/omniORB2/dynamic/sharedlib/dir.mk	Fri Aug 18 15:09:15 2000
+++ omni/src/lib/omniORB2/dynamic/sharedlib/dir.mk	Tue Aug 22 11:08:36 2000
@@ -161,9 +161,6 @@
 #############################################################################
 
 ifdef SunOS
-ifeq ($(notdir $(CXX)),CC)
-
-DIR_CPPFLAGS += -KPIC
 
 libname = libomniORB$(major_version).so
 soname  = $(libname).$(minor_version)
@@ -174,6 +171,10 @@
 dynlib = $(dynsoname).$(micro_version)
 
 
+ifeq ($(notdir $(CXX)),CC)
+
+DIR_CPPFLAGS += -KPIC
+
 all:: $(dynlib)
 
 $(dynlib): $(DYN_OBJS)
@@ -200,6 +201,36 @@
          )
 
 endif
+
+ifeq ($(notdir $(CXX)),g++)
+
+DIR_CPPFLAGS += -fPIC
+
+all:: $(dynlib)
+
+$(dynlib): $(DYN_OBJS)
+	(set -x; \
+        $(RM) $@; \
+        $(CXX) -shared -Wl,-h,$(dynsoname) -o $@ $(IMPORT_LIBRARY_FLAGS) \
+         $(filter-out $(LibSuffixPattern),$^) $(OMNITHREAD_LIB) \
+         ../../orbcore/sharedlib/$(lib); \
+       )
+
+
+clean::
+	$(RM) $(dynlib)
+
+export:: $(dynlib)
+	@$(ExportLibrary)
+	@(set -x; \
+          cd $(EXPORT_TREE)/$(LIBDIR); \
+          $(RM) $(dynsoname); \
+          ln -s $(dynlib) $(dynsoname); \
+          $(RM) $(dynlibname); \
+          ln -s $(dynsoname) $(dynlibname); \
+         )
+endif
+
 endif
 
 #############################################################################
diff -u -r omni301/src/lib/omniORB2/dynamic/typecode.cc omni/src/lib/omniORB2/dynamic/typecode.cc
--- omni301/src/lib/omniORB2/dynamic/typecode.cc	Thu Jul 13 16:26:02 2000
+++ omni/src/lib/omniORB2/dynamic/typecode.cc	Wed Aug 30 15:57:12 2000
@@ -30,8 +30,13 @@
 
 /* 
  * $Log: typecode.cc,v $
- * Revision 1.39  2000/07/13 15:26:02  dpg1
- * Merge from omni3_develop for 3.0 release.
+ * Revision 1.33.6.11  2000/08/30 14:57:12  sll
+ * Fixed a bug in the unmarshal code of a typecode of kind tk_objref. The
+ * resulting typecode has its field pd_complete left as 0 which should
+ * actually be 1. This normally isn't a problem unless the typecode is a
+ * member of a sequence (or other complex structure) typecode and is used in
+ * an environment with typecode alias expansion (omniORB::tcAliasExpand) set
+ * to true.
  *
  * Revision 1.33.6.10  2000/06/27 16:23:25  sll
  * Merged OpenVMS port.
@@ -1188,6 +1193,7 @@
   pd_name = name;
   pd_alignmentTable.setNumEntries(1);
   pd_alignmentTable.addNasty(this);
+  pd_complete = 1;
 }
 
 
@@ -1220,6 +1226,7 @@
 
   _ptr->pd_repoId <<= s;
   _ptr->pd_name <<= s;
+  _ptr->pd_complete = 1;
 
   return _ptr;
 }
diff -u -r omni301/src/lib/omniORB2/dynamic/typecode.h omni/src/lib/omniORB2/dynamic/typecode.h
--- omni301/src/lib/omniORB2/dynamic/typecode.h	Thu Jul 13 16:26:02 2000
+++ omni/src/lib/omniORB2/dynamic/typecode.h	Tue Sep 19 10:11:21 2000
@@ -30,8 +30,8 @@
 
 /*
  * $Log: typecode.h,v $
- * Revision 1.11  2000/07/13 15:26:02  dpg1
- * Merge from omni3_develop for 3.0 release.
+ * Revision 1.8.6.6  2000/09/19 09:11:21  dpg1
+ * Standard C++ does not permit type definitions in anonymous unions
  *
  * Revision 1.8.6.5  2000/06/22 10:40:13  dpg1
  * exception.h renamed to exceptiondefs.h to avoid name clash on some
@@ -157,14 +157,17 @@
 
   struct Alignment {
     InfoType type;
+
+    struct SimpleAlignment {
+      omni::alignment_t alignment;
+      CORBA::ULong      size;
+    };
+    struct NastyAlignment {
+      TypeCode_base*    tc;
+    };
     union {
-      struct {
-	omni::alignment_t alignment;
-	CORBA::ULong      size;
-      } simple;
-      struct {
-	TypeCode_base*    tc;
-      } nasty;
+      SimpleAlignment simple;
+      NastyAlignment  nasty;
     };
   };
 
diff -u -r omni301/src/lib/omniORB2/dynamicLib.h omni/src/lib/omniORB2/dynamicLib.h
--- omni301/src/lib/omniORB2/dynamicLib.h	Thu Jul 13 16:26:03 2000
+++ omni/src/lib/omniORB2/dynamicLib.h	Tue Feb  8 13:25:24 2000
@@ -29,9 +29,6 @@
 
 /*
   $Log: dynamicLib.h,v $
-  Revision 1.3  2000/07/13 15:26:03  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.1.2.2  2000/02/08 13:25:24  djr
   Added a couple of missing _core_attr.
 
diff -u -r omni301/src/lib/omniORB2/exceptiondefs.h omni/src/lib/omniORB2/exceptiondefs.h
--- omni301/src/lib/omniORB2/exceptiondefs.h	Thu Jul 13 16:26:03 2000
+++ omni/src/lib/omniORB2/exceptiondefs.h	Thu Jun 22 11:37:49 2000
@@ -28,9 +28,6 @@
 
 /*
   $Log: exceptiondefs.h,v $
-  Revision 1.3  2000/07/13 15:26:03  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.1.2.1  2000/06/22 10:37:49  dpg1
   Transport code now throws omniConnectionBroken exception rather than
   CORBA::COMM_FAILURE when things go wrong. This allows the invocation
diff -u -r omni301/src/lib/omniORB2/initRefs.h omni/src/lib/omniORB2/initRefs.h
--- omni301/src/lib/omniORB2/initRefs.h	Thu Jul 13 16:26:03 2000
+++ omni/src/lib/omniORB2/initRefs.h	Tue Jun 27 16:33:53 2000
@@ -29,9 +29,6 @@
 
 /*
   $Log: initRefs.h,v $
-  Revision 1.3  2000/07/13 15:26:03  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.1.2.2  2000/06/27 15:33:53  sll
   Changed #include to match the new location of the stubs.
 
diff -u -r omni301/src/lib/omniORB2/initialiser.h omni/src/lib/omniORB2/initialiser.h
--- omni301/src/lib/omniORB2/initialiser.h	Thu Jul 13 16:26:03 2000
+++ omni/src/lib/omniORB2/initialiser.h	Fri Jun  2 15:17:05 2000
@@ -28,9 +28,6 @@
 
 /*
   $Log: initialiser.h,v $
-  Revision 1.3  2000/07/13 15:26:03  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.1.2.2  2000/06/02 14:17:05  dpg1
   Add static install() method to initialiser so extra initialisers /
   deinitialisers can be added at run time (needed by omniORBpy).
diff -u -r omni301/src/lib/omniORB2/omniIdentity.h omni/src/lib/omniORB2/omniIdentity.h
--- omni301/src/lib/omniORB2/omniIdentity.h	Thu Jul 13 16:26:03 2000
+++ omni/src/lib/omniORB2/omniIdentity.h	Wed Sep 22 15:26:26 1999
@@ -30,9 +30,6 @@
 
 /*
   $Log: omniIdentity.h,v $
-  Revision 1.3  2000/07/13 15:26:03  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.1.2.1  1999/09/22 14:26:26  djr
   Major rewrite of orbcore to support POA.
 
diff -u -r omni301/src/lib/omniORB2/omniidl_be/cxx/__init__.py omni/src/lib/omniORB2/omniidl_be/cxx/__init__.py
--- omni301/src/lib/omniORB2/omniidl_be/cxx/__init__.py	Fri Aug 18 15:09:15 2000
+++ omni/src/lib/omniORB2/omniidl_be/cxx/__init__.py	Mon Aug 14 20:34:44 2000
@@ -26,11 +26,8 @@
 #
 #   Entrypoint to the C++ backend
 
-# $Id: __init__.py,v 1.22 2000/08/18 14:09:15 dpg1 Exp $
+# $Id: __init__.py,v 1.18.2.10 2000/08/14 19:34:44 djs Exp $
 # $Log: __init__.py,v $
-# Revision 1.22  2000/08/18 14:09:15  dpg1
-# Merge from omni3_develop for 3.0.1 release.
-#
 # Revision 1.18.2.10  2000/08/14 19:34:44  djs
 # Performs a quick scan of the AST looking for unsupported IDL constructs
 # before doing anything else.
diff -u -r omni301/src/lib/omniORB2/omniidl_be/cxx/config.py omni/src/lib/omniORB2/omniidl_be/cxx/config.py
--- omni301/src/lib/omniORB2/omniidl_be/cxx/config.py	Fri Aug 18 15:09:15 2000
+++ omni/src/lib/omniORB2/omniidl_be/cxx/config.py	Tue Sep 19 15:04:51 2000
@@ -13,7 +13,7 @@
             # Name of this program
             'Program Name':          'omniidl (C++ backend)',
             # Useful data from CVS
-            'CVS ID':                '$Id: config.py,v 1.16 2000/08/18 14:09:15 dpg1 Exp $',
+            'CVS ID':                '$Id: config.py,v 1.12.2.9 2000/09/19 14:04:51 djs Exp $',
             # Relevant omniORB C++ library version
             'Library Version':       'omniORB_3_0',
             # Suffix of generated header file
@@ -107,7 +107,7 @@
     def add(self, node):
         file = node.file()
         if not(file in config.includes):
-            config.includes = [file] + config.includes
+            config.includes.append(file)
 
     def visitAST(self, node):
         self.add(node)
diff -u -r omni301/src/lib/omniORB2/omniidl_be/cxx/dynskel/__init__.py omni/src/lib/omniORB2/omniidl_be/cxx/dynskel/__init__.py
--- omni301/src/lib/omniORB2/omniidl_be/cxx/dynskel/__init__.py	Thu Jul 13 16:26:01 2000
+++ omni/src/lib/omniORB2/omniidl_be/cxx/dynskel/__init__.py	Mon Jun 26 17:23:26 2000
@@ -26,11 +26,8 @@
 #
 #   Entrypoint to dynamic skeleton generation code
 
-# $Id: __init__.py,v 1.9 2000/07/13 15:26:01 dpg1 Exp $
+# $Id: __init__.py,v 1.6.2.6 2000/06/26 16:23:26 djs Exp $
 # $Log: __init__.py,v $
-# Revision 1.9  2000/07/13 15:26:01  dpg1
-# Merge from omni3_develop for 3.0 release.
-#
 # Revision 1.6.2.6  2000/06/26 16:23:26  djs
 # Refactoring of configuration state mechanism.
 #
diff -u -r omni301/src/lib/omniORB2/omniidl_be/cxx/dynskel/main.py omni/src/lib/omniORB2/omniidl_be/cxx/dynskel/main.py
--- omni301/src/lib/omniORB2/omniidl_be/cxx/dynskel/main.py	Thu Jul 13 16:26:00 2000
+++ omni/src/lib/omniORB2/omniidl_be/cxx/dynskel/main.py	Tue Jun 27 17:15:09 2000
@@ -26,11 +26,8 @@
 #
 #   Produce the main dynamic skeleton definitions
 
-# $Id: main.py,v 1.15 2000/07/13 15:26:00 dpg1 Exp $
+# $Id: main.py,v 1.12.2.10 2000/06/27 16:15:09 sll Exp $
 # $Log: main.py,v $
-# Revision 1.15  2000/07/13 15:26:00  dpg1
-# Merge from omni3_develop for 3.0 release.
-#
 # Revision 1.12.2.10  2000/06/27 16:15:09  sll
 # New classes: _CORBA_String_element, _CORBA_ObjRef_Element,
 # _CORBA_ObjRef_tcDesc_arg to support assignment to an element of a
diff -u -r omni301/src/lib/omniORB2/omniidl_be/cxx/dynskel/tcstring.py omni/src/lib/omniORB2/omniidl_be/cxx/dynskel/tcstring.py
--- omni301/src/lib/omniORB2/omniidl_be/cxx/dynskel/tcstring.py	Thu Jul 13 16:26:00 2000
+++ omni/src/lib/omniORB2/omniidl_be/cxx/dynskel/tcstring.py	Mon Jun 26 17:23:27 2000
@@ -26,11 +26,8 @@
 #   
 #   Produce bounded string #ifdefs for .hh 
 
-# $Id: tcstring.py,v 1.5 2000/07/13 15:26:00 dpg1 Exp $
+# $Id: tcstring.py,v 1.2.2.3 2000/06/26 16:23:27 djs Exp $
 # $Log: tcstring.py,v $
-# Revision 1.5  2000/07/13 15:26:00  dpg1
-# Merge from omni3_develop for 3.0 release.
-#
 # Revision 1.2.2.3  2000/06/26 16:23:27  djs
 # Refactoring of configuration state mechanism.
 #
diff -u -r omni301/src/lib/omniORB2/omniidl_be/cxx/dynskel/template.py omni/src/lib/omniORB2/omniidl_be/cxx/dynskel/template.py
--- omni301/src/lib/omniORB2/omniidl_be/cxx/dynskel/template.py	Thu Jul 13 16:26:00 2000
+++ omni/src/lib/omniORB2/omniidl_be/cxx/dynskel/template.py	Tue Jul  4 13:57:52 2000
@@ -26,11 +26,8 @@
 #   
 #   C++ templates for the DynSK.cc file
 
-# $Id: template.py,v 1.4 2000/07/13 15:26:00 dpg1 Exp $
+# $Id: template.py,v 1.1.2.10 2000/07/04 12:57:52 djs Exp $
 # $Log: template.py,v $
-# Revision 1.4  2000/07/13 15:26:00  dpg1
-# Merge from omni3_develop for 3.0 release.
-#
 # Revision 1.1.2.10  2000/07/04 12:57:52  djs
 # Fixed Any insertion/extraction operators for unions and exceptions
 #
diff -u -r omni301/src/lib/omniORB2/omniidl_be/cxx/dynskel/typecode.py omni/src/lib/omniORB2/omniidl_be/cxx/dynskel/typecode.py
--- omni301/src/lib/omniORB2/omniidl_be/cxx/dynskel/typecode.py	Fri Aug 18 15:09:14 2000
+++ omni/src/lib/omniORB2/omniidl_be/cxx/dynskel/typecode.py	Fri Aug 18 10:42:44 2000
@@ -26,14 +26,8 @@
 #   
 #   Produces the instances of CORBA::TypeCode
 
-# $Id: typecode.py,v 1.18 2000/08/18 14:09:14 dpg1 Exp $
+# $Id: typecode.py,v 1.14.2.10 2000/08/18 09:42:44 djs Exp $
 # $Log: typecode.py,v $
-# Revision 1.18  2000/08/18 14:09:14  dpg1
-# Merge from omni3_develop for 3.0.1 release.
-#
-# Revision 1.17  2000/07/13 15:26:00  dpg1
-# Merge from omni3_develop for 3.0 release.
-#
 # Revision 1.14.2.10  2000/08/18 09:42:44  djs
 # Fixed silly typo in last fix (fix == s/definied/defined/)
 #
diff -u -r omni301/src/lib/omniORB2/omniidl_be/cxx/env.py omni/src/lib/omniORB2/omniidl_be/cxx/env.py
--- omni301/src/lib/omniORB2/omniidl_be/cxx/env.py	Thu Jul 13 16:26:01 2000
+++ omni/src/lib/omniORB2/omniidl_be/cxx/env.py	Wed Apr 26 19:22:12 2000
@@ -28,11 +28,8 @@
 #   (they are needed for each pass over the tree so might as well be
 #   computed just once and stored)
 
-# $Id: env.py,v 1.6 2000/07/13 15:26:01 dpg1 Exp $
+# $Id: env.py,v 1.3.2.2 2000/04/26 18:22:12 djs Exp $
 # $Log: env.py,v $
-# Revision 1.6  2000/07/13 15:26:01  dpg1
-# Merge from omni3_develop for 3.0 release.
-#
 # Revision 1.3.2.2  2000/04/26 18:22:12  djs
 # Rewrote type mapping code (now in types.py)
 # Rewrote identifier handling code (now in id.py)
diff -u -r omni301/src/lib/omniORB2/omniidl_be/cxx/header/__init__.py omni/src/lib/omniORB2/omniidl_be/cxx/header/__init__.py
--- omni301/src/lib/omniORB2/omniidl_be/cxx/header/__init__.py	Fri Aug 18 15:09:14 2000
+++ omni/src/lib/omniORB2/omniidl_be/cxx/header/__init__.py	Thu Aug 10 11:38:23 2000
@@ -26,14 +26,8 @@
 #
 #   Entrypoint to header generation code
 
-# $Id: __init__.py,v 1.16 2000/08/18 14:09:14 dpg1 Exp $
+# $Id: __init__.py,v 1.12.2.8 2000/08/10 10:38:23 sll Exp $
 # $Log: __init__.py,v $
-# Revision 1.16  2000/08/18 14:09:14  dpg1
-# Merge from omni3_develop for 3.0.1 release.
-#
-# Revision 1.15  2000/07/13 15:26:00  dpg1
-# Merge from omni3_develop for 3.0 release.
-#
 # Revision 1.12.2.8  2000/08/10 10:38:23  sll
 # Support new pragma hh in the cxx omniidl backend.  Added CPP macro guards
 # to stub header to preserve the value of USE_core_stub_in_nt_dll and
diff -u -r omni301/src/lib/omniORB2/omniidl_be/cxx/header/defs.py omni/src/lib/omniORB2/omniidl_be/cxx/header/defs.py
--- omni301/src/lib/omniORB2/omniidl_be/cxx/header/defs.py	Fri Aug 18 15:09:14 2000
+++ omni/src/lib/omniORB2/omniidl_be/cxx/header/defs.py	Wed Sep 13 11:53:00 2000
@@ -26,13 +26,11 @@
 #   
 #   Produce the main header definitions for the C++ backend
 
-# $Id: defs.py,v 1.35 2000/08/18 14:09:14 dpg1 Exp $
+# $Id: defs.py,v 1.31.2.20 2000/09/13 10:53:00 djs Exp $
 # $Log: defs.py,v $
-# Revision 1.35  2000/08/18 14:09:14  dpg1
-# Merge from omni3_develop for 3.0.1 release.
-#
-# Revision 1.34  2000/07/13 15:26:00  dpg1
-# Merge from omni3_develop for 3.0 release.
+# Revision 1.31.2.20  2000/09/13 10:53:00  djs
+# Bug in union _d member when an implicit default case is active
+# (after _default() is called)
 #
 # Revision 1.31.2.19  2000/08/03 21:27:39  djs
 # Typo in -Wbvirtual_objref code caused incorrect operation signatures to be
@@ -1266,9 +1264,6 @@
 
         cases = util.StringStream()
 
-        # keep track of which cases have been done
-        cases_done = []
-
 
         # Produce a set of "case <foo>: goto fail;" for every label
         # except those in an exception list
@@ -1280,56 +1275,67 @@
                         cases.out("case @label@: goto fail;",
                                   label = switchType.literal(l.value(),
                                                              environment))
-                        
 
-        # first switch on the current case
+
+        # switch (currently active case){
+        #
+        outer_has_default = 0 # only mention default: once
         for c in node.cases():
-            # optimisation: we've already checked for the simple case where
-            # we set the discriminator to the current value
+
+            need_switch = 1
+
+            # If the currently active case has only one non-default label,
+            # then the only legal action is to set it to its current value.
+            # We've already checked for this in an if (...) statement before
+            # here.
             if len(c.labels()) == 1 and not(c.labels()[0].default()):
-                # case has one label, for control to get here _value must
-                # be for a different label _unless_ the one label was itself
-                # a default: which means many label values are possible
+                cases.out("case @label@: goto fail;",
+                          label = switchType.literal(c.labels()[0].value(),
+                                                     environment))
                 continue
 
-            need_switch = 1
-            # output one C++ case label for each IDL case label for this member
+            # output one C++ case label for each IDL case label
+            # case 1:
+            # case 2:
+            # default:
+
+            this_case_is_default = 0
             for l in c.labels():
                 if l.default():
-                    cases.out("default:")
+                    this_case_is_default = 1
                     outer_has_default = 1
-                    this_is_default = 1
-                else:
-                    cases.out("case @label@:",
-                              label = switchType.literal(l.value(),
-                                                         environment))
-                    cases_done.append(l)
-                    this_is_default = 0
+                    cases.out("default:")
+                    continue
+
+                cases.out("case @label@:",
+                          label = switchType.literal(l.value(), environment))
 
-            # switch on the to-label
+            # switch (case to switch to){
+            #
             cases.inc_indent()
             cases.out("switch (_value){\n")
             cases.inc_indent()
-            has_default = 0
+            inner_has_default = 0
 
 
-            # If we are in the default state, then make sure we're not trying
-            # to set the discriminator to a non-default value
-            if this_is_default:
+            # If we currently are in the default case, fail all attempts
+            # to switch cases.
+            if this_case_is_default:
                 fail_all_but(c.labels())
-                        
+                cases.out("default: _pd__d = _value; return;")
+                cases.dec_indent()
+                cases.out("}\n")
+                cases.dec_indent()
+                continue
+                
+            # This is not the default case, all possibilities have associated
+            # UnionCaseLabels
             for l in c.labels():
-                if l.default():
-                    cases.out("default: _pd__d = _value; return;")
-                    has_default = 1
-                elif not(this_is_default):
-                    cases.out("case @label@: _pd__d = @label@; return;",
-                              label = switchType.literal(l.value(),
-                                                         environment))
-                    cases_done.append(l)
+                cases.out("case @label@: _pd__d = @label@; return;",
+                          label = switchType.literal(l.value(), environment))
 
-            if not(has_default):
-                cases.out("default: goto fail;")
+            
+            cases.out("default: goto fail;")
             cases.dec_indent()
             cases.out("}\n")
             cases.dec_indent()
@@ -1337,9 +1343,12 @@
         if not(outer_has_default) and not(implicitDefault):
             cases.out("default: goto fail;")
 
-        # do we have an implicit default member (no actual case, but a
-        # legal set of discriminator values)
+        # handle situation where have an implicit default member
+        # (ie no actual case, but a legal set of discriminator values)
+        # (assumes that the current discriminator is set to one of the
+        # defaults)
         if implicitDefault:
+            need_switch = 1
             cases.out("default:")
             cases.out("switch (_value){")
             cases.inc_indent()
@@ -1351,7 +1360,8 @@
 
             cases.dec_indent()
             cases.out("}")
-                      
+
+
 
         # output the code here
         switch = util.StringStream()
diff -u -r omni301/src/lib/omniORB2/omniidl_be/cxx/header/forward.py omni/src/lib/omniORB2/omniidl_be/cxx/header/forward.py
--- omni301/src/lib/omniORB2/omniidl_be/cxx/header/forward.py	Thu Jul 13 16:26:00 2000
+++ omni/src/lib/omniORB2/omniidl_be/cxx/header/forward.py	Mon Jun 26 17:23:59 2000
@@ -26,11 +26,8 @@
 #   
 #   Produce ancillary forward declarations for the header file
 
-# $Id: forward.py,v 1.9 2000/07/13 15:26:00 dpg1 Exp $
+# $Id: forward.py,v 1.6.2.4 2000/06/26 16:23:59 djs Exp $
 # $Log: forward.py,v $
-# Revision 1.9  2000/07/13 15:26:00  dpg1
-# Merge from omni3_develop for 3.0 release.
-#
 # Revision 1.6.2.4  2000/06/26 16:23:59  djs
 # Better handling of #include'd files (via new commandline options)
 # Refactoring of configuration state mechanism.
diff -u -r omni301/src/lib/omniORB2/omniidl_be/cxx/header/marshal.py omni/src/lib/omniORB2/omniidl_be/cxx/header/marshal.py
--- omni301/src/lib/omniORB2/omniidl_be/cxx/header/marshal.py	Thu Jul 13 16:26:00 2000
+++ omni/src/lib/omniORB2/omniidl_be/cxx/header/marshal.py	Wed Apr 26 19:22:30 2000
@@ -27,11 +27,8 @@
 #   Produce the main header alignment and marshal function definitions
 #   for the C++ backend
 
-# $Id: marshal.py,v 1.7 2000/07/13 15:26:00 dpg1 Exp $
+# $Id: marshal.py,v 1.4.2.2 2000/04/26 18:22:30 djs Exp $
 # $Log: marshal.py,v $
-# Revision 1.7  2000/07/13 15:26:00  dpg1
-# Merge from omni3_develop for 3.0 release.
-#
 # Revision 1.4.2.2  2000/04/26 18:22:30  djs
 # Rewrote type mapping code (now in types.py)
 # Rewrote identifier handling code (now in id.py)
diff -u -r omni301/src/lib/omniORB2/omniidl_be/cxx/header/opers.py omni/src/lib/omniORB2/omniidl_be/cxx/header/opers.py
--- omni301/src/lib/omniORB2/omniidl_be/cxx/header/opers.py	Thu Jul 13 16:26:00 2000
+++ omni/src/lib/omniORB2/omniidl_be/cxx/header/opers.py	Mon Jun 26 17:23:59 2000
@@ -26,11 +26,8 @@
 #   
 #   Produce the main header operator definitions for the C++ backend
 
-# $Id: opers.py,v 1.10 2000/07/13 15:26:00 dpg1 Exp $
+# $Id: opers.py,v 1.7.2.4 2000/06/26 16:23:59 djs Exp $
 # $Log: opers.py,v $
-# Revision 1.10  2000/07/13 15:26:00  dpg1
-# Merge from omni3_develop for 3.0 release.
-#
 # Revision 1.7.2.4  2000/06/26 16:23:59  djs
 # Better handling of #include'd files (via new commandline options)
 # Refactoring of configuration state mechanism.
diff -u -r omni301/src/lib/omniORB2/omniidl_be/cxx/header/poa.py omni/src/lib/omniORB2/omniidl_be/cxx/header/poa.py
--- omni301/src/lib/omniORB2/omniidl_be/cxx/header/poa.py	Fri Aug 18 15:09:14 2000
+++ omni/src/lib/omniORB2/omniidl_be/cxx/header/poa.py	Mon Jul 17 10:36:40 2000
@@ -26,14 +26,8 @@
 #
 #   Produce the main header POA definitions for the C++ backend
 
-# $Id: poa.py,v 1.19 2000/08/18 14:09:14 dpg1 Exp $
+# $Id: poa.py,v 1.15.2.9 2000/07/17 09:36:40 djs Exp $
 # $Log: poa.py,v $
-# Revision 1.19  2000/08/18 14:09:14  dpg1
-# Merge from omni3_develop for 3.0.1 release.
-#
-# Revision 1.18  2000/07/13 15:26:00  dpg1
-# Merge from omni3_develop for 3.0 release.
-#
 # Revision 1.15.2.9  2000/07/17 09:36:40  djs
 # Now handles the case where an interface inherits from a typedef to another
 # interface.
diff -u -r omni301/src/lib/omniORB2/omniidl_be/cxx/header/tcstring.py omni/src/lib/omniORB2/omniidl_be/cxx/header/tcstring.py
--- omni301/src/lib/omniORB2/omniidl_be/cxx/header/tcstring.py	Thu Jul 13 16:26:00 2000
+++ omni/src/lib/omniORB2/omniidl_be/cxx/header/tcstring.py	Wed Apr 26 19:22:30 2000
@@ -26,11 +26,8 @@
 #   
 #   Produce bounded string #ifdefs for .hh 
 
-# $Id: tcstring.py,v 1.6 2000/07/13 15:26:00 dpg1 Exp $
+# $Id: tcstring.py,v 1.3.2.2 2000/04/26 18:22:30 djs Exp $
 # $Log: tcstring.py,v $
-# Revision 1.6  2000/07/13 15:26:00  dpg1
-# Merge from omni3_develop for 3.0 release.
-#
 # Revision 1.3.2.2  2000/04/26 18:22:30  djs
 # Rewrote type mapping code (now in types.py)
 # Rewrote identifier handling code (now in id.py)
diff -u -r omni301/src/lib/omniORB2/omniidl_be/cxx/header/template.py omni/src/lib/omniORB2/omniidl_be/cxx/header/template.py
--- omni301/src/lib/omniORB2/omniidl_be/cxx/header/template.py	Fri Aug 18 15:09:14 2000
+++ omni/src/lib/omniORB2/omniidl_be/cxx/header/template.py	Mon Sep 25 12:03:28 2000
@@ -26,13 +26,10 @@
 #   
 #   C++ templates for the .hh file
 
-# $Id: template.py,v 1.7 2000/08/18 14:09:14 dpg1 Exp $
+# $Id: template.py,v 1.3.2.17 2000/09/25 11:03:28 dpg1 Exp $
 # $Log: template.py,v $
-# Revision 1.7  2000/08/18 14:09:14  dpg1
-# Merge from omni3_develop for 3.0.1 release.
-#
-# Revision 1.6  2000/07/13 15:26:00  dpg1
-# Merge from omni3_develop for 3.0 release.
+# Revision 1.3.2.17  2000/09/25 11:03:28  dpg1
+# Remove use of _T as a template class name
 #
 # Revision 1.3.2.16  2000/08/10 10:38:23  sll
 # Support new pragma hh in the cxx omniidl backend.  Added CPP macro guards
@@ -1175,32 +1172,32 @@
 ## tie template
 ##
 tie_template = """\
-template <class _T>
+template <class _omniT>
 class @tie_name@ : public virtual @inherits@
 {
 public:
-  @tie_name@(_T& t)
+  @tie_name@(_omniT& t)
     : pd_obj(&t), pd_poa(0), pd_rel(0) {}
-  @tie_name@(_T& t, PortableServer::POA_ptr p)
+  @tie_name@(_omniT& t, PortableServer::POA_ptr p)
     : pd_obj(&t), pd_poa(p), pd_rel(0) {}
-  @tie_name@(_T* t, CORBA::Boolean r=1)
+  @tie_name@(_omniT* t, CORBA::Boolean r=1)
     : pd_obj(t), pd_poa(0), pd_rel(r) {}
-  @tie_name@(_T* t, PortableServer::POA_ptr p,CORBA::Boolean r=1)
+  @tie_name@(_omniT* t, PortableServer::POA_ptr p,CORBA::Boolean r=1)
     : pd_obj(t), pd_poa(p), pd_rel(r) {}
   ~@tie_name@() {
     if( pd_poa )  CORBA::release(pd_poa);
     if( pd_rel )  delete pd_obj;
   }
 
-  _T* _tied_object() { return pd_obj; }
+  _omniT* _tied_object() { return pd_obj; }
 
-  void _tied_object(_T& t) {
+  void _tied_object(_omniT& t) {
     if( pd_rel )  delete pd_obj;
     pd_obj = &t;
     pd_rel = 0;
   }
 
-  void _tied_object(_T* t, CORBA::Boolean r=1) {
+  void _tied_object(_omniT* t, CORBA::Boolean r=1) {
     if( pd_rel )  delete pd_obj;
     pd_obj = t;
     pd_rel = r;
@@ -1217,20 +1214,20 @@
   @callables@
 
 private:
-  _T*                      pd_obj;
+  _omniT*                      pd_obj;
   PortableServer::POA_ptr pd_poa;
   CORBA::Boolean          pd_rel;
 };
 """
 
 tie_template_old = """\
-template <class _T, CORBA::Boolean release>
+template <class _omniT, CORBA::Boolean release>
 class @tie_name@ : public virtual @inherits@
 {
 public:
-  @tie_name@(_T& t)
+  @tie_name@(_omniT& t)
     : pd_obj(&t), pd_rel(release) {}
-  @tie_name@(_T* t)
+  @tie_name@(_omniT* t)
     : pd_obj(t),  pd_rel(release) {}
   ~@tie_name@() {
     if( pd_rel )  delete pd_obj;
@@ -1239,7 +1236,7 @@
   @callables@
 
 private:
-  _T*                      pd_obj;
+  _omniT*                      pd_obj;
   CORBA::Boolean           pd_rel;
 };
 """
diff -u -r omni301/src/lib/omniORB2/omniidl_be/cxx/header/tie.py omni/src/lib/omniORB2/omniidl_be/cxx/header/tie.py
--- omni301/src/lib/omniORB2/omniidl_be/cxx/header/tie.py	Fri Aug 18 15:09:14 2000
+++ omni/src/lib/omniORB2/omniidl_be/cxx/header/tie.py	Mon Jul 17 10:36:40 2000
@@ -26,14 +26,8 @@
 #
 #   Produce the 'tie' templates
 #
-# $Id: tie.py,v 1.15 2000/08/18 14:09:14 dpg1 Exp $
+# $Id: tie.py,v 1.11.2.8 2000/07/17 09:36:40 djs Exp $
 # $Log: tie.py,v $
-# Revision 1.15  2000/08/18 14:09:14  dpg1
-# Merge from omni3_develop for 3.0.1 release.
-#
-# Revision 1.14  2000/07/13 15:26:00  dpg1
-# Merge from omni3_develop for 3.0 release.
-#
 # Revision 1.11.2.8  2000/07/17 09:36:40  djs
 # Now handles the case where an interface inherits from a typedef to another
 # interface.
diff -u -r omni301/src/lib/omniORB2/omniidl_be/cxx/impl/main.py omni/src/lib/omniORB2/omniidl_be/cxx/impl/main.py
--- omni301/src/lib/omniORB2/omniidl_be/cxx/impl/main.py	Thu Jul 13 16:26:00 2000
+++ omni/src/lib/omniORB2/omniidl_be/cxx/impl/main.py	Tue May 16 12:16:01 2000
@@ -26,11 +26,8 @@
 #   
 #   Produce example interface implementations
 
-# $Id: main.py,v 1.4 2000/07/13 15:26:00 dpg1 Exp $
+# $Id: main.py,v 1.1.2.5 2000/05/16 11:16:01 djs Exp $
 # $Log: main.py,v $
-# Revision 1.4  2000/07/13 15:26:00  dpg1
-# Merge from omni3_develop for 3.0 release.
-#
 # Revision 1.1.2.5  2000/05/16 11:16:01  djs
 # Updated to simplify memory management, correct errors in function prototypes,
 # add missing attribute functions and generate #warnings which the user should
diff -u -r omni301/src/lib/omniORB2/omniidl_be/cxx/impl/template.py omni/src/lib/omniORB2/omniidl_be/cxx/impl/template.py
--- omni301/src/lib/omniORB2/omniidl_be/cxx/impl/template.py	Thu Jul 13 16:25:59 2000
+++ omni/src/lib/omniORB2/omniidl_be/cxx/impl/template.py	Tue May 16 12:16:01 2000
@@ -26,11 +26,8 @@
 #   
 #   Example interface implementation templates
 
-# $Id: template.py,v 1.4 2000/07/13 15:25:59 dpg1 Exp $
+# $Id: template.py,v 1.1.2.2 2000/05/16 11:16:01 djs Exp $
 # $Log: template.py,v $
-# Revision 1.4  2000/07/13 15:25:59  dpg1
-# Merge from omni3_develop for 3.0 release.
-#
 # Revision 1.1.2.2  2000/05/16 11:16:01  djs
 # Updated to simplify memory management, correct errors in function prototypes,
 # add missing attribute functions and generate #warnings which the user should
diff -u -r omni301/src/lib/omniORB2/omniidl_be/cxx/name.py omni/src/lib/omniORB2/omniidl_be/cxx/name.py
--- omni301/src/lib/omniORB2/omniidl_be/cxx/name.py	Thu Jul 13 16:26:01 2000
+++ omni/src/lib/omniORB2/omniidl_be/cxx/name.py	Wed Apr 26 19:22:13 2000
@@ -26,11 +26,8 @@
 #   
 #   Functions relating to naming and environments etc
 
-# $Id: name.py,v 1.11 2000/07/13 15:26:01 dpg1 Exp $
+# $Id: name.py,v 1.8.2.3 2000/04/26 18:22:13 djs Exp $
 # $Log: name.py,v $
-# Revision 1.11  2000/07/13 15:26:01  dpg1
-# Merge from omni3_develop for 3.0 release.
-#
 # Revision 1.8.2.3  2000/04/26 18:22:13  djs
 # Rewrote type mapping code (now in types.py)
 # Rewrote identifier handling code (now in id.py)
diff -u -r omni301/src/lib/omniORB2/omniidl_be/cxx/skel/__init__.py omni/src/lib/omniORB2/omniidl_be/cxx/skel/__init__.py
--- omni301/src/lib/omniORB2/omniidl_be/cxx/skel/__init__.py	Thu Jul 13 16:25:59 2000
+++ omni/src/lib/omniORB2/omniidl_be/cxx/skel/__init__.py	Mon Jun 26 17:24:16 2000
@@ -26,11 +26,8 @@
 #
 #   Entrypoint to skeleton generation code
 
-# $Id: __init__.py,v 1.8 2000/07/13 15:25:59 dpg1 Exp $
+# $Id: __init__.py,v 1.5.2.4 2000/06/26 16:24:16 djs Exp $
 # $Log: __init__.py,v $
-# Revision 1.8  2000/07/13 15:25:59  dpg1
-# Merge from omni3_develop for 3.0 release.
-#
 # Revision 1.5.2.4  2000/06/26 16:24:16  djs
 # Refactoring of configuration state mechanism.
 #
diff -u -r omni301/src/lib/omniORB2/omniidl_be/cxx/skel/dispatch.py omni/src/lib/omniORB2/omniidl_be/cxx/skel/dispatch.py
--- omni301/src/lib/omniORB2/omniidl_be/cxx/skel/dispatch.py	Thu Jul 13 16:25:59 2000
+++ omni/src/lib/omniORB2/omniidl_be/cxx/skel/dispatch.py	Mon Jun 26 17:24:16 2000
@@ -26,11 +26,8 @@
 #
 #   Produce operation and attribute call dispatching code
 
-# $Id: dispatch.py,v 1.20 2000/07/13 15:25:59 dpg1 Exp $
+# $Id: dispatch.py,v 1.17.2.4 2000/06/26 16:24:16 djs Exp $
 # $Log: dispatch.py,v $
-# Revision 1.20  2000/07/13 15:25:59  dpg1
-# Merge from omni3_develop for 3.0 release.
-#
 # Revision 1.17.2.4  2000/06/26 16:24:16  djs
 # Refactoring of configuration state mechanism.
 #
diff -u -r omni301/src/lib/omniORB2/omniidl_be/cxx/skel/main.py omni/src/lib/omniORB2/omniidl_be/cxx/skel/main.py
--- omni301/src/lib/omniORB2/omniidl_be/cxx/skel/main.py	Fri Aug 18 15:09:13 2000
+++ omni/src/lib/omniORB2/omniidl_be/cxx/skel/main.py	Mon Jul 24 17:32:18 2000
@@ -26,14 +26,8 @@
 #
 #   Produce the main skeleton definitions
 
-# $Id: main.py,v 1.31 2000/08/18 14:09:13 dpg1 Exp $
+# $Id: main.py,v 1.27.2.12 2000/07/24 16:32:18 djs Exp $
 # $Log: main.py,v $
-# Revision 1.31  2000/08/18 14:09:13  dpg1
-# Merge from omni3_develop for 3.0.1 release.
-#
-# Revision 1.30  2000/07/13 15:25:59  dpg1
-# Merge from omni3_develop for 3.0 release.
-#
 # Revision 1.27.2.12  2000/07/24 16:32:18  djs
 # Fixed typo in previous BOA skeleton bugfix.
 # Suppressed compiler warning (from gcc -Wall) when encountering a call with
diff -u -r omni301/src/lib/omniORB2/omniidl_be/cxx/skel/mangler.py omni/src/lib/omniORB2/omniidl_be/cxx/skel/mangler.py
--- omni301/src/lib/omniORB2/omniidl_be/cxx/skel/mangler.py	Thu Jul 13 16:25:59 2000
+++ omni/src/lib/omniORB2/omniidl_be/cxx/skel/mangler.py	Mon Jun 26 17:24:18 2000
@@ -28,11 +28,8 @@
 #    - a python conversion of djr's o2be_name_mangle.cc
 #                             and   o2be_call_desc.cc        
 
-# $Id: mangler.py,v 1.16 2000/07/13 15:25:59 dpg1 Exp $
+# $Id: mangler.py,v 1.13.2.5 2000/06/26 16:24:18 djs Exp $
 # $Log: mangler.py,v $
-# Revision 1.16  2000/07/13 15:25:59  dpg1
-# Merge from omni3_develop for 3.0 release.
-#
 # Revision 1.13.2.5  2000/06/26 16:24:18  djs
 # Refactoring of configuration state mechanism.
 #
diff -u -r omni301/src/lib/omniORB2/omniidl_be/cxx/skel/poa.py omni/src/lib/omniORB2/omniidl_be/cxx/skel/poa.py
--- omni301/src/lib/omniORB2/omniidl_be/cxx/skel/poa.py	Thu Jul 13 16:25:59 2000
+++ omni/src/lib/omniORB2/omniidl_be/cxx/skel/poa.py	Mon Jun 26 17:24:18 2000
@@ -26,11 +26,8 @@
 #
 #   Produce the main POA skeleton definitions
 
-# $Id: poa.py,v 1.10 2000/07/13 15:25:59 dpg1 Exp $
+# $Id: poa.py,v 1.7.2.3 2000/06/26 16:24:18 djs Exp $
 # $Log: poa.py,v $
-# Revision 1.10  2000/07/13 15:25:59  dpg1
-# Merge from omni3_develop for 3.0 release.
-#
 # Revision 1.7.2.3  2000/06/26 16:24:18  djs
 # Refactoring of configuration state mechanism.
 #
diff -u -r omni301/src/lib/omniORB2/omniidl_be/cxx/skel/proxy.py omni/src/lib/omniORB2/omniidl_be/cxx/skel/proxy.py
--- omni301/src/lib/omniORB2/omniidl_be/cxx/skel/proxy.py	Thu Jul 13 16:25:59 2000
+++ omni/src/lib/omniORB2/omniidl_be/cxx/skel/proxy.py	Wed May 31 19:03:40 2000
@@ -26,11 +26,8 @@
 #
 #   Produce operation and attribute proxy call descriptors
 
-# $Id: proxy.py,v 1.18 2000/07/13 15:25:59 dpg1 Exp $
+# $Id: proxy.py,v 1.15.2.6 2000/05/31 18:03:40 djs Exp $
 # $Log: proxy.py,v $
-# Revision 1.18  2000/07/13 15:25:59  dpg1
-# Merge from omni3_develop for 3.0 release.
-#
 # Revision 1.15.2.6  2000/05/31 18:03:40  djs
 # Better output indenting (and preprocessor directives now correctly output at
 # the beginning of lines)
diff -u -r omni301/src/lib/omniORB2/omniidl_be/cxx/skel/template.py omni/src/lib/omniORB2/omniidl_be/cxx/skel/template.py
--- omni301/src/lib/omniORB2/omniidl_be/cxx/skel/template.py	Fri Aug 18 15:09:13 2000
+++ omni/src/lib/omniORB2/omniidl_be/cxx/skel/template.py	Wed Aug 30 11:14:39 2000
@@ -26,13 +26,10 @@
 #   
 #   C++ templates for the SK.cc file
 
-# $Id: template.py,v 1.5 2000/08/18 14:09:13 dpg1 Exp $
+# $Id: template.py,v 1.1.2.9 2000/08/30 10:14:39 dpg1 Exp $
 # $Log: template.py,v $
-# Revision 1.5  2000/08/18 14:09:13  dpg1
-# Merge from omni3_develop for 3.0.1 release.
-#
-# Revision 1.4  2000/07/13 15:25:59  dpg1
-# Merge from omni3_develop for 3.0 release.
+# Revision 1.1.2.9  2000/08/30 10:14:39  dpg1
+# BOA constructor with object key failed to set the key in the servant.
 #
 # Revision 1.1.2.8  2000/07/24 16:32:19  djs
 # Fixed typo in previous BOA skeleton bugfix.
@@ -344,7 +341,7 @@
 """
 
 interface_sk = """\
-@sk_fqname@::@sk_name@(const omniOrbBoaKey& k): omniOrbBoaServant(k) {}
+@sk_fqname@::@sk_name@(const omniOrbBoaKey& k) { pd_key = k; }
 
 @sk_fqname@::~@sk_name@() {}
 """
diff -u -r omni301/src/lib/omniORB2/omniidl_be/cxx/skutil.py omni/src/lib/omniORB2/omniidl_be/cxx/skutil.py
--- omni301/src/lib/omniORB2/omniidl_be/cxx/skutil.py	Fri Aug 18 15:09:15 2000
+++ omni/src/lib/omniORB2/omniidl_be/cxx/skutil.py	Wed Aug 23 16:46:27 2000
@@ -26,13 +26,11 @@
 #   
 #   Skeleton utility functions designed for the C++ backend
 
-# $Id: skutil.py,v 1.19 2000/08/18 14:09:15 dpg1 Exp $
+# $Id: skutil.py,v 1.15.2.6 2000/08/23 15:46:27 djs Exp $
 # $Log: skutil.py,v $
-# Revision 1.19  2000/08/18 14:09:15  dpg1
-# Merge from omni3_develop for 3.0.1 release.
-#
-# Revision 1.18  2000/07/13 15:26:01  dpg1
-# Merge from omni3_develop for 3.0 release.
+# Revision 1.15.2.6  2000/08/23 15:46:27  djs
+# MSVC5/6 workaround when marshalling a return value which is a
+# multidimensional array of basic things.
 #
 # Revision 1.15.2.5  2000/08/07 15:34:34  dpg1
 # Partial back-port of long long from omni3_1_develop.
@@ -156,9 +154,12 @@
     type_dims = type.dims()
     full_dims = dims + type_dims
 
-    # for some reason, a char[10][20][30] x
-    # becomes put_char_array(.... x[0][0]...)
-    zero_dims_string = "[0]" * (len(full_dims) - 1)
+    # When marshalling a multidimensional array of basic types MSVC5
+    # is unable to resolve the subscript operator overload unless we
+    # cast the index to _CORBA_ULong (exactly as specified in the template)
+    # See: testsuite/idl/bug200823.idl
+    #      include/omniORB3/templatedecls.h: _CORBA_Array_Var
+    zero_dims_string = "[(_CORBA_ULong)0]" * (len(full_dims) - 1)
 
     anonymous_array = dims      != []
     is_array        = full_dims != []
@@ -289,8 +290,7 @@
     type_dims = type.dims()
     full_dims = dims + type_dims
 
-    # for some reason, a char[10][20][30] x
-    # becomes put_char_array(.... x[0][0]...)
+    # The MSVC workaround seems not to be required in the unmarshalling case.
     zero_dims_string = "[0]" * (len(full_dims) - 1)
 
     anonymous_array = dims      != []
@@ -610,4 +610,5 @@
     raises = ex[:]
     raises.sort(lexicographic)
     return raises
+
 
diff -u -r omni301/src/lib/omniORB2/omniidl_be/cxx/support.py omni/src/lib/omniORB2/omniidl_be/cxx/support.py
--- omni301/src/lib/omniORB2/omniidl_be/cxx/support.py	Fri Aug 18 15:09:15 2000
+++ omni/src/lib/omniORB2/omniidl_be/cxx/support.py	Thu Sep 21 09:47:35 2000
@@ -42,7 +42,8 @@
 
 error_body = """\
 omniORB does not currently support:
-  IDL types longdouble, wchar, wstring, fixed, valuetypes
+  longlong, longdouble, wchar, wstring, fixed, valuetypes,
+  CORBA::Principal, abstract interfaces, native
 """
 
 def unsupportedIDL(found):
diff -u -r omni301/src/lib/omniORB2/omniidl_be/cxx/tools/genIDL omni/src/lib/omniORB2/omniidl_be/cxx/tools/genIDL
--- omni301/src/lib/omniORB2/omniidl_be/cxx/tools/genIDL	Thu Jul 13 16:25:59 2000
+++ omni/src/lib/omniORB2/omniidl_be/cxx/tools/genIDL	Mon Feb 14 18:34:53 2000
@@ -27,11 +27,8 @@
 #   
 #   Automatically produce large amounts of IDL for testing the compiler
 
-# $Id: genIDL,v 1.5 2000/07/13 15:25:59 dpg1 Exp $
+# $Id: genIDL,v 1.2.2.1 2000/02/14 18:34:53 dpg1 Exp $
 # $Log: genIDL,v $
-# Revision 1.5  2000/07/13 15:25:59  dpg1
-# Merge from omni3_develop for 3.0 release.
-#
 # Revision 1.2.2.1  2000/02/14 18:34:53  dpg1
 # New omniidl merged in.
 #
diff -u -r omni301/src/lib/omniORB2/omniidl_be/cxx/tyutil.py omni/src/lib/omniORB2/omniidl_be/cxx/tyutil.py
--- omni301/src/lib/omniORB2/omniidl_be/cxx/tyutil.py	Fri Aug 18 15:09:14 2000
+++ omni/src/lib/omniORB2/omniidl_be/cxx/tyutil.py	Mon Aug  7 16:34:34 2000
@@ -26,15 +26,8 @@
 #   
 #   General utility functions designed for the C++ backend
 
-# $Id: tyutil.py,v 1.34 2000/08/18 14:09:14 dpg1 Exp $
-# $Id: tyutil.py,v 1.34 2000/08/18 14:09:14 dpg1 Exp $
+# $Id: tyutil.py,v 1.30.2.9 2000/08/07 15:34:34 dpg1 Exp $
 # $Log: tyutil.py,v $
-# Revision 1.34  2000/08/18 14:09:14  dpg1
-# Merge from omni3_develop for 3.0.1 release.
-#
-# Revision 1.33  2000/07/13 15:26:01  dpg1
-# Merge from omni3_develop for 3.0 release.
-#
 # Revision 1.30.2.9  2000/08/07 15:34:34  dpg1
 # Partial back-port of long long from omni3_1_develop.
 #
diff -u -r omni301/src/lib/omniORB2/omniidl_be/cxx/util.py omni/src/lib/omniORB2/omniidl_be/cxx/util.py
--- omni301/src/lib/omniORB2/omniidl_be/cxx/util.py	Fri Aug 18 15:09:14 2000
+++ omni/src/lib/omniORB2/omniidl_be/cxx/util.py	Mon Aug 14 20:34:45 2000
@@ -26,14 +26,8 @@
 #   
 #   General utility functions designed for the C++ backend
 
-# $Id: util.py,v 1.16 2000/08/18 14:09:14 dpg1 Exp $
+# $Id: util.py,v 1.12.2.10 2000/08/14 19:34:45 djs Exp $
 # $Log: util.py,v $
-# Revision 1.16  2000/08/18 14:09:14  dpg1
-# Merge from omni3_develop for 3.0.1 release.
-#
-# Revision 1.15  2000/07/13 15:26:01  dpg1
-# Merge from omni3_develop for 3.0 release.
-#
 # Revision 1.12.2.10  2000/08/14 19:34:45  djs
 # Performs a quick scan of the AST looking for unsupported IDL constructs
 # before doing anything else.
diff -u -r omni301/src/lib/omniORB2/omniidl_be/showast.py omni/src/lib/omniORB2/omniidl_be/showast.py
--- omni301/src/lib/omniORB2/omniidl_be/showast.py	Thu Jul 13 16:26:02 2000
+++ omni/src/lib/omniORB2/omniidl_be/showast.py	Mon Feb 14 18:34:57 2000
@@ -27,11 +27,8 @@
 #   Simple AST dumping module for testing utility functions etc
 #   (derived from dpg1's dump.py)
 
-# $Id: showast.py,v 1.5 2000/07/13 15:26:02 dpg1 Exp $
+# $Id: showast.py,v 1.2.2.1 2000/02/14 18:34:57 dpg1 Exp $
 # $Log: showast.py,v $
-# Revision 1.5  2000/07/13 15:26:02  dpg1
-# Merge from omni3_develop for 3.0 release.
-#
 # Revision 1.2.2.1  2000/02/14 18:34:57  dpg1
 # New omniidl merged in.
 #
diff -u -r omni301/src/lib/omniORB2/orbcore/anonObject.cc omni/src/lib/omniORB2/orbcore/anonObject.cc
--- omni301/src/lib/omniORB2/orbcore/anonObject.cc	Thu Jul 13 16:25:59 2000
+++ omni/src/lib/omniORB2/orbcore/anonObject.cc	Mon Sep 27 12:01:10 1999
@@ -30,9 +30,6 @@
  
 /*
   $Log: anonObject.cc,v $
-  Revision 1.3  2000/07/13 15:25:59  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.1.2.2  1999/09/27 11:01:10  djr
   Modifications to logging.
 
diff -u -r omni301/src/lib/omniORB2/orbcore/anonObject.h omni/src/lib/omniORB2/orbcore/anonObject.h
--- omni301/src/lib/omniORB2/orbcore/anonObject.h	Thu Jul 13 16:25:59 2000
+++ omni/src/lib/omniORB2/orbcore/anonObject.h	Sat Oct 16 14:22:52 1999
@@ -30,9 +30,6 @@
  
 /*
   $Log: anonObject.h,v $
-  Revision 1.3  2000/07/13 15:25:59  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.1.2.3  1999/10/16 13:22:52  djr
   Changes to support compiling on MSVC.
 
diff -u -r omni301/src/lib/omniORB2/orbcore/callDescriptor.cc omni/src/lib/omniORB2/orbcore/callDescriptor.cc
--- omni301/src/lib/omniORB2/orbcore/callDescriptor.cc	Thu Jul 13 16:25:59 2000
+++ omni/src/lib/omniORB2/orbcore/callDescriptor.cc	Thu Jun 22 11:40:13 2000
@@ -29,9 +29,6 @@
 
 /*
  $Log: callDescriptor.cc,v $
- Revision 1.3  2000/07/13 15:25:59  dpg1
- Merge from omni3_develop for 3.0 release.
-
  Revision 1.1.2.4  2000/06/22 10:40:13  dpg1
  exception.h renamed to exceptiondefs.h to avoid name clash on some
  platforms.
diff -u -r omni301/src/lib/omniORB2/orbcore/constants.cc omni/src/lib/omniORB2/orbcore/constants.cc
--- omni301/src/lib/omniORB2/orbcore/constants.cc	Thu Jul 13 16:25:58 2000
+++ omni/src/lib/omniORB2/orbcore/constants.cc	Wed Jul 12 14:07:17 2000
@@ -29,9 +29,6 @@
 
 /*
   $Log: constants.cc,v $
-  Revision 1.16  2000/07/13 15:25:58  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.14.6.4  2000/07/12 13:07:17  dpg1
   The default corbaloc port is 2809, not 2089 as specified in the
   specification!
diff -u -r omni301/src/lib/omniORB2/orbcore/corbaBoa.cc omni/src/lib/omniORB2/orbcore/corbaBoa.cc
--- omni301/src/lib/omniORB2/orbcore/corbaBoa.cc	Fri Aug 18 15:09:13 2000
+++ omni/src/lib/omniORB2/orbcore/corbaBoa.cc	Tue Aug  8 16:01:43 2000
@@ -29,12 +29,6 @@
 
 /*
   $Log: corbaBoa.cc,v $
-  Revision 1.18  2000/08/18 14:09:13  dpg1
-  Merge from omni3_develop for 3.0.1 release.
-
-  Revision 1.17  2000/07/13 15:25:58  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.13.6.15  2000/08/08 15:01:43  dpg1
   -ORBpoa_iiop_port no longer overrides OMNIORB_USEHOSTNAME.
 
diff -u -r omni301/src/lib/omniORB2/orbcore/corbaBoa.h omni/src/lib/omniORB2/orbcore/corbaBoa.h
--- omni301/src/lib/omniORB2/orbcore/corbaBoa.h	Thu Jul 13 16:25:58 2000
+++ omni/src/lib/omniORB2/orbcore/corbaBoa.h	Fri Jun  2 15:20:15 2000
@@ -29,9 +29,6 @@
 
 /*
   $Log: corbaBoa.h,v $
-  Revision 1.3  2000/07/13 15:25:58  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.1.2.3  2000/06/02 14:20:15  dpg1
   Using boa_lock for the nil BOA's condition variable caused an
   assertion failure on exit.
diff -u -r omni301/src/lib/omniORB2/orbcore/corbaFloat.cc omni/src/lib/omniORB2/orbcore/corbaFloat.cc
--- omni301/src/lib/omniORB2/orbcore/corbaFloat.cc	Thu Jul 13 16:25:58 2000
+++ omni/src/lib/omniORB2/orbcore/corbaFloat.cc	Thu Mar 11 16:25:52 1999
@@ -30,9 +30,6 @@
 
 /* 
    $Log: corbaFloat.cc,v $
-   Revision 1.6  2000/07/13 15:25:58  dpg1
-   Merge from omni3_develop for 3.0 release.
-
    Revision 1.3  1999/03/11 16:25:52  djr
    Updated copyright notice
 
diff -u -r omni301/src/lib/omniORB2/orbcore/corbaObject.cc omni/src/lib/omniORB2/orbcore/corbaObject.cc
--- omni301/src/lib/omniORB2/orbcore/corbaObject.cc	Thu Jul 13 16:25:58 2000
+++ omni/src/lib/omniORB2/orbcore/corbaObject.cc	Thu Jun 22 11:40:14 2000
@@ -28,9 +28,6 @@
  
 /*
   $Log: corbaObject.cc,v $
-  Revision 1.21  2000/07/13 15:25:58  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.19.6.9  2000/06/22 10:40:14  dpg1
   exception.h renamed to exceptiondefs.h to avoid name clash on some
   platforms.
diff -u -r omni301/src/lib/omniORB2/orbcore/corbaOrb.cc omni/src/lib/omniORB2/orbcore/corbaOrb.cc
--- omni301/src/lib/omniORB2/orbcore/corbaOrb.cc	Fri Aug 18 15:09:13 2000
+++ omni/src/lib/omniORB2/orbcore/corbaOrb.cc	Thu Sep 21 15:22:48 2000
@@ -29,11 +29,11 @@
 
 /*
   $Log: corbaOrb.cc,v $
-  Revision 1.35  2000/08/18 14:09:13  dpg1
-  Merge from omni3_develop for 3.0.1 release.
+  Revision 1.29.6.25  2000/09/21 14:22:48  sll
+  Workaround for Sun C++ 5.0 or Forte WS 6.0 compiler bug.
 
-  Revision 1.34  2000/07/13 15:25:58  dpg1
-  Merge from omni3_develop for 3.0 release.
+  Revision 1.29.6.24  2000/08/30 15:18:44  dpg1
+  New environment variable OMNIORB_PRINCIPAL.
 
   Revision 1.29.6.23  2000/08/08 15:01:43  dpg1
   -ORBpoa_iiop_port no longer overrides OMNIORB_USEHOSTNAME.
@@ -220,6 +220,9 @@
 #define MY_ORB_ID           "omniORB3"
 #define OLD_ORB_ID          "omniORB2"
 
+#ifndef OMNIORB_PRINCIPAL_VAR
+#  define OMNIORB_PRINCIPAL_VAR "OMNIORB_PRINCIPAL"
+#endif
 
 static omniOrbORB*          the_orb              = 0;
 static int                  orb_destroyed        = 0;
@@ -299,6 +302,18 @@
 const char*
 CORBA::ORB::_PD_repoId = "IDL:omg.org/CORBA/ORB:1.0";
 
+#if defined(__sunos__) && defined(__sparc__) && __OSVERSION__ >= 5
+#if defined(__SUNPRO_CC) && __SUNPRO_CC >= 0x500
+
+#include <exception.h>
+static void omni_abort()
+{
+  abort();
+}
+
+#endif
+#endif
+
 
 CORBA::ORB_ptr
 CORBA::ORB_init(int& argc, char** argv, const char* orb_identifier)
@@ -359,6 +374,18 @@
     OMNIORB_THROW(INITIALIZE,0,CORBA::COMPLETED_NO);
   }
 
+#if defined(__sunos__) && defined(__sparc__) && __OSVERSION__ >= 5
+#if defined(__SUNPRO_CC) && __SUNPRO_CC >= 0x500
+  // Sun C++ 5.0 or Forte C++ 6.0 generated code will segv occasionally
+  // when concurrent threads throw an exception. The stack trace points
+  // to a problem in the exception unwinding. The workaround seems to be
+  // to install explicitly an uncaught exception handler, which is what
+  // we do here.
+  set_terminate(omni_abort);
+#endif
+#endif
+
+
   the_orb = new omniOrbORB(0);
   the_orb->_NP_incrRefCount();
   return the_orb;
@@ -1294,8 +1321,19 @@
   void attach() {
 
     // myPrincipalID, to be used in the principal field of IIOP calls
-    CORBA::ULong l = strlen("nobody")+1;
-    CORBA::Octet *p = (CORBA::Octet *) "nobody";
+
+    CORBA::ULong  l;
+    CORBA::Octet* p;
+
+    char* env = getenv(OMNIORB_PRINCIPAL_VAR);
+    if (env) {
+      l = strlen(env) + 1;
+      p = (CORBA::Octet*)env;
+    }
+    else {
+      l = strlen("nobody")+1;
+      p = (CORBA::Octet *) "nobody";
+    }
     omni::myPrincipalID.length(l);
     unsigned int i;
     for (i=0; i < l; i++) {
diff -u -r omni301/src/lib/omniORB2/orbcore/corbaOrb.h omni/src/lib/omniORB2/orbcore/corbaOrb.h
--- omni301/src/lib/omniORB2/orbcore/corbaOrb.h	Thu Jul 13 16:25:58 2000
+++ omni/src/lib/omniORB2/orbcore/corbaOrb.h	Fri Feb  4 18:11:02 2000
@@ -29,9 +29,6 @@
 
 /*
   $Log: corbaOrb.h,v $
-  Revision 1.3  2000/07/13 15:25:58  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.1.2.3  2000/02/04 18:11:02  djr
   Minor mods for IRIX (casting pointers to ulong instead of int).
 
diff -u -r omni301/src/lib/omniORB2/orbcore/corbaString.cc omni/src/lib/omniORB2/orbcore/corbaString.cc
--- omni301/src/lib/omniORB2/orbcore/corbaString.cc	Thu Jul 13 16:25:58 2000
+++ omni/src/lib/omniORB2/orbcore/corbaString.cc	Tue Jun 27 17:15:10 2000
@@ -29,9 +29,6 @@
 
 /*
   $Log: corbaString.cc,v $
-  Revision 1.18  2000/07/13 15:25:58  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.14.6.6  2000/06/27 16:15:10  sll
   New classes: _CORBA_String_element, _CORBA_ObjRef_Element,
   _CORBA_ObjRef_tcDesc_arg to support assignment to an element of a
diff -u -r omni301/src/lib/omniORB2/orbcore/dynamicLib.cc omni/src/lib/omniORB2/orbcore/dynamicLib.cc
--- omni301/src/lib/omniORB2/orbcore/dynamicLib.cc	Thu Jul 13 16:25:58 2000
+++ omni/src/lib/omniORB2/orbcore/dynamicLib.cc	Thu Jun 22 11:40:14 2000
@@ -29,9 +29,6 @@
 
 /*
   $Log: dynamicLib.cc,v $
-  Revision 1.3  2000/07/13 15:25:58  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.1.2.4  2000/06/22 10:40:14  dpg1
   exception.h renamed to exceptiondefs.h to avoid name clash on some
   platforms.
diff -u -r omni301/src/lib/omniORB2/orbcore/excepthandler.h omni/src/lib/omniORB2/orbcore/excepthandler.h
--- omni301/src/lib/omniORB2/orbcore/excepthandler.h	Thu Jul 13 16:25:58 2000
+++ omni/src/lib/omniORB2/orbcore/excepthandler.h	Wed Sep 22 15:26:48 1999
@@ -28,9 +28,6 @@
 
 /*
   $Log: excepthandler.h,v $
-  Revision 1.4  2000/07/13 15:25:58  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.2.8.1  1999/09/22 14:26:48  djr
   Major rewrite of orbcore to support POA.
 
diff -u -r omni301/src/lib/omniORB2/orbcore/exception.cc omni/src/lib/omniORB2/orbcore/exception.cc
--- omni301/src/lib/omniORB2/orbcore/exception.cc	Thu Jul 13 16:25:58 2000
+++ omni/src/lib/omniORB2/orbcore/exception.cc	Thu Jun 22 11:40:14 2000
@@ -28,9 +28,6 @@
 
 /*
   $Log: exception.cc,v $
-  Revision 1.11  2000/07/13 15:25:58  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.9.6.5  2000/06/22 10:40:14  dpg1
   exception.h renamed to exceptiondefs.h to avoid name clash on some
   platforms.
diff -u -r omni301/src/lib/omniORB2/orbcore/giopClient.cc omni/src/lib/omniORB2/orbcore/giopClient.cc
--- omni301/src/lib/omniORB2/orbcore/giopClient.cc	Thu Jul 13 16:25:57 2000
+++ omni/src/lib/omniORB2/orbcore/giopClient.cc	Thu Jun 22 11:37:50 2000
@@ -29,9 +29,6 @@
  
 /*
   $Log: giopClient.cc,v $
-  Revision 1.14  2000/07/13 15:25:57  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.12.6.4  2000/06/22 10:37:50  dpg1
   Transport code now throws omniConnectionBroken exception rather than
   CORBA::COMM_FAILURE when things go wrong. This allows the invocation
diff -u -r omni301/src/lib/omniORB2/orbcore/giopServer.cc omni/src/lib/omniORB2/orbcore/giopServer.cc
--- omni301/src/lib/omniORB2/orbcore/giopServer.cc	Fri Aug 18 15:09:13 2000
+++ omni/src/lib/omniORB2/orbcore/giopServer.cc	Fri Aug 18 13:14:19 2000
@@ -29,12 +29,6 @@
  
 /*
   $Log: giopServer.cc,v $
-  Revision 1.24  2000/08/18 14:09:13  dpg1
-  Merge from omni3_develop for 3.0.1 release.
-
-  Revision 1.23  2000/07/13 15:25:57  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.21.6.12  2000/08/18 12:14:19  dme
   Allow replacement of proxyObjectFactories
   Don't mask omniORB::fatalException on server side
diff -u -r omni301/src/lib/omniORB2/orbcore/initFile.cc omni/src/lib/omniORB2/orbcore/initFile.cc
--- omni301/src/lib/omniORB2/orbcore/initFile.cc	Fri Aug 18 15:09:13 2000
+++ omni/src/lib/omniORB2/orbcore/initFile.cc	Fri Jul 21 11:03:09 2000
@@ -29,12 +29,6 @@
 
 /*
   $Log: initFile.cc,v $
-  Revision 1.34  2000/08/18 14:09:13  dpg1
-  Merge from omni3_develop for 3.0.1 release.
-
-  Revision 1.33  2000/07/13 15:25:57  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.30.6.10  2000/07/21 10:03:09  dpg1
   String_var copy initialisations changed to direct initialisations.
 
diff -u -r omni301/src/lib/omniORB2/orbcore/initFile.h omni/src/lib/omniORB2/orbcore/initFile.h
--- omni301/src/lib/omniORB2/orbcore/initFile.h	Thu Jul 13 16:25:57 2000
+++ omni/src/lib/omniORB2/orbcore/initFile.h	Wed May 24 18:21:07 2000
@@ -29,9 +29,6 @@
 
 /*
   $Log: initFile.h,v $
-  Revision 1.11  2000/07/13 15:25:57  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.9.8.2  2000/05/24 17:21:07  dpg1
   Fix const-correctness in error functions
 
diff -u -r omni301/src/lib/omniORB2/orbcore/initRefs.cc omni/src/lib/omniORB2/orbcore/initRefs.cc
--- omni301/src/lib/omniORB2/orbcore/initRefs.cc	Thu Jul 13 16:25:57 2000
+++ omni/src/lib/omniORB2/orbcore/initRefs.cc	Mon Sep  4 10:09:43 2000
@@ -27,12 +27,10 @@
 //	*** PROPRIETARY INTERFACE ***
 //	
 
-#include <iostream.h>
-
 /*
   $Log: initRefs.cc,v $
-  Revision 1.3  2000/07/13 15:25:57  dpg1
-  Merge from omni3_develop for 3.0 release.
+  Revision 1.1.2.6  2000/09/04 09:09:43  dpg1
+  Remove #include <iostream.h> accidentally left over from debugging.
 
   Revision 1.1.2.5  2000/06/30 14:12:07  dpg1
   Minor fixes for FreeBSD.
diff -u -r omni301/src/lib/omniORB2/orbcore/ior.cc omni/src/lib/omniORB2/orbcore/ior.cc
--- omni301/src/lib/omniORB2/orbcore/ior.cc	Thu Jul 13 16:25:57 2000
+++ omni/src/lib/omniORB2/orbcore/ior.cc	Thu Jun 22 11:40:15 2000
@@ -29,9 +29,6 @@
  
 /*
   $Log: ior.cc,v $
-  Revision 1.11  2000/07/13 15:25:57  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.9.6.5  2000/06/22 10:40:15  dpg1
   exception.h renamed to exceptiondefs.h to avoid name clash on some
   platforms.
diff -u -r omni301/src/lib/omniORB2/orbcore/libcWrapper.cc omni/src/lib/omniORB2/orbcore/libcWrapper.cc
--- omni301/src/lib/omniORB2/orbcore/libcWrapper.cc	Thu Jul 13 16:25:57 2000
+++ omni/src/lib/omniORB2/orbcore/libcWrapper.cc	Wed Sep 22 15:26:51 1999
@@ -29,9 +29,6 @@
 
 /*
   $Log: libcWrapper.cc,v $
-  Revision 1.20  2000/07/13 15:25:57  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.18.6.1  1999/09/22 14:26:51  djr
   Major rewrite of orbcore to support POA.
 
diff -u -r omni301/src/lib/omniORB2/orbcore/libcWrapper.h omni/src/lib/omniORB2/orbcore/libcWrapper.h
--- omni301/src/lib/omniORB2/orbcore/libcWrapper.h	Thu Jul 13 16:25:57 2000
+++ omni/src/lib/omniORB2/orbcore/libcWrapper.h	Wed Sep 22 15:26:52 1999
@@ -29,9 +29,6 @@
 
 /*
   $Log: libcWrapper.h,v $
-  Revision 1.8  2000/07/13 15:25:57  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.6.8.1  1999/09/22 14:26:52  djr
   Major rewrite of orbcore to support POA.
 
diff -u -r omni301/src/lib/omniORB2/orbcore/localIdentity.cc omni/src/lib/omniORB2/orbcore/localIdentity.cc
--- omni301/src/lib/omniORB2/orbcore/localIdentity.cc	Thu Jul 13 16:25:57 2000
+++ omni/src/lib/omniORB2/orbcore/localIdentity.cc	Thu Jun 22 11:40:15 2000
@@ -28,9 +28,6 @@
 
 /*
   $Log: localIdentity.cc,v $
-  Revision 1.3  2000/07/13 15:25:57  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.1.2.5  2000/06/22 10:40:15  dpg1
   exception.h renamed to exceptiondefs.h to avoid name clash on some
   platforms.
diff -u -r omni301/src/lib/omniORB2/orbcore/localIdentity.h omni/src/lib/omniORB2/orbcore/localIdentity.h
--- omni301/src/lib/omniORB2/orbcore/localIdentity.h	Thu Jul 13 16:25:57 2000
+++ omni/src/lib/omniORB2/orbcore/localIdentity.h	Fri Jun  2 17:09:59 2000
@@ -29,9 +29,6 @@
  
 /*
   $Log: localIdentity.h,v $
-  Revision 1.3  2000/07/13 15:25:57  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.1.2.3  2000/06/02 16:09:59  dpg1
   If an object is deactivated while its POA is in the HOLDING state,
   clients which were held now receive a TRANSIENT exception when the POA
diff -u -r omni301/src/lib/omniORB2/orbcore/logIOstream.cc omni/src/lib/omniORB2/orbcore/logIOstream.cc
--- omni301/src/lib/omniORB2/orbcore/logIOstream.cc	Fri Aug 18 15:09:13 2000
+++ omni/src/lib/omniORB2/orbcore/logIOstream.cc	Mon Aug  7 16:34:35 2000
@@ -28,12 +28,6 @@
  
 /*
   $Log: logIOstream.cc,v $
-  Revision 1.10  2000/08/18 14:09:13  dpg1
-  Merge from omni3_develop for 3.0.1 release.
-
-  Revision 1.9  2000/07/13 15:25:57  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.7.6.3  2000/08/07 15:34:35  dpg1
   Partial back-port of long long from omni3_1_develop.
 
diff -u -r omni301/src/lib/omniORB2/orbcore/mbufferedStream.cc omni/src/lib/omniORB2/orbcore/mbufferedStream.cc
--- omni301/src/lib/omniORB2/orbcore/mbufferedStream.cc	Thu Jul 13 16:25:57 2000
+++ omni/src/lib/omniORB2/orbcore/mbufferedStream.cc	Thu Jun 22 11:40:15 2000
@@ -29,9 +29,6 @@
 
 /*
   $Log: mbufferedStream.cc,v $
-  Revision 1.11  2000/07/13 15:25:57  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.9.6.3  2000/06/22 10:40:15  dpg1
   exception.h renamed to exceptiondefs.h to avoid name clash on some
   platforms.
diff -u -r omni301/src/lib/omniORB2/orbcore/nbufferedStream.cc omni/src/lib/omniORB2/orbcore/nbufferedStream.cc
--- omni301/src/lib/omniORB2/orbcore/nbufferedStream.cc	Thu Jul 13 16:25:57 2000
+++ omni/src/lib/omniORB2/orbcore/nbufferedStream.cc	Thu Jun 22 11:40:15 2000
@@ -29,9 +29,6 @@
 
 /*
   $Log: nbufferedStream.cc,v $
-  Revision 1.14  2000/07/13 15:25:57  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.12.6.3  2000/06/22 10:40:15  dpg1
   exception.h renamed to exceptiondefs.h to avoid name clash on some
   platforms.
diff -u -r omni301/src/lib/omniORB2/orbcore/objectAdapter.cc omni/src/lib/omniORB2/orbcore/objectAdapter.cc
--- omni301/src/lib/omniORB2/orbcore/objectAdapter.cc	Fri Aug 18 15:09:13 2000
+++ omni/src/lib/omniORB2/orbcore/objectAdapter.cc	Tue Aug 22 15:57:46 2000
@@ -28,11 +28,9 @@
 
 /*
  $Log: objectAdapter.cc,v $
- Revision 1.4  2000/08/18 14:09:13  dpg1
- Merge from omni3_develop for 3.0.1 release.
-
- Revision 1.3  2000/07/13 15:25:57  dpg1
- Merge from omni3_develop for 3.0 release.
+ Revision 1.1.2.10  2000/08/22 14:57:46  sll
+ In omniObjAdaptor::initialise, throw CORBA::INITIALIZE instead of allowing
+ omniConnectionBroken to leak out of the ORB APIs.
 
  Revision 1.1.2.9  2000/08/08 15:01:44  dpg1
  -ORBpoa_iiop_port no longer overrides OMNIORB_USEHOSTNAME.
@@ -181,7 +179,7 @@
       omniInitialReferences::initialise_bootstrap_agentImpl();
   }
   catch (...) {
-    throw;//?? hmm - this is probably quite bad.
+    OMNIORB_THROW(INITIALIZE,0,CORBA::COMPLETED_NO);
   }
 
   initialised = 1;
diff -u -r omni301/src/lib/omniORB2/orbcore/objectAdapter.h omni/src/lib/omniORB2/orbcore/objectAdapter.h
--- omni301/src/lib/omniORB2/orbcore/objectAdapter.h	Fri Aug 18 15:09:12 2000
+++ omni/src/lib/omniORB2/orbcore/objectAdapter.h	Tue Aug  8 16:01:44 2000
@@ -28,12 +28,6 @@
 
 /*
  $Log: objectAdapter.h,v $
- Revision 1.4  2000/08/18 14:09:12  dpg1
- Merge from omni3_develop for 3.0.1 release.
-
- Revision 1.3  2000/07/13 15:25:56  dpg1
- Merge from omni3_develop for 3.0 release.
-
  Revision 1.1.2.4  2000/08/08 15:01:44  dpg1
  -ORBpoa_iiop_port no longer overrides OMNIORB_USEHOSTNAME.
 
diff -u -r omni301/src/lib/omniORB2/orbcore/omniInternal.cc omni/src/lib/omniORB2/orbcore/omniInternal.cc
--- omni301/src/lib/omniORB2/orbcore/omniInternal.cc	Fri Aug 18 15:09:12 2000
+++ omni/src/lib/omniORB2/orbcore/omniInternal.cc	Fri Jul 21 16:35:47 2000
@@ -29,12 +29,6 @@
  
 /*
   $Log: omniInternal.cc,v $
-  Revision 1.4  2000/08/18 14:09:12  dpg1
-  Merge from omni3_develop for 3.0.1 release.
-
-  Revision 1.3  2000/07/13 15:25:56  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.1.2.16  2000/07/21 15:35:47  dpg1
   Incorrectly rejected object references with incompatible target and
   most-derived repoIds.
diff -u -r omni301/src/lib/omniORB2/orbcore/omniORB.cc omni/src/lib/omniORB2/orbcore/omniORB.cc
--- omni301/src/lib/omniORB2/orbcore/omniORB.cc	Thu Jul 13 16:25:56 2000
+++ omni/src/lib/omniORB2/orbcore/omniORB.cc	Thu Jun 22 11:40:16 2000
@@ -28,9 +28,6 @@
 
 /*
   $Log: omniORB.cc,v $
-  Revision 1.3  2000/07/13 15:25:56  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.1.2.5  2000/06/22 10:40:16  dpg1
   exception.h renamed to exceptiondefs.h to avoid name clash on some
   platforms.
diff -u -r omni301/src/lib/omniORB2/orbcore/omniObjRef.cc omni/src/lib/omniORB2/orbcore/omniObjRef.cc
--- omni301/src/lib/omniORB2/orbcore/omniObjRef.cc	Thu Jul 13 16:25:56 2000
+++ omni/src/lib/omniORB2/orbcore/omniObjRef.cc	Thu Jun 22 11:40:16 2000
@@ -28,9 +28,6 @@
 
 /*
   $Log: omniObjRef.cc,v $
-  Revision 1.3  2000/07/13 15:25:56  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.1.2.6  2000/06/22 10:40:16  dpg1
   exception.h renamed to exceptiondefs.h to avoid name clash on some
   platforms.
diff -u -r omni301/src/lib/omniORB2/orbcore/omniServant.cc omni/src/lib/omniORB2/orbcore/omniServant.cc
--- omni301/src/lib/omniORB2/orbcore/omniServant.cc	Thu Jul 13 16:25:56 2000
+++ omni/src/lib/omniORB2/orbcore/omniServant.cc	Wed Sep 13 15:03:05 2000
@@ -29,8 +29,8 @@
 
 /*
   $Log: omniServant.cc,v $
-  Revision 1.3  2000/07/13 15:25:56  dpg1
-  Merge from omni3_develop for 3.0 release.
+  Revision 1.1.2.6  2000/09/13 14:03:05  djr
+  Gotten rid of misguided printing of repo id in ~omniServant().
 
   Revision 1.1.2.5  2000/06/22 10:40:16  dpg1
   exception.h renamed to exceptiondefs.h to avoid name clash on some
@@ -65,8 +65,7 @@
 {
   if( pd_identities ) {
     omniORB::logger l;
-    l << "ERROR -- A servant has been deleted that is still activated.\n"
-      " repo id: " << _mostDerivedRepoId() << "\n";
+    l << "ERROR -- A servant has been deleted that is still activated.\n";
 
     omni::internalLock->lock();
     omniLocalIdentity* id = pd_identities;
diff -u -r omni301/src/lib/omniORB2/orbcore/poa.cc omni/src/lib/omniORB2/orbcore/poa.cc
--- omni301/src/lib/omniORB2/orbcore/poa.cc	Thu Jul 13 16:25:56 2000
+++ omni/src/lib/omniORB2/orbcore/poa.cc	Thu Jun 22 11:40:16 2000
@@ -29,9 +29,6 @@
 
 /*
   $Log: poa.cc,v $
-  Revision 1.3  2000/07/13 15:25:56  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.1.2.21  2000/06/22 10:40:16  dpg1
   exception.h renamed to exceptiondefs.h to avoid name clash on some
   platforms.
diff -u -r omni301/src/lib/omniORB2/orbcore/poaimpl.h omni/src/lib/omniORB2/orbcore/poaimpl.h
--- omni301/src/lib/omniORB2/orbcore/poaimpl.h	Thu Jul 13 16:25:56 2000
+++ omni/src/lib/omniORB2/orbcore/poaimpl.h	Fri Jun  2 17:09:59 2000
@@ -29,9 +29,6 @@
 
 /*
   $Log: poaimpl.h,v $
-  Revision 1.3  2000/07/13 15:25:56  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.1.2.8  2000/06/02 16:09:59  dpg1
   If an object is deactivated while its POA is in the HOLDING state,
   clients which were held now receive a TRANSIENT exception when the POA
diff -u -r omni301/src/lib/omniORB2/orbcore/poamanager.cc omni/src/lib/omniORB2/orbcore/poamanager.cc
--- omni301/src/lib/omniORB2/orbcore/poamanager.cc	Thu Jul 13 16:25:56 2000
+++ omni/src/lib/omniORB2/orbcore/poamanager.cc	Tue Sep 19 10:12:58 2000
@@ -29,8 +29,8 @@
 
 /*
   $Log: poamanager.cc,v $
-  Revision 1.3  2000/07/13 15:25:56  dpg1
-  Merge from omni3_develop for 3.0 release.
+  Revision 1.1.2.8  2000/09/19 09:12:58  dpg1
+  Cast to wrong type in _ptrToObjRef()
 
   Revision 1.1.2.7  2000/06/22 10:40:17  dpg1
   exception.h renamed to exceptiondefs.h to avoid name clash on some
@@ -294,7 +294,7 @@
   if( !strcmp(repoId, CORBA::Object::_PD_repoId) )
     return (CORBA::Object_ptr) this;
   if( !strcmp(repoId, PortableServer::POAManager::_PD_repoId) )
-    return (PortableServer::POA_ptr) this;
+    return (PortableServer::POAManager_ptr) this;
 
   return 0;
 }
diff -u -r omni301/src/lib/omniORB2/orbcore/poamanager.h omni/src/lib/omniORB2/orbcore/poamanager.h
--- omni301/src/lib/omniORB2/orbcore/poamanager.h	Thu Jul 13 16:25:56 2000
+++ omni/src/lib/omniORB2/orbcore/poamanager.h	Thu Jan 27 10:55:47 2000
@@ -29,9 +29,6 @@
 
 /*
   $Log: poamanager.h,v $
-  Revision 1.3  2000/07/13 15:25:56  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.1.2.4  2000/01/27 10:55:47  djr
   Mods needed for powerpc_aix.  New macro OMNIORB_BASE_CTOR to provide
   fqname for base class constructor for some compilers.
diff -u -r omni301/src/lib/omniORB2/orbcore/poastubs.cc omni/src/lib/omniORB2/orbcore/poastubs.cc
--- omni301/src/lib/omniORB2/orbcore/poastubs.cc	Thu Jul 13 16:25:56 2000
+++ omni/src/lib/omniORB2/orbcore/poastubs.cc	Thu Jan 27 10:55:47 2000
@@ -28,9 +28,6 @@
  
 /*
   $Log: poastubs.cc,v $
-  Revision 1.3  2000/07/13 15:25:56  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.1.2.5  2000/01/27 10:55:47  djr
   Mods needed for powerpc_aix.  New macro OMNIORB_BASE_CTOR to provide
   fqname for base class constructor for some compilers.
diff -u -r omni301/src/lib/omniORB2/orbcore/policy.cc omni/src/lib/omniORB2/orbcore/policy.cc
--- omni301/src/lib/omniORB2/orbcore/policy.cc	Thu Jul 13 16:25:55 2000
+++ omni/src/lib/omniORB2/orbcore/policy.cc	Thu Jan 20 11:51:38 2000
@@ -29,9 +29,6 @@
  
 /*
   $Log: policy.cc,v $
-  Revision 1.4  2000/07/13 15:25:55  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.2.6.7  2000/01/20 11:51:38  djr
   (Most) Pseudo objects now used omni::poRcLock for ref counting.
   New assertion check OMNI_USER_CHECK.
diff -u -r omni301/src/lib/omniORB2/orbcore/portableserver.cc omni/src/lib/omniORB2/orbcore/portableserver.cc
--- omni301/src/lib/omniORB2/orbcore/portableserver.cc	Thu Jul 13 16:25:55 2000
+++ omni/src/lib/omniORB2/orbcore/portableserver.cc	Thu Sep 21 12:08:18 2000
@@ -26,11 +26,12 @@
 // Description:
 //    Misc code from PortableServer module.
 //
- 
+
 /*
   $Log: portableserver.cc,v $
-  Revision 1.3  2000/07/13 15:25:55  dpg1
-  Merge from omni3_develop for 3.0 release.
+  Revision 1.1.2.11  2000/09/21 11:08:18  dpg1
+  Add a user check to RefCountServantBase::_add_ref() which complains if
+  it is called when the reference count is zero.
 
   Revision 1.1.2.10  2000/06/27 16:23:25  sll
   Merged OpenVMS port.
@@ -303,6 +304,13 @@
 PortableServer::RefCountServantBase::_add_ref()
 {
   ref_count_lock.lock();
+  // If the reference count is 0, then the object is either in the
+  // process of being deleted by _remove_ref, or has already been
+  // deleted. It is too late to be trying to _add_ref now. If the
+  // reference count is less than zero, then _remove_ref has been
+  // called too many times.
+  OMNIORB_USER_CHECK(pd_refCount > 0);
+
   pd_refCount++;
   ref_count_lock.unlock();
 }
diff -u -r omni301/src/lib/omniORB2/orbcore/proxyFactory.cc omni/src/lib/omniORB2/orbcore/proxyFactory.cc
--- omni301/src/lib/omniORB2/orbcore/proxyFactory.cc	Fri Aug 18 15:09:12 2000
+++ omni/src/lib/omniORB2/orbcore/proxyFactory.cc	Fri Aug 18 13:14:20 2000
@@ -29,12 +29,6 @@
 
 /*
   $Log: proxyFactory.cc,v $
-  Revision 1.4  2000/08/18 14:09:12  dpg1
-  Merge from omni3_develop for 3.0.1 release.
-
-  Revision 1.3  2000/07/13 15:25:55  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.1.2.2  2000/08/18 12:14:20  dme
   Allow replacement of proxyObjectFactories
   Don't mask omniORB::fatalException on server side
diff -u -r omni301/src/lib/omniORB2/orbcore/relStream.cc omni/src/lib/omniORB2/orbcore/relStream.cc
--- omni301/src/lib/omniORB2/orbcore/relStream.cc	Thu Jul 13 16:25:55 2000
+++ omni/src/lib/omniORB2/orbcore/relStream.cc	Thu Jun 22 11:40:17 2000
@@ -28,9 +28,6 @@
 
 /*
   $Log: relStream.cc,v $
-  Revision 1.5  2000/07/13 15:25:55  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.3.8.5  2000/06/22 10:40:17  dpg1
   exception.h renamed to exceptiondefs.h to avoid name clash on some
   platforms.
diff -u -r omni301/src/lib/omniORB2/orbcore/relStream.h omni/src/lib/omniORB2/orbcore/relStream.h
--- omni301/src/lib/omniORB2/orbcore/relStream.h	Thu Jul 13 16:25:55 2000
+++ omni/src/lib/omniORB2/orbcore/relStream.h	Fri Jan 28 15:57:09 2000
@@ -29,9 +29,6 @@
 
 /*
  $Log: relStream.h,v $
- Revision 1.5  2000/07/13 15:25:55  dpg1
- Merge from omni3_develop for 3.0 release.
-
  Revision 1.2.8.3  2000/01/28 15:57:09  djr
  Removed superflouous ref counting in Strand_iterator.
  Removed flags to indicate that Ropes and Strands are heap allocated.
diff -u -r omni301/src/lib/omniORB2/orbcore/remoteIdentity.cc omni/src/lib/omniORB2/orbcore/remoteIdentity.cc
--- omni301/src/lib/omniORB2/orbcore/remoteIdentity.cc	Thu Jul 13 16:25:55 2000
+++ omni/src/lib/omniORB2/orbcore/remoteIdentity.cc	Thu Jun 22 11:37:50 2000
@@ -28,9 +28,6 @@
 
 /*
   $Log: remoteIdentity.cc,v $
-  Revision 1.3  2000/07/13 15:25:55  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.1.2.5  2000/06/22 10:37:50  dpg1
   Transport code now throws omniConnectionBroken exception rather than
   CORBA::COMM_FAILURE when things go wrong. This allows the invocation
diff -u -r omni301/src/lib/omniORB2/orbcore/ropeFactory.cc omni/src/lib/omniORB2/orbcore/ropeFactory.cc
--- omni301/src/lib/omniORB2/orbcore/ropeFactory.cc	Thu Jul 13 16:25:55 2000
+++ omni/src/lib/omniORB2/orbcore/ropeFactory.cc	Tue Jun 27 16:40:58 2000
@@ -28,9 +28,6 @@
 
 /*
  $Log: ropeFactory.cc,v $
- Revision 1.12  2000/07/13 15:25:55  dpg1
- Merge from omni3_develop for 3.0 release.
-
  Revision 1.9.6.3  2000/06/27 15:40:58  sll
  Workaround for Cygnus gcc's inability to recognise _CORBA_Octet*& and
  CORBA::Octet*& are the same type.
diff -u -r omni301/src/lib/omniORB2/orbcore/ropeFactory.h omni/src/lib/omniORB2/orbcore/ropeFactory.h
--- omni301/src/lib/omniORB2/orbcore/ropeFactory.h	Thu Jul 13 16:25:55 2000
+++ omni/src/lib/omniORB2/orbcore/ropeFactory.h	Wed Sep 22 15:27:07 1999
@@ -29,9 +29,6 @@
 
 /*
  $Log: ropeFactory.h,v $
- Revision 1.9  2000/07/13 15:25:55  dpg1
- Merge from omni3_develop for 3.0 release.
-
  Revision 1.7.6.1  1999/09/22 14:27:07  djr
  Major rewrite of orbcore to support POA.
 
diff -u -r omni301/src/lib/omniORB2/orbcore/scavenger.cc omni/src/lib/omniORB2/orbcore/scavenger.cc
--- omni301/src/lib/omniORB2/orbcore/scavenger.cc	Thu Jul 13 16:25:55 2000
+++ omni/src/lib/omniORB2/orbcore/scavenger.cc	Fri Jan  7 14:51:14 2000
@@ -28,9 +28,6 @@
  
 /*
   $Log: scavenger.cc,v $
-  Revision 1.16  2000/07/13 15:25:55  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.10.6.4  2000/01/07 14:51:14  djr
   Call timeouts are now disabled by default.
 
diff -u -r omni301/src/lib/omniORB2/orbcore/scavenger.h omni/src/lib/omniORB2/orbcore/scavenger.h
--- omni301/src/lib/omniORB2/orbcore/scavenger.h	Thu Jul 13 16:25:55 2000
+++ omni/src/lib/omniORB2/orbcore/scavenger.h	Fri Sep 24 16:01:37 1999
@@ -28,9 +28,6 @@
 
 /*
   $Log: scavenger.h,v $
-  Revision 1.6  2000/07/13 15:25:55  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.3.6.2  1999/09/24 15:01:37  djr
   Added module initialisers, and sll's new scavenger implementation.
 
diff -u -r omni301/src/lib/omniORB2/orbcore/sharedlib/dir.mk omni/src/lib/omniORB2/orbcore/sharedlib/dir.mk
--- omni301/src/lib/omniORB2/orbcore/sharedlib/dir.mk	Thu Jul 13 16:25:54 2000
+++ omni/src/lib/omniORB2/orbcore/sharedlib/dir.mk	Tue Sep 19 10:13:33 2000
@@ -292,7 +292,8 @@
          if expr "$$arg" : "-L" >/dev/null; then \
                rpath="$$rpath$${rpath+:}`expr $$arg : '-L\(.*\)'"; \
          fi; \
-         done; \set -x; \
+         done; \
+         set -x; \
          $(RM) $@; \
          ld -shared -soname $(soname) -set_version $(soname) -o $@ $(IMPORT_LIBRARY_FLAGS) \
          -expect_unresolved denyFile__10gateKeeper \
diff -u -r omni301/src/lib/omniORB2/orbcore/strand.cc omni/src/lib/omniORB2/orbcore/strand.cc
--- omni301/src/lib/omniORB2/orbcore/strand.cc	Thu Jul 13 16:25:55 2000
+++ omni/src/lib/omniORB2/orbcore/strand.cc	Thu Jun 22 11:37:50 2000
@@ -29,9 +29,6 @@
 
 /*
   $Log: strand.cc,v $
-  Revision 1.15  2000/07/13 15:25:55  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.10.6.9  2000/06/22 10:37:50  dpg1
   Transport code now throws omniConnectionBroken exception rather than
   CORBA::COMM_FAILURE when things go wrong. This allows the invocation
diff -u -r omni301/src/lib/omniORB2/orbcore/taskqueue.cc omni/src/lib/omniORB2/orbcore/taskqueue.cc
--- omni301/src/lib/omniORB2/orbcore/taskqueue.cc	Thu Jul 13 16:25:55 2000
+++ omni/src/lib/omniORB2/orbcore/taskqueue.cc	Mon Feb  7 15:26:59 2000
@@ -28,9 +28,6 @@
 
 /*
   $Log: taskqueue.cc,v $
-  Revision 1.3  2000/07/13 15:25:55  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.1.2.2  2000/02/07 15:26:59  dpg1
   Spurious \r characters removed.
 
diff -u -r omni301/src/lib/omniORB2/orbcore/taskqueue.h omni/src/lib/omniORB2/orbcore/taskqueue.h
--- omni301/src/lib/omniORB2/orbcore/taskqueue.h	Thu Jul 13 16:25:55 2000
+++ omni/src/lib/omniORB2/orbcore/taskqueue.h	Mon Feb  7 15:26:59 2000
@@ -28,9 +28,6 @@
 
 /*
   $Log: taskqueue.h,v $
-  Revision 1.3  2000/07/13 15:25:55  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.1.2.2  2000/02/07 15:26:59  dpg1
   Spurious \r characters removed.
 
diff -u -r omni301/src/lib/omniORB2/orbcore/tcpSocket.cc omni/src/lib/omniORB2/orbcore/tcpSocket.cc
--- omni301/src/lib/omniORB2/orbcore/tcpSocket.cc	Thu Jul 13 16:25:55 2000
+++ omni/src/lib/omniORB2/orbcore/tcpSocket.cc	Thu Jun 22 11:40:17 2000
@@ -28,9 +28,6 @@
 
 /*
   $Log: tcpSocket.cc,v $
-  Revision 1.12  2000/07/13 15:25:55  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.8.6.5  2000/06/22 10:40:17  dpg1
   exception.h renamed to exceptiondefs.h to avoid name clash on some
   platforms.
diff -u -r omni301/src/lib/omniORB2/orbcore/tcpSocket.h omni/src/lib/omniORB2/orbcore/tcpSocket.h
--- omni301/src/lib/omniORB2/orbcore/tcpSocket.h	Thu Jul 13 16:25:55 2000
+++ omni/src/lib/omniORB2/orbcore/tcpSocket.h	Fri Jan 28 15:57:10 2000
@@ -29,9 +29,6 @@
 
 /*
  $Log: tcpSocket.h,v $
- Revision 1.8  2000/07/13 15:25:55  dpg1
- Merge from omni3_develop for 3.0 release.
-
  Revision 1.5.6.3  2000/01/28 15:57:10  djr
  Removed superflouous ref counting in Strand_iterator.
  Removed flags to indicate that Ropes and Strands are heap allocated.
diff -u -r omni301/src/lib/omniORB2/orbcore/tcpSocketMTfactory.cc omni/src/lib/omniORB2/orbcore/tcpSocketMTfactory.cc
--- omni301/src/lib/omniORB2/orbcore/tcpSocketMTfactory.cc	Fri Aug 18 15:09:12 2000
+++ omni/src/lib/omniORB2/orbcore/tcpSocketMTfactory.cc	Thu Aug 17 16:37:52 2000
@@ -29,12 +29,6 @@
 
 /*
   $Log: tcpSocketMTfactory.cc,v $
-  Revision 1.31  2000/08/18 14:09:12  dpg1
-  Merge from omni3_develop for 3.0.1 release.
-
-  Revision 1.30  2000/07/13 15:25:54  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.22.6.18  2000/08/17 15:37:52  sll
   Merged RTEMS port.
 
diff -u -r omni301/src/lib/omniORB2/orbcore/tracedthread.cc omni/src/lib/omniORB2/orbcore/tracedthread.cc
--- omni301/src/lib/omniORB2/orbcore/tracedthread.cc	Thu Jul 13 16:25:54 2000
+++ omni/src/lib/omniORB2/orbcore/tracedthread.cc	Fri Jun  2 15:18:26 2000
@@ -29,9 +29,6 @@
 
 /*
   $Log: tracedthread.cc,v $
-  Revision 1.3  2000/07/13 15:25:54  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.1.2.5  2000/06/02 14:18:26  dpg1
   Race condition in tracedcondition
 
diff -u -r omni301/src/lib/omniORB2/orbcore/uri.cc omni/src/lib/omniORB2/orbcore/uri.cc
--- omni301/src/lib/omniORB2/orbcore/uri.cc	Thu Jul 13 16:25:54 2000
+++ omni/src/lib/omniORB2/orbcore/uri.cc	Wed Sep 13 12:45:05 2000
@@ -28,10 +28,11 @@
 //	*** PROPRIETARY INTERFACE ***
 //      
 
-// $Id: uri.cc,v 1.3 2000/07/13 15:25:54 dpg1 Exp $
+// $Id: uri.cc,v 1.1.2.7 2000/09/13 11:45:05 dpg1 Exp $
 // $Log: uri.cc,v $
-// Revision 1.3  2000/07/13 15:25:54  dpg1
-// Merge from omni3_develop for 3.0 release.
+// Revision 1.1.2.7  2000/09/13 11:45:05  dpg1
+// Minor cut-and-paste error in URI handling meant that ior: was not
+// accepted as a URI format.
 //
 // Revision 1.1.2.6  2000/06/30 14:12:07  dpg1
 // Minor fixes for FreeBSD.
@@ -211,8 +212,8 @@
 iorURIHandler::supports(const char* uri)
 {
   return ((uri[0] == 'I' || uri[0] == 'i') &&
-	  (uri[1] == 'O' || uri[0] == 'o') &&
-	  (uri[2] == 'R' || uri[0] == 'r') &&
+	  (uri[1] == 'O' || uri[1] == 'o') &&
+	  (uri[2] == 'R' || uri[2] == 'r') &&
 	  (uri[3] == ':'));
 }
 
diff -u -r omni301/src/lib/omniORB2/remoteIdentity.h omni/src/lib/omniORB2/remoteIdentity.h
--- omni301/src/lib/omniORB2/remoteIdentity.h	Thu Jul 13 16:26:03 2000
+++ omni/src/lib/omniORB2/remoteIdentity.h	Wed Sep 22 15:26:26 1999
@@ -29,9 +29,6 @@
  
 /*
   $Log: remoteIdentity.h,v $
-  Revision 1.3  2000/07/13 15:26:03  dpg1
-  Merge from omni3_develop for 3.0 release.
-
   Revision 1.1.2.1  1999/09/22 14:26:26  djr
   Major rewrite of orbcore to support POA.
 
diff -u -r omni301/src/tool/omniidl/cxx/CORBA_basetypes.h omni/src/tool/omniidl/cxx/CORBA_basetypes.h
--- omni301/src/tool/omniidl/cxx/CORBA_basetypes.h	Fri Aug 18 15:09:09 2000
+++ omni/src/tool/omniidl/cxx/CORBA_basetypes.h	Mon Aug  7 16:34:35 2000
@@ -28,12 +28,6 @@
 
 /*
  $Log: CORBA_basetypes.h,v $
- Revision 1.6  2000/08/18 14:09:09  dpg1
- Merge from omni3_develop for 3.0.1 release.
-
- Revision 1.5  2000/07/13 15:25:54  dpg1
- Merge from omni3_develop for 3.0 release.
-
  Revision 1.2.2.1  2000/08/07 15:34:35  dpg1
  Partial back-port of long long from omni3_1_develop.
 
diff -u -r omni301/src/tool/omniidl/cxx/CORBA_sysdep.h omni/src/tool/omniidl/cxx/CORBA_sysdep.h
--- omni301/src/tool/omniidl/cxx/CORBA_sysdep.h	Fri Aug 18 15:09:09 2000
+++ omni/src/tool/omniidl/cxx/CORBA_sysdep.h	Thu Aug 17 10:00:53 2000
@@ -32,12 +32,6 @@
 
 /*
  $Log: CORBA_sysdep.h,v $
- Revision 1.7  2000/08/18 14:09:09  dpg1
- Merge from omni3_develop for 3.0.1 release.
-
- Revision 1.6  2000/07/13 15:25:54  dpg1
- Merge from omni3_develop for 3.0 release.
-
  Revision 1.3.2.2  2000/08/17 09:00:53  dpg1
  GCC claims to support long long on all platforms.
 
diff -u -r omni301/src/tool/omniidl/cxx/dir.mk omni/src/tool/omniidl/cxx/dir.mk
--- omni301/src/tool/omniidl/cxx/dir.mk	Thu Jul 13 16:25:54 2000
+++ omni/src/tool/omniidl/cxx/dir.mk	Thu Sep  7 17:24:29 2000
@@ -59,9 +59,11 @@
 
 ifdef UnixPlatform
 #CXXDEBUGFLAGS = -g
-PYPREFIX := $(shell $(PYTHON) -c 'import sys; print sys.exec_prefix')
-PYINCDIR := $(PYPREFIX)/include
-DIR_CPPFLAGS += -I$(PYINCDIR)
+PYPREFIX  := $(shell $(PYTHON) -c 'import sys; print sys.exec_prefix')
+PYVERSION := $(shell $(PYTHON) -c 'import sys; print sys.version[:3]')
+PYINCDIR  := $(PYPREFIX)/include
+PYINCFILE := "<python$(PYVERSION)/Python.h>"
+DIR_CPPFLAGS += -I$(PYINCDIR) -DPYTHON_INCLUDE=$(PYINCFILE)
 endif
 
 
@@ -171,10 +173,14 @@
 
 PYPREFIX1 := "$(shell $(PYTHON) -c 'import sys,string; sys.stdout.write(string.lower(sys.prefix))')"
 PYPREFIX  := $(subst program files,progra~1,$(subst \,/,$(PYPREFIX1)))
+PYVERSION := $(shell $(PYTHON) -c 'import sys; sys.stdout.write(sys.version[:3])')
 PYINCDIR  := $(PYPREFIX)/include
 PYLIBDIR  := $(PYPREFIX)/libs $(PYPREFIX)/lib/x86_win32
+PYLIB     := python$(subst .,,$(PYVERSION)).lib
+
+DIR_CPPFLAGS += -I$(PYINCDIR) -I$(PYINCDIR)/python$(PYVERSION) \
+                -DPYTHON_INCLUDE="<Python.h>"
 
-DIR_CPPFLAGS += -I$(PYINCDIR) -I$(PYINCDIR)/python1.5
 CXXLINKOPTIONS += $(patsubst %,-libpath:%,$(PYLIBDIR))
 
 omniidl = $(patsubst %,$(BinPattern),omniidl)
@@ -188,7 +194,7 @@
 	$(RM) $(omniidl)
 
 $(omniidl): $(OBJS) $(PYOBJS)
-	@(libs="python15.lib"; $(CXXExecutable))
+	@(libs="$(PYLIB)"; $(CXXExecutable))
 
 endif
 
@@ -204,7 +210,7 @@
 
 lib = _omniidlmodule.so
 libinit = init_omniidl
-py_exp = /usr/local/lib/python1.5/config/python.exp
+py_exp = /usr/local/lib/python$(PYVERSION)/config/python.exp
 
 ifeq ($(notdir $(CXX)),xlC_r)
 
@@ -325,13 +331,13 @@
 #       is compiled and linked with aCC.
 
 DIR_CPPFLAGS += +Z
-  
+
 libname = _omniidlmodule.sl
 soname = $(libname).$(IDLMODULE_MAJOR)
 lib = $(soname).$(IDLMODULE_MINOR)
-  
+
 all:: $(lib)
-  
+
 $(lib): $(OBJS) $(PYOBJS)
 	(set -x; \
          $(RM) $@; \
@@ -339,7 +345,7 @@
            $(patsubst %,-L %,$(IMPORT_LIBRARY_DIRS)) \
            $(filter-out $(LibSuffixPattern),$^) ; \
         )
-  
+
 clean::
 	$(RM) $(lib)
 
@@ -375,7 +381,7 @@
 # 	$(RM) $(omniidl)
 #
 # $(omniidl): $(OBJS) $(PYOBJS)
-# 	@(libs="-lpython1.5 -lpthread"; $(CXXExecutable))
+# 	@(libs="-lpython$(PYVERSION) -lpthread"; $(CXXExecutable))
 
 
 endif
diff -u -r omni301/src/tool/omniidl/cxx/idl.ll omni/src/tool/omniidl/cxx/idl.ll
--- omni301/src/tool/omniidl/cxx/idl.ll	Fri Aug 18 15:09:09 2000
+++ omni/src/tool/omniidl/cxx/idl.ll	Mon Aug  7 16:34:35 2000
@@ -26,14 +26,8 @@
 //   
 //   Flex lexical analyser
 
-// $Id: idl.ll,v 1.11 2000/08/18 14:09:09 dpg1 Exp $
+// $Id: idl.ll,v 1.7.2.8 2000/08/07 15:34:35 dpg1 Exp $
 // $Log: idl.ll,v $
-// Revision 1.11  2000/08/18 14:09:09  dpg1
-// Merge from omni3_develop for 3.0.1 release.
-//
-// Revision 1.10  2000/07/13 15:25:54  dpg1
-// Merge from omni3_develop for 3.0 release.
-//
 // Revision 1.7.2.8  2000/08/07 15:34:35  dpg1
 // Partial back-port of long long from omni3_1_develop.
 //
diff -u -r omni301/src/tool/omniidl/cxx/idl.yy omni/src/tool/omniidl/cxx/idl.yy
--- omni301/src/tool/omniidl/cxx/idl.yy	Fri Aug 18 15:09:09 2000
+++ omni/src/tool/omniidl/cxx/idl.yy	Tue Aug  1 12:27:45 2000
@@ -26,14 +26,8 @@
 //   
 //   Bison parser
 
-// $Id: idl.yy,v 1.13 2000/08/18 14:09:09 dpg1 Exp $
+// $Id: idl.yy,v 1.9.2.5 2000/08/01 11:27:45 dpg1 Exp $
 // $Log: idl.yy,v $
-// Revision 1.13  2000/08/18 14:09:09  dpg1
-// Merge from omni3_develop for 3.0.1 release.
-//
-// Revision 1.12  2000/07/13 15:25:54  dpg1
-// Merge from omni3_develop for 3.0 release.
-//
 // Revision 1.9.2.5  2000/08/01 11:27:45  dpg1
 // Comments were incorrectly attached to struct members.
 //
diff -u -r omni301/src/tool/omniidl/cxx/idlast.cc omni/src/tool/omniidl/cxx/idlast.cc
--- omni301/src/tool/omniidl/cxx/idlast.cc	Fri Aug 18 15:09:07 2000
+++ omni/src/tool/omniidl/cxx/idlast.cc	Tue Aug 29 11:20:26 2000
@@ -26,13 +26,14 @@
 //   
 //   Abstract Syntax Tree objects and support functions
 
-// $Id: idlast.cc,v 1.18 2000/08/18 14:09:07 dpg1 Exp $
+// $Id: idlast.cc,v 1.14.2.9 2000/08/29 10:20:26 dpg1 Exp $
 // $Log: idlast.cc,v $
-// Revision 1.18  2000/08/18 14:09:07  dpg1
-// Merge from omni3_develop for 3.0.1 release.
+// Revision 1.14.2.9  2000/08/29 10:20:26  dpg1
+// Operations and attributes now have repository ids.
 //
-// Revision 1.17  2000/07/13 15:25:54  dpg1
-// Merge from omni3_develop for 3.0 release.
+// Revision 1.14.2.8  2000/08/25 13:33:02  dpg1
+// Multiple comments preceding a declaration are now properly attached on
+// all platforms
 //
 // Revision 1.14.2.7  2000/08/07 15:34:36  dpg1
 // Partial back-port of long long from omni3_1_develop.
@@ -142,8 +143,14 @@
 {
   if (Config::keepComments) {
     if (Config::commentsFirst) {
-      if (saved_)
-	mostRecent_->next_ = new Comment(commentText, file, line);
+      if (saved_) {
+	// C++ says that the order of value evaluation is undefined.
+	// Comment's constructor sets mostRecent_, so the innocent-
+	// looking mostRecent_->next_ = new Comment... does the wrong
+	// thing with some compilers :-(
+	Comment* mr = mostRecent_;
+	mr->next_ = new Comment(commentText, file, line);
+      }
       else
 	saved_ = new Comment(commentText, file, line);
     }
@@ -319,13 +326,22 @@
   const Scope::Entry* se = Scope::current()->findScopedName(sn, file, line);
 
   if (se) {
-    if (se->kind() == Scope::Entry::E_DECL) {
+    switch (se->kind()) {
+
+    case Scope::Entry::E_MODULE:
+    case Scope::Entry::E_DECL:
+    case Scope::Entry::E_CALLABLE:
+    case Scope::Entry::E_INHERITED:
       return se->decl();
+
+    default:
+      {
+	char* ssn = sn->toString();
+	IdlError(file, line, "`%s' is not a declaration", ssn);
+	IdlErrorCont(se->file(), se->line(), "(`%s' created here)", ssn);
+	delete [] ssn;
+      }
     }
-    char* ssn = sn->toString();
-    IdlError(file, line, "`%s' is not a declaration", ssn);
-    IdlErrorCont(se->file(), se->line(), "(`%s' created here)", ssn);
-    delete [] ssn;
   }
   return 0;
 }
@@ -829,7 +845,8 @@
     DeclRepoId(identifier),
     sizes_(sizes),
     thisType_(0),
-    alias_(0)
+    alias_(0),
+    attribute_(0)
 {
 }
 
@@ -844,8 +861,9 @@
 Declarator::
 kindAsString() const
 {
-  if (alias_) return "typedef declarator";
-  else return "declarator";
+  if (alias_)     return "typedef declarator";
+  if (attribute_) return "attribute declarator";
+                  return "declarator";
 }
 
 void
@@ -856,6 +874,13 @@
   thisType_ = new DeclaredType(IdlType::tk_alias, this, this);
 }
 
+void
+Declarator::
+setAttribute(Attribute* at)
+{
+  attribute_ = at;
+}
+
 // Typedef
 Typedef::
 Typedef(const char* file, int line, _CORBA_Boolean mainFile,
@@ -1378,7 +1403,8 @@
 
   for (Declarator* d = declarators; d; d = (Declarator*)d->next()) {
     assert(!d->sizes()); // Enforced by grammar
-    Scope::current()->addCallable(d->eidentifier(), 0, this, file, line);
+    d->setAttribute(this);
+    Scope::current()->addCallable(d->eidentifier(), 0, d, file, line);
   }
 }
 
@@ -1490,6 +1516,7 @@
 	  const char* identifier)
 
   : Decl(D_OPERATION, file, line, mainFile),
+    DeclRepoId(identifier),
     oneway_(oneway),
     returnType_(returnType),
     parameters_(0),
@@ -1499,11 +1526,6 @@
   if (returnType) delType_ = returnType->shouldDelete();
   else            delType_ = 0;
 
-  if (identifier[0] == '_')
-    identifier_ = idl_strdup(identifier+1);
-  else
-    identifier_ = idl_strdup(identifier);
-
   Scope* s = Scope::current()->newOperationScope(file, line);
   Scope::current()->addCallable(identifier, s, this, file, line);
   Scope::startScope(s);
@@ -1512,7 +1534,6 @@
 Operation::
 ~Operation()
 {
-  delete [] identifier_;
   if (parameters_) delete parameters_;
   if (raises_)     delete raises_;
   if (contexts_)   delete contexts_;
diff -u -r omni301/src/tool/omniidl/cxx/idlast.h omni/src/tool/omniidl/cxx/idlast.h
--- omni301/src/tool/omniidl/cxx/idlast.h	Fri Aug 18 15:09:07 2000
+++ omni/src/tool/omniidl/cxx/idlast.h	Tue Aug 29 11:20:26 2000
@@ -26,13 +26,10 @@
 //   
 //   Definitions for abstract syntax tree classes
 
-// $Id: idlast.h,v 1.12 2000/08/18 14:09:07 dpg1 Exp $
+// $Id: idlast.h,v 1.8.2.6 2000/08/29 10:20:26 dpg1 Exp $
 // $Log: idlast.h,v $
-// Revision 1.12  2000/08/18 14:09:07  dpg1
-// Merge from omni3_develop for 3.0.1 release.
-//
-// Revision 1.11  2000/07/13 15:25:54  dpg1
-// Merge from omni3_develop for 3.0 release.
+// Revision 1.8.2.6  2000/08/29 10:20:26  dpg1
+// Operations and attributes now have repository ids.
 //
 // Revision 1.8.2.5  2000/08/04 11:39:03  dpg1
 // Updates for AIX with xlC
@@ -521,6 +518,7 @@
 
 
 class Typedef;
+class Attribute;
 
 class Declarator : public Decl, public DeclRepoId {
 public:
@@ -536,17 +534,20 @@
 				// Null if a simple declarator
 
   // Only for typedef declarators
-  IdlType*   thisType() const { return thisType_; }
-  Typedef*   alias()    const { return alias_; } 
+  IdlType*   thisType()  const { return thisType_; }
+  Typedef*   alias()     const { return alias_; } 
+  Attribute* attribute() const { return attribute_; }
 
   void accept(AstVisitor& visitor) { visitor.visitDeclarator(this); }
 
-  void setAlias(Typedef* td);
+  void setAlias    (Typedef*   td);
+  void setAttribute(Attribute* at);
 
 private:
   ArraySize*  sizes_;
   IdlType*    thisType_;
   Typedef*    alias_;
+  Attribute*  attribute_;
 };
 
 
@@ -921,7 +922,7 @@
 
 
 // Operation
-class Operation : public Decl {
+class Operation : public Decl, public DeclRepoId {
 public:
   Operation(const char* file, int line, _CORBA_Boolean mainFile,
 	    _CORBA_Boolean oneway, IdlType* return_type,
@@ -933,7 +934,6 @@
   // Queries
   _CORBA_Boolean oneway()     const { return oneway_; }
   IdlType*       returnType() const { return returnType_; }
-  const char*    identifier() const { return identifier_; }
   Parameter*     parameters() const { return parameters_; }
   RaisesSpec*    raises()     const { return raises_; }
   ContextSpec*   contexts()   const { return contexts_; }
@@ -948,7 +948,6 @@
   _CORBA_Boolean oneway_;
   IdlType*       returnType_;
   _CORBA_Boolean delType_;
-  char*          identifier_;
   Parameter*     parameters_;
   RaisesSpec*    raises_;
   ContextSpec*   contexts_;
diff -u -r omni301/src/tool/omniidl/cxx/idlc.cc omni/src/tool/omniidl/cxx/idlc.cc
--- omni301/src/tool/omniidl/cxx/idlc.cc	Thu Jul 13 16:25:53 2000
+++ omni/src/tool/omniidl/cxx/idlc.cc	Wed Oct 27 15:05:59 1999
@@ -26,11 +26,8 @@
 //   
 //   Simple main() function to test front-end
 
-// $Id: idlc.cc,v 1.4 2000/07/13 15:25:53 dpg1 Exp $
+// $Id: idlc.cc,v 1.1 1999/10/27 14:05:59 dpg1 Exp $
 // $Log: idlc.cc,v $
-// Revision 1.4  2000/07/13 15:25:53  dpg1
-// Merge from omni3_develop for 3.0 release.
-//
 // Revision 1.1  1999/10/27 14:05:59  dpg1
 // *** empty log message ***
 //
diff -u -r omni301/src/tool/omniidl/cxx/idlconfig.cc omni/src/tool/omniidl/cxx/idlconfig.cc
--- omni301/src/tool/omniidl/cxx/idlconfig.cc	Thu Jul 13 16:25:53 2000
+++ omni/src/tool/omniidl/cxx/idlconfig.cc	Mon Jun  5 19:13:27 2000
@@ -26,11 +26,8 @@
 //   
 //   Global configuration for omniidl
 
-// $Id: idlconfig.cc,v 1.3 2000/07/13 15:25:53 dpg1 Exp $
+// $Id: idlconfig.cc,v 1.1.2.2 2000/06/05 18:13:27 dpg1 Exp $
 // $Log: idlconfig.cc,v $
-// Revision 1.3  2000/07/13 15:25:53  dpg1
-// Merge from omni3_develop for 3.0 release.
-//
 // Revision 1.1.2.2  2000/06/05 18:13:27  dpg1
 // Comments can be attached to subsequent declarations (with -K). Better
 // idea of most recent decl in operation declarations
diff -u -r omni301/src/tool/omniidl/cxx/idlconfig.h omni/src/tool/omniidl/cxx/idlconfig.h
--- omni301/src/tool/omniidl/cxx/idlconfig.h	Thu Jul 13 16:25:53 2000
+++ omni/src/tool/omniidl/cxx/idlconfig.h	Mon Jun  5 19:13:27 2000
@@ -26,11 +26,8 @@
 //   
 //   Global configuration for omniidl
 
-// $Id: idlconfig.h,v 1.3 2000/07/13 15:25:53 dpg1 Exp $
+// $Id: idlconfig.h,v 1.1.2.2 2000/06/05 18:13:27 dpg1 Exp $
 // $Log: idlconfig.h,v $
-// Revision 1.3  2000/07/13 15:25:53  dpg1
-// Merge from omni3_develop for 3.0 release.
-//
 // Revision 1.1.2.2  2000/06/05 18:13:27  dpg1
 // Comments can be attached to subsequent declarations (with -K). Better
 // idea of most recent decl in operation declarations
diff -u -r omni301/src/tool/omniidl/cxx/idldump.cc omni/src/tool/omniidl/cxx/idldump.cc
--- omni301/src/tool/omniidl/cxx/idldump.cc	Fri Aug 18 15:09:07 2000
+++ omni/src/tool/omniidl/cxx/idldump.cc	Tue Aug 29 11:20:26 2000
@@ -26,13 +26,10 @@
 //   
 //   Visitor object to dump the tree
 
-// $Id: idldump.cc,v 1.13 2000/08/18 14:09:07 dpg1 Exp $
+// $Id: idldump.cc,v 1.9.2.2 2000/08/29 10:20:26 dpg1 Exp $
 // $Log: idldump.cc,v $
-// Revision 1.13  2000/08/18 14:09:07  dpg1
-// Merge from omni3_develop for 3.0.1 release.
-//
-// Revision 1.12  2000/07/13 15:25:53  dpg1
-// Merge from omni3_develop for 3.0 release.
+// Revision 1.9.2.2  2000/08/29 10:20:26  dpg1
+// Operations and attributes now have repository ids.
 //
 // Revision 1.9.2.1  2000/08/14 14:35:13  dpg1
 // IDL dumping now properly escapes string and char constants
@@ -245,8 +242,6 @@
   printf("%s", d->identifier());
   for (ArraySize* s = d->sizes(); s; s = s->next())
     printf("[%d]", s->size());
-  if (d->alias())
-    printf(" /* RepoId = %s */", d->repoId());
 }
 
 void
diff -u -r omni301/src/tool/omniidl/cxx/idldump.h omni/src/tool/omniidl/cxx/idldump.h
--- omni301/src/tool/omniidl/cxx/idldump.h	Fri Aug 18 15:09:07 2000
+++ omni/src/tool/omniidl/cxx/idldump.h	Mon Aug 14 15:35:14 2000
@@ -26,14 +26,8 @@
 //   
 //   Visitor object to dump the tree
 
-// $Id: idldump.h,v 1.5 2000/08/18 14:09:07 dpg1 Exp $
+// $Id: idldump.h,v 1.1.2.1 2000/08/14 14:35:14 dpg1 Exp $
 // $Log: idldump.h,v $
-// Revision 1.5  2000/08/18 14:09:07  dpg1
-// Merge from omni3_develop for 3.0.1 release.
-//
-// Revision 1.4  2000/07/13 15:25:53  dpg1
-// Merge from omni3_develop for 3.0 release.
-//
 // Revision 1.1.2.1  2000/08/14 14:35:14  dpg1
 // IDL dumping now properly escapes string and char constants
 //
diff -u -r omni301/src/tool/omniidl/cxx/idlerr.cc omni/src/tool/omniidl/cxx/idlerr.cc
--- omni301/src/tool/omniidl/cxx/idlerr.cc	Thu Jul 13 16:25:53 2000
+++ omni/src/tool/omniidl/cxx/idlerr.cc	Mon Mar  6 15:03:48 2000
@@ -27,11 +27,8 @@
 //   
 //   IDL compiler error handling
 
-// $Id: idlerr.cc,v 1.6 2000/07/13 15:25:53 dpg1 Exp $
+// $Id: idlerr.cc,v 1.3.2.1 2000/03/06 15:03:48 dpg1 Exp $
 // $Log: idlerr.cc,v $
-// Revision 1.6  2000/07/13 15:25:53  dpg1
-// Merge from omni3_develop for 3.0 release.
-//
 // Revision 1.3.2.1  2000/03/06 15:03:48  dpg1
 // Minor bug fixes to omniidl. New -nf and -k flags.
 //
diff -u -r omni301/src/tool/omniidl/cxx/idlerr.h omni/src/tool/omniidl/cxx/idlerr.h
--- omni301/src/tool/omniidl/cxx/idlerr.h	Thu Jul 13 16:25:53 2000
+++ omni/src/tool/omniidl/cxx/idlerr.h	Fri Oct 29 16:43:44 1999
@@ -27,11 +27,8 @@
 //   
 //   IDL compiler error handling
 
-// $Id: idlerr.h,v 1.5 2000/07/13 15:25:53 dpg1 Exp $
+// $Id: idlerr.h,v 1.2 1999/10/29 15:43:44 dpg1 Exp $
 // $Log: idlerr.h,v $
-// Revision 1.5  2000/07/13 15:25:53  dpg1
-// Merge from omni3_develop for 3.0 release.
-//
 // Revision 1.2  1999/10/29 15:43:44  dpg1
 // Error counts now reset when Report...() is called.
 //
diff -u -r omni301/src/tool/omniidl/cxx/idlexpr.cc omni/src/tool/omniidl/cxx/idlexpr.cc
--- omni301/src/tool/omniidl/cxx/idlexpr.cc	Fri Aug 18 15:09:06 2000
+++ omni/src/tool/omniidl/cxx/idlexpr.cc	Mon Aug  7 16:34:36 2000
@@ -26,14 +26,8 @@
 //   
 //   Expression evaluation functions
 
-// $Id: idlexpr.cc,v 1.8 2000/08/18 14:09:06 dpg1 Exp $
+// $Id: idlexpr.cc,v 1.4.2.2 2000/08/07 15:34:36 dpg1 Exp $
 // $Log: idlexpr.cc,v $
-// Revision 1.8  2000/08/18 14:09:06  dpg1
-// Merge from omni3_develop for 3.0.1 release.
-//
-// Revision 1.7  2000/07/13 15:25:53  dpg1
-// Merge from omni3_develop for 3.0 release.
-//
 // Revision 1.4.2.2  2000/08/07 15:34:36  dpg1
 // Partial back-port of long long from omni3_1_develop.
 //
diff -u -r omni301/src/tool/omniidl/cxx/idlexpr.h omni/src/tool/omniidl/cxx/idlexpr.h
--- omni301/src/tool/omniidl/cxx/idlexpr.h	Thu Jul 13 16:25:53 2000
+++ omni/src/tool/omniidl/cxx/idlexpr.h	Tue Nov  2 17:07:26 1999
@@ -26,11 +26,8 @@
 //   
 //   Expression tree and evaluator
 
-// $Id: idlexpr.h,v 1.5 2000/07/13 15:25:53 dpg1 Exp $
+// $Id: idlexpr.h,v 1.2 1999/11/02 17:07:26 dpg1 Exp $
 // $Log: idlexpr.h,v $
-// Revision 1.5  2000/07/13 15:25:53  dpg1
-// Merge from omni3_develop for 3.0 release.
-//
 // Revision 1.2  1999/11/02 17:07:26  dpg1
 // Changes to compile on Solaris.
 //
diff -u -r omni301/src/tool/omniidl/cxx/idlmath.h omni/src/tool/omniidl/cxx/idlmath.h
--- omni301/src/tool/omniidl/cxx/idlmath.h	Thu Jul 13 16:25:53 2000
+++ omni/src/tool/omniidl/cxx/idlmath.h	Tue Nov  2 17:07:26 1999
@@ -26,11 +26,8 @@
 //   
 //   Floating point maths functions
 
-// $Id: idlmath.h,v 1.5 2000/07/13 15:25:53 dpg1 Exp $
+// $Id: idlmath.h,v 1.2 1999/11/02 17:07:26 dpg1 Exp $
 // $Log: idlmath.h,v $
-// Revision 1.5  2000/07/13 15:25:53  dpg1
-// Merge from omni3_develop for 3.0 release.
-//
 // Revision 1.2  1999/11/02 17:07:26  dpg1
 // Changes to compile on Solaris.
 //
diff -u -r omni301/src/tool/omniidl/cxx/idlpython.cc omni/src/tool/omniidl/cxx/idlpython.cc
--- omni301/src/tool/omniidl/cxx/idlpython.cc	Fri Aug 18 15:09:06 2000
+++ omni/src/tool/omniidl/cxx/idlpython.cc	Wed Sep  6 12:20:50 2000
@@ -26,13 +26,20 @@
 //   
 //   Python interface to front-end
 
-// $Id: idlpython.cc,v 1.19 2000/08/18 14:09:06 dpg1 Exp $
+// $Id: idlpython.cc,v 1.15.2.15 2000/09/06 11:20:50 dpg1 Exp $
 // $Log: idlpython.cc,v $
-// Revision 1.19  2000/08/18 14:09:06  dpg1
-// Merge from omni3_develop for 3.0.1 release.
+// Revision 1.15.2.15  2000/09/06 11:20:50  dpg1
+// Support for Python 1.6 and 2.0b1.
 //
-// Revision 1.18  2000/07/13 15:25:53  dpg1
-// Merge from omni3_develop for 3.0 release.
+// Revision 1.15.2.14  2000/08/30 18:12:46  dpg1
+// Register operation declarations so they can be found with findDecl().
+//
+// Revision 1.15.2.13  2000/08/29 15:20:28  dpg1
+// New relativeScope() function. New -i flag to enter interactive loop
+// after parsing
+//
+// Revision 1.15.2.12  2000/08/29 10:20:26  dpg1
+// Operations and attributes now have repository ids.
 //
 // Revision 1.15.2.11  2000/08/14 16:07:52  dpg1
 // Error message now says "Could not open..." rather than "Could not
@@ -120,15 +127,13 @@
 // First revision.
 //
 
-#if defined(__WIN32__)
-#include <Python.h>
-#elif defined(__VMS)
+#if defined(__VMS)
 #  if defined(__DECCXX) && __DECCXX_VER < 60000000
       struct _typeobject;
 #  endif
 #include <python_include/python.h>
 #else
-#include <python1.5/Python.h>
+#include PYTHON_INCLUDE
 #endif
 
 #include <idlsysdep.h>
@@ -143,7 +148,7 @@
 
 // PyLongFromLongLong is broken in Python 1.5.2. Workaround here:
 #ifdef HAS_LongLong
-#  if !defined(PY_VERSION_HEX) || (PY_VERSION_HEX < 0X01050200)
+#  if !defined(PY_VERSION_HEX) || (PY_VERSION_HEX < 0x01050200)
 #    error "omniidl requires Python 1.5.2 or higher"
 
 #  elif (PY_VERSION_HEX < 0x02000000)
@@ -211,13 +216,14 @@
 
   PyObject* result() { return result_; }
 
+  static PyObject* scopedNameToList(const ScopedName* sn);
+  static PyObject* wstringToList(const _CORBA_WChar* ws);
+
 private:
-  PyObject* scopedNameToList(const ScopedName* sn);
   PyObject* pragmasToList(const Pragma* ps);
   PyObject* commentsToList(const Comment* cs);
   void      registerPyDecl(const ScopedName* sn, PyObject* pydecl);
   PyObject* findPyDecl(const ScopedName* sn);
-  PyObject* wstringToList(const _CORBA_WChar* ws);
 
   PyObject* idlast_;
   PyObject* idltype_;
@@ -389,8 +395,8 @@
 				scopedNameToList(m->scopedName()),
 				m->repoId(),
 				pydecls);
-  registerPyDecl(m->scopedName(), result_);
   ASSERT_RESULT;
+  registerPyDecl(m->scopedName(), result_);
 }
 
 void
@@ -839,65 +845,21 @@
   PyObject* pyattrType = result_;
 
   Declarator* d;
-  int         i;
-
-  for (i=0, d = a->declarators(); d; d = (Declarator*)d->next(), ++i);
-  PyObject* pyidentifiers = PyList_New(i);
+  int         i, l;
 
-  PyObject *pragmas  = 0;
-  PyObject *comments = 0;
-  PyObject *tmp1, *tmp2;
+  for (l=0, d = a->declarators(); d; d = (Declarator*)d->next(), ++l);
+  PyObject* pydeclarators = PyList_New(l);
 
   for (i=0, d = a->declarators(); d; d = (Declarator*)d->next(), ++i) {
-    if (pragmas) {
-      tmp1 = pragmasToList(d->pragmas());
-      tmp2 = PySequence_Concat(pragmas, tmp1);
-      Py_DECREF(tmp1);
-      Py_DECREF(pragmas);
-      pragmas = tmp2;
-    }
-    else
-      pragmas = pragmasToList(d->pragmas());
-
-    if (comments) {
-      tmp1 = commentsToList(d->comments());
-      tmp2 = PySequence_Concat(comments, tmp1);
-      Py_DECREF(tmp1);
-      Py_DECREF(comments);
-      comments = tmp2;
-    }
-    else
-      comments = commentsToList(d->comments());
-
-    PyList_SetItem(pyidentifiers, i, PyString_FromString(d->identifier()));    
-  }
-
-  if (pragmas) {
-    tmp1 = pragmasToList(a->pragmas());
-    tmp2 = PySequence_Concat(pragmas, tmp1);
-    Py_DECREF(tmp1);
-    Py_DECREF(pragmas);
-    pragmas = tmp2;
-  }
-  else
-    pragmas = pragmasToList(a->pragmas());
-
-  if (comments) {
-    tmp1 = commentsToList(a->comments());
-    tmp2 = PySequence_Concat(comments, tmp1);
-    Py_DECREF(tmp1);
-    Py_DECREF(comments);
-    comments = tmp2;
+    d->accept(*this);
+    PyList_SetItem(pydeclarators, i, result_);
   }
-  else
-    comments = commentsToList(a->comments());
-
   result_ = PyObject_CallMethod(idlast_, (char*)"Attribute", (char*)"siiNNiNN",
 				a->file(), a->line(), (int)a->mainFile(),
-				pragmas,
-				comments,
+				pragmasToList(a->pragmas()),
+				commentsToList(a->comments()),
 				(int)a->readonly(), pyattrType,
-				pyidentifiers);
+				pydeclarators);
   ASSERT_RESULT;
 }
 
@@ -948,14 +910,18 @@
     PyList_SetItem(pycontexts, i, PyString_FromString(c->context()));
 
   result_ =
-    PyObject_CallMethod(idlast_,(char*)"Operation",(char*)"siiNNiNsNNN",
+    PyObject_CallMethod(idlast_,(char*)"Operation",(char*)"siiNNiNsNsNNN",
 			o->file(), o->line(), (int)o->mainFile(),
 			pragmasToList(o->pragmas()),
 			commentsToList(o->comments()),
 			(int)o->oneway(), pyreturnType,
-			o->identifier(), pyparameters,
+			o->identifier(),
+			scopedNameToList(o->scopedName()),
+			o->repoId(),
+			pyparameters,
 			pyraises, pycontexts);
   ASSERT_RESULT;
+  registerPyDecl(o->scopedName(), result_);
 }
 
 void
@@ -1360,13 +1326,91 @@
     Py_INCREF(Py_None); return Py_None;
   }
 
+  static PyObject* IdlPyRelativeScopedName(PyObject* self, PyObject* args)
+  {
+    PyObject *pyfrom, *pyto;
+    if (!PyArg_ParseTuple(args, (char*)"OO", &pyfrom, &pyto)) return 0;
+
+    if (!PySequence_Check(pyfrom) || !PySequence_Check(pyto)) {
+      PyErr_SetString(PyExc_TypeError,
+		      (char*)"Both arguments must be sequences of strings");
+      return 0;
+    }
+
+    if (PyObject_Length(pyto) == 0) {
+      PyErr_SetString(PyExc_TypeError,
+		      (char*)"Argument 2 must be a non-empty sequence");
+      return 0;
+    }
+
+    ScopedName* from = 0;
+    ScopedName* to   = 0;
+
+    int i;
+    // Convert lists to absolute ScopedNames
+    for (i=0; i < PyObject_Length(pyfrom); i++) {
+      PyObject* tmp = PySequence_GetItem(pyfrom, i);
+
+      if (!PyString_Check(tmp)) {
+	if (from) delete from;
+	PyErr_SetString(PyExc_TypeError,
+			(char*)"Both arguments must be sequences of strings");
+	return 0;
+      }
+      if (from)
+	from->append(PyString_AsString(tmp));
+      else
+	from = new ScopedName(PyString_AsString(tmp), 1);
+    }
+
+    for (i=0; i < PyObject_Length(pyto); i++) {
+      PyObject* tmp = PySequence_GetItem(pyto, i);
+
+      if (!PyString_Check(tmp)) {
+	if (from) delete from;
+	if (to)   delete to;
+	PyErr_SetString(PyExc_TypeError,
+			(char*)"Both arguments must be sequences of strings");
+	return 0;
+      }
+      if (to)
+	to->append(PyString_AsString(tmp));
+      else
+	to = new ScopedName(PyString_AsString(tmp), 1);
+    }
+
+    ScopedName* result = Scope::relativeScopedName(from, to);
+
+    if (from) delete from;
+    delete to;
+
+    if (result) {
+      PyObject* pyresult = PythonVisitor::scopedNameToList(result);
+      if (result->absolute())
+	PyList_Insert(pyresult, 0, Py_None);
+      delete result;
+      return pyresult;
+    }
+    Py_INCREF(Py_None);
+    return Py_None;
+  }
+
+  static PyObject* IdlPyRunInteractiveLoop(PyObject* self, PyObject* args)
+  {
+    PyRun_InteractiveLoop(stdin, (char*)"<stdin>");
+    Py_INCREF(Py_None);
+    return Py_None;
+  }
+
   static PyMethodDef omniidl_methods[] = {
-    {(char*)"compile",          IdlPyCompile,          METH_VARARGS},
-    {(char*)"clear",            IdlPyClear,            METH_VARARGS},
-    {(char*)"dump",             IdlPyDump,             METH_VARARGS},
-    {(char*)"quiet",            IdlPyQuiet,            METH_VARARGS},
-    {(char*)"noForwardWarning", IdlPyNoForwardWarning, METH_VARARGS},
-    {(char*)"keepComments",     IdlPyKeepComments,     METH_VARARGS},
+    {(char*)"compile",            IdlPyCompile,            METH_VARARGS},
+    {(char*)"clear",              IdlPyClear,              METH_VARARGS},
+    {(char*)"dump",               IdlPyDump,               METH_VARARGS},
+    {(char*)"quiet",              IdlPyQuiet,              METH_VARARGS},
+    {(char*)"noForwardWarning",   IdlPyNoForwardWarning,   METH_VARARGS},
+    {(char*)"keepComments",       IdlPyKeepComments,       METH_VARARGS},
+    {(char*)"relativeScopedName", IdlPyRelativeScopedName, METH_VARARGS},
+    {(char*)"runInteractiveLoop", IdlPyRunInteractiveLoop, METH_VARARGS},
     {NULL, NULL}
   };
 
diff -u -r omni301/src/tool/omniidl/cxx/idlrepoId.cc omni/src/tool/omniidl/cxx/idlrepoId.cc
--- omni301/src/tool/omniidl/cxx/idlrepoId.cc	Thu Jul 13 16:25:53 2000
+++ omni/src/tool/omniidl/cxx/idlrepoId.cc	Tue Aug 29 11:20:27 2000
@@ -26,10 +26,10 @@
 //   
 //   Implementation of repoId management
 
-// $Id: idlrepoId.cc,v 1.6 2000/07/13 15:25:53 dpg1 Exp $
+// $Id: idlrepoId.cc,v 1.3.2.1 2000/08/29 10:20:27 dpg1 Exp $
 // $Log: idlrepoId.cc,v $
-// Revision 1.6  2000/07/13 15:25:53  dpg1
-// Merge from omni3_develop for 3.0 release.
+// Revision 1.3.2.1  2000/08/29 10:20:27  dpg1
+// Operations and attributes now have repository ids.
 //
 // Revision 1.3  1999/11/08 10:50:47  dpg1
 // Change to behaviour when files end inside a scope.
@@ -293,7 +293,7 @@
   void visitUnionCase    (UnionCase* d)    { error(d); }
   void visitEnumerator   (Enumerator* d)   { error(d); }
   void visitAttribute    (Attribute* d)    { error(d); }
-  void visitOperation    (Operation* d)    { error(d); }
+  void visitOperation    (Operation* d)    { d->setRepoId(r_, f_, l_); }
   void visitStateMember  (StateMember* d)  { error(d); }
   void visitFactory      (Factory* d)      { error(d); }
 
@@ -341,7 +341,7 @@
   void visitUnionCase    (UnionCase* d)    { error(d); }
   void visitEnumerator   (Enumerator* d)   { error(d); }
   void visitAttribute    (Attribute* d)    { error(d); }
-  void visitOperation    (Operation* d)    { error(d); }
+  void visitOperation    (Operation* d)    { d->setVersion(a_, i_, f_, l_); }
   void visitStateMember  (StateMember* d)  { error(d); }
   void visitFactory      (Factory* d)      { error(d); }
 
diff -u -r omni301/src/tool/omniidl/cxx/idlrepoId.h omni/src/tool/omniidl/cxx/idlrepoId.h
--- omni301/src/tool/omniidl/cxx/idlrepoId.h	Thu Jul 13 16:25:53 2000
+++ omni/src/tool/omniidl/cxx/idlrepoId.h	Tue Nov  2 17:07:25 1999
@@ -26,11 +26,8 @@
 //   
 //   Definitions for repoId management
 
-// $Id: idlrepoId.h,v 1.5 2000/07/13 15:25:53 dpg1 Exp $
+// $Id: idlrepoId.h,v 1.2 1999/11/02 17:07:25 dpg1 Exp $
 // $Log: idlrepoId.h,v $
-// Revision 1.5  2000/07/13 15:25:53  dpg1
-// Merge from omni3_develop for 3.0 release.
-//
 // Revision 1.2  1999/11/02 17:07:25  dpg1
 // Changes to compile on Solaris.
 //
diff -u -r omni301/src/tool/omniidl/cxx/idlscope.cc omni/src/tool/omniidl/cxx/idlscope.cc
--- omni301/src/tool/omniidl/cxx/idlscope.cc	Fri Aug 18 15:09:06 2000
+++ omni/src/tool/omniidl/cxx/idlscope.cc	Tue Sep 19 10:14:26 2000
@@ -26,13 +26,18 @@
 //   
 //   Scope manipulation
 
-// $Id: idlscope.cc,v 1.15 2000/08/18 14:09:06 dpg1 Exp $
+// $Id: idlscope.cc,v 1.11.2.6 2000/09/19 09:14:26 dpg1 Exp $
 // $Log: idlscope.cc,v $
-// Revision 1.15  2000/08/18 14:09:06  dpg1
-// Merge from omni3_develop for 3.0.1 release.
+// Revision 1.11.2.6  2000/09/19 09:14:26  dpg1
+// Scope::Entry::Kind renamed to Scope::Entry::EntryKind to avoid
+// problems with over-keen compilers
+//
+// Revision 1.11.2.5  2000/08/29 15:20:28  dpg1
+// New relativeScope() function. New -i flag to enter interactive loop
+// after parsing
 //
-// Revision 1.14  2000/07/13 15:25:52  dpg1
-// Merge from omni3_develop for 3.0 release.
+// Revision 1.11.2.4  2000/08/24 11:33:00  dpg1
+// Typo in error message % format string
 //
 // Revision 1.11.2.3  2000/08/04 09:10:27  dpg1
 // Fix look-up of escaped identifiers broken on 19 July. (Bug 14.)
@@ -89,8 +94,8 @@
 #include <string.h>
 
 // Global Scope pointers
-Scope* Scope::global_;
-Scope* Scope::current_;
+Scope* Scope::global_  = 0;
+Scope* Scope::current_ = 0;
 
 // ScopedName implementation
 ScopedName::
@@ -106,12 +111,22 @@
 ScopedName(const ScopedName* sn) :
   scopeList_(0), last_(0), absolute_(sn->absolute())
 {
-  Fragment *f, *g;
+  const Fragment *f;
 
   for (f = sn->scopeList(); f; f = f->next())
     append(f->identifier());
 }
 
+ScopedName::
+ScopedName(const ScopedName::Fragment* frags, _CORBA_Boolean absolute) :
+  scopeList_(0), last_(0), absolute_(absolute)
+{
+  const Fragment *f;
+
+  for (f = frags; f; f = f->next())
+    append(f->identifier());
+}
+
 
 ScopedName::
 ~ScopedName()
@@ -202,7 +217,7 @@
 
 Scope::
 Entry::
-Entry(const Scope* container, Kind k, const char* identifier,
+Entry(const Scope* container, EntryKind k, const char* identifier,
       Scope* scope, Decl* decl, IdlType* idltype,
       Scope::Entry* inh_from, const char* file, int line)
 
@@ -645,16 +660,18 @@
 
 	if (el->tail()) {
 	  // Error -- ambiguous
-	  char* ssn = sn->toString();
-	  IdlError(file, line, "Ambiguous name `%s':", ssn);
-	  delete [] ssn;
-
-	  for (; el; el = el->tail()) {
-	    char* ssn=el->head()->container()->scopedName()->toString();
-	    IdlErrorCont(el->head()->file(), el->head()->line(),
-			 "(`%s' defined in `%s')",
-			 el->head()->identifier(), ssn);
+	  if (file) {
+	    char* ssn = sn->toString();
+	    IdlError(file, line, "Ambiguous name `%s':", ssn);
 	    delete [] ssn;
+
+	    for (; el; el = el->tail()) {
+	      char* ssn = el->head()->container()->scopedName()->toString();
+	      IdlErrorCont(el->head()->file(), el->head()->line(),
+			   "(`%s' defined in `%s')",
+			   el->head()->identifier(), ssn);
+	      delete [] ssn;
+	    }
 	  }
 	  delete el;
 	  return 0;
@@ -666,22 +683,26 @@
     top_component = 0;
 
     if (!e) {
-      char* ssn = sn->toString();
-      IdlError(file, line, "Error in look-up of `%s': `%s' not found",
-	       ssn, fid);
-      delete [] ssn;
+      if (file) {
+	char* ssn = sn->toString();
+	IdlError(file, line, "Error in look-up of `%s': `%s' not found",
+		 ssn, fid);
+	delete [] ssn;
+      }
       return 0;
     }
 
     if (strcmp(fid, e->identifier())) {
       // Case clash
-      char* ssn = sn->toString();
-      IdlError(file, line, "Error in look-up of `%s': `%s' differs in case",
-	       ssn, fid);
-      delete [] ssn;
-      ssn = e->scopedName()->toString();
-      IdlErrorCont(e->file(), e->line(), "from `%s' declared here", ssn);
-      delete [] ssn;
+      if (file) {
+	char* ssn = sn->toString();
+	IdlError(file, line, "Error in look-up of `%s': `%s' differs in case",
+		 ssn, fid);
+	delete [] ssn;
+	ssn = e->scopedName()->toString();
+	IdlErrorCont(e->file(), e->line(), "from `%s' declared here", ssn);
+	delete [] ssn;
+      }
       return 0;
     }
 
@@ -690,13 +711,15 @@
       s = e->scope();
 
       if (!s) {
-	char* ssn = sn->toString();
-	IdlError(file, line,
-		 "Error in look-up of `%s': `%s' does not form a scope",
-		 ssn, e->identifier());
-	IdlErrorCont(e->file(), e->line(), "(`%s' defined here)",
-		     e->identifier());
-	delete [] ssn;
+	if (file) {
+	  char* ssn = sn->toString();
+	  IdlError(file, line,
+		   "Error in look-up of `%s': `%s' does not form a scope",
+		   ssn, e->identifier());
+	  IdlErrorCont(e->file(), e->line(), "(`%s' defined here)",
+		       e->identifier());
+	  delete [] ssn;
+	}
 	return 0;
       }
     }
@@ -715,6 +738,68 @@
 }
 
 
+static ScopedName*
+findRelativeScope(const ScopedName::Fragment* from,
+		  const ScopedName::Fragment* to,
+		  const Scope* fromScope,
+		  const Scope::Entry* target)
+{
+  ScopedName* result = 0;
+
+  if (!to)
+    return 0;
+
+  if (from && !strcmp(from->identifier(), to->identifier())) {
+    // Top name components match -- recursively try next components
+    result = findRelativeScope(from->next(), to->next(), fromScope, target);
+  }
+
+  if (!result) {
+    ScopedName*         test = new ScopedName(to, 0);
+    const Scope::Entry* find = fromScope->findScopedName(test);
+
+    if (find == target)
+      result = test;
+    else
+      delete test;
+  }
+  return result;
+}
+
+ScopedName*
+Scope::relativeScopedName(const ScopedName* from, const ScopedName* to)
+{
+  if (!global_) {
+    // Haven't parsed any IDL yet!
+    return 0;
+  }
+
+  if ((from && !from->absolute()) || !to->absolute())
+    return 0;
+
+  const Scope* fromScope;
+
+  if (from) {
+    const Entry* fromEntry = global_->findScopedName(from);
+    if (!fromEntry) return 0;
+    fromScope = fromEntry->scope();
+  }
+  else
+    fromScope = global_;
+
+  const Entry* toEntry = global_->findScopedName(to);
+  if (!toEntry) return 0;
+
+  ScopedName* result = findRelativeScope(from ? from->scopeList() : 0,
+					 to->scopeList(), fromScope, toEntry);
+
+  if (!result)
+    result = new ScopedName(to);
+
+  return result;
+}
+
+
 // Entry adding functions
 
 void
@@ -931,7 +1016,7 @@
       {
 	IdlError(file, line,
 		 "Declaration of %s `%s' clashes with earlier declaration "
-		 "of %2 `%s'", decl->kindAsString(), identifier,
+		 "of %s `%s'", decl->kindAsString(), identifier,
 		 clash->decl()->kindAsString(), clash->identifier());
 	IdlErrorCont(clash->file(), clash->line(), "(%s `%s' declared here)",
 		     clash->decl()->kindAsString(), clash->identifier());
diff -u -r omni301/src/tool/omniidl/cxx/idlscope.h omni/src/tool/omniidl/cxx/idlscope.h
--- omni301/src/tool/omniidl/cxx/idlscope.h	Thu Jul 13 16:25:52 2000
+++ omni/src/tool/omniidl/cxx/idlscope.h	Tue Sep 19 10:14:26 2000
@@ -26,10 +26,15 @@
 //   
 //   Definitions for scope manipulation
 
-// $Id: idlscope.h,v 1.6 2000/07/13 15:25:52 dpg1 Exp $
+// $Id: idlscope.h,v 1.3.2.2 2000/09/19 09:14:26 dpg1 Exp $
 // $Log: idlscope.h,v $
-// Revision 1.6  2000/07/13 15:25:52  dpg1
-// Merge from omni3_develop for 3.0 release.
+// Revision 1.3.2.2  2000/09/19 09:14:26  dpg1
+// Scope::Entry::Kind renamed to Scope::Entry::EntryKind to avoid
+// problems with over-keen compilers
+//
+// Revision 1.3.2.1  2000/08/29 15:20:29  dpg1
+// New relativeScope() function. New -i flag to enter interactive loop
+// after parsing
 //
 // Revision 1.3  1999/11/02 17:07:25  dpg1
 // Changes to compile on Solaris.
@@ -61,8 +66,8 @@
       delete [] identifier_;
     }
 
-    inline const char* identifier() { return identifier_; }
-    inline Fragment*   next()       { return next_; };
+    inline const char* identifier() const { return identifier_; }
+    inline Fragment*   next()       const { return next_; };
 
   protected:
     Fragment* next_;
@@ -75,8 +80,9 @@
 
   ScopedName(const char* identifier, _CORBA_Boolean absolute);
 
-  // Copy constructor
+  // Copy constructors
   ScopedName(const ScopedName* sn);
+  ScopedName(const Fragment*   frags, _CORBA_Boolean absolute);
 
   ~ScopedName();
 
@@ -182,9 +188,10 @@
   EntryList* iFindWithInheritance(const char* identifier) const;
 
   // Find an entry based on a ScopedName. File and line requesting the
-  // find are given so errors can be reported nicely.
+  // find are given so errors can be reported nicely. If file and line
+  // are zero, do not report errors.
   const Entry* findScopedName(const ScopedName* sn,
-			      const char* file, int line) const;
+			      const char* file = 0, int line = 0) const;
 
   // Find an entry based on a ScopedName, and mark it as used in this
   // scope (and any parent scopes with nestedUse true).
@@ -192,6 +199,13 @@
 
   void addUse(const ScopedName* sn, const char* file, int line);
 
+  // Given source and destination ScopedNames, construct a relative or
+  // absolute ScopedName which uniquely identifies the destination
+  // from within the scope of the source. Returns 0 if either scoped
+  // name does not exist, or is not absolute.
+  static ScopedName* relativeScopedName(const ScopedName* from,
+					const ScopedName* to);
+
 
   // The following add functions take identifiers with _ escape
   // characters intact, so they can properly detect clashes with
@@ -231,7 +245,7 @@
   class Entry {
   public:
 
-    enum Kind {
+    enum EntryKind {
       E_MODULE,			// Module
       E_DECL,			// Declaration
       E_CALLABLE,		// Operation or attribute
@@ -241,14 +255,14 @@
       E_PARENT			// Name of enclosing scope
     };
 
-    Entry(const Scope* container, Kind kind, const char* identifier,
+    Entry(const Scope* container, EntryKind kind, const char* identifier,
 	  Scope* scope, Decl* decl, IdlType* idltype, Entry* inh_from,
 	  const char* file, int line);
 
     ~Entry();
 
     const Scope*      container()  const { return container_; }
-    Kind              kind()       const { return kind_; }
+    EntryKind         kind()       const { return kind_; }
     const char*       identifier() const { return identifier_; }
     const ScopedName* scopedName() const { return scopedName_; }
     const char*       file()       const { return file_; }
@@ -266,7 +280,7 @@
 
   private:
     const Scope*      container_;
-    Kind              kind_;
+    EntryKind         kind_;
     char*             identifier_;
     ScopedName*       scopedName_;
     Scope*            scope_;
diff -u -r omni301/src/tool/omniidl/cxx/idlsysdep.h omni/src/tool/omniidl/cxx/idlsysdep.h
--- omni301/src/tool/omniidl/cxx/idlsysdep.h	Thu Jul 13 16:25:52 2000
+++ omni/src/tool/omniidl/cxx/idlsysdep.h	Tue Nov  9 12:41:40 1999
@@ -26,11 +26,8 @@
 //   
 //   System dependencies
 
-// $Id: idlsysdep.h,v 1.5 2000/07/13 15:25:52 dpg1 Exp $
+// $Id: idlsysdep.h,v 1.2 1999/11/09 12:41:40 dpg1 Exp $
 // $Log: idlsysdep.h,v $
-// Revision 1.5  2000/07/13 15:25:52  dpg1
-// Merge from omni3_develop for 3.0 release.
-//
 // Revision 1.2  1999/11/09 12:41:40  dpg1
 // strcasecmp changes for NT, AIX.
 //
diff -u -r omni301/src/tool/omniidl/cxx/idltype.cc omni/src/tool/omniidl/cxx/idltype.cc
--- omni301/src/tool/omniidl/cxx/idltype.cc	Thu Jul 13 16:25:52 2000
+++ omni/src/tool/omniidl/cxx/idltype.cc	Mon Mar  6 10:40:29 2000
@@ -26,11 +26,8 @@
 //   
 //   Type objects
 
-// $Id: idltype.cc,v 1.8 2000/07/13 15:25:52 dpg1 Exp $
+// $Id: idltype.cc,v 1.5.2.1 2000/03/06 10:40:29 dpg1 Exp $
 // $Log: idltype.cc,v $
-// Revision 1.8  2000/07/13 15:25:52  dpg1
-// Merge from omni3_develop for 3.0 release.
-//
 // Revision 1.5.2.1  2000/03/06 10:40:29  dpg1
 // Typo in string constant.
 //
diff -u -r omni301/src/tool/omniidl/cxx/idltype.h omni/src/tool/omniidl/cxx/idltype.h
--- omni301/src/tool/omniidl/cxx/idltype.h	Thu Jul 13 16:25:52 2000
+++ omni/src/tool/omniidl/cxx/idltype.h	Wed Nov 17 17:16:59 1999
@@ -26,11 +26,8 @@
 //   
 //   Type objects
 
-// $Id: idltype.h,v 1.6 2000/07/13 15:25:52 dpg1 Exp $
+// $Id: idltype.h,v 1.3 1999/11/17 17:16:59 dpg1 Exp $
 // $Log: idltype.h,v $
-// Revision 1.6  2000/07/13 15:25:52  dpg1
-// Merge from omni3_develop for 3.0 release.
-//
 // Revision 1.3  1999/11/17 17:16:59  dpg1
 // Changes to remove static initialisation of objects.
 //
diff -u -r omni301/src/tool/omniidl/cxx/idlutil.cc omni/src/tool/omniidl/cxx/idlutil.cc
--- omni301/src/tool/omniidl/cxx/idlutil.cc	Fri Aug 18 15:09:06 2000
+++ omni/src/tool/omniidl/cxx/idlutil.cc	Fri Sep 22 11:50:21 2000
@@ -26,13 +26,10 @@
 //   
 //   Utility functions
 
-// $Id: idlutil.cc,v 1.7 2000/08/18 14:09:06 dpg1 Exp $
+// $Id: idlutil.cc,v 1.3.2.2 2000/09/22 10:50:21 dpg1 Exp $
 // $Log: idlutil.cc,v $
-// Revision 1.7  2000/08/18 14:09:06  dpg1
-// Merge from omni3_develop for 3.0.1 release.
-//
-// Revision 1.6  2000/07/13 15:25:52  dpg1
-// Merge from omni3_develop for 3.0 release.
+// Revision 1.3.2.2  2000/09/22 10:50:21  dpg1
+// Digital Unix uses strtoul, not strtoull
 //
 // Revision 1.3.2.1  2000/08/07 15:34:36  dpg1
 // Partial back-port of long long from omni3_1_develop.
@@ -121,7 +118,7 @@
 
 #ifdef HAS_LongLong
 
-#  ifdef __WIN32__
+#  if defined(__WIN32__)
 
 IdlIntLiteral
 idl_strtoul(const char* text, int base)
@@ -141,6 +138,14 @@
     abort();
   }
   return ull;
+}
+
+#  elif defined(__osf1__)
+
+IdlIntLiteral
+idl_strtoul(const char* text, int base)
+{
+  return strtoul(text, 0, base);
 }
 
 #  else
diff -u -r omni301/src/tool/omniidl/cxx/idlutil.h omni/src/tool/omniidl/cxx/idlutil.h
--- omni301/src/tool/omniidl/cxx/idlutil.h	Fri Aug 18 15:09:06 2000
+++ omni/src/tool/omniidl/cxx/idlutil.h	Mon Aug  7 16:34:37 2000
@@ -26,14 +26,8 @@
 //   
 //   Utility functions
 
-// $Id: idlutil.h,v 1.7 2000/08/18 14:09:06 dpg1 Exp $
+// $Id: idlutil.h,v 1.3.2.1 2000/08/07 15:34:37 dpg1 Exp $
 // $Log: idlutil.h,v $
-// Revision 1.7  2000/08/18 14:09:06  dpg1
-// Merge from omni3_develop for 3.0.1 release.
-//
-// Revision 1.6  2000/07/13 15:25:52  dpg1
-// Merge from omni3_develop for 3.0 release.
-//
 // Revision 1.3.2.1  2000/08/07 15:34:37  dpg1
 // Partial back-port of long long from omni3_1_develop.
 //
diff -u -r omni301/src/tool/omniidl/cxx/idlvalidate.cc omni/src/tool/omniidl/cxx/idlvalidate.cc
--- omni301/src/tool/omniidl/cxx/idlvalidate.cc	Thu Jul 13 16:25:52 2000
+++ omni/src/tool/omniidl/cxx/idlvalidate.cc	Mon Mar  6 15:03:47 2000
@@ -26,11 +26,8 @@
 //   
 //   Visitor object to validate the tree
 
-// $Id: idlvalidate.cc,v 1.5 2000/07/13 15:25:52 dpg1 Exp $
+// $Id: idlvalidate.cc,v 1.2.2.1 2000/03/06 15:03:47 dpg1 Exp $
 // $Log: idlvalidate.cc,v $
-// Revision 1.5  2000/07/13 15:25:52  dpg1
-// Merge from omni3_develop for 3.0 release.
-//
 // Revision 1.2.2.1  2000/03/06 15:03:47  dpg1
 // Minor bug fixes to omniidl. New -nf and -k flags.
 //
diff -u -r omni301/src/tool/omniidl/cxx/idlvalidate.h omni/src/tool/omniidl/cxx/idlvalidate.h
--- omni301/src/tool/omniidl/cxx/idlvalidate.h	Thu Jul 13 16:25:52 2000
+++ omni/src/tool/omniidl/cxx/idlvalidate.h	Wed Oct 27 15:05:53 1999
@@ -26,11 +26,8 @@
 //   
 //   Visitor object to validate the tree
 
-// $Id: idlvalidate.h,v 1.4 2000/07/13 15:25:52 dpg1 Exp $
+// $Id: idlvalidate.h,v 1.1 1999/10/27 14:05:53 dpg1 Exp $
 // $Log: idlvalidate.h,v $
-// Revision 1.4  2000/07/13 15:25:52  dpg1
-// Merge from omni3_develop for 3.0 release.
-//
 // Revision 1.1  1999/10/27 14:05:53  dpg1
 // *** empty log message ***
 //
diff -u -r omni301/src/tool/omniidl/cxx/idlvisitor.h omni/src/tool/omniidl/cxx/idlvisitor.h
--- omni301/src/tool/omniidl/cxx/idlvisitor.h	Thu Jul 13 16:25:52 2000
+++ omni/src/tool/omniidl/cxx/idlvisitor.h	Wed Oct 27 15:05:52 1999
@@ -26,11 +26,8 @@
 //   
 //   Visitor base class
 
-// $Id: idlvisitor.h,v 1.4 2000/07/13 15:25:52 dpg1 Exp $
+// $Id: idlvisitor.h,v 1.1 1999/10/27 14:05:52 dpg1 Exp $
 // $Log: idlvisitor.h,v $
-// Revision 1.4  2000/07/13 15:25:52  dpg1
-// Merge from omni3_develop for 3.0 release.
-//
 // Revision 1.1  1999/10/27 14:05:52  dpg1
 // *** empty log message ***
 //
diff -u -r omni301/src/tool/omniidl/cxx/lex.yy.cc omni/src/tool/omniidl/cxx/lex.yy.cc
--- omni301/src/tool/omniidl/cxx/lex.yy.cc	Fri Aug 18 15:09:06 2000
+++ omni/src/tool/omniidl/cxx/lex.yy.cc	Tue Aug 29 11:20:27 2000
@@ -1,7 +1,7 @@
 /* A lexical scanner generated by flex */
 
 /* Scanner skeleton version:
- * $Header: /cvsroot/omni/src/tool/omniidl/cxx/lex.yy.cc,v 1.12 2000/08/18 14:09:06 dpg1 Exp $
+ * $Header: /cvsroot/omni/src/tool/omniidl/cxx/lex.yy.cc,v 1.8.2.11 2000/08/29 10:20:27 dpg1 Exp $
  */
 
 #define FLEX_SCANNER
@@ -803,9 +803,9 @@
 #define YY_MORE_ADJ 0
 #define YY_RESTORE_YY_MORE_OFFSET
 char *yytext;
-#line 1 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 1 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 #define INITIAL 0
-#line 2 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 2 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 //                          Package   : omniidl
 // idl.ll                   Created on: 1999/10/05
 //			    Author    : Duncan Grisby (dpg1)
@@ -833,18 +833,15 @@
 //   
 //   Flex lexical analyser
 
-// $Id: lex.yy.cc,v 1.12 2000/08/18 14:09:06 dpg1 Exp $
+// $Id: lex.yy.cc,v 1.8.2.11 2000/08/29 10:20:27 dpg1 Exp $
 // $Log: lex.yy.cc,v $
-// Revision 1.12  2000/08/18 14:09:06  dpg1
-// Merge from omni3_develop for 3.0.1 release.
+// Revision 1.8.2.11  2000/08/29 10:20:27  dpg1
+// Operations and attributes now have repository ids.
 //
-// Revision 1.11  2000/07/13 15:25:52  dpg1
-// Merge from omni3_develop for 3.0 release.
-//
-// Revision 1.8.2.10  2000/08/07 15:34:37  dpg1
+// Revision 1.7.2.8  2000/08/07 15:34:35  dpg1
 // Partial back-port of long long from omni3_1_develop.
 //
-// Revision 1.8.2.9  2000/06/09 11:20:47  dpg1
+// Revision 1.7.2.7  2000/06/09 11:20:47  dpg1
 // Last fix put __omni_pragma line numbers off by one...
 //
 // Revision 1.7.2.6  2000/06/08 14:58:19  dpg1
@@ -1085,7 +1082,7 @@
 	register char *yy_cp = NULL, *yy_bp = NULL;
 	register int yy_act;
 
-#line 136 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 142 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 
 
 
@@ -1181,257 +1178,257 @@
 	{ /* beginning of action switch */
 case 1:
 YY_RULE_SETUP
-#line 138 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 144 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 return ABSTRACT;
 	YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 139 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 145 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 return ANY;
 	YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 140 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 146 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 return ATTRIBUTE;
 	YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 141 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 147 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 return BOOLEAN;
 	YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 142 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 148 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 return CASE;
 	YY_BREAK
 case 6:
 YY_RULE_SETUP
-#line 143 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 149 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 return CHAR;
 	YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 144 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 150 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 return CONST;
 	YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 145 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 151 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 return CONTEXT;
 	YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 146 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 152 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 return CUSTOM;
 	YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 147 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 153 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 return DEFAULT;
 	YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 148 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 154 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 return DOUBLE;
 	YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 149 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 155 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 return ENUM;
 	YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 150 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 156 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 return EXCEPTION;
 	YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 151 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 157 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 return FACTORY;
 	YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 152 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 158 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 return FALSE_;
 	YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 153 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 159 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 return FIXED;
 	YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 154 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 160 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 return FLOAT;
 	YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 155 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 161 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 return IN;
 	YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 156 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 162 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 return INOUT;
 	YY_BREAK
 case 20:
 YY_RULE_SETUP
-#line 157 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 163 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 return INTERFACE;
 	YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 158 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 164 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 return LONG;
 	YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 159 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 165 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 return MODULE;
 	YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 160 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 166 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 return NATIVE;
 	YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 161 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 167 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 return OBJECT;
 	YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 162 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 168 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 return OCTET;
 	YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 163 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 169 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 return ONEWAY;
 	YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 164 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 170 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 return OUT;
 	YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 165 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 171 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 return PRIVATE;
 	YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 166 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 172 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 return PUBLIC;
 	YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 167 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 173 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 return RAISES;
 	YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 168 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 174 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 return READONLY;
 	YY_BREAK
 case 32:
 YY_RULE_SETUP
-#line 169 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 175 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 return SEQUENCE;
 	YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 170 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 176 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 return SHORT;
 	YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 171 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 177 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 return STRING;
 	YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 172 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 178 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 return STRUCT;
 	YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 173 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 179 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 return SUPPORTS;
 	YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 174 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 180 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 return SWITCH;
 	YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 175 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 181 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 return TRUE_;
 	YY_BREAK
 case 39:
 YY_RULE_SETUP
-#line 176 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 182 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 return TRUNCATABLE;
 	YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 177 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 183 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 return TYPEDEF;
 	YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 178 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 184 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 return UNION;
 	YY_BREAK
 case 42:
 YY_RULE_SETUP
-#line 179 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 185 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 return UNSIGNED;
 	YY_BREAK
 case 43:
 YY_RULE_SETUP
-#line 180 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 186 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 return VALUEBASE;
 	YY_BREAK
 case 44:
 YY_RULE_SETUP
-#line 181 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 187 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 return VALUETYPE;
 	YY_BREAK
 case 45:
 YY_RULE_SETUP
-#line 182 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 188 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 return VOID;
 	YY_BREAK
 case 46:
 YY_RULE_SETUP
-#line 183 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 189 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 return WCHAR;
 	YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 184 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 190 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 return WSTRING;
 	YY_BREAK
 case 48:
 YY_RULE_SETUP
-#line 186 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 192 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 return LEFT_SHIFT;
 	YY_BREAK
 case 49:
 YY_RULE_SETUP
-#line 187 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 193 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 return RIGHT_SHIFT;
 	YY_BREAK
 case 50:
 YY_RULE_SETUP
-#line 188 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 194 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 return SCOPE_DELIM;
 	YY_BREAK
 case 51:
 YY_RULE_SETUP
-#line 190 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 196 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 {
   yylval.id_val = idl_strdup(yytext);
   return IDENTIFIER;
@@ -1439,7 +1436,7 @@
 	YY_BREAK
 case 52:
 YY_RULE_SETUP
-#line 195 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 201 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 {
   yylval.id_val = idl_strdup(yytext);
   return IDENTIFIER;
@@ -1447,7 +1444,7 @@
 	YY_BREAK
 case 53:
 YY_RULE_SETUP
-#line 200 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 206 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 {
   errno = 0;
   yylval.int_literal_val = idl_strtoul(yytext, 10);
@@ -1460,7 +1457,7 @@
 	YY_BREAK
 case 54:
 YY_RULE_SETUP
-#line 214 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 216 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 {
   errno = 0;
   yylval.int_literal_val = idl_strtoul(yytext, 8);
@@ -1473,7 +1470,7 @@
 	YY_BREAK
 case 55:
 YY_RULE_SETUP
-#line 228 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 226 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 {
   errno = 0;
   yylval.int_literal_val = idl_strtoul(yytext, 16);
@@ -1486,7 +1483,7 @@
 	YY_BREAK
 case 56:
 YY_RULE_SETUP
-#line 242 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 236 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 {
   yylval.int_literal_val = 0;
   return INTEGER_LITERAL;
@@ -1494,7 +1491,7 @@
 	YY_BREAK
 case 57:
 YY_RULE_SETUP
-#line 247 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 241 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 {
   yylval.char_val = yytext[1];
   return CHARACTER_LITERAL;
@@ -1502,7 +1499,7 @@
 	YY_BREAK
 case 58:
 YY_RULE_SETUP
-#line 252 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 246 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 {
   yytext[yyleng-1] = '\0';
   yylval.char_val = octalToChar(yytext + 1);
@@ -1511,7 +1508,7 @@
 	YY_BREAK
 case 59:
 YY_RULE_SETUP
-#line 258 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 252 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 {
   yytext[yyleng-1] = '\0';
   yylval.char_val = hexToChar(yytext + 1);
@@ -1520,7 +1517,7 @@
 	YY_BREAK
 case 60:
 YY_RULE_SETUP
-#line 264 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 258 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 {
   IdlError(currentFile, yylineno,
 	   "\\u may only be used in wide characters and strings");
@@ -1530,7 +1527,7 @@
 	YY_BREAK
 case 61:
 YY_RULE_SETUP
-#line 271 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 265 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 {
   yytext[yyleng-1] = '\0';
   yylval.char_val = escapeToChar(yytext + 1);
@@ -1539,7 +1536,7 @@
 	YY_BREAK
 case 62:
 YY_RULE_SETUP
-#line 277 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 271 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 {
   yylval.wchar_val = yytext[2];
   return WIDE_CHARACTER_LITERAL;
@@ -1547,7 +1544,7 @@
 	YY_BREAK
 case 63:
 YY_RULE_SETUP
-#line 282 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 276 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 {
   yytext[yyleng-1] = '\0';
   yylval.wchar_val = octalToWChar(yytext + 2);
@@ -1556,7 +1553,7 @@
 	YY_BREAK
 case 64:
 YY_RULE_SETUP
-#line 288 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 282 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 {
   yytext[yyleng-1] = '\0';
   yylval.wchar_val = hexToWChar(yytext + 2);
@@ -1565,7 +1562,7 @@
 	YY_BREAK
 case 65:
 YY_RULE_SETUP
-#line 294 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 288 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 {
   yytext[yyleng-1] = '\0';
   yylval.wchar_val = hexToWChar(yytext + 2);
@@ -1574,7 +1571,7 @@
 	YY_BREAK
 case 66:
 YY_RULE_SETUP
-#line 300 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 294 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 {
   yytext[yyleng-1] = '\0';
   yylval.wchar_val = escapeToWChar(yytext + 2);
@@ -1583,7 +1580,7 @@
 	YY_BREAK
 case 67:
 YY_RULE_SETUP
-#line 306 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 300 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 {
   // Only deal with floats in INITIAL state, so version pragmas don't
   // get interpreted as floats.
@@ -1593,7 +1590,7 @@
 	YY_BREAK
 case 68:
 YY_RULE_SETUP
-#line 313 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 307 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 {
   yylval.float_literal_val = idl_strtod(yytext);
   return FLOATING_PT_LITERAL;
@@ -1601,7 +1598,7 @@
 	YY_BREAK
 case 69:
 YY_RULE_SETUP
-#line 312 "/local/dpg1/omni/31/src/tool/omniidl/cxx/idl.ll"
+#line 312 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 {
   yylval.float_literal_val = idl_strtod(yytext);
   return FLOATING_PT_LITERAL;
@@ -1609,7 +1606,7 @@
 	YY_BREAK
 case 70:
 YY_RULE_SETUP
-#line 323 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 317 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 {
   yytext[yyleng-1] = '\0';
   yylval.string_val = escapedStringToString(yytext + 1);
@@ -1618,7 +1615,7 @@
 	YY_BREAK
 case 71:
 YY_RULE_SETUP
-#line 329 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 323 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 {
   yytext[yyleng-1] = '\0';
   yylval.wstring_val = escapedStringToWString(yytext + 1);
@@ -1627,7 +1624,7 @@
 	YY_BREAK
 case 72:
 YY_RULE_SETUP
-#line 335 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 329 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 {
   yylval.fixed_val = fixed(yytext);
   return FIXED_PT_LITERAL;
@@ -1635,7 +1632,7 @@
 	YY_BREAK
 case 73:
 YY_RULE_SETUP
-#line 340 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 334 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 {
   yylval.fixed_val = fixed(yytext);
   return FIXED_PT_LITERAL;
@@ -1643,7 +1640,7 @@
 	YY_BREAK
 case 74:
 YY_RULE_SETUP
-#line 345 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 339 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 {
   yylval.fixed_val = fixed(yytext);
   return FIXED_PT_LITERAL;
@@ -1651,12 +1648,12 @@
 	YY_BREAK
 case 75:
 YY_RULE_SETUP
-#line 350 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 344 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 { Comment::add(yytext, currentFile, yylineno-1); }
 	YY_BREAK
 case 76:
 YY_RULE_SETUP
-#line 352 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 346 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 {
   Comment::add(yytext, currentFile, yylineno);
   BEGIN(comment);
@@ -1664,27 +1661,27 @@
 	YY_BREAK
 case 77:
 YY_RULE_SETUP
-#line 357 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 351 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 { Comment::append(yytext); }
 	YY_BREAK
 case 78:
 YY_RULE_SETUP
-#line 358 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 352 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 { Comment::append(yytext); }
 	YY_BREAK
 case 79:
 YY_RULE_SETUP
-#line 359 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 353 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 { Comment::append(yytext); }
 	YY_BREAK
 case 80:
 YY_RULE_SETUP
-#line 360 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 354 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 { Comment::append(yytext); BEGIN(INITIAL); }
 	YY_BREAK
 case 81:
 YY_RULE_SETUP
-#line 362 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 356 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 {
   BEGIN(omni_pragma);
   return OMNI_PRAGMA;
@@ -1692,7 +1689,7 @@
 	YY_BREAK
 case 82:
 YY_RULE_SETUP
-#line 367 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 361 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 {
   BEGIN(INITIAL);
   return END_PRAGMA;
@@ -1700,7 +1697,7 @@
 	YY_BREAK
 case 83:
 YY_RULE_SETUP
-#line 372 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 366 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 {
   yylval.string_val = idl_strdup(yytext);
   return UNKNOWN_PRAGMA_BODY;
@@ -1708,7 +1705,7 @@
 	YY_BREAK
 case 84:
 YY_RULE_SETUP
-#line 376 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 370 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 {
   yylval.string_val = idl_strdup(yytext);
   return UNKNOWN_PRAGMA_BODY;
@@ -1716,7 +1713,7 @@
 	YY_BREAK
 case 85:
 YY_RULE_SETUP
-#line 382 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 376 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 {
   BEGIN(known_pragma);
   return PRAGMA_PREFIX;
@@ -1724,7 +1721,7 @@
 	YY_BREAK
 case 86:
 YY_RULE_SETUP
-#line 387 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 381 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 {
   BEGIN(known_pragma);
   return PRAGMA_ID;
@@ -1732,7 +1729,7 @@
 	YY_BREAK
 case 87:
 YY_RULE_SETUP
-#line 392 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 386 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 {
   BEGIN(known_pragma);
   return PRAGMA_VERSION;
@@ -1740,12 +1737,12 @@
 	YY_BREAK
 case 88:
 YY_RULE_SETUP
-#line 397 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 391 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 { /* Eat spaces and tabs */ }
 	YY_BREAK
 case 89:
 YY_RULE_SETUP
-#line 399 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 393 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 {
   BEGIN(unknown_pragma);
   return PRAGMA;
@@ -1753,7 +1750,7 @@
 	YY_BREAK
 case 90:
 YY_RULE_SETUP
-#line 404 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 398 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 {
   yylval.string_val = idl_strdup(yytext);
   return UNKNOWN_PRAGMA_BODY;
@@ -1761,14 +1758,14 @@
 	YY_BREAK
 case 91:
 YY_RULE_SETUP
-#line 409 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 403 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 {
   /* Continue line if it ends with \ */
 }
 	YY_BREAK
 case 92:
 YY_RULE_SETUP
-#line 413 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 407 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 {
   BEGIN(INITIAL);
   return END_PRAGMA;
@@ -1776,40 +1773,40 @@
 	YY_BREAK
 case 93:
 YY_RULE_SETUP
-#line 418 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 412 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 {
   parseLineDirective(yytext);
 }
 	YY_BREAK
 case 94:
 YY_RULE_SETUP
-#line 422 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 416 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 {
   parseLineDirective(yytext);
 }
 	YY_BREAK
 case 95:
 YY_RULE_SETUP
-#line 426 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 420 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 {
   parseLineDirective(yytext);
 }
 	YY_BREAK
 case 96:
 YY_RULE_SETUP
-#line 430 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 424 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 { /* Eat white space */ }
 	YY_BREAK
 case 97:
 YY_RULE_SETUP
-#line 432 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 426 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 {
   return yytext[0];
 }
 	YY_BREAK
 case 98:
 YY_RULE_SETUP
-#line 436 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 430 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 ECHO;
 	YY_BREAK
 			case YY_STATE_EOF(INITIAL):
@@ -2701,7 +2698,7 @@
 	return 0;
 	}
 #endif
-#line 436 "/home/dpg1/omni/cvs/ins/omni/src/tool/omniidl/cxx/idl.ll"
+#line 430 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.ll"
 
 
 char octalToChar(char* s) {
@@ -2927,5 +2924,5 @@
 #ifdef __VMS
 // Some versions of DEC C++ for OpenVMS set the module name used by the
 // librarian based on the last #line encountered.
-#line 2929 "lex_yy.cc"
+#line 2923 "lex_yy.cc"
 #endif
diff -u -r omni301/src/tool/omniidl/cxx/y.tab.cc omni/src/tool/omniidl/cxx/y.tab.cc
--- omni301/src/tool/omniidl/cxx/y.tab.cc	Fri Aug 18 15:09:05 2000
+++ omni/src/tool/omniidl/cxx/y.tab.cc	Tue Aug 29 11:20:28 2000
@@ -70,7 +70,7 @@
 #define	LEFT_SHIFT	320
 #define	RIGHT_SHIFT	321
 
-#line 73 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 76 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 
 
 #include <stdlib.h>
@@ -110,7 +110,7 @@
 #endif
 
 
-#line 113 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 116 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 typedef union {
   char*                    id_val;
   int                      int_val;
@@ -346,37 +346,37 @@
 
 #if YYDEBUG != 0
 static const short yyrline[] = { 0,
-   377,   379,   385,   387,   393,   395,   396,   397,   398,   399,
-   400,   401,   402,   408,   413,   416,   420,   428,   432,   434,
-   437,   442,   445,   449,   457,   463,   470,   472,   475,   479,
-   481,   487,   489,   490,   491,   492,   493,   494,   500,   502,
-   505,   509,   513,   521,   528,   532,   536,   539,   549,   551,
-   552,   553,   556,   560,   565,   573,   576,   581,   585,   590,
-   602,   609,   615,   620,   623,   628,   632,   635,   640,   647,
-   649,   652,   656,   666,   670,   672,   678,   680,   681,   684,
-   692,   694,   697,   700,   704,   706,   714,   720,   722,   725,
-   727,   733,   741,   747,   749,   750,   751,   752,   753,   754,
-   755,   756,   759,   762,   766,   768,   771,   773,   776,   778,
-   783,   785,   788,   793,   795,   796,   799,   801,   804,   807,
-   812,   818,   821,   823,   824,   827,   831,   832,   835,   839,
-   842,   845,   848,   851,   854,   857,   862,   864,   873,   875,
-   884,   886,   889,   897,   899,   900,   901,   902,   907,   915,
-   917,   920,   922,   923,   928,   930,   931,   932,   933,   934,
-   935,   936,   937,   940,   942,   943,   944,   947,   949,   950,
-   953,   955,   961,   963,   966,   972,   976,   978,   979,   982,
-   984,   987,   989,   990,   993,   997,  1001,  1005,  1007,  1008,
-  1011,  1015,  1019,  1023,  1027,  1031,  1035,  1039,  1043,  1047,
-  1052,  1060,  1066,  1068,  1074,  1080,  1087,  1096,  1104,  1110,
-  1112,  1113,  1114,  1115,  1121,  1125,  1127,  1133,  1140,  1142,
-  1148,  1152,  1157,  1164,  1169,  1176,  1182,  1184,  1190,  1196,
-  1200,  1205,  1207,  1212,  1214,  1219,  1225,  1227,  1233,  1237,
-  1243,  1245,  1248,  1250,  1256,  1261,  1269,  1275,  1277,  1283,
-  1286,  1290,  1299,  1305,  1307,  1310,  1314,  1316,  1319,  1321,
-  1322,  1329,  1331,  1337,  1343,  1345,  1346,  1349,  1351,  1354,
-  1358,  1362,  1368,  1370,  1373,  1377,  1381,  1387,  1389,  1390,
-  1391,  1396,  1403,  1410,  1414,  1416,  1417,  1418,  1421,  1423,
-  1426,  1428,  1431,  1435,  1440,  1445,  1450,  1455,  1460,  1466,
-  1472,  1474
+   380,   382,   388,   390,   396,   398,   399,   400,   401,   402,
+   403,   404,   405,   411,   416,   419,   423,   431,   435,   437,
+   440,   445,   448,   452,   460,   466,   473,   475,   478,   482,
+   484,   490,   492,   493,   494,   495,   496,   497,   503,   505,
+   508,   512,   516,   524,   531,   535,   539,   542,   552,   554,
+   555,   556,   559,   563,   568,   576,   579,   584,   588,   593,
+   605,   612,   618,   623,   626,   631,   635,   638,   643,   650,
+   652,   655,   659,   669,   673,   675,   681,   683,   684,   687,
+   695,   697,   700,   703,   707,   709,   717,   723,   725,   728,
+   730,   736,   744,   750,   752,   753,   754,   755,   756,   757,
+   758,   759,   762,   765,   769,   771,   774,   776,   779,   781,
+   786,   788,   791,   796,   798,   799,   802,   804,   807,   810,
+   815,   821,   824,   826,   827,   830,   834,   835,   838,   842,
+   845,   848,   851,   854,   857,   860,   865,   867,   876,   878,
+   887,   889,   892,   900,   902,   903,   904,   905,   910,   918,
+   920,   923,   925,   926,   931,   933,   934,   935,   936,   937,
+   938,   939,   940,   943,   945,   946,   947,   950,   952,   953,
+   956,   958,   964,   966,   969,   975,   979,   981,   982,   985,
+   987,   990,   992,   993,   996,  1000,  1004,  1008,  1010,  1011,
+  1014,  1018,  1022,  1026,  1030,  1034,  1038,  1042,  1046,  1050,
+  1055,  1063,  1069,  1071,  1077,  1083,  1090,  1099,  1107,  1113,
+  1115,  1116,  1117,  1118,  1124,  1128,  1130,  1136,  1143,  1145,
+  1151,  1155,  1160,  1167,  1172,  1179,  1185,  1187,  1193,  1199,
+  1203,  1208,  1210,  1215,  1217,  1222,  1228,  1230,  1236,  1240,
+  1246,  1248,  1251,  1253,  1259,  1264,  1272,  1278,  1280,  1286,
+  1289,  1293,  1302,  1308,  1310,  1313,  1317,  1319,  1322,  1324,
+  1325,  1332,  1334,  1340,  1346,  1348,  1349,  1352,  1354,  1357,
+  1361,  1365,  1371,  1373,  1376,  1380,  1384,  1390,  1392,  1393,
+  1394,  1399,  1406,  1413,  1417,  1419,  1420,  1421,  1424,  1426,
+  1429,  1431,  1434,  1438,  1443,  1448,  1453,  1458,  1463,  1469,
+  1475,  1477
 };
 #endif
 
@@ -1474,89 +1474,89 @@
   switch (yyn) {
 
 case 1:
-#line 378 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 381 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.decl_val = 0; ;
     break;}
 case 2:
-#line 379 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 382 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.decl_val = yyvsp[0].decl_val;
       AST::tree()->setDeclarations(yyvsp[0].decl_val);
     ;
     break;}
 case 3:
-#line 386 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 389 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.decl_val = yyvsp[0].decl_val; ;
     break;}
 case 4:
-#line 387 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 390 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       if (yyvsp[-1].decl_val) { yyvsp[-1].decl_val->append(yyvsp[0].decl_val); yyval.decl_val = yyvsp[-1].decl_val; }
       else yyval.decl_val = yyvsp[0].decl_val;
     ;
     break;}
 case 5:
-#line 394 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 397 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.decl_val = yyvsp[-1].decl_val; ;
     break;}
 case 6:
-#line 395 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 398 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.decl_val = yyvsp[-1].const_val; ;
     break;}
 case 7:
-#line 396 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 399 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.decl_val = yyvsp[-1].exception_val; ;
     break;}
 case 8:
-#line 397 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 400 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.decl_val = yyvsp[-1].decl_val; ;
     break;}
 case 9:
-#line 398 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 401 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.decl_val = yyvsp[-1].module_val; ;
     break;}
 case 10:
-#line 399 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 402 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.decl_val = yyvsp[-1].value_base_val; ;
     break;}
 case 11:
-#line 400 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 403 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.decl_val = 0; ;
     break;}
 case 12:
-#line 401 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 404 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.decl_val = 0; ;
     break;}
 case 13:
-#line 402 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 405 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       IdlSyntaxError(currentFile, yylineno, "Syntax error in definition");
       yyval.decl_val = 0;
     ;
     break;}
 case 14:
-#line 409 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 412 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyvsp[-4].module_val->finishConstruction(yyvsp[-1].decl_val);
       yyval.module_val = yyvsp[-4].module_val;
     ;
     break;}
 case 15:
-#line 413 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 416 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       IdlSyntaxError(currentFile, yylineno,
 		     "Syntax error in module definition");
     ;
     break;}
 case 16:
-#line 416 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 419 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyvsp[-5].module_val->finishConstruction(yyvsp[-1].decl_val);
       yyval.module_val = yyvsp[-5].module_val;
     ;
     break;}
 case 17:
-#line 420 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 423 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       IdlSyntaxError(currentFile, yylineno,
 		     "Syntax error in module definition (no body found)");
@@ -1565,40 +1565,40 @@
     ;
     break;}
 case 18:
-#line 429 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 432 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.module_val = new Module(currentFile, yylineno, mainFile, yyvsp[0].id_val); ;
     break;}
 case 19:
-#line 433 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 436 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.decl_val = yyvsp[0].interface_val; ;
     break;}
 case 20:
-#line 434 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 437 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.decl_val = yyvsp[0].forward_val; ;
     break;}
 case 21:
-#line 438 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 441 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyvsp[-3].interface_val->finishConstruction(yyvsp[-1].decl_val);
       yyval.interface_val = yyvsp[-3].interface_val;
     ;
     break;}
 case 22:
-#line 442 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 445 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       IdlSyntaxError(currentFile, yylineno,
 		     "Syntax error in interface definition");
     ;
     break;}
 case 23:
-#line 445 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 448 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyvsp[-5].interface_val->finishConstruction(yyvsp[-1].decl_val);
       yyval.interface_val = yyvsp[-5].interface_val;
     ;
     break;}
 case 24:
-#line 449 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 452 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       IdlSyntaxError(currentFile, yylineno,
 		     "Syntax error in interface definition (no body found)");
@@ -1607,91 +1607,91 @@
     ;
     break;}
 case 25:
-#line 458 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 461 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.forward_val = new Forward(currentFile, yylineno, mainFile, yyvsp[0].id_val, yyvsp[-2].boolean_val);
     ;
     break;}
 case 26:
-#line 465 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 468 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.interface_val = new Interface(currentFile, yylineno, mainFile, yyvsp[-2].id_val, yyvsp[-4].boolean_val, yyvsp[0].inheritspec_val);
     ;
     break;}
 case 27:
-#line 471 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 474 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.boolean_val = 0; ;
     break;}
 case 28:
-#line 472 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 475 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.boolean_val = 1; ;
     break;}
 case 29:
-#line 476 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 479 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.decl_val = yyvsp[0].decl_val; ;
     break;}
 case 30:
-#line 480 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 483 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.decl_val = 0; ;
     break;}
 case 31:
-#line 481 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 484 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       if (yyvsp[-1].decl_val) { yyvsp[-1].decl_val->append(yyvsp[0].decl_val); yyval.decl_val = yyvsp[-1].decl_val; }
       else yyval.decl_val = yyvsp[0].decl_val;
     ;
     break;}
 case 32:
-#line 488 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 491 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.decl_val = yyvsp[-1].decl_val; ;
     break;}
 case 33:
-#line 489 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 492 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.decl_val = yyvsp[-1].const_val; ;
     break;}
 case 34:
-#line 490 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 493 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.decl_val = yyvsp[-1].exception_val; ;
     break;}
 case 35:
-#line 491 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 494 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.decl_val = yyvsp[-1].attribute_val; ;
     break;}
 case 36:
-#line 492 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 495 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.decl_val = yyvsp[-1].operation_val; ;
     break;}
 case 37:
-#line 493 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 496 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.decl_val = 0; ;
     break;}
 case 38:
-#line 494 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 497 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       IdlSyntaxError(currentFile, yylineno, "Syntax error in interface body");
       yyval.decl_val = 0;
     ;
     break;}
 case 39:
-#line 501 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 504 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.inheritspec_val = 0; ;
     break;}
 case 40:
-#line 502 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 505 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.inheritspec_val = yyvsp[0].inheritspec_val; ;
     break;}
 case 41:
-#line 506 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 509 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.inheritspec_val = yyvsp[0].inheritspec_val; ;
     break;}
 case 42:
-#line 510 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 513 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.inheritspec_val = new InheritSpec(yyvsp[-1].scopedname_val, currentFile, yylineno);
     ;
     break;}
 case 43:
-#line 513 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 516 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       if (yyvsp[-4].inheritspec_val) {
 	yyvsp[-4].inheritspec_val->append(new InheritSpec(yyvsp[-1].scopedname_val, currentFile, yylineno),
@@ -1702,7 +1702,7 @@
     ;
     break;}
 case 44:
-#line 521 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 524 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       IdlSyntaxError(currentFile, yylineno,
 		     "Syntax error in inheritance list");
@@ -1710,58 +1710,58 @@
     ;
     break;}
 case 45:
-#line 529 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 532 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.scopedname_val = yyvsp[0].scopedname_val; ;
     break;}
 case 46:
-#line 533 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 536 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.scopedname_val = new ScopedName(yyvsp[0].id_val, 0);
     ;
     break;}
 case 47:
-#line 536 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 539 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.scopedname_val = new ScopedName(yyvsp[0].id_val, 1);
     ;
     break;}
 case 48:
-#line 539 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 542 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyvsp[-2].scopedname_val->append(yyvsp[0].id_val);
       yyval.scopedname_val=yyvsp[-2].scopedname_val;
     ;
     break;}
 case 49:
-#line 550 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 553 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.value_base_val = yyvsp[0].value_val; ;
     break;}
 case 50:
-#line 551 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 554 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.value_base_val = yyvsp[0].value_abs_val; ;
     break;}
 case 51:
-#line 552 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 555 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.value_base_val = yyvsp[0].value_box_val; ;
     break;}
 case 52:
-#line 553 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 556 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.value_base_val = yyvsp[0].value_forward_val; ;
     break;}
 case 53:
-#line 557 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 560 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.value_forward_val = new ValueForward(currentFile, yylineno, mainFile, 0, yyvsp[0].id_val);
     ;
     break;}
 case 54:
-#line 560 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 563 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.value_forward_val = new ValueForward(currentFile, yylineno, mainFile, 1, yyvsp[0].id_val);
     ;
     break;}
 case 55:
-#line 566 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 569 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.value_box_val = new ValueBox(currentFile, yylineno, mainFile,
 			yyvsp[-1].id_val, yyvsp[0].type_spec_val->type(), yyvsp[0].type_spec_val->constr());
@@ -1769,13 +1769,13 @@
     ;
     break;}
 case 56:
-#line 574 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 577 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       valueabs_hack = new ValueAbs(currentFile, yylineno, mainFile, yyvsp[0].id_val, 0, 0);
     ;
     break;}
 case 57:
-#line 576 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 579 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       valueabs_hack->finishConstruction(yyvsp[-1].decl_val);
       yyval.value_abs_val = valueabs_hack;
@@ -1783,7 +1783,7 @@
     ;
     break;}
 case 58:
-#line 581 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 584 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       valueabs_hack = new ValueAbs(currentFile, yylineno, mainFile, yyvsp[-1].id_val,
 				   yyvsp[0].valueinheritsupportspec_val->inherits(), yyvsp[0].valueinheritsupportspec_val->supports());
@@ -1791,7 +1791,7 @@
     ;
     break;}
 case 59:
-#line 585 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 588 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       valueabs_hack->finishConstruction(yyvsp[-1].decl_val);
       yyval.value_abs_val = valueabs_hack;
@@ -1799,7 +1799,7 @@
     ;
     break;}
 case 60:
-#line 590 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 593 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       IdlSyntaxError(currentFile, yylineno,
 		     "Syntax error in abstract valuetype");
@@ -1812,14 +1812,14 @@
     ;
     break;}
 case 61:
-#line 603 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 606 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyvsp[-3].value_val->finishConstruction(yyvsp[-1].decl_val);
       yyval.value_val = yyvsp[-3].value_val;
     ;
     break;}
 case 62:
-#line 610 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 613 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.value_val = new Value(currentFile, yylineno, mainFile, 0, yyvsp[-1].id_val,
 		     yyvsp[0].valueinheritsupportspec_val->inherits(), yyvsp[0].valueinheritsupportspec_val->supports());
@@ -1827,7 +1827,7 @@
     ;
     break;}
 case 63:
-#line 615 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 618 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.value_val = new Value(currentFile, yylineno, mainFile, 1, yyvsp[-1].id_val,
 		     yyvsp[0].valueinheritsupportspec_val->inherits(), yyvsp[0].valueinheritsupportspec_val->supports());
@@ -1835,58 +1835,58 @@
     ;
     break;}
 case 64:
-#line 620 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 623 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.value_val = new Value(currentFile, yylineno, mainFile, 0, yyvsp[0].id_val, 0, 0);
     ;
     break;}
 case 65:
-#line 623 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 626 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.value_val = new Value(currentFile, yylineno, mainFile, 1, yyvsp[0].id_val, 0, 0);
     ;
     break;}
 case 66:
-#line 629 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 632 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.valueinheritsupportspec_val = new ValueInheritSupportSpec(yyvsp[-2].valueinheritspec_val, yyvsp[0].inheritspec_val);
     ;
     break;}
 case 67:
-#line 632 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 635 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.valueinheritsupportspec_val = new ValueInheritSupportSpec(yyvsp[0].valueinheritspec_val, 0);
     ;
     break;}
 case 68:
-#line 635 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 638 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.valueinheritsupportspec_val = new ValueInheritSupportSpec(0, yyvsp[0].inheritspec_val);
     ;
     break;}
 case 69:
-#line 641 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 644 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       if (yyvsp[-1].boolean_val) yyvsp[0].valueinheritspec_val->setTruncatable();
       yyval.valueinheritspec_val = yyvsp[0].valueinheritspec_val;
     ;
     break;}
 case 70:
-#line 648 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 651 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.boolean_val = 0; ;
     break;}
 case 71:
-#line 649 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 652 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.boolean_val = 1; ;
     break;}
 case 72:
-#line 653 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 656 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.valueinheritspec_val = new ValueInheritSpec(yyvsp[0].scopedname_val, currentFile, yylineno);
     ;
     break;}
 case 73:
-#line 656 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 659 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       if (yyvsp[-2].valueinheritspec_val) {
 	yyvsp[-2].valueinheritspec_val->append(new ValueInheritSpec(yyvsp[0].scopedname_val, currentFile, yylineno),
@@ -1897,34 +1897,34 @@
     ;
     break;}
 case 74:
-#line 667 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 670 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.scopedname_val = yyvsp[0].scopedname_val; ;
     break;}
 case 75:
-#line 671 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 674 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.decl_val = 0; ;
     break;}
 case 76:
-#line 672 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 675 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       if (yyvsp[-1].decl_val) { yyvsp[-1].decl_val->append(yyvsp[0].decl_val); yyval.decl_val = yyvsp[-1].decl_val; }
       else yyval.decl_val = yyvsp[0].decl_val;
     ;
     break;}
 case 77:
-#line 679 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 682 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.decl_val = yyvsp[0].decl_val; ;
     break;}
 case 78:
-#line 680 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 683 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.decl_val = yyvsp[0].statemember_val; ;
     break;}
 case 79:
-#line 681 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 684 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.decl_val = yyvsp[0].factory_val; ;
     break;}
 case 80:
-#line 685 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 688 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.statemember_val = new StateMember(currentFile, yylineno, mainFile,
 			   yyvsp[-3].ulong_val, yyvsp[-2].type_spec_val->type(), yyvsp[-2].type_spec_val->constr(), yyvsp[-1].declarator_val);
@@ -1932,34 +1932,34 @@
     ;
     break;}
 case 81:
-#line 693 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 696 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.ulong_val = 0; ;
     break;}
 case 82:
-#line 694 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 697 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.ulong_val = 1; ;
     break;}
 case 83:
-#line 698 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 701 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyvsp[-3].factory_val->closeParens();
     ;
     break;}
 case 84:
-#line 700 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 703 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyvsp[-5].factory_val->finishConstruction(yyvsp[-3].parameter_val);
       yyval.factory_val = yyvsp[-5].factory_val;
     ;
     break;}
 case 85:
-#line 704 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 707 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyvsp[-3].factory_val->closeParens();
     ;
     break;}
 case 86:
-#line 706 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 709 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       IdlSyntaxError(currentFile, yylineno,
 		     "Syntax error in factory parameters");
@@ -1968,166 +1968,166 @@
     ;
     break;}
 case 87:
-#line 715 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 718 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.factory_val = new Factory(currentFile, yylineno, mainFile, yyvsp[0].id_val);
     ;
     break;}
 case 88:
-#line 721 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 724 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.parameter_val = 0; ;
     break;}
 case 89:
-#line 722 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 725 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.parameter_val = yyvsp[0].parameter_val; ;
     break;}
 case 90:
-#line 726 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 729 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.parameter_val = yyvsp[0].parameter_val; ;
     break;}
 case 91:
-#line 727 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 730 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       if (yyvsp[-2].parameter_val) { yyvsp[-2].parameter_val->append(yyvsp[0].parameter_val); yyval.parameter_val = yyvsp[-2].parameter_val; }
       else yyval.parameter_val = yyvsp[0].parameter_val;
     ;
     break;}
 case 92:
-#line 734 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 737 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.parameter_val = new Parameter(currentFile, yylineno, mainFile, 0, yyvsp[-1].type_val, yyvsp[0].id_val);
     ;
     break;}
 case 93:
-#line 742 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 745 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.const_val = new Const(currentFile, yylineno, mainFile, yyvsp[-3].type_val, yyvsp[-2].id_val, yyvsp[0].expr_val);
     ;
     break;}
 case 94:
-#line 748 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 751 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = yyvsp[0].type_val; ;
     break;}
 case 95:
-#line 749 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 752 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = yyvsp[0].type_val; ;
     break;}
 case 96:
-#line 750 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 753 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = yyvsp[0].type_val; ;
     break;}
 case 97:
-#line 751 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 754 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = yyvsp[0].type_val; ;
     break;}
 case 98:
-#line 752 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 755 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = yyvsp[0].type_val; ;
     break;}
 case 99:
-#line 753 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 756 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = yyvsp[0].type_val; ;
     break;}
 case 100:
-#line 754 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 757 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = yyvsp[0].type_val; ;
     break;}
 case 101:
-#line 755 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 758 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = yyvsp[0].type_val; ;
     break;}
 case 102:
-#line 756 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 759 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.type_val = IdlType::scopedNameToType(currentFile, yylineno, yyvsp[0].scopedname_val);
     ;
     break;}
 case 103:
-#line 759 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 762 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = yyvsp[0].type_val; ;
     break;}
 case 104:
-#line 763 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 766 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.expr_val = yyvsp[0].expr_val; ;
     break;}
 case 105:
-#line 767 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 770 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.expr_val = yyvsp[0].expr_val; ;
     break;}
 case 106:
-#line 768 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 771 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.expr_val = new OrExpr(currentFile, yylineno, yyvsp[-2].expr_val, yyvsp[0].expr_val); ;
     break;}
 case 107:
-#line 772 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 775 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.expr_val = yyvsp[0].expr_val; ;
     break;}
 case 108:
-#line 773 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 776 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.expr_val = new XorExpr(currentFile, yylineno, yyvsp[-2].expr_val, yyvsp[0].expr_val); ;
     break;}
 case 109:
-#line 777 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 780 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.expr_val = yyvsp[0].expr_val; ;
     break;}
 case 110:
-#line 778 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 781 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.expr_val = new AndExpr(currentFile, yylineno, yyvsp[-2].expr_val, yyvsp[0].expr_val);
     ;
     break;}
 case 111:
-#line 784 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 787 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.expr_val = yyvsp[0].expr_val; ;
     break;}
 case 112:
-#line 785 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 788 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
     yyval.expr_val = new RShiftExpr(currentFile, yylineno, yyvsp[-2].expr_val, yyvsp[0].expr_val);
   ;
     break;}
 case 113:
-#line 788 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 791 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
     yyval.expr_val = new LShiftExpr(currentFile, yylineno, yyvsp[-2].expr_val, yyvsp[0].expr_val);
   ;
     break;}
 case 114:
-#line 794 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 797 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.expr_val = yyvsp[0].expr_val; ;
     break;}
 case 115:
-#line 795 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 798 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.expr_val = new AddExpr(currentFile, yylineno, yyvsp[-2].expr_val, yyvsp[0].expr_val); ;
     break;}
 case 116:
-#line 796 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 799 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.expr_val = new SubExpr(currentFile, yylineno, yyvsp[-2].expr_val, yyvsp[0].expr_val); ;
     break;}
 case 117:
-#line 800 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 803 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.expr_val = yyvsp[0].expr_val; ;
     break;}
 case 118:
-#line 801 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 804 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.expr_val = new MultExpr(currentFile, yylineno, yyvsp[-2].expr_val, yyvsp[0].expr_val);
     ;
     break;}
 case 119:
-#line 804 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 807 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.expr_val = new DivExpr(currentFile, yylineno, yyvsp[-2].expr_val, yyvsp[0].expr_val);
     ;
     break;}
 case 120:
-#line 807 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 810 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.expr_val = new ModExpr(currentFile, yylineno, yyvsp[-2].expr_val, yyvsp[0].expr_val);
     ;
     break;}
 case 121:
-#line 813 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 816 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       if (yyvsp[-1].char_val == '-') yyval.expr_val = new MinusExpr(currentFile, yylineno, yyvsp[0].expr_val);
       if (yyvsp[-1].char_val == '+') yyval.expr_val = new PlusExpr(currentFile, yylineno, yyvsp[0].expr_val);
@@ -2135,89 +2135,89 @@
     ;
     break;}
 case 122:
-#line 818 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 821 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.expr_val = yyvsp[0].expr_val; ;
     break;}
 case 123:
-#line 822 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 825 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.char_val = '-'; ;
     break;}
 case 124:
-#line 823 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 826 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.char_val = '+'; ;
     break;}
 case 125:
-#line 824 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 827 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.char_val = '~'; ;
     break;}
 case 126:
-#line 828 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 831 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.expr_val = IdlExpr::scopedNameToExpr(currentFile, yylineno, yyvsp[0].scopedname_val);
     ;
     break;}
 case 127:
-#line 831 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 834 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.expr_val = yyvsp[0].expr_val; ;
     break;}
 case 128:
-#line 832 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 835 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.expr_val = yyvsp[-1].expr_val; ;
     break;}
 case 129:
-#line 836 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 839 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.expr_val = new IntegerExpr(currentFile, yylineno, yyvsp[0].int_literal_val);
     ;
     break;}
 case 130:
-#line 839 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 842 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.expr_val = new StringExpr(currentFile, yylineno, yyvsp[0].string_val);
     ;
     break;}
 case 131:
-#line 842 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 845 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.expr_val = new WStringExpr(currentFile, yylineno, yyvsp[0].wstring_val);
     ;
     break;}
 case 132:
-#line 845 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 848 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.expr_val = new CharExpr(currentFile, yylineno, yyvsp[0].char_val);
     ;
     break;}
 case 133:
-#line 848 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 851 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.expr_val = new WCharExpr(currentFile, yylineno, yyvsp[0].wchar_val);
     ;
     break;}
 case 134:
-#line 851 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 854 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.expr_val = new FixedExpr(currentFile, yylineno, yyvsp[0].fixed_val);
     ;
     break;}
 case 135:
-#line 854 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 857 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.expr_val = new FloatExpr(currentFile, yylineno, yyvsp[0].float_literal_val);
     ;
     break;}
 case 136:
-#line 857 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 860 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.expr_val = new BooleanExpr(currentFile, yylineno, yyvsp[0].boolean_val);
     ;
     break;}
 case 137:
-#line 863 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 866 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.string_val = yyvsp[0].string_val; ;
     break;}
 case 138:
-#line 864 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 867 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.string_val = new char [strlen(yyvsp[-1].string_val) + strlen(yyvsp[0].string_val) + 1];
       strcpy(yyval.string_val, yyvsp[-1].string_val);
@@ -2227,11 +2227,11 @@
     ;
     break;}
 case 139:
-#line 874 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 877 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.wstring_val = yyvsp[0].wstring_val; ;
     break;}
 case 140:
-#line 875 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 878 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.wstring_val = new _CORBA_WChar [idl_wstrlen(yyvsp[-1].wstring_val) + idl_wstrlen(yyvsp[0].wstring_val) + 1];
       idl_wstrcpy(yyval.wstring_val, yyvsp[-1].wstring_val);
@@ -2241,15 +2241,15 @@
     ;
     break;}
 case 141:
-#line 885 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 888 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.boolean_val = 1; ;
     break;}
 case 142:
-#line 886 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 889 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.boolean_val = 0; ;
     break;}
 case 143:
-#line 890 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 893 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.ulong_val = yyvsp[0].expr_val->evalAsULong();
       if (yyval.ulong_val < 1)
@@ -2257,29 +2257,29 @@
     ;
     break;}
 case 144:
-#line 898 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 901 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.decl_val = yyvsp[0].typedef_val; ;
     break;}
 case 145:
-#line 899 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 902 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.decl_val = yyvsp[0].struct_val; ;
     break;}
 case 146:
-#line 900 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 903 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.decl_val = yyvsp[0].union_val; ;
     break;}
 case 147:
-#line 901 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 904 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.decl_val = yyvsp[0].enum_val; ;
     break;}
 case 148:
-#line 902 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 905 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.decl_val = new Native(currentFile, yylineno, mainFile, yyvsp[0].id_val);
     ;
     break;}
 case 149:
-#line 908 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 911 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.typedef_val = new Typedef(currentFile, yylineno, mainFile,
 		       yyvsp[-1].type_spec_val->type(), yyvsp[-1].type_spec_val->constr(), yyvsp[0].declarator_val);
@@ -2287,221 +2287,221 @@
     ;
     break;}
 case 150:
-#line 916 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 919 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_spec_val = new TypeSpec(yyvsp[0].type_val, 0); ;
     break;}
 case 151:
-#line 917 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 920 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_spec_val = new TypeSpec(yyvsp[0].type_val, 1); ;
     break;}
 case 152:
-#line 921 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 924 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = yyvsp[0].type_val; ;
     break;}
 case 153:
-#line 922 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 925 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = yyvsp[0].type_val; ;
     break;}
 case 154:
-#line 923 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 926 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.type_val = IdlType::scopedNameToType(currentFile, yylineno, yyvsp[0].scopedname_val);
     ;
     break;}
 case 155:
-#line 929 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 932 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = yyvsp[0].type_val; ;
     break;}
 case 156:
-#line 930 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 933 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = yyvsp[0].type_val; ;
     break;}
 case 157:
-#line 931 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 934 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = yyvsp[0].type_val; ;
     break;}
 case 158:
-#line 932 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 935 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = yyvsp[0].type_val; ;
     break;}
 case 159:
-#line 933 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 936 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = yyvsp[0].type_val; ;
     break;}
 case 160:
-#line 934 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 937 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = yyvsp[0].type_val; ;
     break;}
 case 161:
-#line 935 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 938 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = yyvsp[0].type_val; ;
     break;}
 case 162:
-#line 936 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 939 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = yyvsp[0].type_val; ;
     break;}
 case 163:
-#line 937 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 940 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = yyvsp[0].type_val; ;
     break;}
 case 164:
-#line 941 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 944 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = yyvsp[0].type_val; ;
     break;}
 case 165:
-#line 942 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 945 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = yyvsp[0].type_val; ;
     break;}
 case 166:
-#line 943 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 946 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = yyvsp[0].type_val; ;
     break;}
 case 167:
-#line 944 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 947 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = yyvsp[0].type_val; ;
     break;}
 case 168:
-#line 948 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 951 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = yyvsp[0].struct_val->thisType(); ;
     break;}
 case 169:
-#line 949 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 952 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = yyvsp[0].union_val->thisType(); ;
     break;}
 case 170:
-#line 950 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 953 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = yyvsp[0].enum_val->thisType(); ;
     break;}
 case 171:
-#line 954 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 957 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.declarator_val = yyvsp[-1].declarator_val; ;
     break;}
 case 172:
-#line 955 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 958 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       if (yyvsp[-4].declarator_val) { yyvsp[-4].declarator_val->append(yyvsp[-1].declarator_val); yyval.declarator_val = yyvsp[-4].declarator_val; }
       else yyval.declarator_val = yyvsp[-1].declarator_val;
     ;
     break;}
 case 173:
-#line 962 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 965 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.declarator_val = yyvsp[0].declarator_val; ;
     break;}
 case 174:
-#line 963 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 966 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.declarator_val = yyvsp[0].declarator_val; ;
     break;}
 case 175:
-#line 967 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 970 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.declarator_val = new Declarator(currentFile, yylineno, mainFile, yyvsp[0].id_val, 0);
     ;
     break;}
 case 176:
-#line 973 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 976 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.declarator_val = yyvsp[0].declarator_val; ;
     break;}
 case 177:
-#line 977 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 980 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = BaseType::floatType; ;
     break;}
 case 178:
-#line 978 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 981 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = BaseType::doubleType; ;
     break;}
 case 179:
-#line 979 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 982 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = BaseType::longdoubleType; ;
     break;}
 case 180:
-#line 983 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 986 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = yyvsp[0].type_val; ;
     break;}
 case 181:
-#line 984 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 987 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = yyvsp[0].type_val; ;
     break;}
 case 182:
-#line 988 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 991 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = yyvsp[0].type_val; ;
     break;}
 case 183:
-#line 989 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 992 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = yyvsp[0].type_val; ;
     break;}
 case 184:
-#line 990 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 993 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = yyvsp[0].type_val; ;
     break;}
 case 185:
-#line 994 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 997 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = BaseType::shortType; ;
     break;}
 case 186:
-#line 998 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1001 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = BaseType::longType; ;
     break;}
 case 187:
-#line 1002 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1005 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = BaseType::longlongType; ;
     break;}
 case 188:
-#line 1006 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1009 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = yyvsp[0].type_val; ;
     break;}
 case 189:
-#line 1007 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1010 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = yyvsp[0].type_val; ;
     break;}
 case 190:
-#line 1008 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1011 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = yyvsp[0].type_val; ;
     break;}
 case 191:
-#line 1012 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1015 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = BaseType::ushortType; ;
     break;}
 case 192:
-#line 1016 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1019 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = BaseType::ulongType; ;
     break;}
 case 193:
-#line 1020 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1023 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = BaseType::ulonglongType; ;
     break;}
 case 194:
-#line 1024 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1027 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = BaseType::charType; ;
     break;}
 case 195:
-#line 1028 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1031 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = BaseType::wcharType; ;
     break;}
 case 196:
-#line 1032 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1035 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = BaseType::booleanType; ;
     break;}
 case 197:
-#line 1036 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1039 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = BaseType::octetType; ;
     break;}
 case 198:
-#line 1040 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1043 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = BaseType::anyType; ;
     break;}
 case 199:
-#line 1044 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1047 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = DeclaredType::corbaObjectType; ;
     break;}
 case 200:
-#line 1048 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1051 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyvsp[-5].struct_val->finishConstruction(yyvsp[-1].member_val);
       yyval.struct_val = yyvsp[-5].struct_val;
     ;
     break;}
 case 201:
-#line 1052 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1055 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       IdlSyntaxError(currentFile, yylineno,
 		     "Syntax error in struct definition");
@@ -2510,24 +2510,24 @@
     ;
     break;}
 case 202:
-#line 1061 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1064 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.struct_val = new Struct(currentFile, yylineno, mainFile, yyvsp[0].id_val);
     ;
     break;}
 case 203:
-#line 1067 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1070 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.member_val = yyvsp[-1].member_val; ;
     break;}
 case 204:
-#line 1068 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1071 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       if (yyvsp[-2].member_val) { yyvsp[-2].member_val->append(yyvsp[-1].member_val); yyval.member_val = yyvsp[-2].member_val; }
       else yyval.member_val = yyvsp[-1].member_val;
     ;
     break;}
 case 205:
-#line 1075 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1078 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.member_val = new Member(currentFile, yylineno, mainFile,
 		      yyvsp[-2].type_spec_val->type(), yyvsp[-2].type_spec_val->constr(), yyvsp[-1].declarator_val);
@@ -2535,7 +2535,7 @@
     ;
     break;}
 case 206:
-#line 1080 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1083 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       IdlSyntaxError(currentFile, yylineno,
 		     "Syntax error in member declaration");
@@ -2543,7 +2543,7 @@
     ;
     break;}
 case 207:
-#line 1090 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1093 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
 
       yyvsp[-12].union_val->finishConstruction(yyvsp[-7].type_spec_val->type(), yyvsp[-7].type_spec_val->constr(), yyvsp[-1].union_case_val);
@@ -2552,7 +2552,7 @@
     ;
     break;}
 case 208:
-#line 1096 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1099 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       IdlSyntaxError(currentFile, yylineno,
 		     "Syntax error in union declaration");
@@ -2561,95 +2561,95 @@
     ;
     break;}
 case 209:
-#line 1105 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1108 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.union_val = new Union(currentFile, yylineno, mainFile, yyvsp[0].id_val);
     ;
     break;}
 case 210:
-#line 1111 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1114 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_spec_val = new TypeSpec(yyvsp[0].type_val, 0); ;
     break;}
 case 211:
-#line 1112 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1115 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_spec_val = new TypeSpec(yyvsp[0].type_val, 0); ;
     break;}
 case 212:
-#line 1113 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1116 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_spec_val = new TypeSpec(yyvsp[0].type_val, 0); ;
     break;}
 case 213:
-#line 1114 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1117 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_spec_val = new TypeSpec(yyvsp[0].enum_val->thisType(), 1); ;
     break;}
 case 214:
-#line 1115 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1118 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.type_spec_val = new TypeSpec(IdlType::scopedNameToType(currentFile, yylineno, yyvsp[0].scopedname_val),
 			0);
     ;
     break;}
 case 215:
-#line 1122 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1125 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.union_case_val = yyvsp[0].union_case_val; ;
     break;}
 case 216:
-#line 1126 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1129 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.union_case_val = yyvsp[-1].union_case_val; ;
     break;}
 case 217:
-#line 1127 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1130 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyvsp[-2].union_case_val->append(yyvsp[-1].union_case_val);
       yyval.union_case_val = yyvsp[-2].union_case_val;
     ;
     break;}
 case 218:
-#line 1134 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1137 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyvsp[-1].union_case_val->finishConstruction(yyvsp[-2].case_label_val);
       yyval.union_case_val = yyvsp[-1].union_case_val;
     ;
     break;}
 case 219:
-#line 1141 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1144 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.case_label_val = yyvsp[0].case_label_val; ;
     break;}
 case 220:
-#line 1142 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1145 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyvsp[-1].case_label_val->append(yyvsp[0].case_label_val);
       yyval.case_label_val = yyvsp[-1].case_label_val;
     ;
     break;}
 case 221:
-#line 1149 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1152 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.case_label_val = new CaseLabel(currentFile, yylineno, mainFile, yyvsp[-2].expr_val);
     ;
     break;}
 case 222:
-#line 1152 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1155 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.case_label_val = new CaseLabel(currentFile, yylineno, mainFile, 0);
     ;
     break;}
 case 223:
-#line 1158 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1161 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.union_case_val = new UnionCase(currentFile, yylineno, mainFile,
 			 yyvsp[-1].type_spec_val->type(), yyvsp[-1].type_spec_val->constr(), yyvsp[0].declarator_val);
     ;
     break;}
 case 224:
-#line 1165 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1168 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyvsp[-5].enum_val->finishConstruction(yyvsp[-1].enumerator_val);
       yyval.enum_val = yyvsp[-5].enum_val;
     ;
     break;}
 case 225:
-#line 1169 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1172 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       IdlSyntaxError(currentFile, yylineno, "Syntax error in enum definition");
       yyvsp[-1].enum_val->finishConstruction(0);
@@ -2657,115 +2657,115 @@
     ;
     break;}
 case 226:
-#line 1177 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1180 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.enum_val = new Enum(currentFile, yylineno, mainFile, yyvsp[0].id_val);
     ;
     break;}
 case 227:
-#line 1183 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1186 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.enumerator_val = yyvsp[-1].enumerator_val; ;
     break;}
 case 228:
-#line 1184 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1187 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyvsp[-4].enumerator_val->append(yyvsp[-1].enumerator_val);
       yyval.enumerator_val = yyvsp[-4].enumerator_val;
     ;
     break;}
 case 229:
-#line 1191 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1194 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.enumerator_val = new Enumerator(currentFile, yylineno, mainFile, yyvsp[0].id_val);
     ;
     break;}
 case 230:
-#line 1197 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1200 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.type_val = new SequenceType(yyvsp[-3].type_val, yyvsp[-1].ulong_val);
     ;
     break;}
 case 231:
-#line 1200 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1203 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.type_val = new SequenceType(yyvsp[-1].type_val, 0);
     ;
     break;}
 case 232:
-#line 1206 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1209 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = new StringType(yyvsp[-1].ulong_val); ;
     break;}
 case 233:
-#line 1207 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1210 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.type_val = StringType::unboundedStringType;
     ;
     break;}
 case 234:
-#line 1213 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1216 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = new WStringType(yyvsp[-1].ulong_val); ;
     break;}
 case 235:
-#line 1214 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1217 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.type_val = WStringType::unboundedWStringType;
     ;
     break;}
 case 236:
-#line 1220 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1223 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.declarator_val = new Declarator(currentFile, yylineno, mainFile, yyvsp[-1].id_val, yyvsp[0].array_size_val);
     ;
     break;}
 case 237:
-#line 1226 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1229 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.array_size_val = yyvsp[0].array_size_val; ;
     break;}
 case 238:
-#line 1227 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1230 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyvsp[-1].array_size_val->append(yyvsp[0].array_size_val);
       yyval.array_size_val = yyvsp[-1].array_size_val;
     ;
     break;}
 case 239:
-#line 1234 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1237 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.array_size_val = new ArraySize(yyvsp[-1].ulong_val); ;
     break;}
 case 240:
-#line 1238 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1241 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.attribute_val = new Attribute(currentFile, yylineno, mainFile, yyvsp[-3].boolean_val, yyvsp[-1].type_val, yyvsp[0].declarator_val);
     ;
     break;}
 case 241:
-#line 1244 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1247 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.boolean_val = 0; ;
     break;}
 case 242:
-#line 1245 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1248 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.boolean_val = 1; ;
     break;}
 case 243:
-#line 1249 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1252 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.declarator_val = yyvsp[-1].declarator_val; ;
     break;}
 case 244:
-#line 1250 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1253 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       if (yyvsp[-4].declarator_val) { yyvsp[-4].declarator_val->append(yyvsp[-1].declarator_val); yyval.declarator_val = yyvsp[-4].declarator_val; }
       else yyval.declarator_val = yyvsp[-1].declarator_val;
     ;
     break;}
 case 245:
-#line 1257 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1260 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyvsp[-5].exception_val->finishConstruction(yyvsp[-1].member_val);
       yyval.exception_val = yyvsp[-5].exception_val;
     ;
     break;}
 case 246:
-#line 1261 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1264 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       IdlSyntaxError(currentFile, yylineno,
 		     "Syntax error in exception definition");
@@ -2774,37 +2774,37 @@
     ;
     break;}
 case 247:
-#line 1270 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1273 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.exception_val = new Exception(currentFile, yylineno, mainFile, yyvsp[0].id_val);
     ;
     break;}
 case 248:
-#line 1276 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1279 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.member_val = 0; ;
     break;}
 case 249:
-#line 1277 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1280 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       if (yyvsp[-1].member_val) { yyvsp[-1].member_val->append(yyvsp[0].member_val);	yyval.member_val = yyvsp[-1].member_val; }
       else yyval.member_val = yyvsp[0].member_val;
     ;
     break;}
 case 250:
-#line 1284 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1287 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyvsp[-2].operation_val->closeParens();
     ;
     break;}
 case 251:
-#line 1286 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1289 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyvsp[-6].operation_val->finishConstruction(yyvsp[-4].parameter_val, yyvsp[-1].raisesspec_val, yyvsp[0].contextspec_val);
       yyval.operation_val = yyvsp[-6].operation_val;
     ;
     break;}
 case 252:
-#line 1290 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1293 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       IdlSyntaxError(currentFile, yylineno,
 		     "Syntax error in operation declaration");
@@ -2814,41 +2814,41 @@
     ;
     break;}
 case 253:
-#line 1300 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1303 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.operation_val = new Operation(currentFile, yylineno, mainFile, yyvsp[-2].boolean_val, yyvsp[-1].type_val, yyvsp[0].id_val);
     ;
     break;}
 case 254:
-#line 1306 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1309 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.boolean_val = 0; ;
     break;}
 case 255:
-#line 1307 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1310 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.boolean_val = yyvsp[0].boolean_val; ;
     break;}
 case 256:
-#line 1311 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1314 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.boolean_val = 1; ;
     break;}
 case 257:
-#line 1315 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1318 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = yyvsp[0].type_val; ;
     break;}
 case 258:
-#line 1316 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1319 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = BaseType::voidType; ;
     break;}
 case 259:
-#line 1320 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1323 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.parameter_val = yyvsp[-1].parameter_val; ;
     break;}
 case 260:
-#line 1321 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1324 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.parameter_val = 0; ;
     break;}
 case 261:
-#line 1322 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1325 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       IdlSyntaxError(currentFile, yylineno,
 		     "Syntax error in operation parameters");
@@ -2856,176 +2856,176 @@
     ;
     break;}
 case 262:
-#line 1330 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1333 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.parameter_val = yyvsp[-1].parameter_val; ;
     break;}
 case 263:
-#line 1331 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1334 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       if (yyvsp[-4].parameter_val) { yyvsp[-4].parameter_val->append(yyvsp[-1].parameter_val); yyval.parameter_val = yyvsp[-4].parameter_val; }
       else yyval.parameter_val = yyvsp[-1].parameter_val;
     ;
     break;}
 case 264:
-#line 1338 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1341 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.parameter_val = new Parameter(currentFile, yylineno, mainFile, yyvsp[-2].int_val, yyvsp[-1].type_val, yyvsp[0].id_val);
     ;
     break;}
 case 265:
-#line 1344 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1347 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.int_val = 0; ;
     break;}
 case 266:
-#line 1345 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1348 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.int_val = 1; ;
     break;}
 case 267:
-#line 1346 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1349 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.int_val = 2; ;
     break;}
 case 268:
-#line 1350 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1353 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.raisesspec_val = 0; ;
     break;}
 case 269:
-#line 1351 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1354 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.raisesspec_val = yyvsp[-1].raisesspec_val; ;
     break;}
 case 270:
-#line 1355 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1358 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.raisesspec_val = yyvsp[-1].raisesspec_val; ;
     break;}
 case 271:
-#line 1359 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1362 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.raisesspec_val = new RaisesSpec(yyvsp[-1].scopedname_val, currentFile, yylineno);
     ;
     break;}
 case 272:
-#line 1362 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1365 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyvsp[-4].raisesspec_val->append(new RaisesSpec(yyvsp[-1].scopedname_val, currentFile, yylineno));
       yyval.raisesspec_val = yyvsp[-4].raisesspec_val;
     ;
     break;}
 case 273:
-#line 1369 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1372 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.contextspec_val = 0; ;
     break;}
 case 274:
-#line 1370 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1373 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.contextspec_val = yyvsp[-1].contextspec_val; ;
     break;}
 case 275:
-#line 1374 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1377 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.contextspec_val = yyvsp[-1].contextspec_val; ;
     break;}
 case 276:
-#line 1378 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1381 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.contextspec_val = new ContextSpec(yyvsp[-1].string_val, currentFile, yylineno);
     ;
     break;}
 case 277:
-#line 1381 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1384 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyvsp[-4].contextspec_val->append(new ContextSpec(yyvsp[-1].string_val, currentFile, yylineno));
       yyval.contextspec_val = yyvsp[-4].contextspec_val;
     ;
     break;}
 case 278:
-#line 1388 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1391 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = yyvsp[0].type_val; ;
     break;}
 case 279:
-#line 1389 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1392 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = yyvsp[0].type_val; ;
     break;}
 case 280:
-#line 1390 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1393 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = yyvsp[0].type_val; ;
     break;}
 case 281:
-#line 1391 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1394 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.type_val = IdlType::scopedNameToType(currentFile, yylineno, yyvsp[0].scopedname_val);
     ;
     break;}
 case 282:
-#line 1397 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1400 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       IdlError(currentFile, yylineno, "Fixed is not supported yet");
       yyval.type_val = 0;
     ;
     break;}
 case 283:
-#line 1404 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1407 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       IdlError(currentFile, yylineno, "Fixed is not supported yet");
       yyval.type_val = 0;
     ;
     break;}
 case 284:
-#line 1411 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1414 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.type_val = new DeclaredType(IdlType::tk_value, 0, 0); ;
     break;}
 case 293:
-#line 1432 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1435 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       Prefix::setPrefix(idl_strdup(yyvsp[-1].string_val));
     ;
     break;}
 case 294:
-#line 1435 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1438 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       IdlSyntaxError(currentFile, yylineno, "Malformed #pragma prefix");
     ;
     break;}
 case 295:
-#line 1441 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1444 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       Decl* d = Decl::scopedNameToDecl(currentFile, yylineno, yyvsp[-2].scopedname_val);
       if (d) DeclRepoId::setRepoId(d, yyvsp[-1].string_val, currentFile, yylineno);
     ;
     break;}
 case 296:
-#line 1445 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1448 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       IdlSyntaxError(currentFile, yylineno, "Malformed #pragma id");
     ;
     break;}
 case 297:
-#line 1451 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1454 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       Decl* d = Decl::scopedNameToDecl(currentFile, yylineno, yyvsp[-4].scopedname_val);
       if (d) DeclRepoId::setVersion(d, yyvsp[-3].int_literal_val, yyvsp[-1].int_literal_val, currentFile, yylineno);
     ;
     break;}
 case 298:
-#line 1455 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1458 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       IdlSyntaxError(currentFile, yylineno, "Malformed #pragma version");
     ;
     break;}
 case 299:
-#line 1461 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1464 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       Pragma::add(yyvsp[-1].string_val, currentFile, yylineno-1);
     ;
     break;}
 case 300:
-#line 1467 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1470 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       Pragma::add(yyvsp[-1].string_val, currentFile, yylineno);
     ;
     break;}
 case 301:
-#line 1473 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1476 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 { yyval.string_val = yyvsp[0].string_val; ;
     break;}
 case 302:
-#line 1474 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1477 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 {
       yyval.string_val = new char [strlen(yyvsp[-1].string_val) + strlen(yyvsp[0].string_val) + 1];
       strcpy(yyval.string_val, yyvsp[-1].string_val);
@@ -3256,5 +3256,5 @@
     }
   return 1;
 }
-#line 1483 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
+#line 1486 "/local/dpg1/omni/30/src/tool/omniidl/cxx/idl.yy"
 
diff -u -r omni301/src/tool/omniidl/python/omniidl/idlast.py omni/src/tool/omniidl/python/omniidl/idlast.py
--- omni301/src/tool/omniidl/python/omniidl/idlast.py	Thu Jul 13 16:25:52 2000
+++ omni/src/tool/omniidl/python/omniidl/idlast.py	Tue Aug 29 11:20:29 2000
@@ -26,10 +26,10 @@
 #   
 #   Python definitions for abstract syntax tree classes
 
-# $Id: idlast.py,v 1.16 2000/07/13 15:25:52 dpg1 Exp $
+# $Id: idlast.py,v 1.13.2.4 2000/08/29 10:20:29 dpg1 Exp $
 # $Log: idlast.py,v $
-# Revision 1.16  2000/07/13 15:25:52  dpg1
-# Merge from omni3_develop for 3.0 release.
+# Revision 1.13.2.4  2000/08/29 10:20:29  dpg1
+# Operations and attributes now have repository ids.
 #
 # Revision 1.13.2.3  2000/06/29 14:08:11  dpg1
 # Incorrect visitor method called for Value nodes.
@@ -645,22 +645,26 @@
 
   readonly()    -- boolean: true if the attribute is read only.
   attrType()    -- IdlType.Type object for the attribute's type.
-  identifiers() -- list of strings containing the attribute identifiers."""
+  declarators() -- list of the attribute's declarators.
+  identifiers() -- list of strings containing the attribute identifiers
+                     (equivalent to the identifiers inside the declarators)."""
 
     def __init__(self, file, line, mainFile, pragmas, comments,
-                 readonly, attrType, identifiers):
+                 readonly, attrType, declarators):
 
         Decl.__init__(self, file, line, mainFile, pragmas, comments)
 
-        self.__readonly = readonly
-        self.__attrType = attrType
-        self.__identifiers = identifiers
+        self.__readonly    = readonly
+        self.__attrType    = attrType
+        self.__declarators = declarators
+        self.__identifiers = map(lambda d: d.identifier(), declarators)
         #print line, "Attribute init:", readonly, identifiers
 
     def accept(self, visitor): visitor.visitAttribute(self)
 
     def readonly(self):    return self.__readonly
     def attrType(self):    return self.__attrType
+    def declarators(self): return self.__declarators
     def identifiers(self): return self.__identifiers
 
 
@@ -696,27 +700,26 @@
     def identifier(self): return self.__identifier
 
 
-class Operation (Decl):
-    """Operation declaration (Decl)
+class Operation (Decl, DeclRepoId):
+    """Operation declaration (Decl, DeclRepoId)
 
 Functions:
 
   oneway()     -- boolean: true if operation is one way.
   returnType() -- IdlType.Type object for return type.
-  identifier() -- string of operation identifier.
   parameters() -- list of Parameter objects.
   raises()     -- list of Exception objects.
   contexts()   -- list of strings for context expressions."""
 
     def __init__(self, file, line, mainFile, pragmas, comments,
-                 oneway, returnType, identifier,
+                 oneway, returnType, identifier, scopedName, repoId,
                  parameters, raises, contexts):
 
         Decl.__init__(self, file, line, mainFile, pragmas, comments)
+        DeclRepoId.__init__(self, identifier, scopedName, repoId)
 
         self.__oneway     = oneway
         self.__returnType = returnType
-        self.__identifier = identifier
         self.__parameters = parameters
         self.__raises     = raises
         self.__contexts   = contexts
@@ -726,7 +729,6 @@
 
     def oneway(self):     return self.__oneway
     def returnType(self): return self.__returnType
-    def identifier(self): return self.__identifier
     def parameters(self): return self.__parameters
     def raises(self):     return self.__raises
     def contexts(self):   return self.__contexts
diff -u -r omni301/src/tool/omniidl/python/omniidl/idltype.py omni/src/tool/omniidl/python/omniidl/idltype.py
--- omni301/src/tool/omniidl/python/omniidl/idltype.py	Fri Aug 18 15:09:05 2000
+++ omni/src/tool/omniidl/python/omniidl/idltype.py	Mon Aug 21 10:18:32 2000
@@ -270,7 +270,7 @@
     def scopedName(self): return self.__scopedName
 
     # Simple name
-    def name(self):       return self.__scopedName[-1:]
+    def name(self):       return self.__scopedName[-1]
 
 
 # Map of singleton Base Type objects
diff -u -r omni301/src/tool/omniidl/python/omniidl/idlutil.py omni/src/tool/omniidl/python/omniidl/idlutil.py
--- omni301/src/tool/omniidl/python/omniidl/idlutil.py	Thu Jul 13 16:25:51 2000
+++ omni/src/tool/omniidl/python/omniidl/idlutil.py	Tue Aug 29 16:20:29 2000
@@ -26,10 +26,11 @@
 #   
 #   Utility functions
 
-# $Id: idlutil.py,v 1.6 2000/07/13 15:25:51 dpg1 Exp $
+# $Id: idlutil.py,v 1.3.2.1 2000/08/29 15:20:29 dpg1 Exp $
 # $Log: idlutil.py,v $
-# Revision 1.6  2000/07/13 15:25:51  dpg1
-# Merge from omni3_develop for 3.0 release.
+# Revision 1.3.2.1  2000/08/29 15:20:29  dpg1
+# New relativeScope() function. New -i flag to enter interactive loop
+# after parsing
 #
 # Revision 1.3  1999/11/15 15:49:23  dpg1
 # Documentation strings.
@@ -47,9 +48,11 @@
 slashName()      -- format a scoped name with '/' separating components.
 dotName()        -- format a scoped name with '.' separating components.
 ccolonName()     -- format a scoped name with '::' separating components.
-pruneScope()     -- remove common prefix from a scoped name."""
+pruneScope()     -- remove common prefix from a scoped name.
+relativeScope()  -- give a minimal name for one scope relative to another."""
 
 import string
+import _omniidl
 
 def slashName(scopedName, our_scope=[]):
     """slashName(list, [list]) -> string
@@ -109,3 +112,46 @@
         if l[i] not in vis:
             l[i] = "\\%03o" % ord(l[i])
     return string.join(l, "")
+
+
+def relativeScope(fromScope, destScope):
+    """relativeScope(fromScope, destScope) -> list
+
+Given two globally-scoped names, return a minimal scoped name list
+which identifies the destination scope, without clashing with another
+identifier. For example, given IDL:
+
+  module M {
+    typedef short A;
+    typedef long  B;
+
+    module N {
+      typedef string B;
+      interface I {
+        void op(in ::M::A x, in ::M::B y);
+      };
+    };
+  };
+
+relativeScope(["M", "N", "I"], ["M", "A"]) -> ["A"]
+relativeScope(["M", "N", "I"], ["M", "B"]) -> ["M", "B"]
+
+If the only valid result is a globally-scoped name, the result list is
+prefixed with None:
+
+  module O {
+    typedef short C;
+  };
+  module P {
+    module O {
+      interface J {
+        void op(in ::O::C z);
+      };
+    };
+  };
+
+relativeScope(["P", "O", "J"], ["O", "C"]) -> [None, "O", "C"]
+
+If either scoped name does not exist, returns None."""
+
+    return _omniidl.relativeScopedName(fromScope, destScope)
diff -u -r omni301/src/tool/omniidl/python/omniidl/idlvisitor.py omni/src/tool/omniidl/python/omniidl/idlvisitor.py
--- omni301/src/tool/omniidl/python/omniidl/idlvisitor.py	Thu Jul 13 16:25:51 2000
+++ omni/src/tool/omniidl/python/omniidl/idlvisitor.py	Mon Nov 15 15:49:23 1999
@@ -26,11 +26,8 @@
 #   
 #   Base classes for Visitors
 
-# $Id: idlvisitor.py,v 1.6 2000/07/13 15:25:51 dpg1 Exp $
+# $Id: idlvisitor.py,v 1.3 1999/11/15 15:49:23 dpg1 Exp $
 # $Log: idlvisitor.py,v $
-# Revision 1.6  2000/07/13 15:25:51  dpg1
-# Merge from omni3_develop for 3.0 release.
-#
 # Revision 1.3  1999/11/15 15:49:23  dpg1
 # Documentation strings.
 #
diff -u -r omni301/src/tool/omniidl/python/omniidl/main.py omni/src/tool/omniidl/python/omniidl/main.py
--- omni301/src/tool/omniidl/python/omniidl/main.py	Thu Jul 13 16:25:51 2000
+++ omni/src/tool/omniidl/python/omniidl/main.py	Mon Sep 11 15:36:50 2000
@@ -27,111 +27,29 @@
 #   
 #   IDL compiler main function
 
-# $Id: main.py,v 1.18 2000/07/13 15:25:51 dpg1 Exp $
+# $Id: main.py,v 1.15.2.17 2000/09/11 14:36:50 dpg1 Exp $
 # $Log: main.py,v $
-# Revision 1.18  2000/07/13 15:25:51  dpg1
-# Merge from omni3_develop for 3.0 release.
+# Revision 1.15.2.17  2000/09/11 14:36:50  dpg1
+# New -T option to work around Win98 pipe problems.
 #
-# Revision 1.15.2.14  2000/07/06 09:40:44  dpg1
-# Spelling mistake :-(
+# Revision 1.15.2.16  2000/09/06 11:20:50  dpg1
+# Support for Python 1.6 and 2.0b1.
 #
-# Revision 1.15.2.13  2000/07/06 09:30:20  dpg1
-# Clarify omniidl usage in documentation and omniidl -u
+# Revision 1.15.2.15  2000/08/29 15:20:29  dpg1
+# New relativeScope() function. New -i flag to enter interactive loop
+# after parsing
 #
-# Revision 1.15.2.12  2000/06/27 16:23:26  sll
-# Merged OpenVMS port.
-#
-# Revision 1.15.2.11  2000/06/20 13:55:58  dpg1
-# omniidl now keeps the C++ tree until after the back-ends have run.
-# This means that back-ends can be C++ extension modules.
-#
-# Revision 1.15.2.10  2000/06/05 18:13:28  dpg1
-# Comments can be attached to subsequent declarations (with -K). Better
-# idea of most recent decl in operation declarations
-#
-# Revision 1.15.2.9  2000/03/17 16:28:46  dpg1
-# Small improvement to error reporting.
-#
-# Revision 1.15.2.8  2000/03/16 11:09:30  dpg1
-# Better error reporting if import fails.
-#
-# Revision 1.15.2.7  2000/03/14 14:54:17  dpg1
-# Incorrect message with omniidl -E.
-#
-# Revision 1.15.2.6  2000/03/06 15:03:45  dpg1
-# Minor bug fixes to omniidl. New -nf and -k flags.
-#
-# Revision 1.15.2.5  2000/03/02 11:22:46  dpg1
-# omniidl.py renamed omniidlrun.py to avoid problems with import
-# omniidl.main.
-#
-# Revision 1.15.2.4  2000/02/22 16:44:50  dpg1
-# Cosmetic change.
-#
-# Revision 1.15.2.3  2000/02/17 11:18:05  dpg1
-# Multiple -p flags now preserve the order, rather than reversing it.
-#
-# Revision 1.15.2.2  2000/02/16 16:23:52  dpg1
-# Support things for Python neophytes.
-#
-# Revision 1.15.2.1  2000/02/14 18:34:52  dpg1
-# New omniidl merged in.
-#
-# Revision 1.15  2000/02/14 12:49:57  dpg1
-# Python version check. New -p option.
-#
-# Revision 1.14  2000/02/04 12:17:05  dpg1
-# Support for VMS.
-#
-# Revision 1.13  2000/01/18 17:15:05  dpg1
-# Changes for "small" distribution.
-#
-# Revision 1.12  1999/12/21 16:03:57  dpg1
-# Warning if no back-ends are selected.
-#
-# Revision 1.11  1999/12/17 11:39:23  dpg1
-# Cosmetic change
-#
-# Revision 1.10  1999/11/30 10:41:20  dpg1
-# Back-ends can now have their own usage string.
-#
-# Revision 1.9  1999/11/23 16:59:22  dpg1
-# New command line option -C to send output to a different directory.
-#
-# Revision 1.8  1999/11/23 09:52:11  dpg1
-# Dumb bug where maps weren't cleared between runs.
-#
-# Revision 1.7  1999/11/17 15:01:20  dpg1
-# -Wb and -Wp now support multiple arguments separated by commas.
-#
-# Revision 1.6  1999/11/17 14:33:55  dpg1
-# Clean up of usage info.
-#
-# Revision 1.5  1999/11/15 15:49:22  dpg1
-# Documentation strings.
-#
-# Revision 1.4  1999/11/12 17:15:35  dpg1
-# Verbose messages now written to stderr.
-#
-# Revision 1.3  1999/11/12 15:53:48  dpg1
-# New functions omniORB.importIDL() and omniORB.importIDLString().
-#
-# Revision 1.2  1999/11/12 14:07:18  dpg1
-# If back-end foo is not found in omniidl.be.foo, now tries to import
-# foo.
-#
-# Revision 1.1  1999/11/08 11:43:34  dpg1
-# Changes for NT support.
+# [...truncated...]
 #
 
 """IDL Compiler front-end main function"""
 
 import sys
 
-if sys.version[:6] != "1.5.2 ":
+if sys.hexversion < 0x10502f0:
     sys.stderr.write("\n\n")
     sys.stderr.write("omniidl: WARNING!!\n\n")
-    sys.stderr.write("omniidl: Python version 1.5.2 is required.\n")
+    sys.stderr.write("omniidl: Python version 1.5.2 or later is required.\n")
     sys.stderr.write("omniidl: " + sys.executable + " is version " + \
                      sys.version + "\n")
     sys.stderr.write("omniidl: Execution is likely to fail.\n")
@@ -160,6 +78,7 @@
   -E              Run preprocessor only, print on stdout
   -Ycmd           Set command for the preprocessor
   -N              Do not run preprocessor
+  -T              Use a temporary file, not a pipe, for preprocessor output
   -Wparg[,arg...] Send args to the preprocessor
   -bback_end      Select a back-end to be used. More than one permitted
   -Wbarg[,arg...] Send args to the back-end
@@ -168,6 +87,7 @@
   -K              Comments before declarations are kept for the back-ends
   -Cdir           Change directory to dir before writing output
   -d              Dump the parsed IDL then exit
+  -i              Enter interactive mode after parsing the IDL
   -pdir           Path to omniidl back-ends ($TOP/lib/python)
   -V              Print version info then exit
   -u              Print this usage message and exit
@@ -210,16 +130,18 @@
 verbose           = 0
 quiet             = 0
 print_usage       = 0
+interactive       = 0
+temp_file         = None
 
 def parseArgs(args):
     global preprocessor_args, preprocessor_only, preprocessor_cmd
     global no_preprocessor, backend, backend_args, dump_only, cd_to
-    global verbose, quiet, print_usage
+    global verbose, quiet, print_usage, interactive, temp_file
 
     paths = []
 
     try:
-        opts,files = getopt.getopt(args, "D:I:U:EY:NW:b:n:kKC:dVuhvqp:")
+        opts,files = getopt.getopt(args, "D:I:U:EY:NW:b:n:kKC:dVuhvqp:iT")
     except getopt.error, e:
         sys.stderr.write("Error in arguments: " + e + "\n")
         sys.stderr.write("Use `" + cmdname + " -u' for usage\n")
@@ -313,6 +235,17 @@
         elif o == "-p":
             paths.append(a)
 
+        elif o == "-i":
+            interactive = 1
+
+        elif o == "-T":
+            try:
+                import tempfile
+                temp_file = tempfile.mktemp(".idl")
+            except ImportError:
+                # No tempfile module. Just use current directory and hope...
+                temp_file = "omniidl-tmp" + `os.getpid()` + ".idl"
+
     sys.path = paths + sys.path
 
     return files
@@ -339,7 +272,7 @@
 def main(argv=None):
     global preprocessor_args, preprocessor_only, preprocessor_cmd
     global no_preprocessor, backend, backend_args, dump_only, cd_to
-    global verbose, quiet, print_usage
+    global verbose, quiet, print_usage, interactive
 
     if argv is None: argv = sys.argv
 
@@ -392,7 +325,8 @@
     if print_usage:
         sys.exit(0)
 
-    if len(backends) == 0 and not (quiet or dump_only or preprocessor_only):
+    if len(backends) == 0 and \
+       not (quiet or dump_only or preprocessor_only or interactive):
         sys.stderr.write(cmdname + ": Warning: No back-ends specified; " \
                          "checking IDL for validity\n")
 
@@ -423,8 +357,27 @@
                     sys.exit(1)
                 sys.exit(0)
 
-            file = os.popen(preproc_cmd, "r")
-        else:
+            if temp_file:
+                if verbose:
+                    sys.stderr.write(cmdname + \
+                                     ": cpp output to temporary file `" + \
+                                     temp_file + "'\n")
+                err = os.system(preproc_cmd + " >" + temp_file)
+                if err:
+                    if not quiet:
+                        sys.stderr.write(cmdname + \
+                                         ": Error running preprocessor\n")
+                    try:
+                        os.remove(temp_file)
+                    except:
+                        pass
+                    sys.exit(1)
+                file = open(temp_file, "r")
+
+            else:
+                file = os.popen(preproc_cmd, "r")
+
+        else: # No preprocessor
             file = open(file, "r")
 
         if verbose: sys.stderr.write(cmdname + ": Running front end\n")
@@ -433,6 +386,8 @@
             if verbose:
                 sys.stderr.write(cmdname + ": Dumping\n")
             _omniidl.dump(file)
+            file.close()
+            if temp_file: os.remove(temp_file)
         else:
             tree = _omniidl.compile(file)
 
@@ -458,8 +413,19 @@
                 bemodules[i].run(tree, backends_args[i])
                 i = i + 1
 
+            if interactive:
+                if verbose:
+                    sys.stderr.write(cmdname + ": Entering interactive loop\n")
+
+                idlast.tree = tree
+                _omniidl.runInteractiveLoop()
+                del idlast.tree
+
             if cd_to is not None:
                 os.chdir(old_wd)
+
+            if temp_file:
+                os.remove(temp_file)
 
             idlast.clear()
             idltype.clear()
diff -u -r omni301/src/tool/omniidl/python/omniidl_be/dump.py omni/src/tool/omniidl/python/omniidl_be/dump.py
--- omni301/src/tool/omniidl/python/omniidl_be/dump.py	Fri Aug 18 15:09:05 2000
+++ omni/src/tool/omniidl/python/omniidl_be/dump.py	Mon Aug 14 15:35:14 2000
@@ -26,14 +26,8 @@
 #   
 #   Back-end which just dumps the IDL tree
 
-# $Id: dump.py,v 1.10 2000/08/18 14:09:05 dpg1 Exp $
+# $Id: dump.py,v 1.6.2.3 2000/08/14 14:35:14 dpg1 Exp $
 # $Log: dump.py,v $
-# Revision 1.10  2000/08/18 14:09:05  dpg1
-# Merge from omni3_develop for 3.0.1 release.
-#
-# Revision 1.9  2000/07/13 15:25:51  dpg1
-# Merge from omni3_develop for 3.0 release.
-#
 # Revision 1.6.2.3  2000/08/14 14:35:14  dpg1
 # IDL dumping now properly escapes string and char constants
 #
diff -u -r omni301/src/tool/omniidl/python/scripts/omniidlrun.py omni/src/tool/omniidl/python/scripts/omniidlrun.py
--- omni301/src/tool/omniidl/python/scripts/omniidlrun.py	Fri Aug 18 15:09:05 2000
+++ omni/src/tool/omniidl/python/scripts/omniidlrun.py	Wed Sep  6 12:20:50 2000
@@ -29,10 +29,10 @@
 
 import sys
 
-if sys.version[:6] != "1.5.2 ":
+if sys.hexversion < 0x10502f0:
     sys.stderr.write("\n\n")
     sys.stderr.write("omniidl: WARNING!!\n\n")
-    sys.stderr.write("omniidl: Python version 1.5.2 is required.\n")
+    sys.stderr.write("omniidl: Python version 1.5.2 or later is required.\n")
     sys.stderr.write("omniidl: " + sys.executable + " is version " + \
                      sys.version + "\n")
     sys.stderr.write("omniidl: Execution is likely to fail.\n")
diff -u -r omni301/update.log omni/update.log
--- omni301/update.log	Fri Aug 18 15:09:40 2000
+++ omni/update.log	Mon Oct  2 17:35:38 2000
@@ -1,3 +1,406 @@
+Mon Oct  2 17:30:13 BST 2000 dpg1
+=================================
+
+- Updates for 3.0.2 release
+
+bugfixes-301.xml   -- new
+bugfixes.xml
+bugfixes.xsl
+doc/tex/cover.tex
+external_merge/PORTING
+external_merge/README.FIRST
+external_merge/README.SunC++5
+external_merge/README.hpux11
+external_merge/README.unix
+external_merge/README.win32
+external_merge/ReleaseNote_omniORB_301   -- deleted
+external_merge/ReleaseNote_omniORB_302   -- new
+external_merge/THIS_IS_omniORB_3_0_1     -- deleted
+external_merge/THIS_IS_omniORB_3_0_2     -- new
+external_merge/mk/rtems.mk
+external_merge/mk/unix.mk
+external_merge/mk/win32.mk
+
+- Fix dodgy line in OSF makefile
+
+external_merge/mk/platforms/alpha_osf1_3.2.mk
+external_merge/mk/platforms/alpha_osf1_4.0.mk
+
+
+Fri Sep 29 15:44:42 BST 2000 sll
+================================
+
+- Added new platform file for Redhat 7.0 (gcc-2.96)
+
+mk/platforms/i586_linux_2.0_glibc2.1_gcc2.96.mk      NEW
+
+ 
+Mon Sep 25 11:52:16 BST 2000 dpg1
+=================================
+
+- Remove use of _T as a template class name
+
+include/omniORB3/CORBA_sysdep.h
+include/omniORB3/poa.h
+src/lib/omniORB2/omniidl_be/cxx/header/template.py
+
+
+Fri Sep 22 11:45:38 BST 2000 dpg1
+=================================
+
+- Digital Unix uses strtoul, not strtoull
+
+src/tool/omniidl/cxx/idlutil.cc
+
+
+Thu Sep 21 15:13:09 BST 2000 sll
+================================
+
+- Added workaround to the unwind exception bug in Sun C++ 5.0 or the later
+  Forte WS C++ 6.0. It seems to work, at least it has no side effect if it
+  doesn't.
+
+src/lib/omniORB2/orbcore/corbaOrb.cc
+
+
+Thu Sep 21 12:06:06 BST 2000 dpg1
+=================================
+
+- Add a user check to RefCountServantBase::_add_ref() which complains
+  if it is called when the reference count is zero.
+
+src/lib/omniORB2/orbcore/portableserver.cc
+
+
+Thu Sep 21 09:46:16 BST 2000 djs
+================================
+
+- C++ backend "unsupported IDL" error message now more completely lists 
+  the constructs it rejects.
+
+src/lib/omniORB2/omniidl_be/cxx/support.py
+
+
+Tue Sep 19 14:50:05 BST 2000 djs
+================================
+
+- C++ backend reversed order of #includes in the IDL.
+  Now it will output #includes in the order that it finds declarations in
+  the AST (basically a dfs, skipping files with no declarations at all)
+
+src/lib/omniORB2/omniidl_be/cxx/config.py
+
+
+Tue Sep 19 12:24:15 BST 2000 dpg1
+=================================
+
+- Minor documentation updates: new INS spec, omniidl -T,
+  OMNIORB_PRINCIPAL.
+
+doc/tex/omniORB.bib
+doc/tex/omniORB.tex
+doc/tex/omniidl.tex
+external_merge/doc/omniORB.pdf
+external_merge/doc/omniORB.ps
+external_merge/doc/omniidl.html
+external_merge/doc/omniidl.pdf
+external_merge/doc/omniidl.ps
+external_merge/doc/omniORB/index.html
+external_merge/doc/omniORB/omniORB001.html
+external_merge/doc/omniORB/omniORB002.html
+external_merge/doc/omniORB/omniORB003.html
+external_merge/doc/omniORB/omniORB004.html
+external_merge/doc/omniORB/omniORB005.html
+external_merge/doc/omniORB/omniORB006.html
+external_merge/doc/omniORB/omniORB007.html
+external_merge/doc/omniORB/omniORB008.html
+external_merge/doc/omniORB/omniORB009.html
+external_merge/doc/omniORB/omniORB010.html
+external_merge/doc/omniORB/omniORB011.html
+external_merge/doc/omniORB/omniORB012.html
+external_merge/doc/omniORB/omniORB014.html
+
+
+Tue Sep 19 10:08:31 BST 2000 dpg1
+=================================
+
+- String_var, _member, _element operator= now check for
+  self-assignment.
+
+include/omniORB3/stringtypes.h
+
+- Explicit public declarations for inheritance from omniNilDynAny.
+
+src/lib/omniORB2/dynamic/dynAnyNil.cc
+
+- Standard C++ does not permit type definitions in anonymous unions
+
+src/lib/omniORB2/dynamic/typecode.h
+
+- Cast to wrong type in _ptrToObjRef()
+
+src/lib/omniORB2/orbcore/poamanager.cc
+
+- Dodgy-looking line in rules for Digital Unix
+
+src/lib/omniORB2/orbcore/sharedlib/dir.mk
+
+- Scope::Entry::Kind renamed to Scope::Entry::EntryKind to avoid
+  problems with over-keen compilers
+
+src/tool/omniidl/cxx/idlscope.cc
+src/tool/omniidl/cxx/idlscope.h
+
+
+Wed Sep 13 14:55:26 BST 2000 djr
+================================
+
+- Gotten rid of message that gives repo id in ~omniServant.  It
+  will always be blank 'cos the object is being destroyed.
+
+src/lib/omniORB2/orbcore/omniServant.cc
+
+
+Wed Sep 13 12:37:42 BST 2000 dpg1
+=================================
+
+- Minor cut-and-paste error in URI handling meant that ior: was not
+  accepted as a URI format.
+
+src/lib/omniORB2/orbcore/uri.cc
+
+
+Wed Sep 13 10:09:43 BST 2000 djs
+================================
+
+- omniIDL/C++ backend bug setting the active discriminator value on unions
+  with implicit default cases
+  -- bug number 10
+
+src/lib/omniORB2/omniidl_be/cxx/header/defs.py
+
+
+Mon Sep 11 15:12:38 BST 2000 dpg1
+=================================
+
+- Fix name tags in bugfixes stylesheet
+
+bugfixes.xsl
+
+- DuplicateRoleName exception missing from
+  RelationshipFactory::create() as downloaded from omg.org
+
+idl/COS/CosRelationships.idl
+
+- New -T flag to omniidl, to use a temporary file instead of a pipe
+  between omnicpp and omniidl. This works-around the bug seen of some
+  Win98 machines.
+
+src/tool/omniidl/python/omniidl/main.py
+
+
+Thu Sep  7 17:20:37 BST 2000 dpg1
+=================================
+
+- Yesterday's Python 1.6+ update broke on Windows.
+
+src/tool/omniidl/cxx/dir.mk
+
+
+Wed Sep  6 12:13:30 BST 2000 dpg1
+=================================
+
+- New note about the Python 1.6 license
+
+external_merge/README.Python  -- new
+
+- Minor changes to support Python versions above 1.5.2
+
+src/tool/omniidl/cxx/dir.mk
+src/tool/omniidl/cxx/idlpython.cc
+src/tool/omniidl/python/omniidl/main.py
+src/tool/omniidl/python/scripts/omniidlrun.py
+
+
+Mon Sep  4 10:02:41 BST 2000 dpg1
+=================================
+
+- Remove accidental #includes of iostream.h left over from debugging
+
+include/omniORB3/boa.h
+include/omniORB3/omniURI.h
+src/lib/omniORB2/orbcore/initRefs.cc
+
+
+Wed Aug 30 19:10:01 BST 2000 dpg1
+=================================
+
+- Register operation declarations so they can be found with
+  findDecl().
+
+src/tool/omniidl/cxx/idlpython.cc
+
+
+Wed Aug 30 16:12:53 BST 2000 dpg1
+=================================
+
+- New environment variable OMNIORB_PRINCIPAL which allows you to set
+  the IIOP principal field. This can be used to talk to Gnome's ORBit.
+
+src/lib/omniORB2/orbcore/corbaOrb.cc
+
+
+Wed Aug 30 15:48:38 BST 2000 sll
+================================
+
+- Fixed a bug in the unmarshal code of a typecode of kind tk_objref.
+  The resulting typecode has its field pd_complete left as 0 which
+  should actually be 1. This normally isn't a problem unless the
+  typecode is a member of a sequence (or other complex structure) typecode and
+  is used in an environment with typecode alias expansion
+  (omniORB::tcAliasExpand) set to true.
+
+src/lib/omniORB2/dynamic/typecode.cc
+
+
+Wed Aug 30 10:43:34 BST 2000 dpg1
+=================================
+
+- BOA constructor with object key failed to set the key in the
+  servant.
+
+include/omniORB3/boa.h
+src/lib/omniORB2/omniidl_be/cxx/skel/template.py
+
+
+Tue Aug 29 16:20:39 BST 2000 dpg1
+=================================
+
+- Document last two omniidl changes
+
+doc/tex/omniidl.tex
+external_merge/doc/omniidl.html
+external_merge/doc/omniidl.pdf
+external_merge/doc/omniidl.ps
+
+
+Tue Aug 29 16:17:38 BST 2000 dpg1
+=================================
+
+- New relativeScope() function.
+- New -i flag to enter interactive loop after parsing
+
+src/tool/omniidl/cxx/idlpython.cc
+src/tool/omniidl/cxx/idlscope.cc
+src/tool/omniidl/cxx/idlscope.h
+src/tool/omniidl/python/omniidl/idlutil.py
+src/tool/omniidl/python/omniidl/main.py
+
+
+Tue Aug 29 11:17:26 BST 2000 dpg1
+=================================
+
+- In omniidl, operations and attributes now have repository ids.
+
+src/tool/omniidl/cxx/idlast.cc
+src/tool/omniidl/cxx/idlast.h
+src/tool/omniidl/cxx/idldump.cc
+src/tool/omniidl/cxx/idlpython.cc
+src/tool/omniidl/cxx/idlrepoId.cc
+src/tool/omniidl/cxx/lex.yy.cc
+src/tool/omniidl/cxx/y.tab.cc
+src/tool/omniidl/python/omniidl/idlast.py
+
+
+Fri Aug 25 14:25:20 BST 2000 dpg1
+=================================
+
+- Multiple comments preceding a declaration are now properly attached
+  on all platforms
+
+src/tool/omniidl/cxx/idlast.cc
+
+
+Thu Aug 24 12:26:28 BST 2000 dpg1
+=================================
+
+- Typo in error message % format string
+
+src/tool/omniidl/cxx/idlscope.cc
+
+
+Wed Aug 23 18:26:48 BST 2000 dme
+================================
+
+- Don't build debug DLLs on Win32 if BuildSharedLibrary is unset
+
+external_merge/mk/mklib.mk
+
+
+Wed Aug 23 16:44:36 BST 2000 djs
+================================
+
+- MSVC5/6 bug workaround when marshalling a multidimensional array
+  of basic things (only as a return type, not as an out type)
+  -- bug number 4
+
+src/lib/omniORB2/omniidl_be/cxx/skutil.py
+
+
+Tue Aug 22 15:53:40 BST 2000 sll
+================================
+
+- If -ORBpoa_iiop_port specified a port which is already in use, throws
+  CORBA::INITIALIZE out of the ORB APIs rather than the internal omniORB
+  exception omniConnectionBroken.
+
+src/lib/omniORB2/orbcore/objectAdapter.cc
+bugfixes.xml
+
+Tue Aug 22 10:59:21 BST 2000 dpg1
+=================================
+
+- Make rules to build the shared omniDynamic library were missing for
+  Solaris GCC.
+
+src/lib/omniORB2/dynamic/sharedlib/dir.mk
+
+
+Mon Aug 21 10:26:45 BST 2000 dpg1
+=================================
+
+- <buglist> tag escaped into output html file.
+
+bugfixes.xsl
+
+
+Mon Aug 21 10:11:51 BST 2000 dpg1
+=================================
+
+- Typo in omniidl -- bug number 1.
+
+src/tool/omniidl/python/omniidl/idltype.py
+
+
+Mon Aug 21 09:51:23 BST 2000 sll
+================================
+
+- Put back linker flags to record ld load path in executable
+
+mk/platforms/i586_linux_2.0_glibc2.1.mk
+mk/platforms/sun4_sosV_5.5.mk
+mk/platforms/sun4_sosV_5.6.mk
+mk/platforms/sun4_sosV_5.7.mk
+
+
+Fri Aug 18 17:33:17 BST 2000 sll
+================================
+
+- update version no. to 3.0.1
+
+bugfixes.xsl
+
+
 Fri Aug 18 14:19:01 BST 2000 sll
 ================================
 
