/*------------------------------------------------------------------------------
* 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 "QueryToken.h"

CL_NS_DEF(queryParser)


QueryToken::QueryToken():
	Value(NULL)
{
    set(UNKNOWN_);
}
QueryToken::QueryToken(TCHAR* value, const int32_t start, const int32_t end, const QueryToken::Types type):
	Value(NULL)
{
  set(value,start,end,type);
}

QueryToken::~QueryToken(){
//Func - Destructor
//Pre  - true
//Post - Instance has been destroyed

   #ifndef LUCENE_TOKEN_WORD_LENGTH
	_CLDELETE_CARRAY( Value );
  #endif
}

// Initializes a new instance of the Token class LUCENE_EXPORT.
//
QueryToken::QueryToken(TCHAR* value, const QueryToken::Types type):
	Value(NULL)
{
    set(value,type);
}

// Initializes a new instance of the Token class LUCENE_EXPORT.
//
QueryToken::QueryToken(QueryToken::Types type):
	Value(NULL)
{
  set(type);
}


void QueryToken::set(TCHAR* value, const Types type){
    set(value,0,-1,type);
}
void QueryToken::set(TCHAR* value, const int32_t start, const int32_t end, const Types type){
  #ifndef LUCENE_TOKEN_WORD_LENGTH
	_CLDELETE_CARRAY(Value);
    Value = STRDUP_TtoT(value);
  #else
    _tcsncpy(Value,value,LUCENE_TOKEN_WORD_LENGTH);
    Value[LUCENE_TOKEN_WORD_LENGTH];
  #endif
    this->Start = start;
    this->End = end;
	this->Type = type;
    
    if ( this->End < 0 )
        this->End = _tcslen(Value);
}
void QueryToken::set(Types type){
    set(LUCENE_BLANK_STRING,0,0,type);
}

CL_NS_END
