24 #ifndef GRAPHLAB_BLOB_HPP
25 #define GRAPHLAB_BLOB_HPP
31 #include <graphlab/serialization/iarchive.hpp>
32 #include <graphlab/serialization/oarchive.hpp>
33 #include <graphlab/serialization/vector.hpp>
34 #include <graphlab/serialization/map.hpp>
53 blob() : size_(0), data_(NULL) { }
57 size_(0), data_(NULL) {
62 blob(
size_t osize,
void* odata) : size_(0), data_(NULL) {
63 if (osize > 0) {
copy(osize, odata); }
68 if (b.size_ != 0 && b.data_ != NULL) {
78 assert(data_ != NULL);
79 assert(
sizeof(T) <= size_);
80 return *
reinterpret_cast<T*
>(data_);
86 assert(data_ != NULL);
87 assert(
sizeof(T) <= size_);
88 return *
reinterpret_cast<T*
>(data_);
94 assert(data_ != NULL);
95 assert(
sizeof(T) <= size_);
96 return reinterpret_cast<T*
>(data_);
102 assert(data_ != NULL);
103 assert(
sizeof(T) <= size_);
104 return reinterpret_cast<const T*
>(data_);
108 size_t size()
const {
return size_; }
114 const void*
data()
const {
return data_; }
126 void copy(
size_t osize,
void* odata) {
129 memcpy(data_, odata, osize);
134 assert(other.size_ == 0 || other.data_ != NULL);
138 memcpy(data_, other.data_, size_);
150 }
else if(size_ == new_size ) {
152 assert(data_ != NULL);
155 assert(data_ == NULL && size_ == 0);
157 data_ = malloc(new_size);
158 assert(data_ != NULL);
177 size_t tmpsize = b.size_;
192 data_ = malloc(size_);
193 deserialize(arc, data_, size_);
197 void save(oarchive& arc)
const {
200 serialize(arc, data_, size_);