/src/3rdparty/clucene/src/CLucene/queryParser/TokenList.cpp
https://bitbucket.org/ultra_iter/qt-vtl · C++ · 79 lines · 37 code · 16 blank · 26 comment · 4 complexity · 9dece8041935a79b1243f91a67eedc14 MD5 · raw file
- /*------------------------------------------------------------------------------
- * 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