view dmpack.h @ 0:32250b436bca

Initial re-import.
author Matti Hamalainen <ccr@tnsp.org>
date Fri, 28 Sep 2012 01:54:23 +0300
parents
children bb14d7907eb2
line wrap: on
line source

/*
 * DMLib
 * -- PACK-file routines
 * Programmed and designed by Matti 'ccr' Hamalainen
 * (C) Copyright 2011 Tecnic Software productions (TNSP)
 */
#ifndef DMPACK_H
#define DMPACK_H
#include "dmlib.h"


#define	DPACK_IDENT     "TNSPDPCK"      // Magic ident
#define	DPACK_VERSION   (0x0120)        // Version
#define	DPACK_TMPSIZE   (128 * 1024)


typedef struct _DMPackEntry
{
    char    filename[DMRES_NAME_LEN];
    Uint32  size;              // Size (UNCOMPRESSED)
    Uint32  offset;            // Offset in pack file
    Uint32  length;            // (Compressed) data length
    
    Uint32  resFlags;          // Resource flags (used by resource handler)

    Uint32  privFlags;         // Private flags

    struct _DMPackEntry *next, *prev;
} DMPackEntry;


typedef struct
{
    DMPackEntry *entries;
    char *  filename;          // Filename & path
    FILE *  file;              // File
} DMPackFile;


typedef struct
{
    char    ident[8];          // Magic identifier
    Uint16  version;           // Version
    Uint32  dirEntries;        // Number of entries
    Uint32  dirOffset;         // Offset of the directory
} DMPackFileHeader;


DMPackEntry *  dm_pack_entry_new();
void           dm_pack_entry_free(DMPackEntry *);
void           dm_pack_entry_insert(DMPackEntry **, DMPackEntry *);
void           dm_pack_entry_delete(DMPackEntry **, DMPackEntry *);

DMPackEntry *  dm_pack_find(DMPackEntry *list, const char *filename);

int            dm_pack_open(const char *, DMPackFile **, BOOL);
int            dm_pack_close(DMPackFile *);
int            dm_pack_read(DMPackFile *, const char *, Uint8 **, size_t *);


#endif // DMPACK_H