be_operation.cpp
来自「这是广泛使用的通信开源项目,对于大容量,高并发的通讯要求完全能够胜任,他广泛可用」· C++ 代码 · 共 152 行
CPP
152 行
// be_operation.cpp,v 1.49 2003/10/28 18:30:37 bala Exp
// ============================================================================
//
// = LIBRARY
// TAO IDL
//
// = FILENAME
// be_operation.cpp
//
// = DESCRIPTION
// Extension of class AST_Operation that provides additional means for C++
// mapping.
//
// = AUTHOR
// Copyright 1994-1995 by Sun Microsystems, Inc.
// and
// Aniruddha Gokhale
//
// ============================================================================
#include "be_operation.h"
#include "be_operation_strategy.h"
#include "be_predefined_type.h"
#include "be_argument.h"
#include "be_visitor.h"
#include "global_extern.h"
ACE_RCSID (be,
be_operation,
"be_operation.cpp,v 1.49 2003/10/28 18:30:37 bala Exp")
be_operation::be_operation (void)
: COMMON_Base (),
AST_Decl (),
UTL_Scope (),
AST_Operation (),
be_scope (),
be_decl ()
{
ACE_NEW (this->strategy_,
be_operation_default_strategy (this));
}
be_operation::be_operation (AST_Type *rt,
AST_Operation::Flags fl,
UTL_ScopedName *n,
idl_bool local,
idl_bool abstract)
: COMMON_Base (local,
abstract),
AST_Decl (AST_Decl::NT_op,
n),
UTL_Scope (AST_Decl::NT_op),
AST_Operation (rt,
fl,
n,
local,
abstract),
be_scope (AST_Decl::NT_op),
be_decl (AST_Decl::NT_op,
n)
{
ACE_NEW (this->strategy_,
be_operation_default_strategy (this));
if (this->imported ())
{
return;
}
ACE_SET_BITS (idl_global->decls_seen_info_,
idl_global->decls_seen_masks.operation_seen_);
if (!this->is_local ())
{
be_type *bt = be_type::narrow_from_decl (rt);
bt->seen_in_operation (I_TRUE);
this->set_arg_seen_bit (bt);
ACE_SET_BITS (idl_global->decls_seen_info_,
idl_global->decls_seen_masks.non_local_op_seen_);
}
}
be_operation::~be_operation (void)
{
}
void
be_operation::destroy (void)
{
delete this->strategy_;
this->strategy_ = 0;
// Call the destroy methods of our base classes.
this->be_scope::destroy ();
this->be_decl::destroy ();
this->AST_Operation::destroy ();
}
int
be_operation::accept (be_visitor *visitor)
{
return visitor->visit_operation (this);
}
be_operation_strategy *
be_operation::set_strategy (be_operation_strategy *new_strategy)
{
be_operation_strategy *old = this->strategy_;
if (new_strategy != 0)
{
this->strategy_ = new_strategy;
}
return old;
}
TAO_CodeGen::CG_STATE
be_operation::next_state (TAO_CodeGen::CG_STATE current_state,
int is_extra_state)
{
return this->strategy_->next_state (current_state, is_extra_state);
}
int
be_operation::has_extra_code_generation (TAO_CodeGen::CG_STATE current_state)
{
return this->strategy_->has_extra_code_generation (current_state);
}
be_operation*
be_operation::marshaling (void)
{
return this->strategy_->marshaling ();
}
be_operation*
be_operation::arguments (void)
{
return this->strategy_->arguments ();
}
// Narrowing
IMPL_NARROW_METHODS3 (be_operation, AST_Operation, be_scope, be_decl)
IMPL_NARROW_FROM_DECL (be_operation)
IMPL_NARROW_FROM_SCOPE (be_operation)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?