• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*############################################################################
2   # Copyright 2016 Intel Corporation
3   #
4   # Licensed under the Apache License, Version 2.0 (the "License");
5   # you may not use this file except in compliance with the License.
6   # You may obtain a copy of the License at
7   #
8   #     http://www.apache.org/licenses/LICENSE-2.0
9   #
10   # Unless required by applicable law or agreed to in writing, software
11   # distributed under the License is distributed on an "AS IS" BASIS,
12   # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   # See the License for the specific language governing permissions and
14   # limitations under the License.
15   ############################################################################*/
16 
17 /*!
18  * \file
19  * \brief Buffer handling utilities interface.
20  */
21 #ifndef EXAMPLE_UTIL_BUFFUTIL_H_
22 #define EXAMPLE_UTIL_BUFFUTIL_H_
23 
24 #include <stddef.h>
25 #include "util/stdtypes.h"
26 
27 /// Options controlling how a buffer should be printed.
28 typedef struct BufferPrintOptions {
29   bool show_header;
30   bool show_offset;
31   bool show_hex;
32   bool show_ascii;
33   size_t bytes_per_group;
34   size_t groups_per_line;
35 } BufferPrintOptions;
36 
37 /// Toggle verbose logging
38 bool ToggleVerbosity();
39 
40 /// Test if file exists
41 /*!
42   \param[in] filename
43   The file path.
44 
45   \returns bool
46 */
47 bool FileExists(char const* filename);
48 
49 /// Get file size
50 /*!
51   \param[in] filename
52 
53   The file path.
54   \returns size of the file in bytes
55 */
56 size_t GetFileSize(char const* filename);
57 
58 /// Get file size
59 /*!
60   checks the size against an expected maximum size.
61   \param[in] filename
62 
63   The file path.
64   \param[in] max_size
65 
66   the maximum expected size of the file.
67   \returns size of the file in bytes
68 */
69 size_t GetFileSize_S(char const* filename, size_t max_size);
70 
71 /// Allocate a buffer of a fixed size
72 /*!
73   Logs an error message on failure.
74 
75   \param[out] buffer
76   A pointer to the buffer to allocate.
77   \param[in] size
78   the requested size of the buffer in bytes.
79 
80   \returns
81   A pointer to the allocated buffer or NULL if the allocation failed.
82 
83 */
84 void* AllocBuffer(size_t size);
85 
86 /// Allocate a buffer to hold the content of a file and load
87 /*!
88   Logs an error message on failure.
89 
90   \param[in] filename
91   The file path.
92   \param[out] size
93   The allocated size of the buffer in bytes (same as file size).
94 
95   \returns
96   A pointer to the allocated buffer or NULL if the allocation failed.
97 
98   \see ToggleVerbosity()
99 */
100 void* NewBufferFromFile(const char* filename, size_t* size);
101 
102 /// Read a buffer from a file with logging
103 /*!
104 
105   Verbosity of logging controlled by verbosity state
106 
107 
108   \param[in] filename
109   The file path.
110   \param[in,out] buf
111   The buffer.
112   \param[in] size
113   The size of the buffer in bytes.
114 
115   \returns 0 on success, non-zero failure
116 
117   \see ToggleVerbosity()
118 */
119 int ReadLoud(char const* filename, void* buf, size_t size);
120 
121 /// write a buffer from a file with logging
122 /*!
123 
124   Verbosity of logging controlled by verbosity state
125 
126   \param[in] buf
127   The buffer.
128   \param[in] size
129   The size of the buffer in bytes.
130   \param[in] filename
131   The file path.
132 
133   \returns 0 on success, non-zero failure
134 
135   \see ToggleVerbosity()
136 */
137 int WriteLoud(void* buf, size_t size, char const* filename);
138 
139 /// print a buffer to standard out using user provided options
140 /*!
141   \param[in] buf
142   The buffer.
143   \param[in] size
144   The size of the buffer in bytes.
145   \param[in] opts
146   The formatting options.
147 */
148 void PrintBufferOpt(const void* buffer, size_t size, BufferPrintOptions opts);
149 
150 /// print a buffer to standard out using default options
151 /*!
152   \param[in] buf
153   The buffer.
154   \param[in] size
155   The size of the buffer in bytes.
156 */
157 void PrintBuffer(const void* buffer, size_t size);
158 
159 #endif  // EXAMPLE_UTIL_BUFFUTIL_H_
160