diff options
author | Eric Kunze <eric.kunze@arm.com> | 2021-04-26 11:06:57 -0700 |
---|---|---|
committer | Eric Kunze <eric.kunze@arm.com> | 2021-04-26 15:52:21 -0700 |
commit | 2364dcd7241d730021bf68e000e5a6411b9f09d1 (patch) | |
tree | 8dc109b1afb45b14f579ac90ca5500fec46297ca /include/numpy_utils.h | |
parent | dd12652f76820540fe7d03a7e940b6441e1c9c44 (diff) | |
download | serialization_lib-2364dcd7241d730021bf68e000e5a6411b9f09d1.tar.gz |
Initial commit of serialization library code
Change-Id: Ie09a7245176aa799e59622e5118b145833b23590
Signed-off-by: Eric Kunze <eric.kunze@arm.com>
Diffstat (limited to 'include/numpy_utils.h')
-rw-r--r-- | include/numpy_utils.h | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/include/numpy_utils.h b/include/numpy_utils.h new file mode 100644 index 0000000..c64bc17 --- /dev/null +++ b/include/numpy_utils.h @@ -0,0 +1,81 @@ + +// Copyright (c) 2020-2021, ARM Limited. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef _TOSA_NUMPY_UTILS_H +#define _TOSA_NUMPY_UTILS_H + +#include <cassert> +#include <cctype> +#include <cstdint> +#include <cstdio> +#include <cstdlib> +#include <cstring> +#include <vector> + +class NumpyUtilities +{ +public: + enum NPError + { + NO_ERROR = 0, + FILE_NOT_FOUND, + FILE_IO_ERROR, + FILE_TYPE_MISMATCH, + HEADER_PARSE_ERROR, + BUFFER_SIZE_MISMATCH, + }; + + static NPError readFromNpyFile(const char* filename, const uint32_t elems, float* databuf); + + static NPError readFromNpyFile(const char* filename, const uint32_t elems, int32_t* databuf); + + static NPError readFromNpyFile(const char* filename, const uint32_t elems, int64_t* databuf); + + static NPError readFromNpyFile(const char* filename, const uint32_t elems, bool* databuf); + + static NPError writeToNpyFile(const char* filename, const std::vector<int32_t>& shape, const bool* databuf); + + static NPError writeToNpyFile(const char* filename, const uint32_t elems, const bool* databuf); + + static NPError writeToNpyFile(const char* filename, const std::vector<int32_t>& shape, const int32_t* databuf); + + static NPError writeToNpyFile(const char* filename, const uint32_t elems, const int32_t* databuf); + + static NPError writeToNpyFile(const char* filename, const std::vector<int32_t>& shape, const int64_t* databuf); + + static NPError writeToNpyFile(const char* filename, const uint32_t elems, const int64_t* databuf); + + static NPError writeToNpyFile(const char* filename, const std::vector<int32_t>& shape, const float* databuf); + + static NPError writeToNpyFile(const char* filename, const uint32_t elems, const float* databuf); + +private: + static NPError writeToNpyFileCommon(const char* filename, + const char* dtype_str, + const size_t elementsize, + const std::vector<int32_t>& shape, + const void* databuf, + bool bool_translate); + static NPError readFromNpyFileCommon(const char* filename, + const char* dtype_str, + const size_t elementsize, + const uint32_t elems, + void* databuf, + bool bool_translate); + static NPError checkNpyHeader(FILE* infile, const uint32_t elems, const char* dtype_str); + static NPError writeNpyHeader(FILE* outfile, const std::vector<int32_t>& shape, const char* dtype_str); +}; + +#endif // _TOSA_NUMPY_UTILS_H |