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

📄 template.py

📁 编译工具
💻 PY
字号:
# -*- python -*-#                           Package   : omniidl# template.py               Created on: 2000/02/13#			    Author    : David Scott (djs)##    Copyright (C) 1999 AT&T Laboratories Cambridge##  This file is part of omniidl.##  omniidl is free software; you can redistribute it and/or modify it#  under the terms of the GNU General Public License as published by#  the Free Software Foundation; either version 2 of the License, or#  (at your option) any later version.##  This program is distributed in the hope that it will be useful,#  but WITHOUT ANY WARRANTY; without even the implied warranty of#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU#  General Public License for more details.##  You should have received a copy of the GNU General Public License#  along with this program; if not, write to the Free Software#  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA#  02111-1307, USA.## Description:#   #   Example interface implementation templates# $Id: template.py,v 1.3.2.4 2005/01/04 14:44:23 dgrisby Exp $# $Log: template.py,v $# Revision 1.3.2.4  2005/01/04 14:44:23  dgrisby# Use standard streams in example code. (Both thanks Stefan Naewe.)## Revision 1.3.2.3  2002/10/20 20:17:11  dgrisby# Fix reference to omniORB 3.## Revision 1.3.2.2  2000/10/12 15:37:52  sll# Updated from omni3_1_develop.## Revision 1.4  2000/07/13 15:25:59  dpg1# Merge from omni3_develop for 3.0 release.## Revision 1.1.2.2  2000/05/16 11:16:01  djs# Updated to simplify memory management, correct errors in function prototypes,# add missing attribute functions and generate #warnings which the user should# remove when they fill in the gaps in the output.## Revision 1.1.2.1  2000/02/18 23:01:25  djs# Updated example implementation code generating module## Revision 1.1  2000/02/13 15:54:15  djs# Beginnings of code to generate example interface implementations### Example code to actually implement an interface##interface_def = """\//// Example class implementing IDL interface @fq_name@//class @impl_fqname@: public @fq_POA_name@,                public PortableServer::RefCountServantBase {private:  // Make sure all instances are built on the heap by making the  // destructor non-public  //virtual ~@impl_name@();public:  // standard constructor  @impl_name@();  virtual ~@impl_name@();  // methods corresponding to defined IDL attributes and operations  @operations@};"""interface_code = """\//// Example implementational code for IDL interface @fqname@//@impl_fqname@::@impl_name@(){  // add extra constructor code here}@impl_fqname@::~@impl_name@(){  // add extra destructor code here}//   Methods corresponding to IDL attributes and operations@operations@// End of example implementational code"""interface_ior = """\{  // IDL interface: @fqname@  CORBA::Object_var ref = @inst_name@->_this();  CORBA::String_var sior(orb->object_to_string(ref));  std::cout << "IDL object @fqname@ IOR = '" << (char*)sior << "'" << std::endl;}"""main = """\//// Example code for implementing IDL interfaces in file @file@//#include <iostream>#include <@idl_hh@>@interfaces@int main(int argc, char** argv){  try {    // Initialise the ORB.    CORBA::ORB_var orb = CORBA::ORB_init(argc, argv);    // Obtain a reference to the root POA.    CORBA::Object_var obj = orb->resolve_initial_references("RootPOA");    PortableServer::POA_var poa = PortableServer::POA::_narrow(obj);    // We allocate the objects on the heap.  Since these are reference    // counted objects, they will be deleted by the POA when they are no    // longer needed.    @allocate_objects@    // Activate the objects.  This tells the POA that the objects are    // ready to accept requests.    @activate_objects@    // Obtain a reference to each object and output the stringified    // IOR to stdout    @output_references@    // Obtain a POAManager, and tell the POA to start accepting    // requests on its objects.    PortableServer::POAManager_var pman = poa->the_POAManager();    pman->activate();    orb->run();    orb->destroy();  }  catch(CORBA::SystemException&) {    std::cerr << "Caught CORBA::SystemException." << std::endl;  }  catch(CORBA::Exception&) {    std::cerr << "Caught CORBA::Exception." << std::endl;  }  catch(omniORB::fatalException& fe) {    std::cerr << "Caught omniORB::fatalException:" << std::endl;    std::cerr << "  file: " << fe.file() << std::endl;    std::cerr << "  line: " << fe.line() << std::endl;    std::cerr << "  mesg: " << fe.errmsg() << std::endl;  }  catch(...) {    std::cerr << "Caught unknown exception." << std::endl;  }  return 0;}"""

⌨️ 快捷键说明

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