diff options
Diffstat (limited to 'TAO/TAO_IDL/be_include/be_interface.h')
-rw-r--r-- | TAO/TAO_IDL/be_include/be_interface.h | 64 |
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 |