core/TextParsers.h
author Borja Ferrer <faluco@alliedmods.net>
Sat Feb 23 20:18:49 2008 +0000 (2008-02-23)
changeset 1894 e6efc8ffa47a
parent 1815 b0de032adc8f
child 1947 e73a1e51833b
permissions -rw-r--r--
Executable memory is now provided by MM:S's allocator, this should reduce virtual memory usage.
     1 /**
     2  * vim: set ts=4 :
     3  * =============================================================================
     4  * SourceMod
     5  * Copyright (C) 2004-2007 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 "sm_globals.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 	public SMGlobalClass
    52 {
    53 public:
    54 	TextParsers();
    55 public: //SMGlobalClass
    56 	void OnSourceModAllInitialized();
    57 public:
    58 	bool ParseFile_INI(const char *file, 
    59 		ITextListener_INI *ini_listener,
    60 		unsigned int *line,
    61 		unsigned int *col);
    62 
    63 	SMCError ParseFile_SMC(const char *file, 
    64 		ITextListener_SMC *smc_listener, 
    65 		SMCStates *states);
    66 
    67 	SMCError ParseSMCFile(const char *file,
    68 			ITextListener_SMC *smc_listener,
    69 			SMCStates *states,
    70 			char *buffer,
    71 			size_t maxsize);
    72 
    73 	unsigned int GetUTF8CharBytes(const char *stream);
    74 
    75 	const char *GetSMCErrorString(SMCError err);
    76 	bool IsWhitespace(const char *stream);
    77 private:
    78 	SMCError ParseString_SMC(const char *stream, 
    79 		ITextListener_SMC *smc,
    80 		SMCStates *states);
    81 	SMCError ParseStream_SMC(void *stream, 
    82 		STREAMREADER srdr,
    83 		ITextListener_SMC *smc,
    84 		SMCStates *states);
    85 
    86 };
    87 
    88 extern TextParsers g_TextParser;
    89 
    90 #endif //_INCLUDE_SOURCEMOD_TEXTPARSERS_H_
    91