ActiveLib
Loading...
Searching...
No Matches
DataFormat.h
1
6#ifndef ACTIVE_UTILITY_DATA_FORMAT
7#define ACTIVE_UTILITY_DATA_FORMAT
8
9#include "Active/Utility/Memory.h"
10#include "Active/Utility/TextEncoding.h"
11
12#include <bit>
13#include <memory>
14
15namespace active::utility {
16
20 struct DataFormat {
21
22 // MARK: - Types
23
24 //Optional format
25 using Option = std::optional<DataFormat>;
26
27 inline static constexpr bool defaultEndian{std::endian::native == std::endian::big};
28
35 static std::optional<std::pair<DataFormat, Memory::size_type>> fromBOM(const char* bom, Memory::size_type len);
36
37 // MARK: - Constructors
38
48 DataFormat(bool withBOM, bool asBigEndian = defaultEndian) : isBigEndian{asBigEndian}, isBOM{withBOM} {}
55 DataFormat(TextEncoding encode, bool withBOM = false, bool asBigEndian = defaultEndian) :
56 encoding{encode}, isBigEndian{asBigEndian}, isBOM{withBOM} {}
57
58 // MARK: - Public variables
59
61 TextEncoding encoding = TextEncoding::UTF8;
63 bool isBigEndian = defaultEndian;
65 bool isBOM = false;
66
67 // MARK: - Functions (const)
68
73 Memory::Option toBOM() const;
74 };
75
76}
77
78#endif //ACTIVE_UTILITY_DATA_FORMAT
std::optional< Memory > Option
Unique pointer.
Definition Memory.h:30
std::size_t size_type
Memory size/position type.
Definition Memory.h:26
Definition Base64Transport.h:11
Definition DataFormat.h:20
bool isBOM
True if the text is preceded by a BOM.
Definition DataFormat.h:65
DataFormat(TextEncoding encode, bool withBOM=false, bool asBigEndian=defaultEndian)
Definition DataFormat.h:55
static std::optional< std::pair< DataFormat, Memory::size_type > > fromBOM(const char *bom, Memory::size_type len)
Definition DataFormat.cpp:35
DataFormat()
Definition DataFormat.h:42
DataFormat(bool withBOM, bool asBigEndian=defaultEndian)
Definition DataFormat.h:48
bool isBigEndian
True if byte ordering is big-endian.
Definition DataFormat.h:63
Memory::Option toBOM() const
Definition DataFormat.cpp:57
TextEncoding encoding
The text encoding.
Definition DataFormat.h:61