⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 psdl_interface_visitor.cpp

📁 这是广泛使用的通信开源项目,对于大容量,高并发的通讯要求完全能够胜任,他广泛可用于网络游戏医学图像网关的高qos要求.更详细的内容可阅读相应的材料
💻 CPP
📖 第 1 页 / 共 5 页
字号:

  ps_si->decr_indent (0);
  ps_si->decr_indent (0);

  ps_si->nl ();
  ps_si->nl ();
  *ps_si << "if (retv)";
  ps_si->incr_indent (0);
  ps_si->nl ();
  *ps_si << "this->_add_ref ();";

  ps_si->decr_indent (0);
  ps_si->nl ();

  *ps_si << "return retv;";

  ps_si->decr_indent (0);
  ps_si->nl ();
  *ps_si << "}";

  ps_si->nl ();
  ps_si->nl ();

  *ps_si << "const char* " << this->interface_name_
         << "::_interface_repository_id (void) const";   ps_si->nl ();

  *ps_si << "{";
  ps_si->incr_indent (0);
  ps_si->nl ();
  *ps_si << "return \"IDL:" << this->interface_name_ << ":1.0\";";
  ps_si->decr_indent (0);
  ps_si->nl ();

  *ps_si << "}";

  ps_si->nl ();
  ps_si->nl ();

  *ps_si << "static const CORBA::Long _oc_"
         << this->interface_name_ << "[] =";   ps_si->nl ();
  *ps_si << "{";   ps_si->nl ();
  *ps_si << "// typecode related information goes here";

  ps_si->nl ();
  *ps_si << "};";

  ps_si->nl ();
  ps_si->nl ();


  *ps_si << "static CORBA::TypeCode _tc_TAO_tc_"
         << this->interface_name_ << " (";

  ps_si->incr_indent (0);
  ps_si->incr_indent (0);
  ps_si->nl ();

  *ps_si << "CORBA::tk_objref,";   ps_si->nl ();
  *ps_si << "sizeof (_oc_" << this->interface_name_ << "),";   ps_si->nl ();
  *ps_si << "(char *) &_oc_" << this->interface_name_ << ",";   ps_si->nl ();
  *ps_si << "0,";   ps_si->nl ();
  *ps_si << "sizeof (" << this->interface_name_ << ")";
  ps_si->decr_indent (0);
  ps_si->nl ();
  *ps_si << ");";

  ps_si->decr_indent (0);
  ps_si->nl ();
  ps_si->nl ();

  *ps_si << "::CORBA::TypeCode_ptr _tc_" << this->interface_name_ << " =";
  ps_si->decr_indent (0);
  ps_si->nl ();
  *ps_si << "&_tc_TAO_tc_" << this->interface_name_ << ";";
  ps_si->decr_indent (0);

  ps_si->nl ();
  ps_si->nl ();

  *ps_si << "void operator<<= (";
  ps_si->incr_indent (0);
  ps_si->incr_indent (0);
  ps_si->nl ();

  *ps_si << "CORBA::Any &_tao_any,";   ps_si->nl ();
  *ps_si << this->interface_name_ << "_ptr _tao_elem";
  ps_si->decr_indent (0);
  ps_si->nl ();

  *ps_si << ")";
  ps_si->decr_indent (0);
  ps_si->nl ();

  *ps_si << "{";
  ps_si->incr_indent (0);
  ps_si->nl ();

  *ps_si << "TAO_OutputCDR stream;";
  ps_si->nl ();
  ps_si->nl ();

  *ps_si << "if (stream << _tao_elem)";
  ps_si->incr_indent (0);
  ps_si->nl ();

  *ps_si << "{";
  ps_si->incr_indent (0);
  ps_si->nl ();

  *ps_si << "_tao_any._tao_replace (";
  ps_si->incr_indent (0);
  ps_si->incr_indent (0);
  ps_si->nl ();

  *ps_si << "_tc_" << this->interface_name_ << ", ";   ps_si->nl ();
  *ps_si << "TAO_ENCAP_BYTE_ORDER,";   ps_si->nl ();
  *ps_si << "stream.begin (),";   ps_si->nl ();
  *ps_si << "1,";   ps_si->nl ();
  *ps_si << this->interface_name_ << "::_duplicate (_tao_elem),";   ps_si->nl ();
  *ps_si << this->interface_name_ << "::_tao_any_destructor";
  ps_si->decr_indent (0);
  ps_si->nl ();
  *ps_si << ");";

  ps_si->decr_indent (0);
  ps_si->decr_indent (0);
  ps_si->nl ();
  *ps_si << "}";

  ps_si->decr_indent (0);
  ps_si->decr_indent (0);
  ps_si->nl ();
  *ps_si << "}";

  ps_si->nl ();
  ps_si->nl ();

  *ps_si << "void operator<<= (";
  ps_si->incr_indent (0);
  ps_si->nl ();
  *ps_si << "CORBA::Any &_tao_any,";   ps_si->nl ();
  *ps_si << this->interface_name_ << "_ptr *_tao_elem";
  ps_si->nl ();

  *ps_si << ")";
  ps_si->decr_indent (0);
  ps_si->nl ();

  *ps_si << "{";
  ps_si->incr_indent (0);
  ps_si->nl ();

  *ps_si << "TAO_OutputCDR stream;";
  ps_si->nl ();
  ps_si->nl ();

  *ps_si << "if (stream << *_tao_elem)";
  ps_si->incr_indent (0);
  ps_si->nl ();

  *ps_si << "{";
  ps_si->incr_indent (0);
  ps_si->nl ();

  *ps_si << "_tao_any._tao_replace (";
  ps_si->incr_indent (0);
  ps_si->nl ();
  *ps_si << "_tc_" << this->interface_name_ << ", ";   ps_si->nl ();
  *ps_si << "TAO_ENCAP_BYTE_ORDER,";   ps_si->nl ();
  *ps_si << "stream.begin (),";   ps_si->nl ();
  *ps_si << "1,";   ps_si->nl ();
  *ps_si << "*_tao_elem,";   ps_si->nl ();
  *ps_si << this->interface_name_ << "::_tao_any_destructor";

  ps_si->decr_indent (0);
  ps_si->nl ();
  *ps_si << ");";

  ps_si->decr_indent (0);
  ps_si->nl ();
  *ps_si << "}";

  ps_si->decr_indent (0);
  ps_si->decr_indent (0);
  ps_si->nl ();
  *ps_si << "}";

  ps_si->nl ();
  ps_si->nl ();

  *ps_si << "CORBA::Boolean operator>>= (";
  ps_si->incr_indent (0);
  ps_si->incr_indent (0);
  ps_si->nl ();
  *ps_si << "const CORBA::Any &_tao_any,";   ps_si->nl ();
  *ps_si << this->interface_name_ << "_ptr &_tao_elem";

  ps_si->decr_indent (0);
  ps_si->nl ();
  *ps_si << ")";

  ps_si->decr_indent (0);
  ps_si->nl ();

  *ps_si << "{";
  ps_si->incr_indent (0);
  ps_si->nl ();

  *ps_si << "ACE_TRY_NEW_ENV";   ps_si->nl ();
  *ps_si << "{";
  ps_si->incr_indent (0);
  ps_si->nl ();

  *ps_si << "_tao_elem = " << this->interface_name_ << "::_nil ();";
  ps_si->nl ();
  *ps_si << "CORBA::TypeCode_var type = _tao_any.type ();";
  ps_si->nl ();
  ps_si->nl ();

  *ps_si << "CORBA::Boolean result =";
  ps_si->incr_indent (0);
  ps_si->nl ();

  *ps_si << "type->equivalent (";
  ps_si->incr_indent (0);
  ps_si->incr_indent (0);
  ps_si->nl ();
  *ps_si << "_tc_" << this->interface_name_ << "";   ps_si->nl ();
  *ps_si << "ACE_ENV_ARG_PARAMETER";

  ps_si->decr_indent (0);
  ps_si->nl ();
  *ps_si << ");";

  ps_si->decr_indent (0);
  ps_si->decr_indent (0);
  ps_si->nl ();
  *ps_si << "ACE_TRY_CHECK;";

  ps_si->nl ();
  ps_si->nl ();

  *ps_si << "if (!result)";
  ps_si->incr_indent (0);
  ps_si->nl ();

  *ps_si << "{";
  ps_si->incr_indent (0);
  ps_si->nl ();
  *ps_si << "return 0; // not equivalent";

  ps_si->decr_indent (0);
  ps_si->nl ();
  *ps_si << "}";

  ps_si->decr_indent (0);
  ps_si->nl ();
  ps_si->nl ();

  *ps_si << "TAO_InputCDR stream (";
  ps_si->incr_indent (0);
  ps_si->incr_indent (0);
  ps_si->nl ();

  *ps_si << "_tao_any._tao_get_cdr (),";
  ps_si->nl ();
  *ps_si << "_tao_any._tao_byte_order ()";
  ps_si->decr_indent (0);
  ps_si->nl ();
  *ps_si << ");";

  ps_si->decr_indent (0);
  ps_si->nl ();
  ps_si->nl ();

  *ps_si << "if (stream >> _tao_elem)";
  ps_si->incr_indent (0);
  ps_si->nl ();

  *ps_si << "{";
  ps_si->incr_indent (0);
  ps_si->nl ();

  *ps_si << "((CORBA::Any *)&_tao_any)->_tao_replace (";
  ps_si->incr_indent (0);
  ps_si->incr_indent (0);
  ps_si->nl ();

  *ps_si << "_tc_" << this->interface_name_ << ",";   ps_si->nl ();
  *ps_si << "1,";   ps_si->nl ();
  *ps_si << "_tao_elem,";   ps_si->nl ();
  *ps_si << this->interface_name_ << "::_tao_any_destructor";

  ps_si->decr_indent (0);
  ps_si->nl ();
  *ps_si << ");";

  ps_si->decr_indent (0);
  ps_si->nl ();
  ps_si->nl ();
  *ps_si << "return 1;";

  ps_si->decr_indent (0);
  ps_si->nl ();
  *ps_si << "}";

  ps_si->decr_indent (0);
  ps_si->decr_indent (0);
  ps_si->nl ();
  *ps_si << "}";
  ps_si->nl ();

  *ps_si << "ACE_CATCHANY";
  ps_si->incr_indent (0);
  ps_si->nl ();
  *ps_si << "{";   ps_si->nl ();
  *ps_si << "}";
  ps_si->decr_indent (0);
  ps_si->nl ();
  *ps_si << "ACE_ENDTRY;";

  ps_si->nl ();
  ps_si->nl ();

  *ps_si << "_tao_elem = " << this->interface_name_ << "::_nil ();";
  ps_si->nl ();
  *ps_si << "return 0;";

  ps_si->decr_indent (0);
  ps_si->nl ();
  *ps_si << "}";

  ps_si->nl ();
  ps_si->nl ();

  *ps_si << "#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION)  || \\";
  ps_si->incr_indent (0);
  ps_si->incr_indent (0);
  ps_si->nl ();
  *ps_si << "defined (ACE_HAS_GNU_REPO)";
  ps_si->decr_indent (0);
  ps_si->nl ();

  *ps_si << "template class TAO_Object_Manager<"
         << this->interface_name_ << ","
         << this->interface_name_ << "_var>;";

  ps_si->decr_indent (0);
  ps_si->nl ();

  *ps_si << "#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)";
  ps_si->nl ();

  *ps_si << "#  pragma instantiate TAO_Object_Manager<"
         << this->interface_name_ << "," << this->interface_name_
         << "_var>";   ps_si->nl ();
  *ps_si << "#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */";

  ps_si->nl ();
  ps_si->nl ();

  *ps_si << "CORBA::Boolean operator<< (";

  ps_si->incr_indent (0);
  ps_si->incr_indent (0);
  ps_si->nl ();

  *ps_si << "TAO_OutputCDR &strm,";   ps_si->nl ();
  *ps_si << "const " << this->interface_name_ << "_ptr _tao_objref";

  ps_si->decr_indent (0);
  ps_si->nl ();
  *ps_si << ")";
  ps_si->decr_indent (0);
  ps_si->nl ();

  *ps_si << "{";
  ps_si->incr_indent (0);
  ps_si->nl ();

  *ps_si << "CORBA::Object_ptr _tao_corba_obj = _tao_objref;";   ps_si->nl ();
  *ps_si << "return (strm << _tao_corba_obj);";

  ps_si->decr_indent (0);
  ps_si->nl ();
  *ps_si << "}";

  ps_si->nl ();
  ps_si->nl ();

  *ps_si << "CORBA::Boolean operator>> (";
  ps_si->incr_indent (0);
  ps_si->incr_indent (0);
  ps_si->nl ();

  *ps_si << "TAO_InputCDR &strm,";   ps_si->nl ();
  *ps_si << this->interface_name_ << "_ptr &_tao_objref";

  ps_si->decr_indent (0);
  ps_si->nl ();
  *ps_si << ")";

  ps_si->decr_indent (0);
  ps_si->nl ();

  *ps_si << "{";
  ps_si->incr_indent (0);
  ps_si->nl ();

  *ps_si << "ACE_TRY_NEW_ENV";   ps_si->nl ();
  *ps_si << "{";
  ps_si->incr_indent (0);
  ps_si->nl ();

  *ps_si << "CORBA::Object_var obj;";   ps_si->nl ();
  *ps_si << "if ((strm >> obj.inout ()) == 0)";

  ps_si->incr_indent (0);
  ps_si->nl ();
  *ps_si << "return 0;";
  ps_si->decr_indent (0);
  ps_si->nl ();

  *ps_si << "// narrow to the right type";   ps_si->nl ();
  *ps_si << "_tao_objref =";
  ps_si->incr_indent (0);
  ps_si->nl ();
  *ps_si << this->interface_name_ << "::_unchecked_narrow (";

  ps_si->incr_indent (0);
  ps_si->incr_indent (0);
  ps_si->nl ();

  *ps_si << "obj.in ()";   ps_si->nl ();
  *ps_si << "ACE_ENV_ARG_PARAMETER";

  ps_si->decr_indent (0);
  ps_si->nl ();

  *ps_si << ");";

  ps_si->decr_indent (0);
  ps_si->decr_indent (0);
  ps_si->nl ();

  *ps_si << "ACE_TRY_CHECK;";   ps_si->nl ();
  *ps_si << "return 1;";

  ps_si->decr_indent (0);
  ps_si->nl ();
  *ps_si << "}";

  ps_si->nl ();
  *ps_si << "ACE_CATCHANY";   ps_si->nl ();
  *ps_si << "{";

  ps_si->incr_indent (0);
  ps_si->nl ();
  *ps_si << "// do nothing";

  ps_si->decr_indent (0);ps_si->nl ();
  *ps_si << "}";

  ps_si->nl ();
  *ps_si << "ACE_ENDTRY;";   ps_si->nl ();
  *ps_si << "return 0;";

  ps_si->decr_indent (0);
  ps_si->nl ();

  *ps_si << "}";

  ps_si->nl ();
  ps_si->nl ();

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -