Coverage Report

Created: 2023-12-13 14:58

src/zserio/FileUtil.h
Line
Count
Source
1
/**
2
 * \file
3
 * File utilities.
4
 *
5
 * These utilities are not used by generated code and they are provided only for user convenience.
6
 *
7
 * \note Please note that file operations allocate memory as needed and are not designed to use allocators.
8
 */
9
10
#ifndef ZSERIO_FILE_UTIL_H_INC
11
#define ZSERIO_FILE_UTIL_H_INC
12
13
#include "zserio/BitBuffer.h"
14
#include "zserio/BitStreamReader.h"
15
#include "zserio/BitStreamWriter.h"
16
17
namespace zserio
18
{
19
20
/**
21
 * Read file to bit buffer object.
22
 *
23
 * \param fileName File to read.
24
 *
25
 * \return Bit buffer representing the file contents.
26
 *
27
 * \throw CppRuntimeException When reading fails.
28
 */
29
BitBuffer readBufferFromFile(const std::string& fileName);
30
31
/**
32
 * Writes given buffer to file.
33
 *
34
 * \param buffer Buffer to write.
35
 * \param bitSize Buffer bit size.
36
 * \param fileName Name of the file to write.
37
 *
38
 * \throw CppRuntimeException When writing fails.
39
 */
40
void writeBufferToFile(const uint8_t* buffer, size_t bitSize, BitsTag, const std::string& fileName);
41
42
/**
43
 * Writes given buffer to file.
44
 *
45
 * Overloaded function provided for convenience.
46
 *
47
 * \param buffer Buffer to write.
48
 * \param byteSize Buffer byte size.
49
 * \param fileName Name of the file to write.
50
 *
51
 * \throw CppRuntimeException When writing fails.
52
 */
53
inline void writeBufferToFile(const uint8_t* buffer, size_t byteSize, const std::string& fileName)
54
1
{
55
1
    writeBufferToFile(buffer, byteSize * 8, BitsTag(), fileName);
56
1
}
57
58
/**
59
 * Writes given bit buffer to file.
60
 *
61
 * Overloaded function provided for convenience.
62
 *
63
 * \param bitBuffer Bit buffer to write.
64
 * \param fileName Name of the file to write.
65
 *
66
 * \throw CppRuntimeException When writing fails.
67
 */
68
template <typename ALLOC>
69
inline void writeBufferToFile(const BasicBitBuffer<ALLOC>& bitBuffer, const std::string& fileName)
70
4
{
71
4
    writeBufferToFile(bitBuffer.getBuffer(), bitBuffer.getBitSize(), BitsTag(), fileName);
72
4
}
73
74
/**
75
 * Writes write-buffer of the given bit stream writer to file.
76
 *
77
 * Overloaded function provided for convenience.
78
 *
79
 * \param writer Bit stream writer to use.
80
 * \param fileName Name of the file to write.
81
 *
82
 * \throw CppRuntimeException When writing fails.
83
 */
84
inline void writeBufferToFile(const BitStreamWriter& writer, const std::string& fileName)
85
1
{
86
1
    writeBufferToFile(writer.getWriteBuffer(), writer.getBitPosition(), BitsTag(), fileName);
87
1
}
88
89
} // namespace zserio
90
91
#endif // ZSERIO_FILE_UTIL_H_INC