| /* See COPYING.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 */ |