MCPcopy Create free account
hub / github.com/OpenDDS/OpenDDS / insert_discriminator

Method insert_discriminator

dds/DCPS/XTypes/DynamicDataImpl.cpp:1812–1855  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1810}
1811
1812bool DynamicDataImpl::insert_discriminator(ACE_CDR::Long value)
1813{
1814 ACE_GUARD_RETURN(ACE_Recursive_Thread_Mutex, guard, lock_, false);
1815 DDS::DynamicTypeMember_var member;
1816 if (type_->get_member(member, DISCRIMINATOR_ID) != DDS::RETCODE_OK) {
1817 return false;
1818 }
1819 DDS::MemberDescriptor_var descriptor;
1820 if (member->get_descriptor(descriptor) != DDS::RETCODE_OK) {
1821 return false;
1822 }
1823 DDS::DynamicType_var discType = get_base_type(descriptor->type());
1824 switch (discType ? discType->get_kind() : TK_NONE) {
1825 case TK_BOOLEAN:
1826 return insert_single(DISCRIMINATOR_ID, ACE_OutputCDR::from_boolean(value));
1827 case TK_BYTE:
1828 return insert_single(DISCRIMINATOR_ID, ACE_OutputCDR::from_octet(static_cast<ACE_CDR::Octet>(value)));
1829 case TK_CHAR8:
1830 return insert_single(DISCRIMINATOR_ID, ACE_OutputCDR::from_char(static_cast<ACE_CDR::Char>(value)));
1831#ifdef DDS_HAS_WCHAR
1832 case TK_CHAR16:
1833 return insert_single(DISCRIMINATOR_ID, ACE_OutputCDR::from_wchar(static_cast<ACE_CDR::WChar>(value)));
1834#endif
1835 case TK_INT8:
1836 return insert_single(DISCRIMINATOR_ID, ACE_OutputCDR::from_int8(static_cast<ACE_CDR::Int8>(value)));
1837 case TK_UINT8:
1838 return insert_single(DISCRIMINATOR_ID, ACE_OutputCDR::from_uint8(static_cast<ACE_CDR::UInt8>(value)));
1839 case TK_INT16:
1840 return insert_single(DISCRIMINATOR_ID, static_cast<ACE_CDR::Short>(value));
1841 case TK_UINT16:
1842 return insert_single(DISCRIMINATOR_ID, static_cast<ACE_CDR::UShort>(value));
1843 case TK_ENUM:
1844 case TK_INT32:
1845 return insert_single(DISCRIMINATOR_ID, value);
1846 case TK_UINT32:
1847 return insert_single(DISCRIMINATOR_ID, static_cast<ACE_CDR::ULong>(value));
1848 case TK_INT64:
1849 return insert_single(DISCRIMINATOR_ID, static_cast<ACE_CDR::LongLong>(value));
1850 case TK_UINT64:
1851 return insert_single(DISCRIMINATOR_ID, static_cast<ACE_CDR::ULongLong>(value));
1852 default:
1853 return false;
1854 }
1855}
1856
1857// Check if a given member ID is valid for a given type with a maximum number of elements.
1858bool DynamicDataImpl::check_index_from_id(TypeKind tk, DDS::MemberId id, CORBA::ULong bound) const

Callers

nothing calls this directly

Calls 5

get_base_typeFunction · 0.85
get_memberMethod · 0.80
get_kindMethod · 0.80
get_descriptorMethod · 0.45
typeMethod · 0.45

Tested by

no test coverage detected