TCHAR* QueryFilter::toString() { TCHAR* qt = query->toString(); size_t len = _tcslen(qt) + 14; TCHAR* ret = _CL_NEWARRAY( TCHAR, len ); ret[0] = 0; _sntprintf( ret, len, _T("QueryFilter(%s)"), qt ); _CLDELETE_CARRAY(qt); return ret; }
void WildcardTermEnum::close() { if ( __term != NULL ){ FilteredTermEnum::close(); _CLDECDELETE(__term); __term = NULL; _CLDELETE_CARRAY( pre ); } }
Term::~Term() { if (internF) CLStringIntern::unintern(_field); _field = NULL; #ifndef LUCENE_TERM_TEXT_LENGTH if (_text != LUCENE_BLANK_STRING) _CLDELETE_CARRAY(_text); #endif }
TCHAR* PhraseScorer::toString() { StringBuffer buf; buf.append(_T("scorer(")); TCHAR* tmp = weight->toString(); buf.append(tmp); _CLDELETE_CARRAY(tmp); buf.append(_T(")")); return buf.toString(); }
void StringBuffer::clear(){ //Func - Clears the Stringbuffer and resets it to it default empty state //Pre - true //Post - pre(buffer) has been destroyed and a new one has been allocated //Destroy the current buffer if present _CLDELETE_CARRAY(buffer); //Initialize len = 0; bufferLength = LUCENE_DEFAULT_TOKEN_BUFFER_SIZE; //Allocate a buffer of length bufferLength buffer = _CL_NEWARRAY(TCHAR,bufferLength); }
TCHAR* BooleanQuery::toString(const TCHAR* field) const{ StringBuffer buffer; if (getBoost() != 1.0) { buffer.append(_T("(")); } for (uint32_t i = 0 ; i < clauses.size(); i++) { BooleanClause* c = clauses[i]; if (c->prohibited) buffer.append(_T("-")); else if (c->required) buffer.append(_T("+")); if ( c->query->instanceOf(BooleanQuery::getClassName()) ) { // wrap sub-bools in parens buffer.append(_T("(")); TCHAR* buf = c->query->toString(field); buffer.append(buf); _CLDELETE_CARRAY( buf ); buffer.append(_T(")")); } else { TCHAR* buf = c->query->toString(field); buffer.append(buf); _CLDELETE_CARRAY( buf ); } if (i != clauses.size()-1) buffer.append(_T(" ")); if (getBoost() != 1.0) { buffer.append(_T(")^")); buffer.appendFloat(getBoost(),1); } } return buffer.toString(); }
int FilterAddDate(Document *doc, const TCHAR* fieldName, uint64_t date) { TCHAR *str; try { str = DateField::timeToString(date); doc->add(*Field::Text(fieldName, str)); _CLDELETE_CARRAY(str); return 0; } catch (...) { return 1; } }
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); }
Term::~Term(){ //Func - Destructor. //Pre - true //Post - The instance has been destroyed. field and text have been deleted if pre(intrn) is false //Unintern field if ( internF ) CLStringIntern::unintern(_field); _field = NULL; #ifndef LUCENE_TERM_TEXT_LENGTH //Deletetext if it is the owner if ( _text != LUCENE_BLANK_STRING) _CLDELETE_CARRAY( _text ); #endif }
void StringBuffer::reserve(const int32_t size){ if ( bufferLength >= size ) return; bufferLength = size; //Allocate a new buffer of length bufferLength TCHAR* tmp = _CL_NEWARRAY(TCHAR,bufferLength); _tcsncpy(tmp, buffer, len); tmp[len] = '\0'; //destroy the old buffer if (buffer){ _CLDELETE_CARRAY(buffer); } //Assign the new buffer tmp to buffer buffer = tmp; }
TCHAR* Sort::toString() const { CL_NS(util)::StringBuffer buffer; int32_t i = 0; while ( fields[i] != NULL ){ if (i>0) buffer.appendChar(','); const TCHAR* p = fields[i]->toString(); buffer.append(p); _CLDELETE_CARRAY(p); i++; } return buffer.toString(); }
///todo: mem leaks TCHAR* Explanation::toString(int32_t depth) { StringBuffer buffer; for (int32_t i = 0; i < depth; i++) { buffer.append(_T(" ")); } buffer.appendFloat(getValue(),2); buffer.append(_T(" = ")); buffer.append(getDescription()); buffer.append(_T("\n")); for ( uint32_t j=0;j<details.size();j++ ){ TCHAR* tmp = details[j]->toString(depth+1); buffer.append(tmp); _CLDELETE_CARRAY(tmp); } return buffer.toString(); }
void StringBuffer::growBuffer(const int32_t minLength, const int32_t skippingNInitialChars) { //Func - Has the buffer grown to a minimum length of minLength or bigger and shifts the // current string in buffer by skippingNInitialChars forward //Pre - After growth, must have at least enough room for contents + terminator so // minLength >= skippingNInitialChars + len + 1 // skippingNInitialChars >= 0 //Post - The buffer has been grown to a minimum length of minLength or bigger and // if skippingNInitialChars > 0, the contents of the buffer has beeen shifted // forward by skippingNInitialChars positions as the buffer is reallocated, // leaving the first skippingNInitialChars uninitialized (presumably to be // filled immediately thereafter by the caller). CND_PRECONDITION (skippingNInitialChars >= 0, "skippingNInitialChars is less than zero"); CND_PRECONDITION (minLength >= skippingNInitialChars + len + 1,"skippingNInitialChars is not large enough"); //More aggressive growth strategy to offset smaller default buffer size: if ( !bufferOwner ){ if ( bufferLength<minLength ) _CLTHROWA(CL_ERR_IllegalArgument,"[StringBuffer::grow] un-owned buffer could not be grown"); return; } bufferLength *= 2; //Check that bufferLength is bigger than minLength if (bufferLength < minLength){ //Have bufferLength become minLength because it still was too small bufferLength = minLength; } //Allocate a new buffer of length bufferLength TCHAR* tmp = _CL_NEWARRAY(TCHAR,bufferLength); //The old buffer might not have been null-terminated, so we _tcsncpy //only len bytes, not len+1 bytes (the latter might read one char off the //end of the old buffer), then apply the terminator to the new buffer. _tcsncpy(tmp + skippingNInitialChars, buffer, len); tmp[skippingNInitialChars + len] = '\0'; //destroy the old buffer if (buffer){ _CLDELETE_CARRAY(buffer); } //Assign the new buffer tmp to buffer buffer = tmp; }
///todo: mem leaks TCHAR* Explanation::toHtml() { StringBuffer buffer; TCHAR* tmp; buffer.append(_T("<ul>\n")); buffer.append(_T("<li>")); buffer.appendFloat(getValue(),2); buffer.append(_T(" = ")); buffer.append(getDescription()); buffer.append(_T("</li>\n")); for ( uint32_t i=0;i<details.size();i++ ){ tmp = details[i]->toHtml(); buffer.append(tmp); _CLDELETE_CARRAY(tmp); } buffer.append(_T("</ul>\n")); return buffer.toString(); }
bool FieldsReader::doc(int32_t n, Document* doc) { if ( n * 8L > indexStream->length() ) return false; indexStream->seek(n * 8L); int64_t position = indexStream->readLong(); fieldsStream->seek(position); int32_t numFields = fieldsStream->readVInt(); for (int32_t i = 0; i < numFields; i++) { int32_t fieldNumber = fieldsStream->readVInt(); FieldInfo* fi = fieldInfos->fieldInfo(fieldNumber); if ( fi == NULL ) _CLTHROWA(CL_ERR_IO, "Field stream is invalid"); uint8_t bits = fieldsStream->readByte(); if ((bits & FieldsWriter::FIELD_IS_BINARY) != 0) { int32_t fieldLen = fieldsStream->readVInt(); FieldsReader::FieldsStreamHolder* subStream = new FieldsReader::FieldsStreamHolder(fieldsStream, fieldLen); uint8_t bits = Field::STORE_YES; Field* f = _CLNEW Field( fi->name, // name subStream, // read value bits); doc->add(*f); //now skip over the rest of the field if ( fieldsStream->getFilePointer() + fieldLen == fieldsStream->length() ){ fieldsStream->seek(fieldsStream->getFilePointer() + fieldLen - 1); //set to eof fieldsStream->readByte(); }else fieldsStream->seek(fieldsStream->getFilePointer() + fieldLen); }else{ uint8_t bits = Field::STORE_YES; if (fi->isIndexed && (bits & FieldsWriter::FIELD_IS_TOKENIZED)!=0 ) bits |= Field::INDEX_TOKENIZED; else if (fi->isIndexed && (bits & FieldsWriter::FIELD_IS_TOKENIZED)==0 ) bits |= Field::INDEX_UNTOKENIZED; else bits |= Field::INDEX_NO; if (fi->storeTermVector) { if (fi->storeOffsetWithTermVector) { if (fi->storePositionWithTermVector) { bits |= Field::TERMVECTOR_WITH_OFFSETS; bits |= Field::TERMVECTOR_WITH_POSITIONS; }else { bits |= Field::TERMVECTOR_WITH_OFFSETS; } }else if (fi->storePositionWithTermVector) { bits |= Field::TERMVECTOR_WITH_POSITIONS; }else { bits |= Field::TERMVECTOR_YES; } }else { bits |= Field::TERMVECTOR_NO; } if ( (bits & FieldsWriter::FIELD_IS_COMPRESSED) != 0 ) { bits |= Field::STORE_COMPRESS; int32_t fieldLen = fieldsStream->readVInt(); FieldsStreamHolder* subStream = new FieldsStreamHolder(fieldsStream, fieldLen); //todo: we dont have gzip inputstream available, must alert user //to somehow use a gzip inputstream Field* f = _CLNEW Field( fi->name, // name subStream, // read value bits); f->setOmitNorms(fi->omitNorms); doc->add(*f); //now skip over the rest of the field if ( fieldsStream->getFilePointer() + fieldLen == fieldsStream->length() ){ fieldsStream->seek(fieldsStream->getFilePointer() + fieldLen - 1); //set to eof fieldsStream->readByte(); }else fieldsStream->seek(fieldsStream->getFilePointer() + fieldLen); }else { TCHAR* fvalue = fieldsStream->readString(true); Field* f = _CLNEW Field( fi->name, // name fvalue, // read value bits); _CLDELETE_CARRAY(fvalue); //todo: could optimise this f->setOmitNorms(fi->omitNorms); doc->add(*f); } } } return true; }
CLuceneError::~CLuceneError() throw(){ _CLDELETE_CARRAY(_twhat); _CLDELETE_CaARRAY(_awhat); }