JustAudio/io/idm.h

93 lines
2.5 KiB
C
Raw Normal View History

#ifndef IDM_H
#define IDM_H
#include <QObject>
#include <QByteArray>
#include <QMutex>
#include "int.h"
class Idm : public QObject
{
Q_OBJECT
public:
enum Flags
{
FIXED_KEY_LEN = 1
};
static const QByteArray TAG;
static const int MAX_MAJOR;
static const int MAX_MINOR;
static int CURRENT_MAJOR;
static int CURRENT_MINOR;
static int DEFAULT_INT_SIZE;
static int DEFAULT_FLAGS;
static int DEFAULT_KEY_LEN;
static bool verifyExHeader(const QByteArray &data, int major, int minor);
static bool rdExHeader(const QByteArray &data, int &major, int &minor, int &intSz, int &flgs, int &keyLen);
static QByteArray buildHeader(int major, int minor, int intSz, int flgs, int keyLen);
explicit Idm(const QByteArray &data, QObject *parent = 0);
explicit Idm(QObject *parent = 0);
void setVersion(int major, int minor);
void setFlags(int flgs);
void setIntSize(int bytes);
void wrHeader();
void setKeyLen(int len);
void loadData(const QByteArray &data);
bool insert(const QByteArray &key, const QByteArray &data);
bool insert(quint64 key, quint64 num);
bool insert(quint64 key, const QByteArray &data);
bool remove(const QByteArray &key);
bool remove(quint64 key);
bool rdHeader();
bool rdExHeader(const QByteArray &data);
quint64 intValue(quint64 key);
quint64 intValue(const QByteArray &key);
QByteArray value(const QByteArray &key);
QByteArray value(quint64 key);
QByteArray &getBuff();
private:
enum Operation
{
RELOAD,
GET_BUFF,
RD_HEADER,
WR_HEADER,
SET_KEY_LEN,
SET_FLAGS,
SET_INT_SIZE,
SET_VERSION,
RD_VALUE,
WR_VALUE,
RM_VALUE
};
QByteArray buffPtr;
int header;
int intSize;
int keyLen;
int flags;
void op(Operation opr,
const QByteArray &inA = QByteArray(),
const QByteArray &inB = QByteArray(),
QByteArray *out = 0,
int intA = 0,
int intB = 0,
bool *ok = 0);
void init();
bool findKey(int &addr, int &dataLen, const QByteArray &key);
QByteArray rdData(int, int, bool *ok = 0);
};
#endif // IDM_H