12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- #pragma once
- #include "foundation/types.h"
- #include "nx/nxstring.h"
- #include "nu/PtrDeque.h"
- #include "nu/ByteWriter.h"
- #include "nu/ByteReader.h"
- namespace APEv2
- {
- enum
- {
- ITEM_KEY_COMPARE_CASE_INSENSITIVE = 0,
- ITEM_KEY_COMPARE_CASE_SENSITIVE = 1,
- };
- class Item : public nu::PtrDequeNode
- {
- public:
- Item();
- ~Item();
- /* If successful, puts incremented data pointer in new_data, and new data size remaining in new_len */
- int Read(bytereader_t byte_reader);
- int Encode(bytewriter_t byte_writer) const;
- size_t EncodeSize() const;
- bool IsReadOnly();
- bool KeyMatch(const char *key, int compare=ITEM_KEY_COMPARE_CASE_INSENSITIVE);
- int Get(const void **data, size_t *len) const;
- int GetKey(const char **tag) const;
- int Set(nx_string_t value);
- int Set(const void *data, size_t len, int dataType);
- int SetKey(const char *tag);
- int New(size_t datalen, int data_type, void **bytes);
- uint32_t GetFlags() const;
- private:
- uint32_t flags;
- char *key;
- void *value;
- uint32_t len;
- };
- }
|