| 1810 | } |
| 1811 | |
| 1812 | bool 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. |
| 1858 | bool DynamicDataImpl::check_index_from_id(TypeKind tk, DDS::MemberId id, CORBA::ULong bound) const |
nothing calls this directly
no test coverage detected