std::string Misc::toString(const int64_t value){ char buf[20]; TCHAR tbuf[20]; _i64tot(value, tbuf, 10); STRCPY_TtoA(buf,tbuf,20); return buf; }
int32_t IndexInput::readString(char* buffer, const int32_t maxLength){ TCHAR* buf = _CL_NEWARRAY(TCHAR,maxLength); int32_t ret = -1; try{ ret = readString(buf,maxLength); STRCPY_TtoA(buffer,buf,ret+1); }_CLFINALLY ( _CLDELETE_CARRAY(buf); ) return ret;
double lucene_tcstod(const TCHAR *value, TCHAR **end){ int32_t len = _tcslen(value)+1; char* avalue=_CL_NEWARRAY(char,len); char* aend=NULL; STRCPY_TtoA(avalue,value,len); double ret = strtod(avalue,&aend); *end=(TCHAR*)value+(aend-avalue); _CLDELETE_CaARRAY(avalue); return ret; }
void SegmentMerger::createCompoundFile(const QString& filename, QStringList& files) { CompoundFileWriter* cfsWriter = _CLNEW CompoundFileWriter(directory, filename); { //msvc6 scope fix // Basic files for (int32_t i = 0; i < COMPOUND_EXTENSIONS_LENGTH; i++) { files.push_back(Misc::qjoin(segment, QLatin1String("."), QLatin1String(COMPOUND_EXTENSIONS+(i*4)))); } } { //msvc6 scope fix // Field norm files for (int32_t i = 0; i < fieldInfos->size(); i++) { FieldInfo* fi = fieldInfos->fieldInfo(i); if (fi->isIndexed && !fi->omitNorms) { TCHAR tbuf[10]; char abuf[10]; _i64tot(i, tbuf, 10); STRCPY_TtoA(abuf, tbuf, 10); files.push_back(Misc::qjoin(segment, QLatin1String(".f"), QLatin1String(abuf))); } } } // Vector files if (fieldInfos->hasVectors()) { for (int32_t i = 0; i < VECTOR_EXTENSIONS_LENGTH; i++) { files.push_back(Misc::qjoin(segment, QLatin1String("."), QLatin1String(VECTOR_EXTENSIONS+(i*4)))); } } { //msvc6 scope fix // Now merge all added files for (size_t i=0;i<files.size();i++) { cfsWriter->addFile(files[i]); } } // Perform the merge cfsWriter->close(); _CLDELETE(cfsWriter); }
void SegmentInfos::read(Directory* directory) { //Func - Reads segments file that resides in directory. //Pre - directory contains a valid reference //Post - The segments file has been read and for each segment found // a SegmentsInfo intance has been created and stored. //Open an IndexInput to the segments file and check if valid IndexInput* input = directory->openInput(QLatin1String("segments")); if (input) { try { int32_t format = input->readInt(); // file contains explicit format info if (format < 0) { // check that it is a format we can understand if (format < FORMAT) { TCHAR err[30]; _sntprintf(err, 30, _T("Unknown format version: %d"), format); _CLTHROWT(CL_ERR_Runtime, err); } // read version version = input->readLong(); // read counter counter = input->readInt(); } else { // file is in old format without explicit format info counter = format; } //Temporary variable for storing the name of the segment char aname[CL_MAX_PATH] = { 0 }; TCHAR tname[CL_MAX_PATH] = { 0 }; //read segmentInfos for (int32_t i = input->readInt(); i > 0; --i) { // read the name of the segment input->readString(tname, CL_MAX_PATH); STRCPY_TtoA(aname, tname, CL_MAX_PATH); //Instantiate a new SegmentInfo Instance SegmentInfo* si = _CLNEW SegmentInfo(QLatin1String(aname), input->readInt(), directory); //Condition check to see if si points to an instance CND_CONDITION(si != NULL, "Memory allocation for si failed") ; //store SegmentInfo si infos.push_back(si); } if (format >= 0) { // in old format the version number may be at the end of the file if (input->getFilePointer() >= input->length()) { // old file format without version number version = Misc::currentTimeMillis(); } else { // read version version = input->readLong(); } } } _CLFINALLY ( //destroy the inputStream input. The destructor of IndexInput will //also close the Inputstream input _CLDELETE(input); ); }