tools/gdc-psyfork/TextParsers.h
author Nicholas Hastings <skamonkey@gmail.com>
Mon Jul 02 23:27:22 2012 -0400 (2012-07-02)
changeset 3572 a3b3cb039d7a
parent 3513 50b5b98b3400
permissions -rw-r--r--
Updated CS:S gamedata.
     1 /**
     2  * vim: set ts=4 :
     3  * =============================================================================
     4  * SourceMod
     5  * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
     6  * =============================================================================
     7  *
     8  * This program is free software; you can redistribute it and/or modify it under
     9  * the terms of the GNU General Public License, version 3.0, as published by the
    10  * Free Software Foundation.
    11  * 
    12  * This program is distributed in the hope that it will be useful, but WITHOUT
    13  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
    14  * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
    15  * details.
    16  *
    17  * You should have received a copy of the GNU General Public License along with
    18  * this program.  If not, see <http://www.gnu.org/licenses/>.
    19  *
    20  * As a special exception, AlliedModders LLC gives you permission to link the
    21  * code of this program (as well as its derivative works) to "Half-Life 2," the
    22  * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
    23  * by the Valve Corporation.  You must obey the GNU General Public License in
    24  * all respects for all other code used.  Additionally, AlliedModders LLC grants
    25  * this exception to all derivative works.  AlliedModders LLC defines further
    26  * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
    27  * or <http://www.sourcemod.net/license.php>.
    28  *
    29  * Version: $Id$
    30  */
    31 
    32 #ifndef _INCLUDE_SOURCEMOD_TEXTPARSERS_H_
    33 #define _INCLUDE_SOURCEMOD_TEXTPARSERS_H_
    34 
    35 #include <ITextParsers.h>
    36 #include "gdc.h"
    37 
    38 using namespace SourceMod;
    39 
    40 /**
    41  * @param void *			IN: Stream pointer
    42  * @param char *			IN/OUT: Stream buffer
    43  * @param size_t			IN: Maximum size of buffer
    44  * @param unsigned int *	OUT: Number of bytes read (0 = end of stream)
    45  * @return					True on success, false on failure
    46  */
    47 typedef bool (*STREAMREADER)(void *, char *, size_t, unsigned int *);
    48 
    49 class TextParsers : 
    50 	public ITextParsers
    51 {
    52 public:
    53 	TextParsers();
    54 public:
    55 	bool ParseFile_INI(const char *file, 
    56 		ITextListener_INI *ini_listener,
    57 		unsigned int *line,
    58 		unsigned int *col);
    59 
    60 	SMCError ParseFile_SMC(const char *file, 
    61 		ITextListener_SMC *smc_listener, 
    62 		SMCStates *states);
    63 
    64 	SMCError ParseSMCFile(const char *file,
    65 			ITextListener_SMC *smc_listener,
    66 			SMCStates *states,
    67 			char *buffer,
    68 			size_t maxsize);
    69 
    70 	SMCError ParseSMCStream(const char *stream,
    71 			size_t length,
    72 			ITextListener_SMC *smc_listener,
    73 			SMCStates *states,
    74 			char *buffer,
    75 			size_t maxsize);
    76 
    77 	unsigned int GetUTF8CharBytes(const char *stream);
    78 
    79 	const char *GetSMCErrorString(SMCError err);
    80 	bool IsWhitespace(const char *stream);
    81 private:
    82 	SMCError ParseStream_SMC(void *stream, 
    83 		STREAMREADER srdr,
    84 		ITextListener_SMC *smc,
    85 		SMCStates *states);
    86 
    87 };
    88 
    89 extern TextParsers g_TextParser;
    90 
    91 #endif //_INCLUDE_SOURCEMOD_TEXTPARSERS_H_
    92