| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 | /* 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 __cplusplusextern "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: */
 |