#pragma once #include "foundation/types.h" #include "nu/ByteWriter.h" class nstest; namespace APEv2 { class Header { friend class ::nstest; public: Header(); Header(const void *data); void SetSize(uint32_t size) { this->size = size; } void SetFlags(uint32_t flags) { this->flags = flags; } void SetItems(uint32_t items) { this->items = items; } bool Valid() const; uint32_t TagSize() const; bool HasHeader() const; bool HasFooter() const; bool IsFooter() const; bool IsHeader() const; int Encode(bytewriter_t byte_writer) const; uint32_t GetFlags() const; enum { SIZE=32, }; private: uint8_t preamble[8]; uint32_t version; uint32_t size; uint32_t items; uint32_t flags; uint64_t reserved; }; }