mirror of
https://github.com/corda/corda.git
synced 2025-01-24 21:37:05 +00:00
6662022bf8
Signed-off-by: Li, Xun <xun.li@email.com>
147 lines
3.4 KiB
C
147 lines
3.4 KiB
C
/*############################################################################
|
|
# 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);
|
|
|
|
/// 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_
|