2008-03-30 09:00:22 +02:00
|
|
|
#ifndef _INCLUDE_MEMFILE_H
|
|
|
|
#define _INCLUDE_MEMFILE_H
|
|
|
|
|
2008-12-23 07:33:37 +01:00
|
|
|
#include <stdlib.h>
|
2008-03-30 09:00:22 +02:00
|
|
|
|
|
|
|
typedef struct memfile_s
|
|
|
|
{
|
|
|
|
char *name;
|
|
|
|
char *base;
|
|
|
|
long offs;
|
|
|
|
long usedoffs;
|
|
|
|
size_t size;
|
|
|
|
int _static;
|
|
|
|
} memfile_t;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Creates a new memory file
|
|
|
|
* init is the initial size in bytes
|
|
|
|
*/
|
|
|
|
memfile_t *memfile_creat(const char *name, size_t init);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Frees the memory associated.
|
|
|
|
*/
|
|
|
|
void memfile_destroy(memfile_t *mf);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Seeks to a given offset (always from start)
|
|
|
|
*/
|
|
|
|
void memfile_seek(memfile_t *mf, long seek);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Writes to a memory buffer (expands as necessary).
|
|
|
|
* Returns 1 on success, 0 on failure.
|
|
|
|
*/
|
|
|
|
int memfile_write(memfile_t *mf, const void *buffer, size_t size);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Reads a number of bytes from a memory buffer.
|
|
|
|
* Returns the number of bytes read until the end was hit.
|
|
|
|
*/
|
|
|
|
size_t memfile_read(memfile_t *mf, void *buffer, size_t maxsize);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Returns the current position from the start.
|
|
|
|
*/
|
|
|
|
long memfile_tell(memfile_t *mf);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Resets all the states of the memory buffer.
|
|
|
|
* (does not actually free or zero memory)
|
|
|
|
*/
|
|
|
|
void memfile_reset(memfile_t *mf);
|
|
|
|
|
|
|
|
#endif //_INCLUDE_MEMFILE_H
|