Blob is a general container that hosts a typed pointer. More...
#include <blob.h>
Public Member Functions | |
Blob () | |
Initializes an empty Blob. | |
Blob (Blob &&other) noexcept | |
Blob & | operator= (Blob &&other) noexcept |
template<class T > | |
bool | IsType () const |
Checks if the content stored in the blob is of type T. | |
const TypeMeta & | meta () const |
Returns the meta info of the blob. | |
const char * | TypeName () const |
Returns a printable typename of the blob. | |
template<class T > | |
const T & | Get () const |
Gets the const reference of the stored object. More... | |
const void * | GetRaw () const |
void * | GetRaw () |
template<class T > | |
T * | GetMutable (bool *is_new_object=nullptr) |
Gets a mutable pointer to the stored object. More... | |
template<class T > | |
T * | Reset (T *allocated) |
Sets the underlying object to the allocated one. More... | |
template<class T > | |
std::remove_const< T >::type * | ShareExternal (typename std::remove_const< T >::type *allocated) |
Sets the underlying object to the allocated one, but does not take over the ownership of the passed in pointer. More... | |
void * | ShareExternal (void *allocated, const TypeMeta &meta) |
void | Reset () |
Resets the Blob to an empty one. | |
void | Serialize (const string &name, BlobSerializerBase::SerializationAcceptor acceptor, int chunk_size=kDefaultChunkSize) const |
Serializes the current blob, if possible. More... | |
string | Serialize (const string &name) const |
Convenience function to serialize a blob to a string. More... | |
void | swap (Blob &rhs) |
Swaps the underlying storage of two blobs. | |
void | Deserialize (const string &content) |
Deserializes from a string containing either BlobProto or TensorProto. More... | |
void | Deserialize (const BlobProto &proto) |
Blob is a general container that hosts a typed pointer.
A Blob hosts a pointer as well as its type, and takes charge of deleting it properly when the blob is deallocated or re-allocated with a new type. A blob could contain anything, although the most common case is to contain a Tensor.
void caffe2::Blob::Deserialize | ( | const string & | content | ) |
Deserializes from a string containing either BlobProto or TensorProto.
If the deserialization fails, the content in the blob should no longer be trusted.
Definition at line 89 of file blob_serialization.cc.
|
inline |
|
inline |
Gets a mutable pointer to the stored object.
If the current object is not of the right type, a new object is created and the old object is freed. Note that type T should have a default constructor. Otherwise, create the object yourself first, and and use Reset().
|
inline |
Sets the underlying object to the allocated one.
The Blob then takes over the ownership of the passed in pointer. If there is already an object in the Blob, the old object is freed.
This is used when the underlying class T does not have a default ctor, or complex initializations needs to be done outside the blob.
void caffe2::Blob::Serialize | ( | const string & | name, |
BlobSerializerBase::SerializationAcceptor | acceptor, | ||
int | chunk_size = kDefaultChunkSize |
||
) | const |
Serializes the current blob, if possible.
Note that this serialization uses the registration mechanism and one has to implement specific serialization approaches for specific classes. Acceptor should take care of writing data to the actual storage.
Definition at line 55 of file blob_serialization.cc.
std::string caffe2::Blob::Serialize | ( | const string & | name | ) | const |
Convenience function to serialize a blob to a string.
This is a conveinence function to serialize small Blobs that produce manageable serialized strings. To serialize big blobs such as large sparse tensors, use the fully-functional interface in blob_serializer_base.h.
NOTE: this function doesn't do chunking and might break with big tensors.
Definition at line 65 of file blob_serialization.cc.
|
inline |
Sets the underlying object to the allocated one, but does not take over the ownership of the passed in pointer.
If there is already an object in the Blob, the old object is freed.
Unlike Reset, this does not take over the ownership of the pointer and the caller is responsible for making sure that the lifetime of the allocated blob outlasts the lifetime of any access to this blob, until another Reset call is made or the blob is destructed.