亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? segmentinfos.cpp

?? clucene是c++版的全文檢索引擎,完全移植于lucene,采用 stl 編寫.
?? CPP
字號:
/*------------------------------------------------------------------------------
* 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 "SegmentInfos.h"

#include "CLucene/store/Directory.h"
#include "CLucene/util/VoidMap.h"
#include "CLucene/util/Misc.h"

CL_NS_USE(store)
CL_NS_USE(util)
CL_NS_DEF(index)

	
   SegmentInfo::SegmentInfo(const char* Name, const int32_t DocCount, CL_NS(store)::Directory* Dir): 
	docCount(DocCount),dir(Dir){
	//Func - Constructor. Initialises SegmentInfo.
	//Pre  - Name holds the unique name in the directory Dir
	//       DocCount holds the number of documents in the segment
	//       Dir holds the Directory where the segment resides
	//Post - The instance has been created. name contains the duplicated string Name.
	//       docCount = DocCount and dir references Dir
			STRCPY_AtoA(name,Name,CL_MAX_NAME);
   }
  
   SegmentInfo::~SegmentInfo(){
   }


  SegmentInfos::SegmentInfos(bool deleteMembers) :
      infos(deleteMembers){
  //Func - Constructor
  //Pre  - deleteMembers indicates if the instance to be created must delete
  //       all SegmentInfo instances it manages when the instance is destroyed or not
  //       true -> must delete, false may not delete
  //Post - An instance of SegmentInfos has been created.
  
      //initialize counter to 0
      counter = 0;
      version = Misc::currentTimeMillis();
  }

  SegmentInfos::~SegmentInfos(){
  //Func - Destructor
  //Pre  - true
  //Post - The instance has been destroyed. Depending on the constructor used
  //       the SegmentInfo instances that this instance managed have been deleted or not.

	  //Clear the list of SegmentInfo instances - make sure everything is deleted
      infos.clear();
  }
  
  SegmentInfo* SegmentInfos::info(int32_t i) {
  //Func - Returns a reference to the i-th SegmentInfo in the list.
  //Pre  - i >= 0
  //Post - A reference to the i-th SegmentInfo instance has been returned

      CND_PRECONDITION(i >= 0, "i contains negative number");

	  //Get the i-th SegmentInfo instance
      SegmentInfo *ret = infos[i];
      //Condition check to see if the i-th SegmentInfo has been retrieved
      CND_CONDITION(ret != NULL,"No SegmentInfo instance found");

      return ret;
  }

	// Might be better to walk begin()+min to end() and delete then erase
	// Might also want to check begin()+min still valid
  void SegmentInfos::clearto(size_t min){
		if (infos.size()>min) { // Make sure we actually need to remove
			segmentInfosType::iterator itr,bitr=infos.begin()+min,eitr=infos.end();
			for(itr=bitr;itr!=eitr;++itr) {
				_CLLDELETE((*itr));
			}
			infos.erase(bitr,eitr);
		}
		/*
	  while ( infos.size() > min ){
			itr = infos.end();
			if ( itr != infos.begin())
				--itr;
			_CLLDELETE((*itr));
			infos.erase(itr);
	  }
		*/
  }
	void SegmentInfos::add(SegmentInfo* info){
		infos.push_back(info);
	}
  int32_t SegmentInfos::size() const{
	  return infos.size();
  }

  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
      IndexInput* input = directory->openInput("segments");
	  //Check if input is valid
	  if (input){
        try {
            int32_t format = input->readInt();

            if(format < 0){     // file contains explicit format info
               // 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);
               }
               version = input->readLong(); // read version
               counter = input->readInt(); // read counter
            }
            else{     // file is in old format without explicit format info
               counter = format;
            }	  

            //Temporary variable for storing the name of the segment
            TCHAR tname[CL_MAX_PATH];
            char aname[CL_MAX_PATH];
            SegmentInfo* si  = NULL;

            //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
                si = _CLNEW SegmentInfo(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())
                  version = Misc::currentTimeMillis(); // old file format without version number
               else
                  version = input->readLong(); // read version
            }
        } _CLFINALLY(
            //destroy the inputStream input. The destructor of IndexInput will 
		    //also close the Inputstream input
            _CLDELETE( input );
            );
	  }
  }

  void SegmentInfos::write(Directory* directory){
  //Func - Writes a new segments file based upon the SegmentInfo instances it manages
  //Pre  - directory is a valid reference to a Directory
  //Post - The new segment has been written to disk
    
	  //Open an IndexOutput to the segments file
	  IndexOutput* output = directory->createOutput("segments.new");
	   //Check if output is valid
	  if (output){
          try {
		   output->writeInt(FORMAT); // write FORMAT
           output->writeLong(++version); // every write changes the index
           output->writeInt(counter); //Write the counter

			  //Write the number of SegmentInfo Instances
			  //which is equal to the number of segments in directory as
			  //each SegmentInfo manages a single segment
			  output->writeInt(infos.size());			  

			  SegmentInfo *si = NULL;

			  //temporary value for wide segment name
			  TCHAR tname[CL_MAX_PATH];

			  //Iterate through all the SegmentInfo instances
           for (uint32_t i = 0; i < infos.size(); ++i) {
				  //Retrieve the SegmentInfo
               si = info(i);
               //Condition check to see if si has been retrieved
               CND_CONDITION(si != NULL,"No SegmentInfo instance found");

				  //Write the name of the current segment
              STRCPY_AtoT(tname,si->name,CL_MAX_PATH);
				  output->writeString(tname,_tcslen(tname));

				  //Write the number of documents in the segment 
              output->writeInt(si->docCount);
           }
         } _CLFINALLY(
              output->close();
              _CLDELETE( output );
         );

          // install new segment info
          directory->renameFile("segments.new","segments");
	  }
  }

  
  int64_t SegmentInfos::readCurrentVersion(Directory* directory){
    IndexInput* input = directory->openInput("segments");
    int32_t format = 0;
    int64_t version = 0;
    try {
      format = input->readInt();
      if(format < 0){
         if(format < FORMAT){
            TCHAR err[30];
            _sntprintf(err,30,_T("Unknown format version: %d"),format);
            _CLTHROWT(CL_ERR_Runtime,err);
         }
         version = input->readLong(); // read version
       }
     }
     _CLFINALLY( input->close(); _CLDELETE(input); );
     
     if(format < 0)
      return version;

    // We cannot be sure about the format of the file.
    // Therefore we have to read the whole file and cannot simply seek to the version entry.
    SegmentInfos* sis = _CLNEW SegmentInfos();
    sis->read(directory);
    version = sis->getVersion();
    _CLDELETE(sis);
    return version;
  }

