[Fwd: Re: [omniORB] IDL question]]
Shen Chun
shen.chun@ericsson.com
Tue, 06 Mar 2001 02:51:15 -0600
This is a multi-part message in MIME format.
--------------E5E65D5AC4E768CB9DEC6F3D
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Hi, David:
Thank you for the answer. That is the problem I have now.
If there is no module scoping inside the echo IDL, the IDL compiler
will generate the POA_echo and everthing is OK. I have made this working
OK. We also figure out the context info of the messages exchanged over
the wire.
If I use the module scoping in the IDL(this is a good pratice,as I
won't pollute the CORBA name space), the IDL compiler won't generate
the POA_echo class. Instead, we have the Echo_demo and the
POA_Echo_demo modules.
If inherited this way:class Echo :
class Echo_i : public POA_Echo_demo::Echo,
public PortableServer::RefCountServantBase
It seems that all the member functions inside _impl_Echo inside module:
Echo_demo is not visible inside POA_Echo_demo, even the Echo
is inherited inside POA_Echo_demo:
class Echo :
public virtual Echo_demo::_impl_Echo,
public virtual PortableServer::ServantBase
Please check the make logfile. I have no idea if this
is a c++ programming problem or omniorb generated class problem.
Really appreciated your response!
BR/shen chun
-------- Original Message --------
Subject: Re: [omniORB] IDL question]
Date: Wed, 28 Feb 2001 10:08:46 +0000 (GMT)
From: David Riddoch <djr@uk.research.att.com>
To: Shen Chun <shen.chun@ericsson.com>
CC: omniorb-list@uk.research.att.com
On Wed, 28 Feb 2001, Shen Chun wrote:
> I am writing a IDL/C++ program to generate some simple
> Corba traffic. Please check the attached IDL file, server file
> and omniorb generated header file.
> In the eg3_impl.cc:
> class Echo_i : public _impl_Echo,
> public PortableServer::RefCountServantBase
Why are you deriving from _impl_Echo? It is an omniorb internal class,
which you should never attempt to use.
Try:
class Echo_i : public POA_Echo,
public PortableServer::RefCountServantBase
Cheers,
David
--------------E5E65D5AC4E768CB9DEC6F3D
Content-Type: text/plain; charset=us-ascii;
name="make.log"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="make.log"
cd ../../../stub
make[1]: Entering directory `/home/euschun/omni/stub'
make[1]: `echoSK.o' is up to date.
make[1]: Leaving directory `/home/euschun/omni/stub'
/usr/bin/g++ -c -O2 -Wall -Wno-unused -D__OMNIORB3__ -I../../../stub -D_REENTRANT -I. -I../../../include -D__x86__ -D__linux__ -D__OSVERSION__=2 -o eg3_impl.o eg3_impl.cc
eg3_impl.cc:39: parse error before `)'
eg3_impl.cc:40: parse error before `)'
eg3_impl.cc:41: parse error before `)'
eg3_impl.cc:76: parse error before `)'
eg3_impl.cc:79: parse error before `)'
eg3_impl.cc:82: parse error before `)'
eg3_impl.cc:105: parse error before `)'
eg3_impl.cc:106: parse error before `)'
eg3_impl.cc:107: parse error before `)'
eg3_impl.cc:92: parse error before `;'
eg3_impl.cc:113: cannot declare member function
`Echo_i::Echo_i_cloned::echoLong' within `Echo_i'
eg3_impl.cc:113: syntax error before `{'
eg3_impl.cc:116: cannot declare member function
`Echo_i::Echo_i_cloned::echoUShort' within `Echo_i'
eg3_impl.cc:116: syntax error before `{'
eg3_impl.cc:119: cannot declare member function
`Echo_i::Echo_i_cloned::echoULong' within `Echo_i'
eg3_impl.cc:119: syntax error before `{'
eg3_impl.cc:122: cannot declare member function
`Echo_i::Echo_i_cloned::echoFloat' within `Echo_i'
eg3_impl.cc:122: syntax error before `{'
eg3_impl.cc:125: cannot declare member function
`Echo_i::Echo_i_cloned::echoDouble' within `Echo_i'
eg3_impl.cc:125: syntax error before `{'
eg3_impl.cc:128: cannot declare member function
`Echo_i::Echo_i_cloned::echoChar' within `Echo_i'
eg3_impl.cc:128: syntax error before `{'
eg3_impl.cc:131: cannot declare member function
`Echo_i::Echo_i_cloned::echoBoolean' within `Echo_i'
eg3_impl.cc:131: syntax error before `{'
eg3_impl.cc:134: cannot declare member function
`Echo_i::Echo_i_cloned::echoString' within `Echo_i'
eg3_impl.cc:134: syntax error before `{'
eg3_impl.cc:138: cannot declare member function
`Echo_i::Echo_i_cloned::echoOctet' within `Echo_i'
eg3_impl.cc:138: syntax error before `{'
eg3_impl.cc:142: parse error before `)'
eg3_impl.cc:145: parse error before `)'
eg3_impl.cc:148: parse error before `)'
eg3_impl.cc: In function `int main (int, char **)':
eg3_impl.cc:160: cannot allocate an object of type `Echo_i'
eg3_impl.cc:160: since the following virtual functions are abstract:
../../../stub/echo.hh:303: void Echo_demo::_impl_Echo::echo_ex1 ()
../../../stub/echo.hh:304: void Echo_demo::_impl_Echo::echo_ex2 ()
../../../stub/echo.hh:305: void Echo_demo::_impl_Echo::echo_ex3 ()
eg3_impl.cc:161: cannot allocate an object of type
`Echo_i::Echo_i_cloned'
eg3_impl.cc:161: since the following virtual functions are abstract:
../../../stub/echo.hh:567: void Echo_demo::_impl_Echo_cloned::echo_ex1
()
../../../stub/echo.hh:568: void Echo_demo::_impl_Echo_cloned::echo_ex2
()
../../../stub/echo.hh:569: void Echo_demo::_impl_Echo_cloned::echo_ex3
()
eg3_impl.cc:155: Internal compiler error in expand_expr, at expr.c:5992
Please submit a full bug report.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.
make: *** [eg3_impl.o] Error 1
--------------E5E65D5AC4E768CB9DEC6F3D
Content-Type: text/plain; charset=us-ascii;
name="eg3_impl.cc"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="eg3_impl.cc"
// eg2_impl.cc - This is the source code of example 3 used in Chapter 2
// "The Basics" of the omniORB user guide.
// We extend the echo of all(?) the basic types in order to
// check out the transfer syntax of all of them
// for ethereal decoding(www.ethereal.com)
// This is the object implementation.
//
// Usage: eg3_impl
//
//
#include <time.h>
#include <iostream.h>
#include <echo.hh>
using namespace Echo_demo;
using namespace POA_Echo_demo;
static CORBA::Boolean bindObjectToName(CORBA::ORB_ptr orb, CORBA::Object_ptr objref, const char* contextid, const char* contextkind, const char* objectid, const char* objectkind);
// all the basic types (supported)
//class Echo_i : public POA_Echo,
class Echo_i : public POA_Echo_demo::Echo,
public PortableServer::RefCountServantBase
{
public:
inline Echo_i() {}
virtual ~Echo_i() {}
virtual CORBA::Short echoShort(CORBA::Short basic_short);
virtual CORBA::Long echoLong(CORBA::Long basic_long);
virtual CORBA::UShort echoUShort(CORBA::UShort basic_unsignedshort);
virtual CORBA::ULong echoULong(CORBA::ULong basic_unsignedlong);
virtual CORBA::Float echoFloat(CORBA::Float basic_long);
virtual CORBA::Double echoDouble(CORBA::Double basic_double);
virtual CORBA::Boolean echoBoolean(CORBA::Boolean basic_boolean);
virtual CORBA::Char echoChar(CORBA::Char basic_char);
virtual CORBA::Octet echoOctet(CORBA::Octet basic_octet);
virtual char* echoString(const char* mesg);
void echo_ex1() throw(Echo::ex1);
void echo_ex2() throw(Echo::ex2);
void echo_ex3() throw(Echo::ex3);
};
CORBA::Short Echo_i::echoShort(CORBA::Short basic_short) {
return basic_short;
}
CORBA::Long Echo_i::echoLong(CORBA::Long basic_long){
return basic_long;
}
CORBA::UShort Echo_i::echoUShort(CORBA::UShort basic_unsignedshort){
return basic_unsignedshort;
}
CORBA::ULong Echo_i::echoULong(CORBA::ULong basic_unsignedlong){
return basic_unsignedlong;
}
CORBA::Float Echo_i::echoFloat(CORBA::Float basic_float){
return basic_float;
}
CORBA::Double Echo_i::echoDouble(CORBA::Double basic_double) {
return basic_double;
}
CORBA::Char Echo_i::echoChar(CORBA::Char basic_char){
return basic_char;
}
CORBA::Boolean Echo_i::echoBoolean(CORBA::Boolean basic_boolean){
return basic_boolean;
}
char* Echo_i::echoString(const char* mesg){
return CORBA::string_dup(mesg);
}
CORBA::Octet Echo_i::echoOctet(CORBA::Octet basic_Octet) {
return basic_Octet;
}
void Echo_i::echo_ex1() throw (Echo::ex1) {
throw Echo::ex1("String excetpion for ex1");
}
void Echo_i::echo_ex2() throw (Echo::ex2) {
throw Echo::ex2();
}
void Echo_i::echo_ex3() throw (Echo::ex3) {
throw Echo::ex3('a',34,6552);
}
// This is cloned from the first with the different interface name in IDL
//class Echo_i_cloned : public POA_Echo_cloned,
class Echo_i_cloned : public POA_Echo_demo::Echo_cloned,
public PortableServer::RefCountServantBase
{
public:
inline Echo_i_cloned() {}
virtual ~Echo_i_cloned() {}
virtual CORBA::Short echoShort(CORBA::Short basic_short);
virtual CORBA::Long echoLong(CORBA::Long basic_long);
virtual CORBA::UShort echoUShort(CORBA::UShort basic_unsignedshort);
virtual CORBA::ULong echoULong(CORBA::ULong basic_unsignedlong);
virtual CORBA::Float echoFloat(CORBA::Float basic_long);
virtual CORBA::Double echoDouble(CORBA::Double basic_double);
virtual CORBA::Boolean echoBoolean(CORBA::Boolean basic_boolean);
virtual CORBA::Char echoChar(CORBA::Char basic_char);
virtual CORBA::Octet echoOctet(CORBA::Octet basic_octet);
virtual char* echoString(const char* mesg);
void echo_ex1() throw(Echo_cloned::ex1);
void echo_ex2() throw(Echo_cloned::ex2);
void echo_ex3() throw(Echo_cloned::ex3);
};
CORBA::Short Echo_i_cloned::echoShort(CORBA::Short basic_short) {
return basic_short;
}
CORBA::Long Echo_i_cloned::echoLong(CORBA::Long basic_long) {
return basic_long;
}
CORBA::UShort Echo_i_cloned::echoUShort(CORBA::UShort basic_unsignedshort) {
return basic_unsignedshort;
}
CORBA::ULong Echo_i_cloned::echoULong(CORBA::ULong basic_unsignedlong) {
return basic_unsignedlong;
}
CORBA::Float Echo_i_cloned::echoFloat(CORBA::Float basic_float){
return basic_float;
}
CORBA::Double Echo_i_cloned::echoDouble(CORBA::Double basic_double) {
return basic_double;
}
CORBA::Char Echo_i_cloned::echoChar(CORBA::Char basic_char){
return basic_char;
}
CORBA::Boolean Echo_i_cloned::echoBoolean(CORBA::Boolean basic_boolean){
return basic_boolean;
}
char* Echo_i_cloned::echoString(const char* mesg){
return CORBA::string_dup(mesg);
}
CORBA::Octet Echo_i_cloned::echoOctet(CORBA::Octet basic_Octet) {
return basic_Octet;
}
void Echo_i_cloned::echo_ex1() throw (Echo_cloned::ex1) {
throw Echo_cloned::ex1("String excetpion for ex1");
}
void Echo_i_cloned::echo_ex2() throw (Echo_cloned::ex2) {
throw Echo_cloned::ex2();
}
void Echo_i_cloned::echo_ex3() throw (Echo_cloned::ex3) {
throw Echo_cloned::ex3('a',34,6552);
}
//////////////////////////////////////////////////////////////////////////
int main(int argc, char** argv) {
try {
CORBA::ORB_var orb = CORBA::ORB_init(argc, argv, "omniORB3");
CORBA::Object_var obj = orb->resolve_initial_references("RootPOA");
PortableServer::POA_var poa = PortableServer::POA::_narrow(obj);
Echo_i* myecho = new Echo_i();
Echo_i_cloned* myechocloned = new Echo_i_cloned();
PortableServer::ObjectId_var myechoid = poa->activate_object(myecho);
PortableServer::ObjectId_var myechoidcloned = poa->activate_object(myechocloned);
// Obtain a reference to the object, and register it in
// the naming service
obj = myecho->_this();
if(!bindObjectToName(orb, obj,"test1","my_context","Echo","Object"))
return 1;
obj = myechocloned->_this();
if(!bindObjectToName(orb, obj,"test2","my_context","Echo_cloned","Object"))
return 1;
myecho->_remove_ref();
myechocloned->_remove_ref();
PortableServer::POAManager_var pman = poa->the_POAManager();
pman->activate();
orb->run();
orb->destroy();
}
catch(CORBA::SystemException&) {
cerr << "Caught CORBA::SystemException." << endl;
}
catch(CORBA::Exception&) {
cerr << "Caught CORBA::Exception." << endl;
}
catch(omniORB::fatalException& fe) {
cerr << "Caught omniORB::fatalException:" << endl;
cerr << " file: " << fe.file() << endl;
cerr << " line: " << fe.line() << endl;
cerr << " mesg: " << fe.errmsg() << endl;
}
catch(...) {
cerr << "Caught unknown exception." << endl;
}
return 0;
}
/////////////////////////////////////////////////////////////////////////////////
static CORBA::Boolean
bindObjectToName(CORBA::ORB_ptr orb, CORBA::Object_ptr objref, const char* contextid, const char* contextkind, const char* objectid, const char* objectkind)
{
CosNaming::NamingContext_var rootContext;
try {
// Obtain a reference to the root context of the Name service:
CORBA::Object_var obj;
obj = orb->resolve_initial_references("NameService");
// Narrow the reference returned.
rootContext = CosNaming::NamingContext::_narrow(obj);
if( CORBA::is_nil(rootContext) ) {
cerr << "Failed to narrow the root naming context." << endl;
return 0;
}
}
catch(CORBA::ORB::InvalidName& ex) {
// This should not happen!
cerr << "Service required is invalid [does not exist]." << endl;
return 0;
}
try {
// Bind a context called "test" to the root context:
CosNaming::Name contextName;
contextName.length(1);
contextName[0].id=CORBA::string_dup(contextid);
contextName[0].kind=CORBA::string_dup(contextkind);
//contextName[0].id = (const char*) "test"; // string copied
//contextName[0].kind = (const char*) "my_context"; // string copied
// Note on kind: The kind field is used to indicate the type
// of the object. This is to avoid conventions such as that used
// by files (name.type -- e.g. test.ps = postscript etc.)
CosNaming::NamingContext_var testContext;
try {
// Bind the context to root.
testContext = rootContext->bind_new_context(contextName);
}
catch(CosNaming::NamingContext::AlreadyBound& ex) {
// If the context already exists, this exception will be raised.
// In this case, just resolve the name and assign testContext
// to the object returned:
CORBA::Object_var obj;
obj = rootContext->resolve(contextName);
testContext = CosNaming::NamingContext::_narrow(obj);
if( CORBA::is_nil(testContext) ) {
cerr << "Failed to narrow naming context." << endl;
return 0;
}
}
// Bind objref with name Echo to the testContext:
CosNaming::Name objectName;
objectName.length(1);
objectName[0].id=CORBA::string_dup(objectid);
objectName[0].kind=CORBA::string_dup(objectkind);
//objectName[0].id = (const char*) "Echo"; // string copied
//objectName[0].kind = (const char*) "Object"; // string copied
try {
testContext->bind(objectName, objref);
}
catch(CosNaming::NamingContext::AlreadyBound& ex) {
testContext->rebind(objectName, objref);
}
// Note: Using rebind() will overwrite any Object previously bound
// to /test/Echo with obj.
// Alternatively, bind() can be used, which will raise a
// CosNaming::NamingContext::AlreadyBound exception if the name
// supplied is already bound to an object.
// Amendment: When using OrbixNames, it is necessary to first try bind
// and then rebind, as rebind on it's own will throw a NotFoundexception if
// the Name has not already been bound. [This is incorrect behaviour -
// it should just bind].
}
catch(CORBA::COMM_FAILURE& ex) {
cerr << "Caught system exception COMM_FAILURE -- unable to contact the "
<< "naming service." << endl;
return 0;
}
catch(CORBA::SystemException&) {
cerr << "Caught a CORBA::SystemException while using the naming service."
<< endl;
return 0;
}
return 1;
}
--------------E5E65D5AC4E768CB9DEC6F3D
Content-Type: text/plain; charset=us-ascii;
name="echo.idl"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="echo.idl"
//#ifndef __ECHO_IDL__
//#define __ECHO_IDL__
#pragma prefix "ericsson.com"
module Echo_demo {
interface Echo {
// echo of simple types
short echoShort(in short basic_short);
long echoLong(in long basic_long);
unsigned short echoUShort(in unsigned short basic_UShort);
unsigned long echoULong(in unsigned long basic_ULong);
float echoFloat(in float basic_Float);
double echoDouble(in double basic_Double);
boolean echoBoolean(in boolean basic_boolean);
char echoChar(in char basic_Char);
octet echoOctet(in octet basic_Octet);
string echoString(in string mesg);
// user defined types
// enum Color { red, green, blue, black, mauve, orange};
// Color echoEnum(in Color col);
// Exception echo example
exception ex1{
string msg;
};
void echo_ex1() raises(ex1);
exception ex2{
};
void echo_ex2() raises(ex2);
exception ex3{
char identifier;
short basic_short;
long basic_long;
};
void echo_ex3() raises(ex3);
// !! not supported by omniORB at the moment
// wchar echoWchar(in wchar basic_wchar);
// wstring echoWstring(in wstring mesg);
};
interface Echo_cloned {
// echo of simple types
short echoShort(in short basic_short);
long echoLong(in long basic_long);
unsigned short echoUShort(in unsigned short basic_UShort);
unsigned long echoULong(in unsigned long basic_ULong);
float echoFloat(in float basic_Float);
double echoDouble(in double basic_Double);
boolean echoBoolean(in boolean basic_boolean);
char echoChar(in char basic_Char);
octet echoOctet(in octet basic_Octet);
string echoString(in string mesg);
// user defined types
// enum Color { red, green, blue, black, mauve, orange};
// Color echoEnum(in Color col);
// Exception echo example
exception ex1{
string msg;
};
void echo_ex1() raises(ex1);
exception ex2{
};
void echo_ex2() raises(ex2);
exception ex3{
char identifier;
short basic_short;
long basic_long;
};
void echo_ex3() raises(ex3);
// !! not supported by omniORB at the moment
// wchar echoWchar(in wchar basic_wchar);
// wstring echoWstring(in wstring mesg);
};
};
//#endif
--------------E5E65D5AC4E768CB9DEC6F3D
Content-Type: text/plain; charset=us-ascii;
name="echo.hh"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="echo.hh"
// This file is generated by omniidl (C++ backend)- omniORB_3_0. Do not edit.
#ifndef __echo_hh__
#define __echo_hh__
#ifndef USE_omniORB_logStream
#define USE_omniORB_logStream
#endif
#ifndef __CORBA_H_EXTERNAL_GUARD__
#include <omniORB3/CORBA.h>
#endif
#ifndef USE_core_stub_in_nt_dll
# define USE_core_stub_in_nt_dll_NOT_DEFINED_echo
#endif
#ifndef USE_dyn_stub_in_nt_dll
# define USE_dyn_stub_in_nt_dll_NOT_DEFINED_echo
#endif
#ifdef USE_stub_in_nt_dll
#ifndef USE_core_stub_in_nt_dll
#define USE_core_stub_in_nt_dll
#endif
#ifndef USE_dyn_stub_in_nt_dll
#define USE_dyn_stub_in_nt_dll
#endif
#endif
#ifdef _core_attr
# error "A local CPP macro _core_attr has already been defined."
#else
# ifdef USE_core_stub_in_nt_dll
# define _core_attr _OMNIORB_NTDLL_IMPORT
# else
# define _core_attr
# endif
#endif
#ifdef _dyn_attr
# error "A local CPP macro _dyn_attr has already been defined."
#else
# ifdef USE_dyn_stub_in_nt_dll
# define _dyn_attr _OMNIORB_NTDLL_IMPORT
# else
# define _dyn_attr
# endif
#endif
_CORBA_MODULE Echo_demo
_CORBA_MODULE_BEG
#ifndef __Echo__demo_mEcho__
#define __Echo__demo_mEcho__
class Echo;
class _objref_Echo;
class _impl_Echo;
typedef _objref_Echo* Echo_ptr;
typedef Echo_ptr EchoRef;
class Echo_Helper {
public:
typedef Echo_ptr _ptr_type;
static _ptr_type _nil();
static _CORBA_Boolean is_nil(_ptr_type);
static void release(_ptr_type);
static void duplicate(_ptr_type);
static size_t NP_alignedSize(_ptr_type, size_t);
static void marshalObjRef(_ptr_type, NetBufferedStream&);
static _ptr_type unmarshalObjRef(NetBufferedStream&);
static void marshalObjRef(_ptr_type, MemBufferedStream&);
static _ptr_type unmarshalObjRef(MemBufferedStream&);
};
typedef _CORBA_ObjRef_Var<_objref_Echo, Echo_Helper> Echo_var;
typedef _CORBA_ObjRef_OUT_arg<_objref_Echo,Echo_Helper > Echo_out;
#endif
class Echo {
public:
// Declarations for this interface type.
typedef Echo_ptr _ptr_type;
typedef Echo_var _var_type;
static _ptr_type _duplicate(_ptr_type);
static _ptr_type _narrow(CORBA::Object_ptr);
static _ptr_type _nil();
static inline size_t _alignedSize(_ptr_type, size_t);
static inline void _marshalObjRef(_ptr_type, NetBufferedStream&);
static inline void _marshalObjRef(_ptr_type, MemBufferedStream&);
static inline _ptr_type _unmarshalObjRef(NetBufferedStream& s) {
CORBA::Object_ptr obj = CORBA::UnMarshalObjRef(_PD_repoId, s);
_ptr_type result = _narrow(obj);
CORBA::release(obj);
return result;
}
static inline _ptr_type _unmarshalObjRef(MemBufferedStream& s) {
CORBA::Object_ptr obj = CORBA::UnMarshalObjRef(_PD_repoId, s);
_ptr_type result = _narrow(obj);
CORBA::release(obj);
return result;
}
static _core_attr const char* _PD_repoId;
// Other IDL defined within this scope.
class ex1 : public CORBA::UserException {
public:
CORBA::String_member msg;
inline ex1() {
pd_insertToAnyFn = insertToAnyFn;
pd_insertToAnyFnNCP = insertToAnyFnNCP;
}
ex1(const ex1&);
ex1(const char* i_msg);
ex1& operator=(const ex1&);
virtual ~ex1();
virtual void _raise();
static ex1* _downcast(CORBA::Exception*);
static const ex1* _downcast(const CORBA::Exception*);
static inline ex1* _narrow(CORBA::Exception* _e) {
return _downcast(_e);
}
size_t _NP_alignedSize(size_t) const;
void operator>>=(NetBufferedStream&) const ;
void operator>>=(MemBufferedStream&) const ;
void operator<<=(NetBufferedStream&) ;
void operator<<=(MemBufferedStream&) ;
static _core_attr insertExceptionToAny insertToAnyFn;
static _core_attr insertExceptionToAnyNCP insertToAnyFnNCP;
virtual CORBA::Exception* _NP_duplicate() const;
static _core_attr const char* _PD_repoId;
private:
virtual const char* _NP_typeId() const;
virtual const char* _NP_repoId(int*) const;
virtual void _NP_marshal(NetBufferedStream&) const;
virtual void _NP_marshal(MemBufferedStream&) const;
};
static _dyn_attr const CORBA::TypeCode_ptr _tc_ex1;
class ex2 : public CORBA::UserException {
public:
inline ex2() {
pd_insertToAnyFn = insertToAnyFn;
pd_insertToAnyFnNCP = insertToAnyFnNCP;
}
ex2(const ex2&);
ex2& operator=(const ex2&);
virtual ~ex2();
virtual void _raise();
static ex2* _downcast(CORBA::Exception*);
static const ex2* _downcast(const CORBA::Exception*);
static inline ex2* _narrow(CORBA::Exception* _e) {
return _downcast(_e);
}
inline void operator>>=(NetBufferedStream&) const { }
inline void operator>>=(MemBufferedStream&) const { }
inline void operator<<=(NetBufferedStream&) { }
inline void operator<<=(MemBufferedStream&) { }
static _core_attr insertExceptionToAny insertToAnyFn;
static _core_attr insertExceptionToAnyNCP insertToAnyFnNCP;
virtual CORBA::Exception* _NP_duplicate() const;
static _core_attr const char* _PD_repoId;
private:
virtual const char* _NP_typeId() const;
virtual const char* _NP_repoId(int*) const;
virtual void _NP_marshal(NetBufferedStream&) const;
virtual void _NP_marshal(MemBufferedStream&) const;
};
static _dyn_attr const CORBA::TypeCode_ptr _tc_ex2;
class ex3 : public CORBA::UserException {
public:
CORBA::Char identifier;
CORBA::Short basic_short;
CORBA::Long basic_long;
inline ex3() {
pd_insertToAnyFn = insertToAnyFn;
pd_insertToAnyFnNCP = insertToAnyFnNCP;
}
ex3(const ex3&);
ex3(CORBA::Char i_identifier, CORBA::Short i_basic_short, CORBA::Long i_basic_long);
ex3& operator=(const ex3&);
virtual ~ex3();
virtual void _raise();
static ex3* _downcast(CORBA::Exception*);
static const ex3* _downcast(const CORBA::Exception*);
static inline ex3* _narrow(CORBA::Exception* _e) {
return _downcast(_e);
}
size_t _NP_alignedSize(size_t) const;
void operator>>=(NetBufferedStream&) const ;
void operator>>=(MemBufferedStream&) const ;
void operator<<=(NetBufferedStream&) ;
void operator<<=(MemBufferedStream&) ;
static _core_attr insertExceptionToAny insertToAnyFn;
static _core_attr insertExceptionToAnyNCP insertToAnyFnNCP;
virtual CORBA::Exception* _NP_duplicate() const;
static _core_attr const char* _PD_repoId;
private:
virtual const char* _NP_typeId() const;
virtual const char* _NP_repoId(int*) const;
virtual void _NP_marshal(NetBufferedStream&) const;
virtual void _NP_marshal(MemBufferedStream&) const;
};
static _dyn_attr const CORBA::TypeCode_ptr _tc_ex3;
};
class _objref_Echo :
public virtual CORBA::Object, public virtual omniObjRef
{
public:
CORBA::Short echoShort(CORBA::Short basic_short);
CORBA::Long echoLong(CORBA::Long basic_long);
CORBA::UShort echoUShort(CORBA::UShort basic_UShort);
CORBA::ULong echoULong(CORBA::ULong basic_ULong);
CORBA::Float echoFloat(CORBA::Float basic_Float);
CORBA::Double echoDouble(CORBA::Double basic_Double);
CORBA::Boolean echoBoolean(CORBA::Boolean basic_boolean);
CORBA::Char echoChar(CORBA::Char basic_Char);
CORBA::Octet echoOctet(CORBA::Octet basic_Octet);
char* echoString(const char* mesg);
void echo_ex1();
void echo_ex2();
void echo_ex3();
inline _objref_Echo() { _PR_setobj(0); } // nil
_objref_Echo(const char*, IOP::TaggedProfileList*, omniIdentity*, omniLocalIdentity*);
protected:
virtual ~_objref_Echo();
private:
virtual void* _ptrToObjRef(const char*);
_objref_Echo(const _objref_Echo&);
_objref_Echo& operator = (const _objref_Echo&);
// not implemented
};
class _pof_Echo : public proxyObjectFactory {
public:
inline _pof_Echo() : proxyObjectFactory(Echo::_PD_repoId) {}
virtual ~_pof_Echo();
virtual omniObjRef* newObjRef(const char*, IOP::TaggedProfileList*,
omniIdentity*, omniLocalIdentity*);
virtual _CORBA_Boolean is_a(const char*) const;
};
class _impl_Echo :
public virtual omniServant
{
public:
virtual ~_impl_Echo();
virtual CORBA::Short echoShort(CORBA::Short basic_short) = 0;
virtual CORBA::Long echoLong(CORBA::Long basic_long) = 0;
virtual CORBA::UShort echoUShort(CORBA::UShort basic_UShort) = 0;
virtual CORBA::ULong echoULong(CORBA::ULong basic_ULong) = 0;
virtual CORBA::Float echoFloat(CORBA::Float basic_Float) = 0;
virtual CORBA::Double echoDouble(CORBA::Double basic_Double) = 0;
virtual CORBA::Boolean echoBoolean(CORBA::Boolean basic_boolean) = 0;
virtual CORBA::Char echoChar(CORBA::Char basic_Char) = 0;
virtual CORBA::Octet echoOctet(CORBA::Octet basic_Octet) = 0;
virtual char* echoString(const char* mesg) = 0;
virtual void echo_ex1() = 0;
virtual void echo_ex2() = 0;
virtual void echo_ex3() = 0;
public: // Really protected, workaround for xlC
virtual _CORBA_Boolean _dispatch(GIOP_S&);
private:
virtual void* _ptrToInterface(const char*);
virtual const char* _mostDerivedRepoId();
};
_CORBA_MODULE_VAR _dyn_attr const CORBA::TypeCode_ptr _tc_Echo;
#ifndef __Echo__demo_mEcho__cloned__
#define __Echo__demo_mEcho__cloned__
class Echo_cloned;
class _objref_Echo_cloned;
class _impl_Echo_cloned;
typedef _objref_Echo_cloned* Echo_cloned_ptr;
typedef Echo_cloned_ptr Echo_clonedRef;
class Echo_cloned_Helper {
public:
typedef Echo_cloned_ptr _ptr_type;
static _ptr_type _nil();
static _CORBA_Boolean is_nil(_ptr_type);
static void release(_ptr_type);
static void duplicate(_ptr_type);
static size_t NP_alignedSize(_ptr_type, size_t);
static void marshalObjRef(_ptr_type, NetBufferedStream&);
static _ptr_type unmarshalObjRef(NetBufferedStream&);
static void marshalObjRef(_ptr_type, MemBufferedStream&);
static _ptr_type unmarshalObjRef(MemBufferedStream&);
};
typedef _CORBA_ObjRef_Var<_objref_Echo_cloned, Echo_cloned_Helper> Echo_cloned_var;
typedef _CORBA_ObjRef_OUT_arg<_objref_Echo_cloned,Echo_cloned_Helper > Echo_cloned_out;
#endif
class Echo_cloned {
public:
// Declarations for this interface type.
typedef Echo_cloned_ptr _ptr_type;
typedef Echo_cloned_var _var_type;
static _ptr_type _duplicate(_ptr_type);
static _ptr_type _narrow(CORBA::Object_ptr);
static _ptr_type _nil();
static inline size_t _alignedSize(_ptr_type, size_t);
static inline void _marshalObjRef(_ptr_type, NetBufferedStream&);
static inline void _marshalObjRef(_ptr_type, MemBufferedStream&);
static inline _ptr_type _unmarshalObjRef(NetBufferedStream& s) {
CORBA::Object_ptr obj = CORBA::UnMarshalObjRef(_PD_repoId, s);
_ptr_type result = _narrow(obj);
CORBA::release(obj);
return result;
}
static inline _ptr_type _unmarshalObjRef(MemBufferedStream& s) {
CORBA::Object_ptr obj = CORBA::UnMarshalObjRef(_PD_repoId, s);
_ptr_type result = _narrow(obj);
CORBA::release(obj);
return result;
}
static _core_attr const char* _PD_repoId;
// Other IDL defined within this scope.
class ex1 : public CORBA::UserException {
public:
CORBA::String_member msg;
inline ex1() {
pd_insertToAnyFn = insertToAnyFn;
pd_insertToAnyFnNCP = insertToAnyFnNCP;
}
ex1(const ex1&);
ex1(const char* i_msg);
ex1& operator=(const ex1&);
virtual ~ex1();
virtual void _raise();
static ex1* _downcast(CORBA::Exception*);
static const ex1* _downcast(const CORBA::Exception*);
static inline ex1* _narrow(CORBA::Exception* _e) {
return _downcast(_e);
}
size_t _NP_alignedSize(size_t) const;
void operator>>=(NetBufferedStream&) const ;
void operator>>=(MemBufferedStream&) const ;
void operator<<=(NetBufferedStream&) ;
void operator<<=(MemBufferedStream&) ;
static _core_attr insertExceptionToAny insertToAnyFn;
static _core_attr insertExceptionToAnyNCP insertToAnyFnNCP;
virtual CORBA::Exception* _NP_duplicate() const;
static _core_attr const char* _PD_repoId;
private:
virtual const char* _NP_typeId() const;
virtual const char* _NP_repoId(int*) const;
virtual void _NP_marshal(NetBufferedStream&) const;
virtual void _NP_marshal(MemBufferedStream&) const;
};
static _dyn_attr const CORBA::TypeCode_ptr _tc_ex1;
class ex2 : public CORBA::UserException {
public:
inline ex2() {
pd_insertToAnyFn = insertToAnyFn;
pd_insertToAnyFnNCP = insertToAnyFnNCP;
}
ex2(const ex2&);
ex2& operator=(const ex2&);
virtual ~ex2();
virtual void _raise();
static ex2* _downcast(CORBA::Exception*);
static const ex2* _downcast(const CORBA::Exception*);
static inline ex2* _narrow(CORBA::Exception* _e) {
return _downcast(_e);
}
inline void operator>>=(NetBufferedStream&) const { }
inline void operator>>=(MemBufferedStream&) const { }
inline void operator<<=(NetBufferedStream&) { }
inline void operator<<=(MemBufferedStream&) { }
static _core_attr insertExceptionToAny insertToAnyFn;
static _core_attr insertExceptionToAnyNCP insertToAnyFnNCP;
virtual CORBA::Exception* _NP_duplicate() const;
static _core_attr const char* _PD_repoId;
private:
virtual const char* _NP_typeId() const;
virtual const char* _NP_repoId(int*) const;
virtual void _NP_marshal(NetBufferedStream&) const;
virtual void _NP_marshal(MemBufferedStream&) const;
};
static _dyn_attr const CORBA::TypeCode_ptr _tc_ex2;
class ex3 : public CORBA::UserException {
public:
CORBA::Char identifier;
CORBA::Short basic_short;
CORBA::Long basic_long;
inline ex3() {
pd_insertToAnyFn = insertToAnyFn;
pd_insertToAnyFnNCP = insertToAnyFnNCP;
}
ex3(const ex3&);
ex3(CORBA::Char i_identifier, CORBA::Short i_basic_short, CORBA::Long i_basic_long);
ex3& operator=(const ex3&);
virtual ~ex3();
virtual void _raise();
static ex3* _downcast(CORBA::Exception*);
static const ex3* _downcast(const CORBA::Exception*);
static inline ex3* _narrow(CORBA::Exception* _e) {
return _downcast(_e);
}
size_t _NP_alignedSize(size_t) const;
void operator>>=(NetBufferedStream&) const ;
void operator>>=(MemBufferedStream&) const ;
void operator<<=(NetBufferedStream&) ;
void operator<<=(MemBufferedStream&) ;
static _core_attr insertExceptionToAny insertToAnyFn;
static _core_attr insertExceptionToAnyNCP insertToAnyFnNCP;
virtual CORBA::Exception* _NP_duplicate() const;
static _core_attr const char* _PD_repoId;
private:
virtual const char* _NP_typeId() const;
virtual const char* _NP_repoId(int*) const;
virtual void _NP_marshal(NetBufferedStream&) const;
virtual void _NP_marshal(MemBufferedStream&) const;
};
static _dyn_attr const CORBA::TypeCode_ptr _tc_ex3;
};
class _objref_Echo_cloned :
public virtual CORBA::Object, public virtual omniObjRef
{
public:
CORBA::Short echoShort(CORBA::Short basic_short);
CORBA::Long echoLong(CORBA::Long basic_long);
CORBA::UShort echoUShort(CORBA::UShort basic_UShort);
CORBA::ULong echoULong(CORBA::ULong basic_ULong);
CORBA::Float echoFloat(CORBA::Float basic_Float);
CORBA::Double echoDouble(CORBA::Double basic_Double);
CORBA::Boolean echoBoolean(CORBA::Boolean basic_boolean);
CORBA::Char echoChar(CORBA::Char basic_Char);
CORBA::Octet echoOctet(CORBA::Octet basic_Octet);
char* echoString(const char* mesg);
void echo_ex1();
void echo_ex2();
void echo_ex3();
inline _objref_Echo_cloned() { _PR_setobj(0); } // nil
_objref_Echo_cloned(const char*, IOP::TaggedProfileList*, omniIdentity*, omniLocalIdentity*);
protected:
virtual ~_objref_Echo_cloned();
private:
virtual void* _ptrToObjRef(const char*);
_objref_Echo_cloned(const _objref_Echo_cloned&);
_objref_Echo_cloned& operator = (const _objref_Echo_cloned&);
// not implemented
};
class _pof_Echo_cloned : public proxyObjectFactory {
public:
inline _pof_Echo_cloned() : proxyObjectFactory(Echo_cloned::_PD_repoId) {}
virtual ~_pof_Echo_cloned();
virtual omniObjRef* newObjRef(const char*, IOP::TaggedProfileList*,
omniIdentity*, omniLocalIdentity*);
virtual _CORBA_Boolean is_a(const char*) const;
};
class _impl_Echo_cloned :
public virtual omniServant
{
public:
virtual ~_impl_Echo_cloned();
virtual CORBA::Short echoShort(CORBA::Short basic_short) = 0;
virtual CORBA::Long echoLong(CORBA::Long basic_long) = 0;
virtual CORBA::UShort echoUShort(CORBA::UShort basic_UShort) = 0;
virtual CORBA::ULong echoULong(CORBA::ULong basic_ULong) = 0;
virtual CORBA::Float echoFloat(CORBA::Float basic_Float) = 0;
virtual CORBA::Double echoDouble(CORBA::Double basic_Double) = 0;
virtual CORBA::Boolean echoBoolean(CORBA::Boolean basic_boolean) = 0;
virtual CORBA::Char echoChar(CORBA::Char basic_Char) = 0;
virtual CORBA::Octet echoOctet(CORBA::Octet basic_Octet) = 0;
virtual char* echoString(const char* mesg) = 0;
virtual void echo_ex1() = 0;
virtual void echo_ex2() = 0;
virtual void echo_ex3() = 0;
public: // Really protected, workaround for xlC
virtual _CORBA_Boolean _dispatch(GIOP_S&);
private:
virtual void* _ptrToInterface(const char*);
virtual const char* _mostDerivedRepoId();
};
_CORBA_MODULE_VAR _dyn_attr const CORBA::TypeCode_ptr _tc_Echo_cloned;
_CORBA_MODULE_END
_CORBA_MODULE POA_Echo_demo
_CORBA_MODULE_BEG
class Echo :
public virtual Echo_demo::_impl_Echo,
public virtual PortableServer::ServantBase
{
public:
virtual ~Echo();
inline Echo_demo::Echo_ptr _this() {
return (Echo_demo::Echo_ptr) _do_this(Echo_demo::Echo::_PD_repoId);
}
};
class Echo_cloned :
public virtual Echo_demo::_impl_Echo_cloned,
public virtual PortableServer::ServantBase
{
public:
virtual ~Echo_cloned();
inline Echo_demo::Echo_cloned_ptr _this() {
return (Echo_demo::Echo_cloned_ptr) _do_this(Echo_demo::Echo_cloned::_PD_repoId);
}
};
_CORBA_MODULE_END
#undef _core_attr
#undef _dyn_attr
void operator<<=(CORBA::Any& _a, const Echo_demo::Echo::ex1& _s);
void operator<<=(CORBA::Any& _a, const Echo_demo::Echo::ex1* _sp);
CORBA::Boolean operator>>=(const CORBA::Any& _a, const Echo_demo::Echo::ex1*& _sp);
void operator<<=(CORBA::Any& _a, const Echo_demo::Echo::ex2& _s);
void operator<<=(CORBA::Any& _a, const Echo_demo::Echo::ex2* _sp);
CORBA::Boolean operator>>=(const CORBA::Any& _a, const Echo_demo::Echo::ex2*& _sp);
void operator<<=(CORBA::Any& _a, const Echo_demo::Echo::ex3& _s);
void operator<<=(CORBA::Any& _a, const Echo_demo::Echo::ex3* _sp);
CORBA::Boolean operator>>=(const CORBA::Any& _a, const Echo_demo::Echo::ex3*& _sp);
void operator<<=(CORBA::Any& _a, Echo_demo::Echo_ptr _s);
void operator<<=(CORBA::Any& _a, Echo_demo::Echo_ptr* _s);
CORBA::Boolean operator>>=(const CORBA::Any& _a, Echo_demo::Echo_ptr& _s);
void operator<<=(CORBA::Any& _a, const Echo_demo::Echo_cloned::ex1& _s);
void operator<<=(CORBA::Any& _a, const Echo_demo::Echo_cloned::ex1* _sp);
CORBA::Boolean operator>>=(const CORBA::Any& _a, const Echo_demo::Echo_cloned::ex1*& _sp);
void operator<<=(CORBA::Any& _a, const Echo_demo::Echo_cloned::ex2& _s);
void operator<<=(CORBA::Any& _a, const Echo_demo::Echo_cloned::ex2* _sp);
CORBA::Boolean operator>>=(const CORBA::Any& _a, const Echo_demo::Echo_cloned::ex2*& _sp);
void operator<<=(CORBA::Any& _a, const Echo_demo::Echo_cloned::ex3& _s);
void operator<<=(CORBA::Any& _a, const Echo_demo::Echo_cloned::ex3* _sp);
CORBA::Boolean operator>>=(const CORBA::Any& _a, const Echo_demo::Echo_cloned::ex3*& _sp);
void operator<<=(CORBA::Any& _a, Echo_demo::Echo_cloned_ptr _s);
void operator<<=(CORBA::Any& _a, Echo_demo::Echo_cloned_ptr* _s);
CORBA::Boolean operator>>=(const CORBA::Any& _a, Echo_demo::Echo_cloned_ptr& _s);
inline size_t
Echo_demo::Echo::_alignedSize(Echo_demo::Echo_ptr obj, size_t offset) {
return CORBA::AlignedObjRef(obj, _PD_repoId, 36, offset);
}
inline void
Echo_demo::Echo::_marshalObjRef(Echo_demo::Echo_ptr obj, NetBufferedStream& s) {
CORBA::MarshalObjRef(obj, _PD_repoId, 36, s);
}
inline void
Echo_demo::Echo::_marshalObjRef(Echo_demo::Echo_ptr obj, MemBufferedStream& s) {
CORBA::MarshalObjRef(obj, _PD_repoId, 36, s);
}
inline size_t
Echo_demo::Echo_cloned::_alignedSize(Echo_demo::Echo_cloned_ptr obj, size_t offset) {
return CORBA::AlignedObjRef(obj, _PD_repoId, 43, offset);
}
inline void
Echo_demo::Echo_cloned::_marshalObjRef(Echo_demo::Echo_cloned_ptr obj, NetBufferedStream& s) {
CORBA::MarshalObjRef(obj, _PD_repoId, 43, s);
}
inline void
Echo_demo::Echo_cloned::_marshalObjRef(Echo_demo::Echo_cloned_ptr obj, MemBufferedStream& s) {
CORBA::MarshalObjRef(obj, _PD_repoId, 43, s);
}
#ifdef USE_core_stub_in_nt_dll_NOT_DEFINED_echo
# undef USE_core_stub_in_nt_dll
# undef USE_core_stub_in_nt_dll_NOT_DEFINED_echo
#endif
#ifdef USE_dyn_stub_in_nt_dll_NOT_DEFINED_echo
# undef USE_dyn_stub_in_nt_dll
# undef USE_dyn_stub_in_nt_dll_NOT_DEFINED_echo
#endif
#endif // __echo_hh__
--------------E5E65D5AC4E768CB9DEC6F3D--