日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

索引文件核心头文件定义

發布時間:2025/4/5 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 索引文件核心头文件定义 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 1 BlockInfo
    • 2 MetaInfo

1 BlockInfo

定義直接放在common.h中:

struct BlockInfo {uint32_t block_id_;int32_t version_;int32_t file_count_;int32_t size_;int32_t del_file_count_;int32_t del_size_;uint32_t seq_no_;BlockInfo(){memset(this, 0, sizeof(BlockInfo));}inline bool operator==(const BlockInfo& rhs) const{return block_id_ == rhs.block_id_ && version_ == rhs.version_ && file_count_ == rhs.file_count_&& size_ == rhs.size_ && del_file_count_ == rhs.del_file_count_ && del_size_ == rhs.del_size_ && seq_no_ == rhs.seq_no_;} };

2 MetaInfo

MetaInfo的定義也直接放在common.h中:

struct MetaInfo {public:MetaInfo(){init();}MetaInfo(const uint64_t file_id, const int32_t in_offset, const int32_t file_size, const int32_t next_meta_offset){fileid_ = file_id;location_.inner_offset_ = in_offset;location_.size_ = file_size;next_meta_offset_ = next_meta_offset;}MetaInfo(const MetaInfo& meta_info){memcpy(this, &meta_info, sizeof(MetaInfo));}MetaInfo& operator=(const MetaInfo& meta_info){if(this == &meta_info){ return *this;}fileid_ = meta_info.fileid_;location_.inner_offset_ = meta_info.location_.inner_offset_ ;location_.size_ = meta_info.location_.size_;next_meta_offset_ = meta_info.next_meta_offset_;}MetaInfo& clone(const MetaInfo& meta_info){assert(this != &meta_info);fileid_ = meta_info.fileid_;location_.inner_offset_ = meta_info.location_.inner_offset_ ;location_.size_ = meta_info.location_.size_;next_meta_offset_ = meta_info.next_meta_offset_;return *this;}bool operator == (const MetaInfo& rhs) const{return fileid_ == rhs.fileid_ && location_.inner_offset_ == rhs.location_.inner_offset_ && location_.size_ == rhs.location_.size_&& next_meta_offset_ == rhs.next_meta_offset_;}uint64_t get_key() const {return fileid_;}void set_key(const uint64_t key){fileid_ = key;}uint64_t get_file_id() const {return fileid_;}void set_file_id(const uint64_t file_id){fileid_ = file_id;}int32_t get_offset() const{return location_.inner_offset_;}void set_offset(const int32_t offset){location_.inner_offset_ = offset;}int32_t get_size() const{return location_.size_;}void set_size(const int32_t file_size){location_.size_ = file_size;}int32_t get_next_meta_offset() const{return next_meta_offset_;}void set_next_meta_offset(const int32_t offset){next_meta_offset_ = offset;}private:uint64_t fileid_;struct{int32_t inner_offset_;int32_t size_;}location_;int32_t next_meta_offset_;private:void init(){fileid_ = 0;location_.inner_offset_ = 0;location_.size_ = 0;next_meta_offset_ = 0;} };

參考資料:

  • C/C++從入門到精通-高級程序員之路【奇牛學院】
  • 總結

    以上是生活随笔為你收集整理的索引文件核心头文件定义的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。