Edit

kc3-lang/SDL/visualtest/include/SDL_visualtest_rwhelper.h

Branch :

  • Show log

    Commit

  • Author : David Ludwig
    Date : 2014-04-09 21:29:19
    Hash : 3dcb451f
    Message : Added a README file regarding WinRT support To note, this file is currently formatted with CRLF line endings, rather than LF, to allow the file to be viewed with Notepad.

  • visualtest/include/SDL_visualtest_rwhelper.h
  • /* 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 */