📄 mes_parser.h
字号:
//------------------------------------------------------------------------------
//
// Copyright (C) 2003 MagicEyes Digital Co., Ltd All Rights Reserved
// MagicEyes Digital Co. Proprietary & Confidential
//
// MAGICEYES INFORMS THAT THIS CODE AND INFORMATION IS PROVIDED "AS IS" BASE AND
// WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
//
// Module :
// File : mes_parser.h
// Description:
// Author : Gamza(nik@mesdigital.com)
// Export :
// History :
// 2008/01/03 Gamza first implementation
//------------------------------------------------------------------------------
#ifndef _MES_PARSER_H
#define _MES_PARSER_H
#pragma warning(push,3)
#include <windows.h>
#pragma warning(pop)
#pragma warning(disable:4514)
#ifndef MES_PARSER_API
# ifndef UNDER_CE
# define MES_PARSER_API
# else
# ifdef MES_PARSE_EXPORTS
# define MES_PARSER_API __declspec(dllexport)
# else
# define MES_PARSER_API __declspec(dllimport)
# endif
# endif // UNDER_CE
#endif // MES_PARSER_API
#ifdef __cplusplus
extern "C" {
#endif
typedef struct tagMESPARSER* HMESPARSER ;
typedef struct tagMESPARSERNODE* HMESPARSERNODE ;
typedef struct tagMESPARSERPROPERTY* HMESPARSERPROPERTY;
typedef struct tagMESPARSERVALUE* HMESPARSERVALUE;
// script { node_list }
MES_PARSER_API HMESPARSER MesParser_CreateFromMemory ( const char* pScriptString, void (*pfnOutputErrorMsg)(const char * szMsg) );
MES_PARSER_API HMESPARSER MesParser_CreateFromFile ( const char* pScriptFileName, void (*pfnOutputErrorMsg)(const char * szMsg) );
MES_PARSER_API void MesParser_Destory( HMESPARSER hParser );
MES_PARSER_API HMESPARSERNODE MesParser_GetRootNode( HMESPARSER hParser );
MES_PARSER_API const char* MesParser_GetStringPointer( HMESPARSER hParser, const char* pString );
// node { property_list, node_list }
MES_PARSER_API const char* MesParser_GetNodeName ( HMESPARSERNODE hNode );
MES_PARSER_API int MesParser_GetNumberOfProperties( HMESPARSERNODE hNode );
MES_PARSER_API HMESPARSERPROPERTY MesParser_GetProperty ( HMESPARSERNODE hNode, int Index );
MES_PARSER_API int MesParser_GetNumberOfChildNodes( HMESPARSERNODE hNode );
MES_PARSER_API HMESPARSERNODE MesParser_GetChildNode ( HMESPARSERNODE hNode, int Index );
// property { name value_list }
MES_PARSER_API const char* MesParser_GetPropertyName ( HMESPARSERPROPERTY hProperty );
MES_PARSER_API int MesParser_GetNumberOfValues( HMESPARSERPROPERTY hProperty );
MES_PARSER_API HMESPARSERVALUE MesParser_GetValue ( HMESPARSERPROPERTY hProperty, int Index );
// value
typedef enum
{
MESPARSETYPE_IDENTIFIER = 256,
MESPARSETYPE_STRING,
MESPARSETYPE_UINT,
MESPARSETYPE_INT,
MESPARSETYPE_FLOAT,
MESPARSETYPE_INVALID = 0x7FFFFFFF
} MESPARSETYPE;
MES_PARSER_API MESPARSETYPE MesParser_GetValueType ( HMESPARSERVALUE hValue );
MES_PARSER_API const char* MesParser_GetIdentifier( HMESPARSERVALUE hValue );
MES_PARSER_API const char* MesParser_GetString ( HMESPARSERVALUE hValue );
MES_PARSER_API unsigned int MesParser_GetUInt ( HMESPARSERVALUE hValue );
MES_PARSER_API int MesParser_GetInt ( HMESPARSERVALUE hValue );
MES_PARSER_API float MesParser_GetFloat ( HMESPARSERVALUE hValue );
#ifdef __cplusplus
};
#endif
#endif // _MES_PARSER_H
/*
//------------------------------------------------------------------------
//
// Sample
//
//------------------------------------------------------------------------
const char test_script[] =
{
"\n\
mes_script v1.0.0\n\
Menu\n\
{\n\
pos = 100,100.0f,\"test\";\n\
size = 50,-5,IDENTYFIER;\n\
Button\n\
{\n\
pos = 30,40.0f;\n\
size = -50.0f,5;\n\
}\n\
Button\n\
{\n\
pos = 30,17;\n\
size = 50,-5;\n\
}\n\
}\n\
"
};
void PrintPropertyInfo( HMESPARSERPROPERTY hProperty )
{
printf( "%s = ", MesParser_GetPropertyName(hProperty) );
int numberofvalues = MesParser_GetNumberOfValues( hProperty );
for( int i=0; i<numberofvalues; i++ )
{
HMESPARSERVALUE value = MesParser_GetValue( hProperty, i );
switch( MesParser_GetValueType( value ) )
{
case MESPARSETYPE_IDENTIFIER:
printf( "%s ", MesParser_GetIdentifier( value ) );
break;
case MESPARSETYPE_STRING:
printf( "\"%s\" ", MesParser_GetString( value ) );
break;
case MESPARSETYPE_UINT:
printf( "0x%08x ", MesParser_GetUInt(value) );
break;
case MESPARSETYPE_INT:
printf( "%d ", MesParser_GetInt(value) );
break;
case MESPARSETYPE_FLOAT:
printf( "%f ", MesParser_GetFloat(value) );
break;
default:
printf( "[*E: Invalid value] " );
}
}
printf( "\n" );
}
void PrintNodeInfo( HMESPARSERNODE hNode )
{
printf( "%s\n", MesParser_GetNodeName( hNode ) );
int numberofproperties = MesParser_GetNumberOfProperties( hNode );
int numberofchildnodes = MesParser_GetNumberOfChildNodes( hNode );
int i;
for( i=0; i<numberofproperties; i++ )
{
PrintPropertyInfo( MesParser_GetProperty( hNode, i ) );
}
for( i=0; i<numberofchildnodes; i++ )
{
PrintNodeInfo( MesParser_GetChildNode( hNode, i ) );
}
}
void OutputMessage( const char* szMsg )
{
printf( "%s", szMsg );
}
void main( void )
{
HMESPARSER parser = MesParser_CreateFromMemory( test_script, OutputMessage );
//HMESPARSER parser = MesParser_CreateFromFile( "test.txt", OutputMessage );
if( ! parser ){ return; }
PrintNodeInfo( MesParser_GetRootNode( parser ) );
MesParser_Destory( parser );
MES_MEMORY_DEBUG_ReportMemoryLeak();
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -