46 lines
1.1 KiB
C++
46 lines
1.1 KiB
C++
#ifndef NULLSOFT_IN_MP3_APEV2_H
|
|
#define NULLSOFT_IN_MP3_APEV2_H
|
|
|
|
#include "../apev2/tag.h"
|
|
|
|
class APE : private APEv2::Tag
|
|
{
|
|
public:
|
|
APE();
|
|
bool HasData() { return hasData; }
|
|
bool IsDirty() { return dirty; }
|
|
void ResetDirty() { dirty=0; hasData = true; }
|
|
void Clear();
|
|
void MarkClear();
|
|
int Decode(const void *data, size_t len);
|
|
|
|
// return -1 for empty, 1 for OK, 0 for "don't understand tag name"
|
|
int GetString(const char *tag, wchar_t *data, int dataLen);
|
|
int SetString(const char *tag, const wchar_t *data);
|
|
|
|
int AddKeyValue(const char *key, const wchar_t *data);
|
|
int SetKeyValueByIndex(size_t index, const char *key, const wchar_t *data);
|
|
int RemoveItem(size_t index);
|
|
|
|
int AddItem();
|
|
|
|
|
|
static const char *MapApeKeyToWinampKey(const char *ape_key);
|
|
static const wchar_t *MapApeKeyToWinampKeyW(const char *ape_key);
|
|
static const char *MapWinampKeyToApeKey(const char *winamp_key);
|
|
|
|
using APEv2::Tag::EnumValue;
|
|
using APEv2::Tag::EncodeSize;
|
|
using APEv2::Tag::Encode;
|
|
using APEv2::Tag::FindItemByKey;
|
|
using APEv2::Tag::GetNumItems;
|
|
using APEv2::Tag::IsItemReadOnly;
|
|
using APEv2::Tag::SetFlags;
|
|
|
|
private:
|
|
bool hasData;
|
|
bool dirty;
|
|
};
|
|
|
|
|
|
#endif |