ErrorCode DenseTag::set_data( SequenceManager* seqman, Error* error, const EntityHandle* entities, size_t num_entities, void const* const* pointers, const int* data_lengths ) { ErrorCode rval = validate_lengths( error, data_lengths, num_entities ); if (MB_SUCCESS != rval) return rval; const EntityHandle* const end = entities + num_entities; unsigned char* array; size_t junk; for (const EntityHandle* i = entities; i != end; ++i, ++pointers ) { rval = get_array( seqman, error, *i, array, junk, true ); if (MB_SUCCESS != rval) return rval; memcpy( array, *pointers, get_size() ); } return MB_SUCCESS; }
ErrorCode MeshTag::clear_data(SequenceManager*, Error* /* error */, const EntityHandle* entities, size_t num_entities, const void* value_ptr, int value_len) { if (!all_root_set(get_name(), entities, num_entities)) return MB_TAG_NOT_FOUND; ErrorCode valid = validate_lengths(NULL, value_len ? &value_len : 0, 1);MB_CHK_ERR(valid); if (num_entities > 0) { mValue.resize(value_len); memcpy(&mValue[0], value_ptr, value_len); } return MB_SUCCESS; }
ErrorCode MeshTag::set_data(SequenceManager*, Error* /* error */, const EntityHandle* entities, size_t num_entities, void const* const* data_ptrs, const int* data_lengths) { if (!all_root_set(get_name(), entities, num_entities)) return MB_TAG_NOT_FOUND; ErrorCode valid = validate_lengths(NULL, data_lengths, num_entities);MB_CHK_ERR(valid); if (num_entities > 0) { mValue.resize(data_lengths[num_entities - 1]); memcpy(&mValue[0], data_ptrs[num_entities - 1], mValue.size()); } return MB_SUCCESS; }