diff options
Diffstat (limited to 'TAO/orbsvcs/IFR_Service/PrimitiveDef_i.cpp')
-rw-r--r-- | TAO/orbsvcs/IFR_Service/PrimitiveDef_i.cpp | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/TAO/orbsvcs/IFR_Service/PrimitiveDef_i.cpp b/TAO/orbsvcs/IFR_Service/PrimitiveDef_i.cpp new file mode 100644 index 00000000000..6e200e14027 --- /dev/null +++ b/TAO/orbsvcs/IFR_Service/PrimitiveDef_i.cpp @@ -0,0 +1,132 @@ +/* -*- C++ -*- */ +// $Id$ + +#include "Repository_i.h" +#include "PrimitiveDef_i.h" + +ACE_RCSID(IFR_Service, PrimitiveDef_i, "$Id$") + +TAO_PrimitiveDef_i::TAO_PrimitiveDef_i ( + TAO_Repository_i *repo, + ACE_Configuration_Section_Key section_key + ) + : TAO_IRObject_i (repo, section_key), + TAO_IDLType_i (repo, section_key) +{ +} + +TAO_PrimitiveDef_i::~TAO_PrimitiveDef_i (void) +{ +} + +CORBA::DefinitionKind +TAO_PrimitiveDef_i::def_kind (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + return CORBA::dk_Primitive; +} + +void +TAO_PrimitiveDef_i::destroy (ACE_ENV_SINGLE_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + this->destroy_i (ACE_ENV_SINGLE_ARG_PARAMETER); +} + +void +TAO_PrimitiveDef_i::destroy_i (ACE_ENV_SINGLE_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + ACE_THROW (CORBA::BAD_INV_ORDER (2, CORBA::COMPLETED_NO)); +} + +CORBA::TypeCode_ptr +TAO_PrimitiveDef_i::type (ACE_ENV_SINGLE_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + TAO_IFR_READ_GUARD_RETURN (CORBA::TypeCode::_nil ()); + + return this->type_i (ACE_ENV_SINGLE_ARG_PARAMETER); +} + +CORBA::TypeCode_ptr +TAO_PrimitiveDef_i::type_i (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + u_int pkind = 0; + this->repo_->config ()->get_integer_value (this->section_key_, + "pkind", + pkind); + + switch (ACE_static_cast (CORBA::PrimitiveKind, pkind)) + { + case CORBA::pk_null: + return CORBA::TypeCode::_duplicate (CORBA::_tc_null); + case CORBA::pk_void: + return CORBA::TypeCode::_duplicate (CORBA::_tc_void); + case CORBA::pk_short: + return CORBA::TypeCode::_duplicate (CORBA::_tc_short); + case CORBA::pk_long: + return CORBA::TypeCode::_duplicate (CORBA::_tc_long); + case CORBA::pk_ushort: + return CORBA::TypeCode::_duplicate (CORBA::_tc_ushort); + case CORBA::pk_ulong: + return CORBA::TypeCode::_duplicate (CORBA::_tc_ulong); + case CORBA::pk_float: + return CORBA::TypeCode::_duplicate (CORBA::_tc_float); + case CORBA::pk_double: + return CORBA::TypeCode::_duplicate (CORBA::_tc_double); + case CORBA::pk_boolean: + return CORBA::TypeCode::_duplicate (CORBA::_tc_boolean); + case CORBA::pk_char: + return CORBA::TypeCode::_duplicate (CORBA::_tc_char); + case CORBA::pk_octet: + return CORBA::TypeCode::_duplicate (CORBA::_tc_octet); + case CORBA::pk_any: + return CORBA::TypeCode::_duplicate (CORBA::_tc_any); + case CORBA::pk_TypeCode: + return CORBA::TypeCode::_duplicate (CORBA::_tc_TypeCode); + case CORBA::pk_Principal: + return CORBA::TypeCode::_duplicate (CORBA::_tc_Principal); + case CORBA::pk_string: + return CORBA::TypeCode::_duplicate (CORBA::_tc_string); + case CORBA::pk_objref: + return CORBA::TypeCode::_duplicate (CORBA::_tc_Object); + case CORBA::pk_longlong: + return CORBA::TypeCode::_duplicate (CORBA::_tc_longlong); + case CORBA::pk_ulonglong: + return CORBA::TypeCode::_duplicate (CORBA::_tc_ulonglong); + case CORBA::pk_longdouble: + return CORBA::TypeCode::_duplicate (CORBA::_tc_longdouble); + case CORBA::pk_wchar: + return CORBA::TypeCode::_duplicate (CORBA::_tc_wchar); + case CORBA::pk_wstring: + return CORBA::TypeCode::_duplicate (CORBA::_tc_wstring); + case CORBA::pk_value_base: + // TODO - we haven't added this typecode constant yet. + default: + return CORBA::TypeCode::_duplicate (CORBA::_tc_null); + } +} + +CORBA::PrimitiveKind +TAO_PrimitiveDef_i::kind (ACE_ENV_SINGLE_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + TAO_IFR_READ_GUARD_RETURN (CORBA::pk_null); + + return this->kind_i (ACE_ENV_SINGLE_ARG_PARAMETER); +} + +CORBA::PrimitiveKind +TAO_PrimitiveDef_i::kind_i (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + u_int pkind = 0; + this->repo_->config ()->get_integer_value (this->section_key_, + "pkind", + pkind); + + return ACE_static_cast (CORBA::PrimitiveKind, pkind); +} + |