CL_NS_END

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
老鸭窝一区二区久久精品| 91在线观看高清| 成人精品国产一区二区4080| 色婷婷av久久久久久久| 日韩免费福利电影在线观看| 17c精品麻豆一区二区免费| 精一区二区三区| 色婷婷av久久久久久久| 久久精品亚洲乱码伦伦中文| 亚洲aⅴ怡春院| 亚洲精品精品亚洲| jizzjizzjizz欧美| 99久久久国产精品免费蜜臀| 久久午夜电影网| 男人的天堂亚洲一区| 国产精品一品二品| 欧美电影免费观看完整版| 亚瑟在线精品视频| 91国产精品成人| 久久99国内精品| 538在线一区二区精品国产| 亚洲欧美国产三级| av亚洲精华国产精华| 久久伊99综合婷婷久久伊| 久久国产婷婷国产香蕉| 欧美一区二区免费观在线| 日本中文字幕不卡| 欧美一区二区精美| 久久99久国产精品黄毛片色诱| 欧美挠脚心视频网站| 日日夜夜免费精品| 欧美一级黄色片| 黑人巨大精品欧美黑白配亚洲| 91精品久久久久久久久99蜜臂| 午夜精品久久一牛影视| 91成人在线免费观看| 亚洲成av人**亚洲成av**| 欧美午夜影院一区| 蜜臀av在线播放一区二区三区| 日韩美女一区二区三区| 久久国产免费看| 欧美成人一区二区三区在线观看| 久久精品国产久精国产爱| 久久久久久一二三区| 成人永久免费视频| 亚洲欧美另类小说视频| 欧美日韩dvd在线观看| 五月婷婷综合激情| 日韩欧美一区在线观看| 国产成人午夜精品5599| 毛片一区二区三区| 337p粉嫩大胆噜噜噜噜噜91av| 国产不卡视频一区| 亚洲无线码一区二区三区| 欧美一区二区三区四区视频| 国产精品资源站在线| 亚洲天堂免费看| 在线播放中文字幕一区| 韩国女主播一区| 国产精品久久午夜| 欧美日韩一级黄| 国产电影精品久久禁18| 亚洲日本欧美天堂| 欧美电视剧在线观看完整版| 国产高清不卡二三区| 亚洲一区日韩精品中文字幕| 26uuu久久天堂性欧美| 一本一本大道香蕉久在线精品 | 欧美成va人片在线观看| 国产乱码一区二区三区| 一区2区3区在线看| 久久久久国产精品麻豆| 欧美日韩在线播放三区四区| 国产91富婆露脸刺激对白| 午夜亚洲国产au精品一区二区| 精品日韩在线观看| 在线观看欧美精品| 国产成人免费视频网站高清观看视频| 亚洲美女偷拍久久| 国产亚洲成av人在线观看导航 | 一区二区三区电影在线播| 欧美不卡激情三级在线观看| 色视频成人在线观看免| 国产乱淫av一区二区三区| 国产·精品毛片| 毛片基地黄久久久久久天堂| 亚洲一区二区三区四区五区黄| 国产亚洲午夜高清国产拍精品| 欧美区一区二区三区| caoporm超碰国产精品| 精彩视频一区二区三区| 图片区日韩欧美亚洲| 亚洲理论在线观看| 国产欧美日产一区| 精品国产乱子伦一区| 欧美人与性动xxxx| 在线精品国精品国产尤物884a| 成人免费福利片| 国产成人精品一区二区三区四区| 日本成人中文字幕在线视频| 亚洲自拍偷拍麻豆| 亚洲黄一区二区三区| 综合av第一页| 国产欧美精品区一区二区三区| 精品国产乱码久久久久久闺蜜 | 精品国产亚洲在线| 欧美欧美欧美欧美首页| 欧美剧情片在线观看| 欧美性色黄大片| 欧美日韩一级大片网址| 欧美亚洲另类激情小说| 在线视频一区二区三| 色噜噜狠狠成人中文综合 | 亚洲一级二级在线| 亚洲视频一区二区在线观看| 亚洲欧洲日韩在线| 亚洲人成人一区二区在线观看| 国产精品电影一区二区| 亚洲美女少妇撒尿| 亚洲麻豆国产自偷在线| 亚洲影院免费观看| 五月激情综合网| 久久精品久久99精品久久| 国产米奇在线777精品观看| 国产乱码精品一区二区三| caoporn国产一区二区| 在线观看日韩电影| 欧美电影免费提供在线观看| 久久综合中文字幕| 国产日韩av一区| 亚洲精品视频在线看| 性久久久久久久久久久久| 免费观看在线色综合| 高清视频一区二区| 91福利国产精品| 日韩午夜在线播放| 中文字幕第一区综合| 亚洲免费在线看| 日韩中文字幕一区二区三区| 国内一区二区在线| 91猫先生在线| 欧美成人艳星乳罩| 成人欧美一区二区三区| 午夜免费久久看| 国产凹凸在线观看一区二区| 色婷婷久久综合| 精品国产在天天线2019| 最新国产精品久久精品| 日韩高清在线观看| www..com久久爱| 欧美成人一区二区三区片免费| 国产精品成人一区二区三区夜夜夜| 亚洲永久免费视频| 国产成人av网站| 欧美精品久久一区| 国产精品国产三级国产aⅴ原创 | 亚洲美女区一区| 免费人成网站在线观看欧美高清| 成人夜色视频网站在线观看| 欧美日韩的一区二区| 日本一区二区成人| 蜜桃视频在线观看一区二区| 91美女福利视频| 国产欧美视频一区二区| 日本大胆欧美人术艺术动态| 97久久人人超碰| 久久尤物电影视频在线观看| 五月天激情小说综合| 色哟哟一区二区三区| 久久久精品黄色| 免费成人在线网站| 欧美中文字幕一二三区视频| 中文字幕精品一区二区三区精品| 婷婷国产在线综合| 色嗨嗨av一区二区三区| 欧美极品少妇xxxxⅹ高跟鞋 | 天天综合色天天综合色h| gogogo免费视频观看亚洲一| 久久久久久免费网| 日韩成人伦理电影在线观看| 欧美午夜精品电影| 亚洲精品久久7777| 99久久精品国产一区| 中文字幕成人网| 国产一区二区精品久久| 精品国产免费人成在线观看| 七七婷婷婷婷精品国产| 欧美日韩一区中文字幕| 一区二区国产盗摄色噜噜| www.欧美.com| 亚洲少妇屁股交4| 99久久综合狠狠综合久久| 国产欧美精品区一区二区三区 | 肉丝袜脚交视频一区二区| 一本色道久久综合亚洲aⅴ蜜桃| 国产精品久久久99| 成人av片在线观看| 亚洲欧美日韩国产综合在线| av激情亚洲男人天堂| 欧美国产一区视频在线观看|