88 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			88 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
| /* See LICENSE.txt for the full license governing this code. */
 | |
| /**
 | |
|  * \file rwhelper.c
 | |
|  *
 | |
|  * Header file with some helper functions for working with SDL_RWops.
 | |
|  */
 | |
| 
 | |
| #include <SDL_rwops.h>
 | |
| 
 | |
| #ifndef SDL_visualtest_rwhelper_h_
 | |
| #define SDL_visualtest_rwhelper_h_
 | |
| 
 | |
| /** Length of the buffer in SDLVisualTest_RWHelperBuffer */
 | |
| #define RWOPS_BUFFER_LEN 256
 | |
| 
 | |
| /* Set up for C function definitions, even when using C++ */
 | |
| #ifdef __cplusplus
 | |
| extern "C" {
 | |
| #endif
 | |
| 
 | |
| /**
 | |
|  * Struct that is used as a buffer by the RW helper functions. Should be initialized by calling
 | |
|  * SDLVisualTest_RWHelperResetBuffer() before being used.
 | |
|  */
 | |
| typedef struct SDLVisualTest_RWHelperBuffer
 | |
| {
 | |
|     /*! Character buffer that data is read into */
 | |
|     char buffer[RWOPS_BUFFER_LEN];
 | |
|     /*! buffer[buffer_pos] is the next character to be read from the buffer */
 | |
|     int buffer_pos;
 | |
|     /*! Number of character read into the buffer */
 | |
|     int buffer_width;
 | |
| } SDLVisualTest_RWHelperBuffer;
 | |
| 
 | |
| /**
 | |
|  * Resets the buffer pointed to by \c buffer used by some of the helper functions.
 | |
|  * This function should be called when you're using one of the helper functions 
 | |
|  * with a new SDL_RWops object.
 | |
|  */
 | |
| void SDLVisualTest_RWHelperResetBuffer(SDLVisualTest_RWHelperBuffer* buffer);
 | |
| 
 | |
| /**
 | |
|  * Reads a single character using the SDL_RWops object pointed to by \c rw.
 | |
|  * This function reads data in blocks and stores them in the buffer pointed to by
 | |
|  * \c buffer, so other SDL_RWops functions should not be used in conjunction 
 | |
|  * with this function.
 | |
|  *
 | |
|  * \return The character that was read.
 | |
|  */
 | |
| char SDLVisualTest_RWHelperReadChar(SDL_RWops* rw,
 | |
|                                     SDLVisualTest_RWHelperBuffer* buffer);
 | |
| 
 | |
| /**
 | |
|  * Reads characters using the SDL_RWops object pointed to by \c rw into the
 | |
|  * character array pointed to by \c str (of size \c size) until either the 
 | |
|  * array is full or a new line is encountered. If \c comment_char is encountered,
 | |
|  * all characters from that position till the end of the line are ignored. The new line
 | |
|  * is not included as part of the buffer. Lines with only whitespace and comments
 | |
|  * are ignored. This function reads data in blocks and stores them in the buffer
 | |
|  * pointed to by \c buffer, so other SDL_RWops functions should not be used in
 | |
|  * conjunction with this function.
 | |
|  * 
 | |
|  * \return pointer to the string on success, NULL on failure or EOF.
 | |
|  */
 | |
| char* SDLVisualTest_RWHelperReadLine(SDL_RWops* rw, char* str, int size,
 | |
|                                      SDLVisualTest_RWHelperBuffer* buffer,
 | |
|                                      char comment_char);
 | |
| 
 | |
| /**
 | |
|  * Counts the number of lines that are not all whitespace and comments using the
 | |
|  * SDL_RWops object pointed to by \c rw. \c comment_char indicates the character
 | |
|  * used for comments. Uses the buffer pointed to by \c buffer to read data in blocks.
 | |
|  *
 | |
|  * \return Number of lines on success, -1 on failure.
 | |
|  */
 | |
| int SDLVisualTest_RWHelperCountNonEmptyLines(SDL_RWops* rw,
 | |
|                                              SDLVisualTest_RWHelperBuffer* buffer,
 | |
|                                              char comment_char);
 | |
| 
 | |
| /* Ends C function definitions when using C++ */
 | |
| #ifdef __cplusplus
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #endif /* SDL_visualtest_rwhelper_h_ */
 | |
| 
 | |
| /* vi: set ts=4 sw=4 expandtab: */
 |