pmix_status_t pmix_bfrops_base_unpack_int16(pmix_pointer_array_t *regtypes, pmix_buffer_t *buffer, void *dest, int32_t *num_vals, pmix_data_type_t type) { int32_t i; uint16_t tmp, *desttmp = (uint16_t*) dest; pmix_output_verbose(20, pmix_bfrops_base_framework.framework_output, "pmix_bfrop_unpack_int16 * %d\n", (int)*num_vals); /* check to see if there's enough data in buffer */ if (pmix_bfrop_too_small(buffer, (*num_vals)*sizeof(tmp))) { return PMIX_ERR_UNPACK_READ_PAST_END_OF_BUFFER; } /* unpack the data */ for (i = 0; i < (*num_vals); ++i) { memcpy( &(tmp), buffer->unpack_ptr, sizeof(tmp) ); tmp = pmix_ntohs(tmp); memcpy(&desttmp[i], &tmp, sizeof(tmp)); buffer->unpack_ptr += sizeof(tmp); } return PMIX_SUCCESS; }
pmix_status_t pmix_bfrop_get_data_type(pmix_buffer_t *buffer, pmix_data_type_t *type) { uint16_t tmp; /* check to see if there's enough data in buffer */ if (pmix_bfrop_too_small(buffer, sizeof(tmp))) { return PMIX_ERR_UNPACK_READ_PAST_END_OF_BUFFER; } /* unpack the data */ memcpy(&tmp, buffer->unpack_ptr, sizeof(tmp)); tmp = pmix_ntohs(tmp); memcpy(type, &tmp, sizeof(tmp)); buffer->unpack_ptr += sizeof(tmp); return PMIX_SUCCESS; }