summaryrefslogtreecommitdiff
path: root/TAO/TAO_IDL/be_include/be_interface.h
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/TAO_IDL/be_include/be_interface.h')
-rw-r--r--TAO/TAO_IDL/be_include/be_interface.h64
1 files changed, 53 insertions, 11 deletions
diff --git a/TAO/TAO_IDL/be_include/be_interface.h b/TAO/TAO_IDL/be_include/be_interface.h
index f418864e982..e8b58e4f468 100644
--- a/TAO/TAO_IDL/be_include/be_interface.h
+++ b/TAO/TAO_IDL/be_include/be_interface.h
@@ -49,6 +49,9 @@ public:
// Constructor that sets its scoped name <n>, a list of inherited interfaces
// <ih>, the number of inherited interfaces <nih>, and any prgmas <p>
+ ~be_interface (void);
+ // dtor
+
virtual int gen_client_header (void);
// Generates the client-side header information for the interface
@@ -82,6 +85,23 @@ public:
const char *full_skel_name (void);
// retrieve the fully scoped skel class name
+ //
+ // Each interface (to fix names "T") also defines two help classes,
+ // the "collocated" class inherits from T, but delegates on the
+ // skeleton for T (usually POA_T or POA_ModuleName::T), in other
+ // words it is a Bridge from T to its implementation.
+ // The class is nested inside the skeleton class.
+ //
+ // The "stub" is a class defined on the client scope, it actually
+ // defines the stubs (all operations in T are pure virtual).
+ // @@ TODO currently the stub class is not implemented.
+ //
+ const char *full_coll_name (void) const;
+ // retrieve the fully qualified collocated class name
+
+ const char *local_coll_name (void) const;
+ // retrieve the fully qualified collocated class name
+
virtual int gen_typecode (void);
// generate the typecode
@@ -98,30 +118,31 @@ public:
TAO_OutStream *os);
// template method using breadth first traversal of inheritance graph
- char *relative_skel_name (const char *);
+ const char *relative_skel_name (const char *other_class_name);
// relative skeleton name
+ const char *relative_coll_name (const char *other_class_name);
+ // relative name for collocated class.
+
// Visiting
virtual int accept (be_visitor *visitor);
+ virtual int write_as_return (TAO_OutStream *stream,
+ be_type *type);
+ // write the mapping as a return value on the stream.
+
// Narrowing
DEF_NARROW_METHODS3 (be_interface, AST_Interface, be_scope, be_type);
DEF_NARROW_FROM_DECL (be_interface);
DEF_NARROW_FROM_SCOPE (be_interface);
-private:
- void compute_fullskelname (void);
- // compute the fully scoped skel class name
-
- int gen_operation_table (void);
- // generate the operation table including entries for inherited interfaces
-
- int gen_optable_entries (be_interface *);
- // generate the operation table entries
-
static int is_a_helper (be_interface *, be_interface *, TAO_OutStream *os);
// helper method passed to the template method
+ static int downcast_helper (be_interface *,
+ be_interface *,
+ TAO_OutStream *os);
+
static int gen_optable_helper (be_interface *,
be_interface *,
TAO_OutStream *os);
@@ -132,9 +153,30 @@ private:
TAO_OutStream *os);
// helper method passed to the template method
+private:
+ void compute_fullskelname (void);
+ // compute the fully scoped skel class name
+
+ int gen_operation_table (void);
+ // generate the operation table including entries for inherited interfaces
+
+ static const char *relative_name (const char* our_name,
+ const char *other_class_name);
+ // relative name for collocated class.
+
+ int gen_optable_entries (be_interface *);
+ // generate the operation table entries
+
+ void compute_coll_name (void);
+ // compute the fully qualified collocated class name.
+
+private:
char *full_skel_name_; // fully scoped skeleton name
int skel_count_; // number of static skeletons in the operation table
+
+ char *full_coll_name_;
+ char *local_coll_name_;
};
#endif // if !defined