Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
#include "CondCore/CondDB/interface/Binary.h"
#include "CondCore/CondDB/interface/Exception.h"
//
#include "CoralBase/Blob.h"
//
#include <cstring>

#include <cstring>
#include <memory>
#include <openssl/sha.h>

cond::Binary::Binary() : m_data(new coral::Blob(0)) {}

cond::Binary::Binary(const void* data, size_t size) : m_data(new coral::Blob(size)) {
  ::memcpy(m_data->startingAddress(), data, size);
}

cond::Binary::Binary(const coral::Blob& data) : m_data(new coral::Blob(data.size())) {
  ::memcpy(m_data->startingAddress(), data.startingAddress(), data.size());
}

cond::Binary::Binary(const Binary& rhs) : m_data(rhs.m_data) {}

cond::Binary& cond::Binary::operator=(const Binary& rhs) {
  if (this != &rhs) {
    m_data = rhs.m_data;
  }
  return *this;
}

const coral::Blob& cond::Binary::get() const { return *m_data; }

void cond::Binary::copy(const std::string& source) {
  m_data = std::make_shared<coral::Blob>(source.size());
  ::memcpy(m_data->startingAddress(), source.c_str(), source.size());
}

const void* cond::Binary::data() const {
  if (!m_data.get())
    throwException("Binary data can't be accessed.", "Binary::data");
  return m_data->startingAddress();
}
void* cond::Binary::data() {
  if (!m_data.get())
    throwException("Binary data can't be accessed.", "Binary::data");
  return m_data->startingAddress();
}

size_t cond::Binary::size() const {
  if (!m_data.get())
    throwException("Binary data can't be accessed.", "Binary::size");
  return m_data->size();
}