Discussion:
[omniORB] OmniOrb 4.1.3 under VMS 7.3-2 - build of policy.cc
Frank Gribbin
2009-06-30 20:46:05 UTC
Permalink
Can anyone give me advice with a build error

I now have problems with building policy.cc I'm not a C++ programmer, but it looks like
there's no >>= operation defined for the two types CORBA:Any and
PortableServer::IdAssignmentPolicyValue although there is for Any and
CORBA::PolicyError

I attach error messages and policy.cc

Help!!

Regards,
Frank




-------------- next part --------------
$ x=f$verify(oldver)
$ python DISK$VMSORB:[FJG.OMNIORB.omniORB-4_1_3.mk]postProcessDfile.py ORBMULTIREQUEST.D DISK$VMSORB:[FJG.OMNIORB.omniORB-4_1_3.sr
c.LIB.OMNIORB.DYNAMIC] [.RELEASE]ORBMULTIREQUEST.OBJ
%SYSTEM-I-EMULATED, an instruction not implemented on this processor was emulated at PC=0000000000404754, PS=0000001B
%SYSTEM-I-EMULATED, an instruction not implemented on this processor was emulated at PC=0000000000404764, PS=0000001B
%SYSTEM-I-EMULATED, an instruction not implemented on this processor was emulated at PC=000000000040476C, PS=0000001B
%SYSTEM-I-EMULATED, an instruction not implemented on this processor was emulated at PC=0000000000404754, PS=0000001B
%SYSTEM-I-EMULATED, an instruction not implemented on this processor was emulated at PC=0000000000404764, PS=0000001B
$ x=f$verify(oldver)
@[----.mk]CXXCompile.dcl " /Mms=file=.d/Diag/Debug=trace /name=as_is/WARN=(DISA=(CANTCOMPLETE))/extern_model=strict_refdef/noshare"
" USE_omniORB_logStream _OMNIORB_DYNAMIC_LIBRARY" " ./ ../../../../include ../ ../../../../include/omniORB4/internal" -
"[.CXX_REPOSITORY] omnilib:" POLICY.CC [.RELEASE]POLICY.OBJ
Compiling POLICY.CC...
$ CXX /Mms=file=.d/Diag/Debug=trace /name=as_is/WARN=(DISA=(CANTCOMPLETE))/extern_model=strict_refdef/noshare POLICY.CC /object=[.R
ELEASE]POLICY.OBJ /define=("USE_omniORB_logStream","_OMNIORB_DYNAMIC_LIBRARY")-
/include=("./","../../../../include","../","../../../../include/omniORB4/internal")-
/repository=([.CXX_REPOSITORY],omnilib:)-
-


CASE_CPFN_POA(/*THREAD_POLICY_ID*/ 16, ThreadPolicy)
..^
%CXX-E-NOMATOPRFUN, no operator ">>=" matches these operands
operand types are: const CORBA::Any >>=
PortableServer::ThreadPolicyValue
at line number 153 in file DISK$VMSORB:[FJG.OMNIORB.omniORB-4_1_3.src.lib.omniORB.dynamic]policy.cc;1

CASE_CPFN_POA(/*LIFESPAN_POLICY_ID*/ 17, LifespanPolicy)
..^
%CXX-E-NOMATOPRFUN, no operator ">>=" matches these operands
operand types are: const CORBA::Any >>=
PortableServer::LifespanPolicyValue
at line number 154 in file DISK$VMSORB:[FJG.OMNIORB.omniORB-4_1_3.src.lib.omniORB.dynamic]policy.cc;1

CASE_CPFN_POA(/*ID_UNIQUENESS_POLICY_ID*/ 18, IdUniquenessPolicy)
..^
%CXX-E-NOMATOPRFUN, no operator ">>=" matches these operands
operand types are: const CORBA::Any >>=
PortableServer::IdUniquenessPolicyValue
at line number 155 in file DISK$VMSORB:[FJG.OMNIORB.omniORB-4_1_3.src.lib.omniORB.dynamic]policy.cc;1

CASE_CPFN_POA(/*ID_ASSIGNMENT_POLICY_ID*/ 19, IdAssignmentPolicy)
..^
%CXX-E-NOMATOPRFUN, no operator ">>=" matches these operands
operand types are: const CORBA::Any >>=
PortableServer::IdAssignmentPolicyValue
at line number 156 in file DISK$VMSORB:[FJG.OMNIORB.omniORB-4_1_3.src.lib.omniORB.dynamic]policy.cc;1

