| /*############################################################################ |
| # Copyright 2016 Intel Corporation |
| # |
| # 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. |
| ############################################################################*/ |
| |
| /*! |
| * \file |
| * \brief Buffer handling utilities interface. |
| */ |
| #ifndef EXAMPLE_UTIL_BUFFUTIL_H_ |
| #define EXAMPLE_UTIL_BUFFUTIL_H_ |
| |
| #include <stddef.h> |
| #include "util/stdtypes.h" |
| |
| /// Options controlling how a buffer should be printed. |
| typedef struct BufferPrintOptions { |
| bool show_header; |
| bool show_offset; |
| bool show_hex; |
| bool show_ascii; |
| size_t bytes_per_group; |
| size_t groups_per_line; |
| } BufferPrintOptions; |
| |
| /// Toggle verbose logging |
| bool ToggleVerbosity(); |
| |
| /// Test if file exists |
| /*! |
| \param[in] filename |
| The file path. |
| |
| \returns bool |
| */ |
| bool FileExists(char const* filename); |
| |
| /// Get file size |
| /*! |
| \param[in] filename |
| |
| The file path. |
| \returns size of the file in bytes |
| */ |
| size_t GetFileSize(char const* filename); |
| |
| /// Get file size |
| /*! |
| checks the size against an expected maximum size. |
| \param[in] filename |
| |
| The file path. |
| \param[in] max_size |
| |
| the maximum expected size of the file. |
| \returns size of the file in bytes |
| */ |
| size_t GetFileSize_S(char const* filename, size_t max_size); |
| |
| /// Allocate a buffer of a fixed size |
| /*! |
| Logs an error message on failure. |
| |
| \param[out] buffer |
| A pointer to the buffer to allocate. |
| \param[in] size |
| the requested size of the buffer in bytes. |
| |
| \returns |
| A pointer to the allocated buffer or NULL if the allocation failed. |
| |
| */ |
| void* AllocBuffer(size_t size); |
| |
| /// Allocate a buffer to hold the content of a file and load |
| /*! |
| Logs an error message on failure. |
| |
| \param[in] filename |
| The file path. |
| \param[out] size |
| The allocated size of the buffer in bytes (same as file size). |
| |
| \returns |
| A pointer to the allocated buffer or NULL if the allocation failed. |
| |
| \see ToggleVerbosity() |
| */ |
| void* NewBufferFromFile(const char* filename, size_t* size); |
| |
| /// Read a buffer from a file with logging |
| /*! |
| |
| Verbosity of logging controlled by verbosity state |
| |
| |
| \param[in] filename |
| The file path. |
| \param[in,out] buf |
| The buffer. |
| \param[in] size |
| The size of the buffer in bytes. |
| |
| \returns 0 on success, non-zero failure |
| |
| \see ToggleVerbosity() |
| */ |
| int ReadLoud(char const* filename, void* buf, size_t size); |
| |
| /// write a buffer from a file with logging |
| /*! |
| |
| Verbosity of logging controlled by verbosity state |
| |
| \param[in] buf |
| The buffer. |
| \param[in] size |
| The size of the buffer in bytes. |
| \param[in] filename |
| The file path. |
| |
| \returns 0 on success, non-zero failure |
| |
| \see ToggleVerbosity() |
| */ |
| int WriteLoud(void* buf, size_t size, char const* filename); |
| |
| /// print a buffer to standard out using user provided options |
| /*! |
| \param[in] buf |
| The buffer. |
| \param[in] size |
| The size of the buffer in bytes. |
| \param[in] opts |
| The formatting options. |
| */ |
| void PrintBufferOpt(const void* buffer, size_t size, BufferPrintOptions opts); |
| |
| /// print a buffer to standard out using default options |
| /*! |
| \param[in] buf |
| The buffer. |
| \param[in] size |
| The size of the buffer in bytes. |
| */ |
| void PrintBuffer(const void* buffer, size_t size); |
| |
| #endif // EXAMPLE_UTIL_BUFFUTIL_H_ |