예제 #1
0
unsigned int MeowPinyin::Solute(WCHAR * _input) 
{
	if (_input == NULL)
	{ 
		return 0; 
	}

	unsigned int len = wcslen(_input);
	if (len < MEOW_MAXLENGTH)
	{
		wcsncpy_s(input, _input, len);
		inputlength = len;
	}
	else
	{
		wcsncpy_s(input, _input, MEOW_MAXLENGTH - 1);
		inputlength = MEOW_MAXLENGTH - 1;
		input[MEOW_MAXLENGTH - 1] = L'\0';
	}

	segments.clear();
	solution.clear();
	results.clear();

	DoSplitIntoSegments();
	ParseSegments();
	GenerateResult();
	return 1;
}
예제 #2
0
파일: config.c 프로젝트: Aliandrana/snesdev
static void ParseConfig (void)
/* Parse the config file */
{
    static const IdentTok BlockNames [] = {
	{   "MEMORY",  	CFGTOK_MEMORY	},
	{   "FILES",    CFGTOK_FILES    },
        {   "SEGMENTS", CFGTOK_SEGMENTS },
	{   "FORMATS", 	CFGTOK_FORMATS  },
	{   "FEATURES", CFGTOK_FEATURES	},
	{   "SYMBOLS",	CFGTOK_SYMBOLS 	},
    };
    cfgtok_t BlockTok;

    do {

	/* Read the block ident */
       	CfgSpecialToken (BlockNames, ENTRY_COUNT (BlockNames), "Block identifier");
	BlockTok = CfgTok;
	CfgNextTok ();

	/* Expected a curly brace */
	CfgConsume (CFGTOK_LCURLY, "`{' expected");

	/* Read the block */
	switch (BlockTok) {

	    case CFGTOK_MEMORY:
	     	ParseMemory ();
	     	break;

	    case CFGTOK_FILES:
	     	ParseFiles ();
	     	break;

	    case CFGTOK_SEGMENTS:
	     	ParseSegments ();
	     	break;

	    case CFGTOK_FORMATS:
	     	ParseFormats ();
	     	break;

	    case CFGTOK_FEATURES:
		ParseFeatures ();
		break;

	    case CFGTOK_SYMBOLS:
		ParseSymbols ();
		break;

	    default:
	     	FAIL ("Unexpected block token");

	}

	/* Skip closing brace */
	CfgConsume (CFGTOK_RCURLY, "`}' expected");

    } while (CfgTok != CFGTOK_EOF);
}