CASE_CPFN_POA(/*IMPLICIT_ACTIVATION_POLICY_ID*/ 20, ImplicitActivationPolicy)
..^
%CXX-E-NOMATOPRFUN, no operator ">>=" matches these operands
operand types are: const CORBA::Any >>=
PortableServer::ImplicitActivationPolicyValue
at line number 157 in file DISK$VMSORB:[FJG.OMNIORB.omniORB-4_1_3.src.lib.omniORB.dynamic]policy.cc;1

CASE_CPFN_POA(/*SERVANT_RETENTION_POLICY_ID*/ 21, ServantRetentionPolicy)
..^
%CXX-E-NOMATOPRFUN, no operator ">>=" matches these operands
operand types are: const CORBA::Any >>=
PortableServer::ServantRetentionPolicyValue
at line number 158 in file DISK$VMSORB:[FJG.OMNIORB.omniORB-4_1_3.src.lib.omniORB.dynamic]policy.cc;1

CASE_CPFN_POA(/*REQUEST_PROCESSING_POLICY_ID*/ 22, RequestProcessingPolicy)
..^
%CXX-E-NOMATOPRFUN, no operator ">>=" matches these operands
operand types are: const CORBA::Any >>=
PortableServer::RequestProcessingPolicyValue
at line number 159 in file DISK$VMSORB:[FJG.OMNIORB.omniORB-4_1_3.src.lib.omniORB.dynamic]policy.cc;1

%CXX-I-MESSAGE, 7 errors detected in the compilation of "DISK$VMSORB:[FJG.OMNIORB.omniORB-4_1_3.src.lib.omniORB.dynamic]policy.cc;1"
.
$ WRITE MMS$STSMBX $STATUS
%MMS-F-ABORT, For target [.RELEASE]POLICY.OBJ, CLI returned abort status: %X15F61262.
%MMS-F-ABORT, For target EXPORT, CLI returned abort status: %X10EE8034.
%MMS-F-ABORT, For target EXPORT, CLI returned abort status: %X10EE8034.
%MMS-F-ABORT, For target EXPORT, CLI returned abort status: %X10EE8034.
$
$
$
$

-------------- next part --------------
// -*- Mode: C++; -*-
// Package : omniORB
// policy.cc Created on: 30/7/2001
// Author : Sai-Lai Lo (sll)
//
// Copyright (C) 2001 AT&T Research Cambridge
//
// This file is part of the omniORB library.
//
// The omniORB library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
// License as published by the Free Software Foundation; either
// version 2 of the License, or (at your option) any later version.
//
// This library 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
// Library General Public License for more details.
//
// You should have received a copy of the GNU Library General Public
// License along with this library; if not, write to the Free
// Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
// 02111-1307, USA
//
//
// Description:
//

/*
$Log: policy.cc,v $
Revision 1.1.4.6 2006/07/18 16:21:22 dgrisby
New experimental connection management extension; ORB core support
for it.

Revision 1.1.4.5 2005/07/22 17:18:38 dgrisby
Another merge from omni4_0_develop.

Revision 1.1.4.4 2005/01/06 23:09:46 dgrisby
Big merge from omni4_0_develop.

Revision 1.1.4.3 2004/07/23 10:29:58 dgrisby
Completely new, much simpler Any implementation.

Revision 1.1.4.2 2004/04/02 13:26:24 dgrisby
Start refactoring TypeCode to support value TypeCodes, start of
abstract interfaces support.

Revision 1.1.4.1 2003/03/23 21:02:46 dgrisby
Start of omniORB 4.1.x development branch.

Revision 1.1.2.5 2003/02/17 02:03:08 dgrisby
vxWorks port. (Thanks Michael Sturm / Acterna Eningen GmbH).

Revision 1.1.2.4 2001/11/08 16:33:50 dpg1
Local servant POA shortcut policy.

Revision 1.1.2.3 2001/08/22 13:29:47 dpg1
Re-entrant Any marshalling.

Revision 1.1.2.2 2001/08/17 15:00:47 dpg1
Fixes for pre-historic compilers.

Revision 1.1.2.1 2001/07/31 16:04:06 sll
Added ORB::create_policy() and associated types and operators.

*/

