예제 #1
0
파일: test_token.cpp 프로젝트: AIDman/Kaldi
void TestToken::TestPrecNextGraph()
{
	SpeechSet* speechSet = new SpeechSet();
	Speech* speech = new Speech(speechSet);
	Segment* segment = Segment::CreateWithDuration(0, 10000, speech);
	/* initialize tokens with a graph like
	*     B
	*    / \
	* --A   D--
	*    \ /
	*     C
	*/
	Token* tokenA = Token::CreateWithDuration(0, 0, segment);
	tokenA->SetSourceText("A");
	Token* tokenB = Token::CreateWithDuration(0, 0, segment);
	tokenB->SetSourceText("B");
	Token* tokenC = Token::CreateWithDuration(0, 0, segment);
	tokenC->SetSourceText("C");
	Token* tokenD = Token::CreateWithDuration(0, 0, segment);
	tokenD->SetSourceText("D");
	tokenA->AddNextToken(tokenB);
	tokenA->AddNextToken(tokenC);
	tokenB->AddPrecToken(tokenA);
	tokenB->AddNextToken(tokenD);
	tokenC->AddPrecToken(tokenA);
	tokenC->AddNextToken(tokenD);
	tokenD->AddPrecToken(tokenB);
	tokenD->AddPrecToken(tokenC);     

	// a few basics assert
	assert(tokenA->GetNextToken(0)->GetNextToken(0) == tokenA->GetNextToken(1)->GetNextToken(0));
	assert(tokenD->GetPrecToken(0)->GetPrecToken(0) == tokenA->GetPrecToken(1)->GetPrecToken(0));

	//TODO need to be more complex
	delete tokenA;
	delete tokenB;
	delete tokenC;
	delete tokenD;
	delete segment;
	delete speech;
}
예제 #2
0
파일: token.cpp 프로젝트: AIDman/Kaldi
Token* Token::CreateWithEndTime(const int& _startTime, const int& _endTime, Segment* parent, const string& _text, Token* first_prec_tokens, ...)
{
    Token* token = Token::CreateWithEndTime(_startTime, _endTime, parent, _text);
    Token* tok = first_prec_tokens;
    va_list marker;
    va_start( marker, first_prec_tokens);     /* Initialize variable arguments. */
    
    while (tok != NULL)
    {
        tok->AddNextToken(token);
        token->AddPrecToken(tok);
        tok = va_arg(marker, Token*);
    }
    
    va_end(marker);
    return token;
}