diff options
author | gokhale <asgokhale@users.noreply.github.com> | 1998-01-07 19:53:20 +0000 |
---|---|---|
committer | gokhale <asgokhale@users.noreply.github.com> | 1998-01-07 19:53:20 +0000 |
commit | be5c228c7a69ab3a219c762222d81ccca94560dd (patch) | |
tree | 7b0d5281082cf2c9c5e786861bbb7088e25b49ab | |
parent | 1e2ba122bdb778f683381eb8672822a9f60cc9da (diff) | |
download | ATCD-be5c228c7a69ab3a219c762222d81ccca94560dd.tar.gz |
*** empty log message ***
-rw-r--r-- | TAO/ChangeLog-98c | 3 | ||||
-rw-r--r-- | TAO/TAO_IDL/ast/ast_native.cpp | 31 | ||||
-rw-r--r-- | TAO/TAO_IDL/ast/ast_native.cpp~ | 31 | ||||
-rw-r--r-- | TAO/TAO_IDL/be/be_interface.cpp | 12 | ||||
-rw-r--r-- | TAO/TAO_IDL/be/be_native.cpp | 88 | ||||
-rw-r--r-- | TAO/TAO_IDL/be/be_native.cpp~ | 39 | ||||
-rw-r--r-- | TAO/TAO_IDL/be_include/be_native.h | 68 | ||||
-rw-r--r-- | TAO/TAO_IDL/be_include/be_native.h~ | 44 | ||||
-rw-r--r-- | TAO/TAO_IDL/be_include/be_state.h~ | 187 | ||||
-rw-r--r-- | TAO/TAO_IDL/be_include/be_visitor.h | 96 | ||||
-rw-r--r-- | TAO/TAO_IDL/be_include/be_visitor.h~ | 76 | ||||
-rw-r--r-- | TAO/TAO_IDL/include/ast_native.h | 35 | ||||
-rw-r--r-- | TAO/TAO_IDL/include/ast_native.h~ | 35 | ||||
-rw-r--r-- | TAO/docs/releasenotes/index.html | 7 |
14 files changed, 750 insertions, 2 deletions
diff --git a/TAO/ChangeLog-98c b/TAO/ChangeLog-98c index 2b65a5337b5..d22d55a04e9 100644 --- a/TAO/ChangeLog-98c +++ b/TAO/ChangeLog-98c @@ -53,6 +53,9 @@ Wed Jan 7 12:00:14 1998 Aniruddha Gokhale <gokhale@mambo.cs.wustl.edu> turns out to be a child of the first. Thanks to Carlos O'Ryan for reporting the error. + In addition, we use the nested_type_name for the inherited classes + in the class definition. + * TAO_IDL/be/be_type.cpp: We generate relative paths instead of the ACE_NESTED_CLASS macro. However, I am going to make this an IDL option at a later point. diff --git a/TAO/TAO_IDL/ast/ast_native.cpp b/TAO/TAO_IDL/ast/ast_native.cpp new file mode 100644 index 00000000000..22d72392381 --- /dev/null +++ b/TAO/TAO_IDL/ast/ast_native.cpp @@ -0,0 +1,31 @@ + +// AST_Native: New IDL type added by the POA spec + +#include "idl.h" +#include "idl_extern.h" + +/* + * Constructor(s) + */ +AST_Native::AST_Native (void) +{ +} + +AST_Native::AST_Native(UTL_ScopedName *n, + UTL_StrList *p) + : AST_Decl (AST_Decl::NT_native, n, p) +{ +} + +/* + * Dump this AST_Native node to the ostream o + */ +void +AST_Native::dump (ostream &o) +{ + AST_Decl::dump (o); +} + +// Narrowing +IMPL_NARROW_METHODS1(AST_Native, AST_Type) +IMPL_NARROW_FROM_DECL(AST_Native) diff --git a/TAO/TAO_IDL/ast/ast_native.cpp~ b/TAO/TAO_IDL/ast/ast_native.cpp~ new file mode 100644 index 00000000000..d5cbb843080 --- /dev/null +++ b/TAO/TAO_IDL/ast/ast_native.cpp~ @@ -0,0 +1,31 @@ + +// AST_Native: New IDL type added by the POA spec + +#include "idl.h" +#include "idl_extern.h" + +/* + * Constructor(s) + */ +AST_Native::AST_Native (void) +{ +} + +AST_Native::AST_Native(UTL_ScopedName *n, + UTL_StrList *p) + : AST_Decl (AST_Decl::NT_native, n, p) +{ +} + +/* + * Dump this AST_Native node to the ostream o + */ +void +AST_Native::dump (ostream &o) +{ + AST_Decl::dump (o); +} + +// Narrowing +IMPL_NARROW_METHODS1(AST_Native, AST_Decl) +IMPL_NARROW_FROM_DECL(AST_Native) diff --git a/TAO/TAO_IDL/be/be_interface.cpp b/TAO/TAO_IDL/be/be_interface.cpp index 6d22bdb1ebb..779cc97b87c 100644 --- a/TAO/TAO_IDL/be/be_interface.cpp +++ b/TAO/TAO_IDL/be/be_interface.cpp @@ -196,8 +196,18 @@ int be_interface::gen_client_header (void) *ch << ": "; for (i = 0; i < n_inherits (); i++) { + be_interface *inherited = be_interface::narrow_from_decl + (this->inherits ()[i]); + be_decl *scope = 0; + if (inherited->is_nested ()) + { + // inherited node is used in the scope of "this" node + scope = be_scope::narrow_from_scope (this->defined_in + ())->decl (); + } + *ch << "public virtual "; - *ch << inherits ()[i]->name (); // dump the scoped name + *ch << inherited->nested_type_name (scope); // dump the scoped name if (i < n_inherits () - 1) // this is the case of multiple // inheritance { diff --git a/TAO/TAO_IDL/be/be_native.cpp b/TAO/TAO_IDL/be/be_native.cpp new file mode 100644 index 00000000000..5b619dc7fe5 --- /dev/null +++ b/TAO/TAO_IDL/be/be_native.cpp @@ -0,0 +1,88 @@ +// Id +// ============================================================================ +// +// = LIBRARY +// TAO IDL +// +// = FILENAME +// be_native.cpp +// +// = DESCRIPTION +// The native IDL type +// +// = AUTHOR +// Aniruddha Gokhale +// +// ============================================================================ + +#include "idl.h" +#include "idl_extern.h" +#include "be.h" + + +// be_native: New IDL type added by the POA spec +/* + * Constructor(s) + */ +be_native::be_native (void) +{ +} + +be_native::be_native (UTL_ScopedName *n, + UTL_StrList *p) + : AST_Native (n, p), + AST_Decl (AST_Decl::NT_native, n, p) +{ +} + +int +be_native::gen_client_header (void) +{ + return 0; +} + +int +be_native::gen_client_stubs (void) +{ + return 0; +} + +int +be_native::gen_server_header (void) +{ + return 0; +} + +int +be_native::gen_server_skeletons (void) +{ + return 0; +} + +int +be_native::gen_client_inline (void) +{ + return 0; +} + +int +be_native::gen_server_inline (void) +{ + return 0; +} + +int +be_native::gen_typecode (void) +{ + return 0; +} + +long +be_native::tc_size (void) +{ + return 0; +} + +// Narrowing +IMPL_NARROW_METHODS2(be_native, AST_Native, be_type) +IMPL_NARROW_FROM_DECL(be_native) diff --git a/TAO/TAO_IDL/be/be_native.cpp~ b/TAO/TAO_IDL/be/be_native.cpp~ new file mode 100644 index 00000000000..d8c35056eed --- /dev/null +++ b/TAO/TAO_IDL/be/be_native.cpp~ @@ -0,0 +1,39 @@ +// Id +// ============================================================================ +// +// = LIBRARY +// TAO IDL +// +// = FILENAME +// be_native.cpp +// +// = DESCRIPTION +// The native IDL type +// +// = AUTHOR +// Aniruddha Gokhale +// +// ============================================================================ + +#include "idl.h" +#include "idl_extern.h" +#include "be.h" + + +// be_native: New IDL type added by the POA spec +/* + * Constructor(s) + */ +be_native::be_native (void) +{ +} + +be_native::be_native (UTL_ScopedName *n, + UTL_StrList *p) + : AST_Decl (AST_Decl::NT_native, n, p) +{ +} + +// Narrowing +IMPL_NARROW_METHODS1(be_native, AST_Native) +IMPL_NARROW_FROM_DECL(be_native) diff --git a/TAO/TAO_IDL/be_include/be_native.h b/TAO/TAO_IDL/be_include/be_native.h new file mode 100644 index 00000000000..bf85c9acbff --- /dev/null +++ b/TAO/TAO_IDL/be_include/be_native.h @@ -0,0 +1,68 @@ +// Id +// ============================================================================ +// +// = LIBRARY +// TAO IDL +// +// = FILENAME +// be_native.h +// +// = DESCRIPTION +// The native IDL type +// +// = AUTHOR +// Aniruddha Gokhale +// +// ============================================================================ + + +#if !defined (BE_NATIVE_H) +#define BE_NATIVE_H + +// Representation of "native" IDL type added by the POA spec + +class be_native : public virtual AST_Native, public virtual be_type +{ +public: + // =Operations + + // Constructor(s) + be_native (void); + // default constructor + + be_native(UTL_ScopedName *n, UTL_StrList *p); + // constructor that initializes its scoped name + + virtual ~be_native (void) {} + // destructor + + virtual int gen_client_header (void); + // Generates the client-side header information for the type + + virtual int gen_client_stubs (void); + // Generates the client-side stubs for the type + + virtual int gen_server_header (void); + // Generates the server-side header information for the type + + virtual int gen_server_skeletons (void); + // Generates the server-side skeletons for the type + + virtual int gen_client_inline (void); + // Generates the client-side inline for the type + + virtual int gen_server_inline (void); + // Generates the server-side inlines for the type + + virtual int gen_typecode (void); + // generate the typecode description + + virtual long tc_size (void); + // return typecode size + + // Narrowing + DEF_NARROW_METHODS2(be_native, AST_Native, be_type); + DEF_NARROW_FROM_DECL(be_native); +}; + +#endif /* BE_NATIVE_H */ diff --git a/TAO/TAO_IDL/be_include/be_native.h~ b/TAO/TAO_IDL/be_include/be_native.h~ new file mode 100644 index 00000000000..c4871a60503 --- /dev/null +++ b/TAO/TAO_IDL/be_include/be_native.h~ @@ -0,0 +1,44 @@ +// Id +// ============================================================================ +// +// = LIBRARY +// TAO IDL +// +// = FILENAME +// be_native.h +// +// = DESCRIPTION +// The native IDL type +// +// = AUTHOR +// Aniruddha Gokhale +// +// ============================================================================ + + +#if !defined (BE_NATIVE_H) +#define BE_NATIVE_H + +// Representation of "native" IDL type added by the POA spec + +class be_native : public virtual AST_Native +{ +public: + // =Operations + + // Constructor(s) + be_native (void); + // default constructor + + be_native(UTL_ScopedName *n, UTL_StrList *p); + // constructor that initializes its scoped name + + virtual ~be_native (void) {} + // destructor + + // Narrowing + DEF_NARROW_METHODS1(be_native, AST_Native); + DEF_NARROW_FROM_DECL(be_native); +}; + +#endif /* BE_NATIVE_H */ diff --git a/TAO/TAO_IDL/be_include/be_state.h~ b/TAO/TAO_IDL/be_include/be_state.h~ new file mode 100644 index 00000000000..dd6e3259e13 --- /dev/null +++ b/TAO/TAO_IDL/be_include/be_state.h~ @@ -0,0 +1,187 @@ +/* -*- c++ -*- */ +// ============================================================================ +// +// = LIBRARY +// TAO IDL +// +// = FILENAME +// be_state.h +// +// = DESCRIPTION +// The Code generator state class and its subclasses +// +// = AUTHOR +// Aniruddha Gokhale +// +// ============================================================================ + +#if !defined (TAO_BE_STATE_H) +#define TAO_BE_STATE_H + +class be_state +{ + // =TITLE + // be_state + // =DESCRIPTION + // Emits code based on current state. This is an abstract base class. The + // task of code generation is handled by subclasses. +public: + virtual int gen_code (be_type *bt, be_decl *d, be_type *type=0) = 0; + // code generation for node "d" whose type is "bt". The third parameter is + // used for recursive invocation involving a typedef + + virtual ~be_state (void); + // destructor + +protected: + be_state (void); + // constructor +}; + +// ============== subclasses ==================== + +class be_state_struct_ch: public be_state +{ + // =TITLE + // be_state_struct_ch + // =DESCRIPTION + // struct generation in client header +public: + + be_state_struct_ch (void); + // constructor + + virtual int gen_code (be_type *bt, be_decl *d, be_type *type=0); + // code generation for node "d" whose type is "bt". The third parameter is + // used for recursive invocation involving a typedef +}; +typedef ACE_Singleton<be_state_struct_ch, ACE_SYNCH_MUTEX> TAO_BE_STATE_STRUCT_CH; + +class be_state_union_disctypedefn_ch: public be_state +{ + // =TITLE + // be_state_union_disctypedefn_ch + // =DESCRIPTION + // union discriminant defn generation in client header +public: + + be_state_union_disctypedefn_ch (void); + // constructor + + virtual int gen_code (be_type *bt, be_decl *d, be_type *type=0); + // code generation for node "d" whose type is "bt". The third parameter is + // used for recursive invocation involving a typedef +}; +typedef ACE_Singleton<be_state_union_disctypedefn_ch, ACE_SYNCH_MUTEX> + TAO_BE_STATE_UNION_DISCTYPEDEFN_CH; + +class be_state_union_disctypedefn_ci: public be_state +{ + // =TITLE + // be_state_union_disctypedefn_ci + // =DESCRIPTION + // union discriminant defn generation in client inline file +public: + + be_state_union_disctypedefn_ci (void); + // constructor + + virtual int gen_code (be_type *bt, be_decl *d, be_type *type=0); + // code generation for node "d" whose type is "bt". The third parameter is + // used for recursive invocation involving a typedef +}; +typedef ACE_Singleton<be_state_union_disctypedefn_ci, ACE_SYNCH_MUTEX> + TAO_BE_STATE_UNION_DISCTYPEDEFN_CI; + +class be_state_union_public_ch: public be_state +{ + // =TITLE + // be_state_union_public_ch + // =DESCRIPTION + // union discriminant defn generation in client header file +public: + + be_state_union_public_ch (void); + // constructor + + virtual int gen_code (be_type *bt, be_decl *d, be_type *type=0); + // code generation for node "d" whose type is "bt". The third parameter is + // used for recursive invocation involving a typedef +}; +typedef ACE_Singleton<be_state_union_public_ch, ACE_SYNCH_MUTEX> + TAO_BE_STATE_UNION_PUBLIC_CH; + +class be_state_union_public_ci: public be_state +{ + // =TITLE + // be_state_union_public_ci + // =DESCRIPTION + // union discriminant defn generation in client inline file +public: + + be_state_union_public_ci (void); + // constructor + + virtual int gen_code (be_type *bt, be_decl *d, be_type *type=0); + // code generation for node "d" whose type is "bt". The third parameter is + // used for recursive invocation involving a typedef +}; +typedef ACE_Singleton<be_state_union_public_ci, ACE_SYNCH_MUTEX> + TAO_BE_STATE_UNION_PUBLIC_CI; + +class be_state_union_private_ch: public be_state +{ + // =TITLE + // be_state_union_private_ch + // =DESCRIPTION + // union discriminant defn generation in client header file +public: + + be_state_union_private_ch (void); + // constructor + + virtual int gen_code (be_type *bt, be_decl *d, be_type *type=0); + // code generation for node "d" whose type is "bt". The third parameter is + // used for recursive invocation involving a typedef +}; +typedef ACE_Singleton<be_state_union_private_ch, ACE_SYNCH_MUTEX> + TAO_BE_STATE_UNION_PRIVATE_CH; + +class be_state_operation: public be_state +{ + // =TITLE + // be_state_operation + // =DESCRIPTION + // operation return type +public: + + be_state_operation (void); + // constructor + + virtual int gen_code (be_type *bt, be_decl *d, be_type *type=0); + // code generation for node "d" whose type is "bt". The third parameter is + // used for recursive invocation involving a typedef +}; +typedef ACE_Singleton<be_state_operation, ACE_SYNCH_MUTEX> + TAO_BE_STATE_OPERATION; + +class be_state_argument: public be_state +{ + // =TITLE + // be_state_argument + // =DESCRIPTION + // argument return type +public: + + be_state_argument (void); + // constructor + + virtual int gen_code (be_type *bt, be_decl *d, be_type *type=0); + // code generation for node "d" whose type is "bt". The third parameter is + // used for recursive invocation involving a typedef +}; +typedef ACE_Singleton<be_state_argument, ACE_SYNCH_MUTEX> + TAO_BE_STATE_ARGUMENT; + +#endif // end of be_state + diff --git a/TAO/TAO_IDL/be_include/be_visitor.h b/TAO/TAO_IDL/be_include/be_visitor.h new file mode 100644 index 00000000000..a16663623ab --- /dev/null +++ b/TAO/TAO_IDL/be_include/be_visitor.h @@ -0,0 +1,96 @@ +// +// $Id$ +// + +/* -*- c++ -*- */ +// ============================================================================ +// +// = LIBRARY +// TAO IDL +// +// = FILENAME +// be_visitor.h +// +// = DESCRIPTION +// Extension of class AST_Interface that provides additional means for C++ +// mapping of an interface. +// +// = AUTHOR +// Copyright 1994-1995 by Sun Microsystems, Inc. +// and +// Carlos O'Ryan, Aniruddha Gokhale +// +// ============================================================================ + +#if !defined (TAO_BE_VISITOR_H) +#define TAO_BE_VISITOR_H + +class be_decl; +class be_scope; +class be_type; +class be_predefined_type; +class be_module; +class be_interface; +class be_interface_fwd; +class be_structure; +class be_exception; +class be_expression; +class be_enum; +class be_operation; +class be_field; +class be_argument; +class be_attribute; +class be_union; +class be_union_branch; +class be_union_label; +class be_constant; +class be_enum_val; +class be_array; +class be_sequence; +class be_string; +class be_typedef; +class be_root; + +class be_visitor +{ + // + // = TITLE + // Base class for visitors. + // + // = DESCRIPTION + // To implement code generation we use the "Visitor Pattern", this + // is the abstract "Visitor". + // The "visit" methods are not pure virtual to facilitate the + // implementation of simple visitors that only override a few. + // +public: + virtual ~be_visitor (void); + + virtual int visit_decl (be_decl *node); + virtual int visit_scope (be_scope *node); + virtual int visit_type (be_type *node); + virtual int visit_predefined_type (be_predefined_type *node); + virtual int visit_module (be_module *node); + virtual int visit_interface (be_interface *node); + virtual int visit_interface_fwd (be_interface_fwd *node); + virtual int visit_structure (be_structure *node); + virtual int visit_exception (be_exception *node); + virtual int visit_expression (be_expression *node); + virtual int visit_enum (be_enum *node); + virtual int visit_operation (be_operation *node); + virtual int visit_field (be_field *node); + virtual int visit_argument (be_argument *node); + virtual int visit_attribute (be_attribute *node); + virtual int visit_union (be_union *node); + virtual int visit_union_branch (be_union_branch *node); + virtual int visit_union_label (be_union_label *node); + virtual int visit_constant (be_constant *node); + virtual int visit_enum_val (be_enum_val *node); + virtual int visit_array (be_array *node); + virtual int visit_sequence (be_sequence *node); + virtual int visit_string (be_string *node); + virtual int visit_typedef (be_typedef *node); + virtual int visit_root (be_root *node); +}; + +#endif // TAO_BE_VISITOR_H diff --git a/TAO/TAO_IDL/be_include/be_visitor.h~ b/TAO/TAO_IDL/be_include/be_visitor.h~ new file mode 100644 index 00000000000..c74c98b21fb --- /dev/null +++ b/TAO/TAO_IDL/be_include/be_visitor.h~ @@ -0,0 +1,76 @@ +// +// $Id$ +// + +#ifndef _BE_VISITOR_H +#define _BE_VISITOR_H + +class be_decl; +class be_scope; +class be_type; +class be_predefined_type; +class be_module; +class be_interface; +class be_interface_fwd; +class be_structure; +class be_exception; +class be_expression; +class be_enum; +class be_operation; +class be_field; +class be_argument; +class be_attribute; +class be_union; +class be_union_branch; +class be_union_label; +class be_constant; +class be_enum_val; +class be_array; +class be_sequence; +class be_string; +class be_typedef; +class be_root; + +class be_visitor +{ + // + // = TITLE + // Base class for visitors. + // + // = DESCRIPTION + // To implement code generation we use the "Visitor Pattern", this + // is the abstract "Visitor". + // The "visit" methods are not pure virtual to facilitate the + // implementation of simple visitors that only override a few. + // +public: + virtual ~be_visitor (void); + + virtual int visit_decl (be_decl *node); + virtual int visit_scope (be_scope *node); + virtual int visit_type (be_type *node); + virtual int visit_predefined_type (be_predefined_type *node); + virtual int visit_module (be_module *node); + virtual int visit_interface (be_interface *node); + virtual int visit_interface_fwd (be_interface_fwd *node); + virtual int visit_structure (be_structure *node); + virtual int visit_exception (be_exception *node); + virtual int visit_expression (be_expression *node); + virtual int visit_enum (be_enum *node); + virtual int visit_operation (be_operation *node); + virtual int visit_field (be_field *node); + virtual int visit_argument (be_argument *node); + virtual int visit_attribute (be_attribute *node); + virtual int visit_union (be_union *node); + virtual int visit_union_branch (be_union_branch *node); + virtual int visit_union_label (be_union_label *node); + virtual int visit_constant (be_constant *node); + virtual int visit_enum_val (be_enum_val *node); + virtual int visit_array (be_array *node); + virtual int visit_sequence (be_sequence *node); + virtual int visit_string (be_string *node); + virtual int visit_typedef (be_typedef *node); + virtual int visit_root (be_root *node); +}; + +#endif // _BE_VISITOR_H diff --git a/TAO/TAO_IDL/include/ast_native.h b/TAO/TAO_IDL/include/ast_native.h new file mode 100644 index 00000000000..6cc41d146af --- /dev/null +++ b/TAO/TAO_IDL/include/ast_native.h @@ -0,0 +1,35 @@ +#ifndef _AST_NATIVE_H_ +#define _AST_NATIVE_H_ + +// Representation of "native" IDL type added by the POA spec +// +/* +** DEPENDENCIES: ast_decl.h +** +** USE: Included from ast.h +*/ + +class AST_Native : public virtual AST_Type +{ +public: + // =Operations + + // Constructor(s) + AST_Native (void); + // default constructor + + AST_Native(UTL_ScopedName *n, UTL_StrList *p); + // constructor that initializes its scoped name + + virtual ~AST_Native (void) {} + // destructor + + // Narrowing + DEF_NARROW_METHODS1(AST_Native, AST_Type); + DEF_NARROW_FROM_DECL(AST_Native); + + // AST Dumping + virtual void dump(ostream &o); +}; + +#endif /* AST_NATIVE_H */ diff --git a/TAO/TAO_IDL/include/ast_native.h~ b/TAO/TAO_IDL/include/ast_native.h~ new file mode 100644 index 00000000000..b36a0c9d5d7 --- /dev/null +++ b/TAO/TAO_IDL/include/ast_native.h~ @@ -0,0 +1,35 @@ +#ifndef _AST_NATIVE_H_ +#define _AST_NATIVE_H_ + +// Representation of "native" IDL type added by the POA spec +// +/* +** DEPENDENCIES: ast_decl.h +** +** USE: Included from ast.h +*/ + +class AST_Native : public virtual AST_Decl +{ +public: + // =Operations + + // Constructor(s) + AST_Native (void); + // default constructor + + AST_Native(UTL_ScopedName *n, UTL_StrList *p); + // constructor that initializes its scoped name + + virtual ~AST_Native (void) {} + // destructor + + // Narrowing + DEF_NARROW_METHODS1(AST_Native, AST_Decl); + DEF_NARROW_FROM_DECL(AST_Native); + + // AST Dumping + virtual void dump(ostream &o); +}; + +#endif /* AST_NATIVE_H */ diff --git a/TAO/docs/releasenotes/index.html b/TAO/docs/releasenotes/index.html index cf594675b63..f922094536a 100644 --- a/TAO/docs/releasenotes/index.html +++ b/TAO/docs/releasenotes/index.html @@ -51,8 +51,13 @@ HREF="http://www.cs.wustl.edu/~schmidt/ACE_wrappers/TAO/VERSION">current release <H3><A NAME="idl"></A>IDL Compiler</H3> Point of contact: <A HREF="mailto:gokhale@cs.wustl.edu">Aniruddha Gokhale</A> - <P> Current status: (As of Dec 31st, 1997.) + <P> Current status: (As of January 7th, 1998.) <UL> + <LI> Support for the "native" keyword added </LI> + + <LI> Introduced tests for object references to TAO. Still + incomplete. </LI> + <LI> Param_Test example is able to test string sequences, fixed structs, variable sized structs and nested structs </LI> |