Project: finder, src: Document.cc


ドキュメントを構成し、DB に入れる
#include <cstddef>
#include <unistd.h>
#include "Document.h"

/**
 * Document オブジェクトを file descriptor に書き込む
 */
void Document::writeObject(int fd) const {
  // docid の書き込み
  write(fd, &docid, sizeof(docid));

  // bookmarks の書き込み
  // bookmark の数
  std::size_t sz = bookmarks.size();
  write(fd, &sz, sizeof(sz));

  // 各 bookmark の書き込み
  for (std::set<int>::const_iterator i = bookmarks.begin(); i != bookmarks.end(); ++i) {
    int bm = *i;
    write(fd, &bm, sizeof(bm));
  }
}

/**
 * Document オブジェクトを file descriptor から読み込む
 */
void Document::readObject(int fd) {
  // docid の読み込み
  read(fd, &docid, sizeof(docid));

  // bookmarks の読み込み
  std::size_t sz;
  read(fd, &sz, sizeof(sz));
  for (std::size_t i = 0; i < sz; ++i) {
    int bm;
    read(fd, &bm, sizeof(bm));
    add(bm);
  }
}