blob: 4bbe4d24f535be82a35abb1fd9c5514b43e21ca8 [file] [log] [blame]
/*------------------------------------------------------------------------------
* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
*
* Distributable under the terms of either the Apache License (Version 2.0) or
* the GNU Lesser General Public License, as specified in the COPYING file.
------------------------------------------------------------------------------*/
#include "CLucene/StdHeader.h"
#include "TokenList.h"
#include "CLucene/util/VoidMap.h"
#include "CLucene/util/VoidList.h"
#include "QueryToken.h"
CL_NS_DEF(queryParser)
TokenList::TokenList(){
//Func - Constructor
//Pre - true
//Post - Instance has been created
}
TokenList::~TokenList(){
//Func - Destructor
//Pre - true
//Post - The tokenlist has been destroyed
tokens.clear();
}
void TokenList::add(QueryToken* token){
//Func - Adds a QueryToken token to the TokenList
//Pre - token != NULL
//Post - token has been added to the token list
CND_PRECONDITION(token != NULL, "token != NULL");
tokens.insert(tokens.begin(),token);
}
void TokenList::push(QueryToken* token){
//Func -
//Pre - token != NULL
//Post -
CND_PRECONDITION(token != NULL, "token is NULL");
tokens.push_back(token);
}
QueryToken* TokenList::peek() {
/* DSR:2004.11.01: Reverted my previous (circa April 2004) fix (which
** raised an exception if Peek was called when there were no tokens) in
** favor of returning the EOF token. This solution is much better
** integrated with the rest of the code in the queryParser subsystem. */
size_t nTokens = tokens.size();
if (nTokens == 0) {
push(_CLNEW QueryToken(QueryToken::EOF_));
nTokens++;
}
return tokens[nTokens-1];
}
QueryToken* TokenList::extract(){
//Func - Extract token from the TokenList
//Pre - true
//Post - Retracted token has been returned
QueryToken* token = peek();
//Retract the current peeked token
tokens.delete_back();
return token;
}
int32_t TokenList::count() const
{
return tokens.size();
}
CL_NS_END