📄 be_interface.h
字号:
/* -*- c++ -*- */
// be_interface.h,v 1.62 2003/11/21 21:01:29 parsons Exp
// ============================================================================
//
// = LIBRARY
// TAO IDL
//
// = FILENAME
// be_interface.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
// Aniruddha Gokhale,
// Michael Kircher
//
// ============================================================================
#ifndef TAO_BE_INTERFACE_H
#define TAO_BE_INTERFACE_H
#include "be_scope.h"
#include "be_type.h"
#include "be_codegen.h"
#include "ast_interface.h"
class TAO_OutStream;
class TAO_IDL_Inheritance_Hierarchy_Worker;
class be_visitor;
class be_interface_strategy;
class UTL_ExceptList;
class be_interface : public virtual AST_Interface,
public virtual be_scope,
public virtual be_type
{
// = TITLE
// The back end extension of the AST_Interface class
//
// = DESCRIPTION
//
public:
enum
{
THRU_POA = 0,
DIRECT = 1
};
// Used to pass functions to the template method.
typedef int (*tao_code_emitter) (be_interface *,
be_interface *,
TAO_OutStream *);
be_interface (void);
// Default constructor.
be_interface (UTL_ScopedName *n,
AST_Interface **ih,
long nih,
AST_Interface **ih_flat,
long nih_flat,
idl_bool local,
idl_bool abstract);
// 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);
// Destructor.
be_interface_strategy *set_strategy (be_interface_strategy *new_strategy);
// Set the strategy to generate the names.
// Methods, which access the strategy.
const char *local_name (void) const;
// Return the local name.
virtual const char *full_name (void);
// Return the stringified full name.
virtual const char *flat_name (void);
// Return the flattened full scoped name.
virtual const char *repoID (void) const;
// Retrieve the repository ID.
const char *full_skel_name (void) const;
// Retrieve the fully scoped skel class name.
const char *full_coll_name (int) const;
// Retrieve the fully qualified collocated class name.
const char *local_coll_name (int) const;
// Retrieve the fully qualified collocated class name.
virtual const char *base_proxy_impl_name (void);
// retrieve the name of the base proxy implementation.
virtual const char *full_base_proxy_impl_name (void);
// retrieve the fully qualified name of the base proxy
// implementation.
virtual const char *remote_proxy_impl_name (void);
// retrieve the name of the remote proxy implementation.
virtual const char *full_remote_proxy_impl_name (void);
// retrieve the fully qualified name of the remote
// proxy implementation.
virtual const char *thru_poa_proxy_impl_name (void);
// retrieve the name of the ThruPOA proxy implementation.
virtual const char *full_thru_poa_proxy_impl_name (void);
// retrieve the fully qualified name of the ThruPOA proxy
// implementation.
virtual const char *direct_proxy_impl_name (void);
// retrieve the name of the Directx proxy implementation.
virtual const char *full_direct_proxy_impl_name (void);
// retrieve the fully qualified name of the Directx proxy
// implementation.
virtual const char *base_proxy_broker_name (void);
// retrieve the name of the base proxy broker.
virtual const char *full_base_proxy_broker_name (void);
// retrieve the fully qualified name of the base proxy broker.
virtual const char *remote_proxy_broker_name (void);
// retrieve the name of the remote proxy broker implementation.
virtual const char *full_remote_proxy_broker_name (void);
// retrieve the fully qualified name of the remote proxy broker
// implementation.
virtual const char *strategized_proxy_broker_name (void);
// retrieve the name of the strategized proxy broker implementation.
virtual const char *full_strategized_proxy_broker_name (void);
// retrieve the fully qualified name of the strategized proxy broker
// implementation.
virtual const char *client_enclosing_scope (void);
// Return the client scope that encloses the interface.
virtual const char *flat_client_enclosing_scope (void);
// Return the "flattened" scope that encloses
// the interface.
virtual const char *server_enclosing_scope (void);
// Return the server scope that encloses the interface.
const char *relative_skel_name (const char *skel_name);
// Retrieve skeleton name.
void compute_full_skel_name (const char *prefix,
char *&skel_name);
// Build up the skeleton name.
static const char *relative_name (const char *localname,
const char *othername);
virtual void gen_def_ctors (TAO_OutStream* os);
// Call the default constructors of all the base classes.
virtual void gen_stub_ctor (TAO_OutStream* os);
// Generated the global hooks used for non-defined forward
// declared interfaces, and the contructor from stub object.
void gen_var_out_seq_decls (void);
// Generate the declarations used by the template _var, _out
// classes for interfaces, and by sequence template classes.
// 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.
//
/// Iterate over the inheritance hierarchy and call the
/// worker->emit() method for each interface on it.
int traverse_inheritance_graph (
TAO_IDL_Inheritance_Hierarchy_Worker &worker,
TAO_OutStream *os,
idl_bool abstract_paths_only = I_FALSE
);
/// Wrap the @c gen parameter and call the generic version of
/// traverse_inheritance_graph()
int traverse_inheritance_graph (
tao_code_emitter gen,
TAO_OutStream *os,
idl_bool abstract_paths_only = I_FALSE
);
int in_mult_inheritance (void);
// Am I in some form of multiple inheritance
// -1 => error
// 0 => no
// 1 => yes
void in_mult_inheritance (int mi);
// Set a new value.
virtual void redefine (AST_Interface *from);
// Pass along BE-specific member values when redefining a fwd decl.
virtual void destroy (void);
// Cleanup function.
// Visiting.
virtual int accept (be_visitor *visitor);
// Narrowing.
DEF_NARROW_METHODS3 (be_interface, AST_Interface, be_scope, be_type);
DEF_NARROW_FROM_DECL (be_interface);
DEF_NARROW_FROM_SCOPE (be_interface);
static int is_a_helper (be_interface *,
be_interface *,
TAO_OutStream *os);
// Helper method passed to the template method that generates code for the
// is_a method.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -