Add SMCParser.ParseString (#1817)
This commit is contained in:
parent
8538233985
commit
5d391fda07
@ -29,6 +29,8 @@
|
||||
* Version: $Id$
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#include "common_logic.h"
|
||||
#include <ITextParsers.h>
|
||||
#include <ISourceMod.h>
|
||||
@ -264,6 +266,32 @@ static cell_t SMC_ParseFile(IPluginContext *pContext, const cell_t *params)
|
||||
return (cell_t)p_err;
|
||||
}
|
||||
|
||||
static cell_t SMC_ParseString(IPluginContext *pContext, const cell_t *params)
|
||||
{
|
||||
OpenHandle<ParseInfo> parse(pContext, params[1], g_TypeSMC);
|
||||
if (!parse.Ok())
|
||||
return 0;
|
||||
|
||||
char *str;
|
||||
pContext->LocalToString(params[2], &str);
|
||||
|
||||
SMCStates states;
|
||||
SMCError p_err = textparsers->ParseSMCStream(str,
|
||||
strlen(str),
|
||||
parse,
|
||||
&states,
|
||||
NULL,
|
||||
0);
|
||||
|
||||
cell_t *c_line, *c_col;
|
||||
pContext->LocalToPhysAddr(params[3], &c_line);
|
||||
pContext->LocalToPhysAddr(params[4], &c_col);
|
||||
|
||||
*c_line = states.line;
|
||||
*c_col = states.col;
|
||||
return (cell_t)p_err;
|
||||
}
|
||||
|
||||
static cell_t SMC_GetErrorString(IPluginContext *pContext, const cell_t *params)
|
||||
{
|
||||
const char *str = textparsers->GetSMCErrorString((SMCError)params[1]);
|
||||
@ -334,6 +362,7 @@ REGISTER_NATIVES(textNatives)
|
||||
// Transitional syntax support.
|
||||
{"SMCParser.SMCParser", SMC_CreateParser},
|
||||
{"SMCParser.ParseFile", SMC_ParseFile},
|
||||
{"SMCParser.ParseString", SMC_ParseString},
|
||||
{"SMCParser.OnStart.set", SMC_SetParseStart},
|
||||
{"SMCParser.OnEnd.set", SMC_SetParseEnd},
|
||||
{"SMCParser.OnEnterSection.set", SMCParser_OnEnterSection_set},
|
||||
|
@ -147,6 +147,14 @@ methodmap SMCParser < Handle
|
||||
// @return An SMCParseError result.
|
||||
public native SMCError ParseFile(const char[] file, int &line = 0, int &col = 0);
|
||||
|
||||
// Parses raw UTF-8 text as an SMC file.
|
||||
//
|
||||
// @param string A string containing an SMC file.
|
||||
// @param line An optional variable to store the last line number read.
|
||||
// @param col An optional variable to store the last column number read.
|
||||
// @return An SMCParseError result.
|
||||
public native SMCError ParseString(const char[] string, int &line = 0, int &col = 0);
|
||||
|
||||
// Sets the callback for receiving SMC_ParseStart events.
|
||||
property SMC_ParseStart OnStart {
|
||||
public native set(SMC_ParseStart func);
|
||||
|
Loading…
Reference in New Issue
Block a user