#include "common_protocol.h"

flatbuffers::Offset<flatbuffers::String> to_flatbuf(
    flatbuffers::FlatBufferBuilder &fbb,
    ObjectID object_id) {
  return fbb.CreateString((char *) &object_id.id[0], sizeof(object_id.id));
}

ObjectID from_flatbuf(const flatbuffers::String *string) {
  ObjectID object_id;
  CHECK(string->size() == sizeof(object_id.id));
  memcpy(&object_id.id[0], string->data(), sizeof(object_id.id));
  return object_id;
}

flatbuffers::Offset<
    flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>>>
to_flatbuf(flatbuffers::FlatBufferBuilder &fbb,
           ObjectID object_ids[],
           int64_t num_objects) {
  std::vector<flatbuffers::Offset<flatbuffers::String>> results;
  for (size_t i = 0; i < num_objects; i++) {
    results.push_back(to_flatbuf(fbb, object_ids[i]));
  }
  return fbb.CreateVector(results);
}