| 2367 | } |
| 2368 | |
| 2369 | bool DynamicDataXcdrReadImpl::skip_member(DDS::DynamicType_ptr type) |
| 2370 | { |
| 2371 | const DDS::DynamicType_var member_type = get_base_type(type); |
| 2372 | const TypeKind member_kind = member_type->get_kind(); |
| 2373 | |
| 2374 | switch (member_kind) { |
| 2375 | case TK_BOOLEAN: |
| 2376 | case TK_BYTE: |
| 2377 | case TK_INT8: |
| 2378 | case TK_UINT8: |
| 2379 | case TK_CHAR8: |
| 2380 | if (!skip("skip_member", "Failed to skip a member of size 1 byte", 1, 1)) { |
| 2381 | return false; |
| 2382 | } |
| 2383 | break; |
| 2384 | case TK_INT16: |
| 2385 | case TK_UINT16: |
| 2386 | case TK_CHAR16: |
| 2387 | if (!skip("skip_member", "Failed to skip a member of size 2 bytes", 1, 2)) { |
| 2388 | return false; |
| 2389 | } |
| 2390 | break; |
| 2391 | case TK_INT32: |
| 2392 | case TK_UINT32: |
| 2393 | case TK_FLOAT32: |
| 2394 | if (!skip("skip_member", "Failed to skip a member of size 4 bytes", 1, 4)) { |
| 2395 | return false; |
| 2396 | } |
| 2397 | break; |
| 2398 | case TK_INT64: |
| 2399 | case TK_UINT64: |
| 2400 | case TK_FLOAT64: |
| 2401 | if (!skip("skip_member", "Failed to skip a member of size 8 bytes", 1, 8)) { |
| 2402 | return false; |
| 2403 | } |
| 2404 | break; |
| 2405 | case TK_FLOAT128: |
| 2406 | if (!skip("skip_member", "Failed to skip a member of size 16 bytes", 1, 16)) { |
| 2407 | return false; |
| 2408 | } |
| 2409 | break; |
| 2410 | case TK_STRING8: |
| 2411 | case TK_STRING16: |
| 2412 | { |
| 2413 | const char* str_kind = member_kind == TK_STRING8 ? "string" : "wstring"; |
| 2414 | ACE_CDR::ULong bytes; |
| 2415 | if (!(strm_ >> bytes)) { |
| 2416 | if (DCPS::DCPS_debug_level >= 1) { |
| 2417 | ACE_ERROR((LM_ERROR, ACE_TEXT("(%P|%t) DynamicDataXcdrReadImpl::skip_member -") |
| 2418 | ACE_TEXT(" Failed to read length of a %C member\n"), str_kind)); |
| 2419 | } |
| 2420 | return false; |
| 2421 | } |
| 2422 | |
| 2423 | const DCPS::String err_msg = DCPS::String("Failed to skip a ") + str_kind + " member"; |
| 2424 | if (!skip("skip_member", err_msg.c_str(), bytes)) { |
| 2425 | return false; |
| 2426 | } |
nothing calls this directly
no test coverage detected