sourcepawn/compiler/memfile.h
author David Anderson <dvander@alliedmods.net>
Sun Nov 25 18:50:13 2007 +0000 (2007-11-25)
changeset 1725 ea875bcbc286
parent 31 071b73cfcc65
permissions -rw-r--r--
small clarification to param2 in MenuAction_End
dvander@27
     1
#ifndef _INCLUDE_MEMFILE_H
dvander@27
     2
#define _INCLUDE_MEMFILE_H
dvander@27
     3
dvander@27
     4
#include <malloc.h>
dvander@27
     5
dvander@27
     6
typedef struct memfile_s
dvander@27
     7
{
dvander@27
     8
	char *name;
dvander@27
     9
	char *base;
dvander@27
    10
	long offs;
dvander@27
    11
	long usedoffs;
dvander@27
    12
	size_t size;
dvander@27
    13
	int _static;
dvander@27
    14
} memfile_t;
dvander@27
    15
dvander@31
    16
/**
dvander@31
    17
 * Creates a new memory file
dvander@31
    18
 * init is the initial size in bytes
dvander@31
    19
 */
dvander@27
    20
memfile_t *memfile_creat(const char *name, size_t init);
dvander@31
    21
dvander@31
    22
/**
dvander@31
    23
 * Frees the memory associated.
dvander@31
    24
 */
dvander@27
    25
void memfile_destroy(memfile_t *mf);
dvander@31
    26
dvander@31
    27
/**
dvander@31
    28
 * Seeks to a given offset (always from start)
dvander@31
    29
 */
dvander@27
    30
void memfile_seek(memfile_t *mf, long seek);
dvander@31
    31
dvander@31
    32
/**
dvander@31
    33
 * Writes to a memory buffer (expands as necessary).
dvander@31
    34
 * Returns 1 on success, 0 on failure.
dvander@31
    35
 */
dvander@31
    36
int memfile_write(memfile_t *mf, const void *buffer, size_t size);
dvander@31
    37
dvander@31
    38
/**
dvander@31
    39
 * Reads a number of bytes from a memory buffer.
dvander@31
    40
 * Returns the number of bytes read until the end was hit.
dvander@31
    41
 */
dvander@27
    42
size_t memfile_read(memfile_t *mf, void *buffer, size_t maxsize);
dvander@31
    43
dvander@31
    44
/**
dvander@31
    45
 * Returns the current position from the start.
dvander@31
    46
 */
dvander@27
    47
long memfile_tell(memfile_t *mf);
dvander@27
    48
dvander@31
    49
/**
dvander@31
    50
 * Resets all the states of the memory buffer.
dvander@31
    51
 * (does not actually free or zero memory)
dvander@31
    52
 */
dvander@31
    53
void memfile_reset(memfile_t *mf);
dvander@31
    54
dvander@27
    55
#endif //_INCLUDE_MEMFILE_H