Line data Source code
1 : /* 2 : * Distributed under the OpenDDS License. 3 : * See: http://www.opendds.org/license.html 4 : */ 5 : 6 : #include "DCPS/DdsDcps_pch.h" //Only the _pch include should start with DCPS/ 7 : 8 : #include "ValueReader.h" 9 : 10 : OPENDDS_BEGIN_VERSIONED_NAMESPACE_DECL 11 : 12 : namespace OpenDDS { 13 : namespace DCPS { 14 : 15 : #ifdef NONNATIVE_LONGDOUBLE 16 : bool 17 : ValueReader::read_float128(long double& value) 18 : { 19 : ACE_CDR::LongDouble ld; 20 : if (!read_float128(ld)) { 21 : return false; 22 : } 23 : value = ld; 24 : return true; 25 : } 26 : #endif 27 : 28 : bool 29 0 : ValueReader::read_boolean_array(ACE_CDR::Boolean* value, size_t length) 30 : { 31 0 : for (size_t i = 0; i != length; ++i) { 32 0 : if (!begin_element()) return false; 33 0 : if (!read_boolean(value[i])) return false; 34 0 : if (!end_element()) return false; 35 : } 36 0 : return true; 37 : } 38 : 39 : bool 40 0 : ValueReader::read_byte_array(ACE_CDR::Octet* value, size_t length) 41 : { 42 0 : for (size_t i = 0; i != length; ++i) { 43 0 : if (!begin_element()) return false; 44 0 : if (!read_byte(value[i])) return false; 45 0 : if (!end_element()) return false; 46 : } 47 0 : return true; 48 : } 49 : 50 : #if OPENDDS_HAS_EXPLICIT_INTS 51 : bool 52 0 : ValueReader::read_int8_array(ACE_CDR::Int8* value, size_t length) 53 : { 54 0 : for (size_t i = 0; i != length; ++i) { 55 0 : if (!begin_element()) return false; 56 0 : if (!read_int8(value[i])) return false; 57 0 : if (!end_element()) return false; 58 : } 59 0 : return true; 60 : } 61 : 62 : bool 63 0 : ValueReader::read_uint8_array(ACE_CDR::UInt8* value, size_t length) 64 : { 65 0 : for (size_t i = 0; i != length; ++i) { 66 0 : if (!begin_element()) return false; 67 0 : if (!read_uint8(value[i])) return false; 68 0 : if (!end_element()) return false; 69 : } 70 0 : return true; 71 : } 72 : #endif 73 : 74 : bool 75 2 : ValueReader::read_int16_array(ACE_CDR::Short* value, size_t length) 76 : { 77 6 : for (size_t i = 0; i != length; ++i) { 78 4 : if (!begin_element()) return false; 79 4 : if (!read_int16(value[i])) return false; 80 4 : if (!end_element()) return false; 81 : } 82 2 : return true; 83 : } 84 : 85 : bool 86 0 : ValueReader::read_uint16_array(ACE_CDR::UShort* value, size_t length) 87 : { 88 0 : for (size_t i = 0; i != length; ++i) { 89 0 : if (!begin_element()) return false; 90 0 : if (!read_uint16(value[i])) return false; 91 0 : if (!end_element()) return false; 92 : } 93 0 : return true; 94 : } 95 : 96 : bool 97 0 : ValueReader::read_int32_array(ACE_CDR::Long* value, size_t length) 98 : { 99 0 : for (size_t i = 0; i != length; ++i) { 100 0 : if (!begin_element()) return false; 101 0 : if (!read_int32(value[i])) return false; 102 0 : if (!end_element()) return false; 103 : } 104 0 : return true; 105 : } 106 : 107 : bool 108 0 : ValueReader::read_uint32_array(ACE_CDR::ULong* value, size_t length) 109 : { 110 0 : for (size_t i = 0; i != length; ++i) { 111 0 : if (!begin_element()) return false; 112 0 : if (!read_uint32(value[i])) return false; 113 0 : if (!end_element()) return false; 114 : } 115 0 : return true; 116 : } 117 : 118 : bool 119 0 : ValueReader::read_int64_array(ACE_CDR::LongLong* value, size_t length) 120 : { 121 0 : for (size_t i = 0; i != length; ++i) { 122 0 : if (!begin_element()) return false; 123 0 : if (!read_int64(value[i])) return false; 124 0 : if (!end_element()) return false; 125 : } 126 0 : return true; 127 : } 128 : 129 : bool 130 0 : ValueReader::read_uint64_array(ACE_CDR::ULongLong* value, size_t length) 131 : { 132 0 : for (size_t i = 0; i != length; ++i) { 133 0 : if (!begin_element()) return false; 134 0 : if (!read_uint64(value[i])) return false; 135 0 : if (!end_element()) return false; 136 : } 137 0 : return true; 138 : } 139 : 140 : bool 141 0 : ValueReader::read_float32_array(ACE_CDR::Float* value, size_t length) 142 : { 143 0 : for (size_t i = 0; i != length; ++i) { 144 0 : if (!begin_element()) return false; 145 0 : if (!read_float32(value[i])) return false; 146 0 : if (!end_element()) return false; 147 : } 148 0 : return true; 149 : } 150 : 151 : bool 152 0 : ValueReader::read_float64_array(ACE_CDR::Double* value, size_t length) 153 : { 154 0 : for (size_t i = 0; i != length; ++i) { 155 0 : if (!begin_element()) return false; 156 0 : if (!read_float64(value[i])) return false; 157 0 : if (!end_element()) return false; 158 : } 159 0 : return true; 160 : } 161 : 162 : bool 163 0 : ValueReader::read_float128_array(ACE_CDR::LongDouble* value, size_t length) 164 : { 165 0 : for (size_t i = 0; i != length; ++i) { 166 0 : if (!begin_element()) return false; 167 0 : if (!read_float128(value[i])) return false; 168 0 : if (!end_element()) return false; 169 : } 170 0 : return true; 171 : } 172 : 173 : bool 174 0 : ValueReader::read_char8_array(ACE_CDR::Char* value, size_t length) 175 : { 176 0 : for (size_t i = 0; i != length; ++i) { 177 0 : if (!begin_element()) return false; 178 0 : if (!read_char8(value[i])) return false; 179 0 : if (!end_element()) return false; 180 : } 181 0 : return true; 182 : } 183 : 184 : bool 185 0 : ValueReader::read_char16_array(ACE_CDR::WChar* value, size_t length) 186 : { 187 0 : for (size_t i = 0; i != length; ++i) { 188 0 : if (!begin_element()) return false; 189 0 : if (!read_char16(value[i])) return false; 190 0 : if (!end_element()) return false; 191 : } 192 0 : return true; 193 : } 194 : 195 : } // namespace DCPS 196 : } // namespace OpenDDS 197 : 198 : OPENDDS_END_VERSIONED_NAMESPACE_DECL