#include <omniORB4/CORBA.h>
#include <omniORB4/omniInterceptors.h>
#include <interceptors.h>
#include <exceptiondefs.h>

#ifdef HAS_pch
#pragma hdrstop
#endif

OMNI_USING_NAMESPACE(omni)

//////////////////////////////////////////////////////////////////////
//////////////////////////// ORB::create_policy //////////////////////
//////////////////////////////////////////////////////////////////////

#define CASE_CPFN_POA(id,policy) \
case id: \
{ \
try { \
PortableServer::policy##Value v; \
if (!(value >>= v)) throw CORBA::PolicyError(CORBA::BAD_POLICY_TYPE); \
return new PortableServer::policy(v); \
} \
catch(CORBA::PolicyError& ex) { \
throw; \
} \
catch(...) { \
throw CORBA::PolicyError(CORBA::BAD_POLICY_TYPE); \
} \
break; \
}


#define CASE_CPFN_BIDIR(id,policy) \
case id: \
{ \
try { \
CORBA::UShort v; \
if (!(value >>= v) || (v != 0 && v != 1)) \
throw CORBA::PolicyError(CORBA::BAD_POLICY_TYPE); \
return new BiDirPolicy::policy(v); \
} \
catch(CORBA::PolicyError& ex) { \
throw; \
} \
catch(...) { \
throw CORBA::PolicyError(CORBA::BAD_POLICY_TYPE); \
} \
break; \
}

#define CASE_CPFN_OMNI(id,policy) \
case id: \
{ \
try { \
omniPolicy::policy##Value v; \
if (!(value >>= v)) throw CORBA::PolicyError(CORBA::BAD_POLICY_TYPE); \
return new omniPolicy::policy(v); \
} \
catch(CORBA::PolicyError& ex) { \
throw; \
} \
catch(...) { \
throw CORBA::PolicyError(CORBA::BAD_POLICY_TYPE); \
} \
break; \
}


CORBA::Policy_ptr
CORBA::
ORB::create_policy(CORBA::PolicyType t, const CORBA::Any& value) {

// Try an interceptor
if (omniInterceptorP::createPolicy) {
CORBA::Policy_ptr policy = CORBA::Policy::_nil();
omniInterceptors::createPolicy_T::info_T info(t, value, policy);
omniInterceptorP::visit(info);
if (!CORBA::is_nil(policy))
return policy;
}

switch (t) {

// POA policies
CASE_CPFN_POA(/*THREAD_POLICY_ID*/ 16, ThreadPolicy)
CASE_CPFN_POA(/*LIFESPAN_POLICY_ID*/ 17, LifespanPolicy)
CASE_CPFN_POA(/*ID_UNIQUENESS_POLICY_ID*/ 18, IdUniquenessPolicy)
CASE_CPFN_POA(/*ID_ASSIGNMENT_POLICY_ID*/ 19, IdAssignmentPolicy)
CASE_CPFN_POA(/*IMPLICIT_ACTIVATION_POLICY_ID*/ 20, ImplicitActivationPolicy)
CASE_CPFN_POA(/*SERVANT_RETENTION_POLICY_ID*/ 21, ServantRetentionPolicy)
CASE_CPFN_POA(/*REQUEST_PROCESSING_POLICY_ID*/ 22, RequestProcessingPolicy)

// Bidirectional policy
CASE_CPFN_BIDIR(/*BIDIRECTIONAL_POLICY_TYPE*/ 37, BidirectionalPolicy)

// omniORB specific policies
CASE_CPFN_OMNI(/*LOCAL_SHORTCUT_POLICY_TYPE*/0x41545401, LocalShortcutPolicy)
}
throw CORBA::PolicyError(CORBA::BAD_POLICY);
}

//////////////////////////////////////////////////////////////////////
///////////////// CORBA::PolicyError user exception //////////////////
//////////////////////////////////////////////////////////////////////

#if defined(HAS_Cplusplus_Namespace) && defined(_MSC_VER)
// MSVC++ does not give the variables external linkage otherwise. Its a bug.
namespace CORBA {

_init_in_def_( const PolicyErrorCode BAD_POLICY = 0; )
_init_in_def_( const PolicyErrorCode UNSUPPORTED_POLICY = 1; )
_init_in_def_( const PolicyErrorCode BAD_POLICY_TYPE = 2; )
_init_in_def_( const PolicyErrorCode BAD_POLICY_VALUE = 3; )
_init_in_def_( const PolicyErrorCode UNSUPPORTED_POLICY_VALUE = 4; )

}
#else
_init_in_def_( const PolicyErrorCode CORBA::BAD_POLICY = 0; )
_init_in_def_( const PolicyErrorCode CORBA::UNSUPPORTED_POLICY = 1; )
_init_in_def_( const PolicyErrorCode CORBA::BAD_POLICY_TYPE = 2; )
_init_in_def_( const PolicyErrorCode CORBA::BAD_POLICY_VALUE = 3; )
_init_in_def_( const PolicyErrorCode CORBA::UNSUPPORTED_POLICY_VALUE = 4; )
#endif


OMNIORB_DEFINE_USER_EX_COMMON_FNS(CORBA, PolicyError,
"IDL:omg.org/CORBA/PolicyError:1.0")


CORBA::PolicyError::PolicyError(const CORBA::PolicyError& _s) : CORBA::UserException(_s)
{
reason = _s.reason;

}

CORBA::PolicyError::PolicyError(PolicyErrorCode _reason)
{
pd_insertToAnyFn = CORBA::PolicyError::insertToAnyFn;
pd_insertToAnyFnNCP = CORBA::PolicyError::insertToAnyFnNCP;
reason = _reason;

}

CORBA::PolicyError& CORBA::PolicyError::operator=(const CORBA::PolicyError& _s)
{
((CORBA::UserException*) this)->operator=(_s);
reason = _s.reason;

return *this;
}

void
CORBA::
PolicyError::operator>>=(cdrStream& _n) const {
reason >>= _n;
}

void
CORBA::
PolicyError::operator<<=(cdrStream& _n) {
(PolicyErrorCode&)reason <<= _n;
}


// The following code are generated by omniidl.


static CORBA::TypeCode::_Tracker _0RL_tcTrack(__FILE__);

static CORBA::TypeCode_ptr _0RL_tc_CORBA_mPolicyErrorCode = CORBA::TypeCode::PR_alias_tc("IDL:omg.org/CORBA/PolicyErrorCode:1.0", "PolicyErrorCode", CORBA::TypeCode::PR_short_tc(), &_0RL_tcTrack);


#if defined(HAS_Cplusplus_Namespace) && defined(_MSC_VER)
// MSVC++ does not give the constant external linkage otherwise.
namespace CORBA {
const CORBA::TypeCode_ptr _tc_PolicyErrorCode = _0RL_tc_CORBA_mPolicyErrorCode;
}
#else
const CORBA::TypeCode_ptr CORBA::_tc_PolicyErrorCode = _0RL_tc_CORBA_mPolicyErrorCode;
#endif

static CORBA::PR_structMember _0RL_structmember_CORBA_mPolicyError[] = {
{"reason", _0RL_tc_CORBA_mPolicyErrorCode}
};

static CORBA::TypeCode_ptr _0RL_tc_CORBA_mPolicyError = CORBA::TypeCode::PR_exception_tc("IDL:omg.org/CORBA/PolicyError:1.0", "PolicyError", _0RL_structmember_CORBA_mPolicyError, 1, &_0RL_tcTrack);
#if defined(HAS_Cplusplus_Namespace) && defined(_MSC_VER)
// MSVC++ does not give the constant external linkage otherwise.
namespace CORBA {
const CORBA::TypeCode_ptr _tc_PolicyError = _0RL_tc_CORBA_mPolicyError;
}
#else
const CORBA::TypeCode_ptr CORBA::_tc_PolicyError = _0RL_tc_CORBA_mPolicyError;
#endif



static void _0RL_CORBA_mPolicyError_marshal_fn(cdrStream& _s, void* _v)
{
const CORBA::PolicyError* _p = (const CORBA::PolicyError*)_v;
*_p >>= _s;
}
static void _0RL_CORBA_mPolicyError_unmarshal_fn(cdrStream& _s, void*& _v)
{
CORBA::PolicyError* _p = new CORBA::PolicyError;
*_p <<= _s;
_v = _p;
}
static void _0RL_CORBA_mPolicyError_destructor_fn(void* _v)
{
CORBA::PolicyError* _p = (CORBA::PolicyError*)_v;
delete _p;
}

