// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. #include "lib/Api/pch/pch.h" #include "impl/StringData.h" namespace _winml { string_data::string_data(size_t size) : buffer_(size) {} std::shared_ptr<_winml::idata> string_data::create(size_t size) { return std::make_shared(size); } size_t string_data::num_elements() { return buffer_.size(); } size_t string_data::size_in_bytes() { WINML_THROW_HR(E_UNEXPECTED); } size_t string_data::num_buffers() { return 1; } bool string_data::flush() { // Vacuously true return true; } std::vector& string_data::buffers() { WINML_THROW_HR(E_UNEXPECTED); } gsl::span string_data::buffer(bool /*should_sync_buffer*/) { return gsl::span(reinterpret_cast(buffer_.data()), buffer_.size()); } void string_data::set(size_t num_elements, const std::string_view* data) { WINML_THROW_HR_IF_FALSE_MSG( E_INVALIDARG, num_elements <= buffer_.size(), "Argument size (%d) exceeds the tensor size (%d).", static_cast(num_elements), static_cast(buffer_.size())); // Copy std::copy(data, data + num_elements, buffer_.begin()); } void string_data::set(size_t /*data_size*/, const byte* /*data*/) { WINML_THROW_HR(E_UNEXPECTED); } std::vector& string_data::get_backing_vector() { return buffer_; } } // namespace _winml