/*############################################################################ # 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 #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_