/* ****************************************************************************

LZArchive class - 22/01/2003
    by Thomas Maniero - last modified 22/01/2003

todo:

**************************************************************************** */

#ifndef _LZARCHIVE_H
#define _LZARCHIVE_H


#include "types.h"

#include "LZItem.h"

#include <stdlib.h>
#include <stdio.h>

#include <PocketFrog/PocketFrog.h>

#define LZA_MAGIC       0x617A6C2E
#define LZI_NAME_LENGTH 32


struct struct_LZAHeader {
    u32 magic;                 // magic, contiene il valore di ".lza"
    u32 numitems;              // numero LZItem nell'archivio
    u32 totallength;           // lunghezza totale archivio, con header
};
typedef struct_LZAHeader LZAHeader;


struct struct_LZIHeader {
    s8 name[LZI_NAME_LENGTH];  // nome dell'item/file
    u32 cprlength;             // lunghezza dati compressi
    u32 dcprlength;            // lunghezza dati decompressi
    u32 totallength;           // lunghezza totale item, con header
    bool compressed;           // data è compressa o no?
};
typedef struct_LZIHeader LZIHeader;



class LZArchive {

private:
    u32 m_numitems;
    u32 m_totallength;
    bool m_open;

    FILE *f;

public:
    LZArchive();
    ~LZArchive();

    bool open(const TCHAR *name);
    void close();


    bool read(const TCHAR *name, LZItem *lzi);
};



#endif

