56 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef _INCLUDE_MEMFILE_H
 | |
| #define _INCLUDE_MEMFILE_H
 | |
| 
 | |
| #include <stdlib.h>
 | |
| 
 | |
| 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
 |