⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mes_parser.h

📁 windows ce 下的3D桌面
💻 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 + -