00001 // -*- C++ -*- 00002 00003 //============================================================================= 00004 /** 00005 * @file Policy_Creator_T.h 00006 * 00007 * $Id: Policy_Creator_T.h 88803 2010-02-02 11:13:27Z vzykov $ 00008 * 00009 * @author Johnny Willemsen <jwillemsen@remedy.nl> 00010 */ 00011 //============================================================================= 00012 00013 #ifndef TAO_PORTABLESERVER_POLICY_CREATOR_T_H 00014 #define TAO_PORTABLESERVER_POLICY_CREATOR_T_H 00015 00016 #include /**/ "ace/pre.h" 00017 00018 #include "tao/ORB_Constants.h" 00019 #include "tao/PolicyC.h" 00020 00021 #if !defined (ACE_LACKS_PRAGMA_ONCE) 00022 # pragma once 00023 #endif /* ACE_LACKS_PRAGMA_ONCE */ 00024 00025 TAO_BEGIN_VERSIONED_NAMESPACE_DECL 00026 00027 namespace TAO 00028 { 00029 namespace Portable_Server 00030 { 00031 template <class POLICYTYPE, typename POLICYVALUE> 00032 void create_policy ( 00033 POLICYTYPE *& policy, 00034 POLICYVALUE &value, 00035 const CORBA::Any& val 00036 ) 00037 { 00038 if ((val >>= value) == 0) 00039 throw CORBA::PolicyError (CORBA::BAD_POLICY_VALUE); 00040 00041 ACE_NEW_THROW_EX (policy, 00042 POLICYTYPE (value), 00043 CORBA::NO_MEMORY (TAO::VMCID, 00044 CORBA::COMPLETED_NO)); 00045 } 00046 } 00047 } 00048 00049 TAO_END_VERSIONED_NAMESPACE_DECL 00050 00051 #include /**/ "ace/post.h" 00052 00053 #endif /* TAO_PORTABLESERVER_POLICY_CREATOR_T_H */