1 #ifndef TAG_PARSER_EBMLELEMENT_H
2 #define TAG_PARSER_EBMLELEMENT_H
7 #include "../genericfileelement.h"
9 #include <c++utilities/conversion/stringbuilder.h>
10 #include <c++utilities/conversion/stringconversion.h>
19 class MatroskaContainer;
37 std::string idToString()
const;
38 bool isParent()
const;
39 bool isPadding()
const;
40 std::uint64_t firstChildOffset()
const;
41 std::string readString();
42 std::uint64_t readUInteger();
46 static std::uint8_t calculateSizeDenotationLength(std::uint64_t size);
48 static std::uint8_t makeSizeDenotation(std::uint64_t size,
char *buff);
49 static std::uint8_t makeSizeDenotation(std::uint64_t size,
char *buff, std::uint8_t minBytes);
50 static std::uint8_t calculateUIntegerLength(std::uint64_t integer);
51 static std::uint8_t makeUInteger(std::uint64_t value,
char *buff);
52 static std::uint8_t makeUInteger(std::uint64_t value,
char *buff, std::uint8_t minBytes);
53 static void makeSimpleElement(std::ostream &stream,
IdentifierType id, std::uint64_t content);
54 static void makeSimpleElement(std::ostream &stream,
IdentifierType id,
const std::string &content);
55 static void makeSimpleElement(std::ostream &stream,
IdentifierType id,
const char *data, std::size_t dataSize);
65 std::string parsingContext()
const;
76 return argsToString(
'0',
'x', numberToString(
id(), 16),
' ',
'\"', name,
'\"');
78 return "0x" + numberToString(
id(), 16);
90 using namespace EbmlIds;
91 using namespace MatroskaIds;
165 #endif // TAG_PARSER_EBMLELEMENT_H