void operator<<=(CORBA::Any& _a, const CORBA::PolicyError& _s)
{
CORBA::PolicyError* _p = new CORBA::PolicyError(_s);
_a.PR_insert(_0RL_tc_CORBA_mPolicyError,
_0RL_CORBA_mPolicyError_marshal_fn,
_0RL_CORBA_mPolicyError_destructor_fn,
_p);
}
void operator<<=(CORBA::Any& _a, const CORBA::PolicyError* _sp)
{
_a.PR_insert(_0RL_tc_CORBA_mPolicyError,
_0RL_CORBA_mPolicyError_marshal_fn,
_0RL_CORBA_mPolicyError_destructor_fn,
(CORBA::PolicyError*)_sp);
}

CORBA::Boolean operator>>=(const CORBA::Any& _a, const CORBA::PolicyError*& _sp)
{
void* _v;
if (_a.PR_extract(_0RL_tc_CORBA_mPolicyError,
_0RL_CORBA_mPolicyError_unmarshal_fn,
_0RL_CORBA_mPolicyError_marshal_fn,
_0RL_CORBA_mPolicyError_destructor_fn,
_v)) {
_sp = (const CORBA::PolicyError*)_v;
return 1;
}
return 0;
}

static void _0RL_insertToAny__cCORBA_mPolicyError(CORBA::Any& _a, const CORBA::Exception& _e) {
const CORBA::PolicyError & _ex = (const CORBA::PolicyError &) _e;
operator<<=(_a,_ex);
}

static void _0RL_insertToAnyNCP__cCORBA_mPolicyError (CORBA::Any& _a, const CORBA::Exception* _e) {
const CORBA::PolicyError* _ex = (const CORBA::PolicyError*) _e;
operator<<=(_a,_ex);
}

class _0RL_insertToAny_Singleton__cCORBA_mPolicyError {
public:
_0RL_insertToAny_Singleton__cCORBA_mPolicyError() {
CORBA::PolicyError::insertToAnyFn = _0RL_insertToAny__cCORBA_mPolicyError;
CORBA::PolicyError::insertToAnyFnNCP = _0RL_insertToAnyNCP__cCORBA_mPolicyError;
}
};
static _0RL_insertToAny_Singleton__cCORBA_mPolicyError _0RL_insertToAny_Singleton__cCORBA_mPolicyError_;
Bruce Visscher
2009-07-01 23:05:39 UTC
Permalink
Sorry for the slow response.
Post by Frank Gribbin
I now have problems with building policy.cc I'm not a C++ programmer, but it looks like
there's no >>= operation defined for the two types CORBA:Any and
PortableServer::IdAssignmentPolicyValue although there is for Any and
CORBA::PolicyError
On my omniORB 4.1.2 OpenVMS system, the operator is declared via:

#include <omniORB4/CORBA.h> //
src/lib/omniORB/dynamic/policy.cc:68
#include <omniORB4/poa.h>?????? //
include/omniORB4/CORBA.h:510
#include <omniORB4/poa_enums_operators.hh> // include/omniORB4/poa.h:822
void operator<<=(::CORBA::Any& _a, PortableServer::IdAssignmentPolicyValue _s);

// include/omniORB4/poa_enums_operators.hh:78

The definition for this operator is in
src/lib/omniORB/poa_enumsDynSK.cc which src/lib/omniORB/poastub.cc
#includes.

Not sure what went wrong in your build but at least maybe you could
check the above.

IIRC, poa_enums_operators.hh and poa_enumsDynSK.cc are built via
'omniidl -bcxx -WbF' which could (maybe) get a little tricky.
Duncan Grisby
2009-07-02 15:35:35 UTC
Permalink
Post by Bruce Visscher
#include <omniORB4/CORBA.h> //
src/lib/omniORB/dynamic/policy.cc:68
#include <omniORB4/poa.h>?????? //
include/omniORB4/CORBA.h:510
#include <omniORB4/poa_enums_operators.hh> // include/omniORB4/poa.h:822
void operator<<=(::CORBA::Any& _a, PortableServer::IdAssignmentPolicyValue _s);
// include/omniORB4/poa_enums_operators.hh:78
The definition for this operator is in
src/lib/omniORB/poa_enumsDynSK.cc which src/lib/omniORB/poastub.cc
#includes.
Those things are generated by omniidl as part of the build. If they're
not there, something went wrong with that bit of the build. The first
thing to do is to clean everything out and start fresh.

Cheers,

Duncan.
--
-- Duncan Grisby --
-- ***@grisby.org --
-- http://www.grisby.org --
Loading...