<!-- HTML header for doxygen 1.8.14--> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta name="generator" content="Doxygen 1.8.11"/> <meta name="viewport" content="width=device-width, initial-scale=1"/> <title>Caffe2 - C++ API: caffe2::Blob Class Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <link rel="icon" href="/static/favicon.png" type="image/x-icon"> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="dynsections.js"></script> <link href="search/search.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="search/searchdata.js"></script> <script type="text/javascript" src="search/search.js"></script> <script type="text/javascript"> $(document).ready(function() { init_search(); }); </script> <link href="stylesheet.css" rel="stylesheet" type="text/css" /> <link href="main.css" rel="stylesheet" type="text/css"/> </head> <body> <div id="top"><!-- do not remove this div, it is closed by doxygen! --> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td id="projectlogo" width="56"><a href="/"><img alt="Logo" src="Caffe2-with-name-55-tall.png"/></a></td> <td id="projectalign" style="padding-left: 0.5em;"> <div id="projectname">Caffe2 - C++ API </div> <div id="projectbrief">A deep learning, cross platform ML framework</div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.8.11 --> <script type="text/javascript"> var searchBox = new SearchBox("searchBox", "search",false,'Search'); </script> <div id="navrow1" class="tabs"> <ul class="tablist"> <li><a href="pages.html"><span>Related Pages</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li> <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li> <li><a href="files.html"><span>Files</span></a></li> <li><a href="/doxygen-c/html/classes.html"><span>C++ API</span></a></li> <li><a href="/doxygen-python/html/annotated.html"><span>Python API</span></a></li> <li><a href="https://github.com/caffe2/caffe2"><span>GitHub</span></a></li> <li> <div id="MSearchBox" class="MSearchBoxInactive"> <span class="left"> <img id="MSearchSelect" src="search/mag_sel.png" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" alt=""/> <input type="text" id="MSearchField" value="Search" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)" onblur="searchBox.OnSearchFieldFocus(false)" onkeyup="searchBox.OnSearchFieldChange(event)"/> </span><span class="right"> <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> </span> </div> </li> </ul> </div> <div id="navrow2" class="tabs2"> <ul class="tablist"> <li><a href="annotated.html"><span>Data Structures</span></a></li> <li><a href="classes.html"><span>Data Structure Index</span></a></li> <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> <li><a href="functions.html"><span>Data Fields</span></a></li> </ul> </div> <!-- window showing the filter options --> <div id="MSearchSelectWindow" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> </div> <!-- iframe showing the search results (closed by default) --> <div id="MSearchResultsWindow"> <iframe src="javascript:void(0)" frameborder="0" name="MSearchResults" id="MSearchResults"> </iframe> </div> <div id="nav-path" class="navpath"> <ul> <li class="navelem"><a class="el" href="namespacecaffe2.html">caffe2</a></li><li class="navelem"><a class="el" href="classcaffe2_1_1_blob.html">Blob</a></li> </ul> </div> </div><!-- top --> <div class="header"> <div class="summary"> <a href="#pub-types">Public Types</a> | <a href="#pub-methods">Public Member Functions</a> </div> <div class="headertitle"> <div class="title">caffe2::Blob Class Reference</div> </div> </div><!--header--> <div class="contents"> <p><a class="el" href="classcaffe2_1_1_blob.html" title="Blob is a general container that hosts a typed pointer. ">Blob</a> is a general container that hosts a typed pointer. <a href="classcaffe2_1_1_blob.html#details">More...</a></p> <p><code>#include <<a class="el" href="blob_8h_source.html">blob.h</a>></code></p> <table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a> Public Types</h2></td></tr> <tr class="memitem:acb17f6d2e4a517e460ccee87f4f23849"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acb17f6d2e4a517e460ccee87f4f23849"></a> typedef void(* </td><td class="memItemRight" valign="bottom"><b>DestroyCall</b>) (void *)</td></tr> <tr class="separator:acb17f6d2e4a517e460ccee87f4f23849"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a> Public Member Functions</h2></td></tr> <tr class="memitem:a73c0b2eb60db62d71836ccbc840e9cd1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a73c0b2eb60db62d71836ccbc840e9cd1"></a>  </td><td class="memItemRight" valign="bottom"><a class="el" href="classcaffe2_1_1_blob.html#a73c0b2eb60db62d71836ccbc840e9cd1">Blob</a> ()</td></tr> <tr class="memdesc:a73c0b2eb60db62d71836ccbc840e9cd1"><td class="mdescLeft"> </td><td class="mdescRight">Initializes an empty <a class="el" href="classcaffe2_1_1_blob.html" title="Blob is a general container that hosts a typed pointer. ">Blob</a>. <br /></td></tr> <tr class="separator:a73c0b2eb60db62d71836ccbc840e9cd1"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a48e5b8aa6d7a3a60d019ed86b29d6223"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a48e5b8aa6d7a3a60d019ed86b29d6223"></a>  </td><td class="memItemRight" valign="bottom"><b>Blob</b> (<a class="el" href="classcaffe2_1_1_blob.html">Blob</a> &&other) noexcept</td></tr> <tr class="separator:a48e5b8aa6d7a3a60d019ed86b29d6223"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a0bc077f5cfc12b21889fe7d93ab0d91d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0bc077f5cfc12b21889fe7d93ab0d91d"></a> <a class="el" href="classcaffe2_1_1_blob.html">Blob</a> & </td><td class="memItemRight" valign="bottom"><b>operator=</b> (<a class="el" href="classcaffe2_1_1_blob.html">Blob</a> &&other) noexcept</td></tr> <tr class="separator:a0bc077f5cfc12b21889fe7d93ab0d91d"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a2200340329c81963cb0aa885f1af7958"><td class="memTemplParams" colspan="2"><a class="anchor" id="a2200340329c81963cb0aa885f1af7958"></a> template<class T > </td></tr> <tr class="memitem:a2200340329c81963cb0aa885f1af7958"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classcaffe2_1_1_blob.html#a2200340329c81963cb0aa885f1af7958">IsType</a> () const </td></tr> <tr class="memdesc:a2200340329c81963cb0aa885f1af7958"><td class="mdescLeft"> </td><td class="mdescRight">Checks if the content stored in the blob is of type T. <br /></td></tr> <tr class="separator:a2200340329c81963cb0aa885f1af7958"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a50308d6febe9e777f19413994a9774a5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a50308d6febe9e777f19413994a9774a5"></a> const <a class="el" href="classcaffe2_1_1_type_meta.html">TypeMeta</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classcaffe2_1_1_blob.html#a50308d6febe9e777f19413994a9774a5">meta</a> () const </td></tr> <tr class="memdesc:a50308d6febe9e777f19413994a9774a5"><td class="mdescLeft"> </td><td class="mdescRight">Returns the meta info of the blob. <br /></td></tr> <tr class="separator:a50308d6febe9e777f19413994a9774a5"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a2a807ee90e38f2f0261f8c1f6709727a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2a807ee90e38f2f0261f8c1f6709727a"></a> const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="classcaffe2_1_1_blob.html#a2a807ee90e38f2f0261f8c1f6709727a">TypeName</a> () const </td></tr> <tr class="memdesc:a2a807ee90e38f2f0261f8c1f6709727a"><td class="mdescLeft"> </td><td class="mdescRight">Returns a printable typename of the blob. <br /></td></tr> <tr class="separator:a2a807ee90e38f2f0261f8c1f6709727a"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aad0bb1254349e2c96fcdb719166f2628"><td class="memTemplParams" colspan="2">template<class T > </td></tr> <tr class="memitem:aad0bb1254349e2c96fcdb719166f2628"><td class="memTemplItemLeft" align="right" valign="top">const T & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classcaffe2_1_1_blob.html#aad0bb1254349e2c96fcdb719166f2628">Get</a> () const </td></tr> <tr class="memdesc:aad0bb1254349e2c96fcdb719166f2628"><td class="mdescLeft"> </td><td class="mdescRight">Gets the const reference of the stored object. <a href="#aad0bb1254349e2c96fcdb719166f2628">More...</a><br /></td></tr> <tr class="separator:aad0bb1254349e2c96fcdb719166f2628"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a1fd5d4c632986133f8816270a6f7df4a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1fd5d4c632986133f8816270a6f7df4a"></a> const void * </td><td class="memItemRight" valign="bottom"><b>GetRaw</b> () const </td></tr> <tr class="separator:a1fd5d4c632986133f8816270a6f7df4a"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aad6eaf5bfeb84d24026b040e03625cc5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aad6eaf5bfeb84d24026b040e03625cc5"></a> void * </td><td class="memItemRight" valign="bottom"><b>GetRaw</b> ()</td></tr> <tr class="separator:aad6eaf5bfeb84d24026b040e03625cc5"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a355cff5bfcdfce83ac53ce2a2eef9ee4"><td class="memTemplParams" colspan="2">template<class T > </td></tr> <tr class="memitem:a355cff5bfcdfce83ac53ce2a2eef9ee4"><td class="memTemplItemLeft" align="right" valign="top">T * </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classcaffe2_1_1_blob.html#a355cff5bfcdfce83ac53ce2a2eef9ee4">GetMutable</a> (bool *is_new_object=nullptr)</td></tr> <tr class="memdesc:a355cff5bfcdfce83ac53ce2a2eef9ee4"><td class="mdescLeft"> </td><td class="mdescRight">Gets a mutable pointer to the stored object. <a href="#a355cff5bfcdfce83ac53ce2a2eef9ee4">More...</a><br /></td></tr> <tr class="separator:a355cff5bfcdfce83ac53ce2a2eef9ee4"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a3fd4d67f8c8d27c80041cef53468dbf1"><td class="memTemplParams" colspan="2">template<class T > </td></tr> <tr class="memitem:a3fd4d67f8c8d27c80041cef53468dbf1"><td class="memTemplItemLeft" align="right" valign="top">T * </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classcaffe2_1_1_blob.html#a3fd4d67f8c8d27c80041cef53468dbf1">Reset</a> (T *allocated)</td></tr> <tr class="memdesc:a3fd4d67f8c8d27c80041cef53468dbf1"><td class="mdescLeft"> </td><td class="mdescRight">Sets the underlying object to the allocated one. <a href="#a3fd4d67f8c8d27c80041cef53468dbf1">More...</a><br /></td></tr> <tr class="separator:a3fd4d67f8c8d27c80041cef53468dbf1"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a6eda612650de1f3fd93e2c393a5f35bc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6eda612650de1f3fd93e2c393a5f35bc"></a> void * </td><td class="memItemRight" valign="bottom"><b>Reset</b> (void *allocated, const <a class="el" href="classcaffe2_1_1_type_meta.html">TypeMeta</a> &<a class="el" href="classcaffe2_1_1_blob.html#a50308d6febe9e777f19413994a9774a5">meta</a>, const DestroyCall &destroy)</td></tr> <tr class="separator:a6eda612650de1f3fd93e2c393a5f35bc"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ae81a7c2d6648ec4a15652e8d59d64a40"><td class="memItemLeft" align="right" valign="top">DestroyCall </td><td class="memItemRight" valign="bottom"><a class="el" href="classcaffe2_1_1_blob.html#ae81a7c2d6648ec4a15652e8d59d64a40">Release</a> ()</td></tr> <tr class="memdesc:ae81a7c2d6648ec4a15652e8d59d64a40"><td class="mdescLeft"> </td><td class="mdescRight">Releases the ownership, if any, this <a class="el" href="classcaffe2_1_1_blob.html" title="Blob is a general container that hosts a typed pointer. ">Blob</a> has on the underlying pointer. <a href="#ae81a7c2d6648ec4a15652e8d59d64a40">More...</a><br /></td></tr> <tr class="separator:ae81a7c2d6648ec4a15652e8d59d64a40"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a4e110fabb1ecbe684576dc7b20ea6516"><td class="memTemplParams" colspan="2">template<class T > </td></tr> <tr class="memitem:a4e110fabb1ecbe684576dc7b20ea6516"><td class="memTemplItemLeft" align="right" valign="top">std::remove_const< T >::type * </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classcaffe2_1_1_blob.html#a4e110fabb1ecbe684576dc7b20ea6516">ShareExternal</a> (typename std::remove_const< T >::type *allocated)</td></tr> <tr class="memdesc:a4e110fabb1ecbe684576dc7b20ea6516"><td class="mdescLeft"> </td><td class="mdescRight">Sets the underlying object to the allocated one, but does not take over the ownership of the passed in pointer. <a href="#a4e110fabb1ecbe684576dc7b20ea6516">More...</a><br /></td></tr> <tr class="separator:a4e110fabb1ecbe684576dc7b20ea6516"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:af37f14f710afcaf5f9c538a4bd7d8251"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af37f14f710afcaf5f9c538a4bd7d8251"></a> void * </td><td class="memItemRight" valign="bottom"><b>ShareExternal</b> (void *allocated, const <a class="el" href="classcaffe2_1_1_type_meta.html">TypeMeta</a> &<a class="el" href="classcaffe2_1_1_blob.html#a50308d6febe9e777f19413994a9774a5">meta</a>)</td></tr> <tr class="separator:af37f14f710afcaf5f9c538a4bd7d8251"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:abb411d603b3c91f77eec8b4bb3c1dae1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abb411d603b3c91f77eec8b4bb3c1dae1"></a> void </td><td class="memItemRight" valign="bottom"><a class="el" href="classcaffe2_1_1_blob.html#abb411d603b3c91f77eec8b4bb3c1dae1">Reset</a> ()</td></tr> <tr class="memdesc:abb411d603b3c91f77eec8b4bb3c1dae1"><td class="mdescLeft"> </td><td class="mdescRight">Resets the <a class="el" href="classcaffe2_1_1_blob.html" title="Blob is a general container that hosts a typed pointer. ">Blob</a> to an empty one. <br /></td></tr> <tr class="separator:abb411d603b3c91f77eec8b4bb3c1dae1"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aa77a7a69a0321d80895142e51dd287d5"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classcaffe2_1_1_blob.html#aa77a7a69a0321d80895142e51dd287d5">Serialize</a> (const string &name, BlobSerializerBase::SerializationAcceptor acceptor, int chunk_size=kDefaultChunkSize) const </td></tr> <tr class="memdesc:aa77a7a69a0321d80895142e51dd287d5"><td class="mdescLeft"> </td><td class="mdescRight">Serializes the current blob, if possible. <a href="#aa77a7a69a0321d80895142e51dd287d5">More...</a><br /></td></tr> <tr class="separator:aa77a7a69a0321d80895142e51dd287d5"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:abe10b96c2383dde7ce42dd7d6991a987"><td class="memItemLeft" align="right" valign="top">string </td><td class="memItemRight" valign="bottom"><a class="el" href="classcaffe2_1_1_blob.html#abe10b96c2383dde7ce42dd7d6991a987">Serialize</a> (const string &name) const </td></tr> <tr class="memdesc:abe10b96c2383dde7ce42dd7d6991a987"><td class="mdescLeft"> </td><td class="mdescRight">Convenience function to serialize a blob to a string. <a href="#abe10b96c2383dde7ce42dd7d6991a987">More...</a><br /></td></tr> <tr class="separator:abe10b96c2383dde7ce42dd7d6991a987"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a808d8b69c54d3d69db8c447bdc2212a2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a808d8b69c54d3d69db8c447bdc2212a2"></a> void </td><td class="memItemRight" valign="bottom"><a class="el" href="classcaffe2_1_1_blob.html#a808d8b69c54d3d69db8c447bdc2212a2">swap</a> (<a class="el" href="classcaffe2_1_1_blob.html">Blob</a> &rhs)</td></tr> <tr class="memdesc:a808d8b69c54d3d69db8c447bdc2212a2"><td class="mdescLeft"> </td><td class="mdescRight">Swaps the underlying storage of two blobs. <br /></td></tr> <tr class="separator:a808d8b69c54d3d69db8c447bdc2212a2"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a77fd09388bb320062d332394be9b80cf"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classcaffe2_1_1_blob.html#a77fd09388bb320062d332394be9b80cf">Deserialize</a> (const string &content)</td></tr> <tr class="memdesc:a77fd09388bb320062d332394be9b80cf"><td class="mdescLeft"> </td><td class="mdescRight">Deserializes from a string containing either BlobProto or TensorProto. <a href="#a77fd09388bb320062d332394be9b80cf">More...</a><br /></td></tr> <tr class="separator:a77fd09388bb320062d332394be9b80cf"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a3b81d7b603a6610dc3480c660c58aab4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3b81d7b603a6610dc3480c660c58aab4"></a> void </td><td class="memItemRight" valign="bottom"><b>Deserialize</b> (const BlobProto &proto)</td></tr> <tr class="separator:a3b81d7b603a6610dc3480c660c58aab4"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> <div class="textblock"><p><a class="el" href="classcaffe2_1_1_blob.html" title="Blob is a general container that hosts a typed pointer. ">Blob</a> is a general container that hosts a typed pointer. </p> <p>A <a class="el" href="classcaffe2_1_1_blob.html" title="Blob is a general container that hosts a typed pointer. ">Blob</a> 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 <a class="el" href="classcaffe2_1_1_tensor.html" title="Tensor is the basic class in Caffe2 that stores a contiguous memory with its shape information...">Tensor</a>. </p> <p>Definition at line <a class="el" href="blob_8h_source.html#l00025">25</a> of file <a class="el" href="blob_8h_source.html">blob.h</a>.</p> </div><h2 class="groupheader">Member Function Documentation</h2> <a class="anchor" id="a77fd09388bb320062d332394be9b80cf"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void caffe2::Blob::Deserialize </td> <td>(</td> <td class="paramtype">const string & </td> <td class="paramname"><em>content</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Deserializes from a string containing either BlobProto or TensorProto. </p> <p>If the deserialization fails, the content in the blob should no longer be trusted. </p> <p>Definition at line <a class="el" href="blob__serialization_8cc_source.html#l00101">101</a> of file <a class="el" href="blob__serialization_8cc_source.html">blob_serialization.cc</a>.</p> </div> </div> <a class="anchor" id="aad0bb1254349e2c96fcdb719166f2628"></a> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class T > </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">const T& caffe2::Blob::Get </td> <td>(</td> <td class="paramname"></td><td>)</td> <td> const</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Gets the const reference of the stored object. </p> <p>The code checks if the stored object is of the desired type. </p> <p>Definition at line <a class="el" href="blob_8h_source.html#l00075">75</a> of file <a class="el" href="blob_8h_source.html">blob.h</a>.</p> </div> </div> <a class="anchor" id="a355cff5bfcdfce83ac53ce2a2eef9ee4"></a> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class T > </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">T* caffe2::Blob::GetMutable </td> <td>(</td> <td class="paramtype">bool * </td> <td class="paramname"><em>is_new_object</em> = <code>nullptr</code></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Gets a mutable pointer to the stored object. </p> <p>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 use <a class="el" href="classcaffe2_1_1_blob.html#abb411d603b3c91f77eec8b4bb3c1dae1" title="Resets the Blob to an empty one. ">Reset()</a>. </p> <p>Definition at line <a class="el" href="blob_8h_source.html#l00101">101</a> of file <a class="el" href="blob_8h_source.html">blob.h</a>.</p> </div> </div> <a class="anchor" id="ae81a7c2d6648ec4a15652e8d59d64a40"></a> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">DestroyCall caffe2::Blob::Release </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Releases the ownership, if any, this <a class="el" href="classcaffe2_1_1_blob.html" title="Blob is a general container that hosts a typed pointer. ">Blob</a> has on the underlying pointer. </p> <p>The user is then responsible for freeing the data if needed </p> <p>Definition at line <a class="el" href="blob_8h_source.html#l00146">146</a> of file <a class="el" href="blob_8h_source.html">blob.h</a>.</p> </div> </div> <a class="anchor" id="a3fd4d67f8c8d27c80041cef53468dbf1"></a> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class T > </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">T* caffe2::Blob::Reset </td> <td>(</td> <td class="paramtype">T * </td> <td class="paramname"><em>allocated</em></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Sets the underlying object to the allocated one. </p> <p>The <a class="el" href="classcaffe2_1_1_blob.html" title="Blob is a general container that hosts a typed pointer. ">Blob</a> then takes over the ownership of the passed in pointer. If there is already an object in the <a class="el" href="classcaffe2_1_1_blob.html" title="Blob is a general container that hosts a typed pointer. ">Blob</a>, the old object is freed.</p> <p>This is used when the underlying class T does not have a default ctor, or complex initializations needs to be done outside the blob. </p> <p>Definition at line <a class="el" href="blob_8h_source.html#l00121">121</a> of file <a class="el" href="blob_8h_source.html">blob.h</a>.</p> </div> </div> <a class="anchor" id="aa77a7a69a0321d80895142e51dd287d5"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void caffe2::Blob::Serialize </td> <td>(</td> <td class="paramtype">const string & </td> <td class="paramname"><em>name</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">BlobSerializerBase::SerializationAcceptor </td> <td class="paramname"><em>acceptor</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"><em>chunk_size</em> = <code>kDefaultChunkSize</code> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td> const</td> </tr> </table> </div><div class="memdoc"> <p>Serializes the current blob, if possible. </p> <p>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. </p> <p>Definition at line <a class="el" href="blob__serialization_8cc_source.html#l00065">65</a> of file <a class="el" href="blob__serialization_8cc_source.html">blob_serialization.cc</a>.</p> </div> </div> <a class="anchor" id="abe10b96c2383dde7ce42dd7d6991a987"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">std::string caffe2::Blob::Serialize </td> <td>(</td> <td class="paramtype">const string & </td> <td class="paramname"><em>name</em></td><td>)</td> <td> const</td> </tr> </table> </div><div class="memdoc"> <p>Convenience function to serialize a blob to a string. </p> <p>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 <a class="el" href="blob__serializer__base_8h_source.html">blob_serializer_base.h</a>.</p> <p>NOTE: this function doesn't do chunking and might break with big tensors. </p> <p>Definition at line <a class="el" href="blob__serialization_8cc_source.html#l00075">75</a> of file <a class="el" href="blob__serialization_8cc_source.html">blob_serialization.cc</a>.</p> </div> </div> <a class="anchor" id="a4e110fabb1ecbe684576dc7b20ea6516"></a> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class T > </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">std::remove_const<T>::type* caffe2::Blob::ShareExternal </td> <td>(</td> <td class="paramtype">typename std::remove_const< T >::type * </td> <td class="paramname"><em>allocated</em></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Sets the underlying object to the allocated one, but does not take over the ownership of the passed in pointer. </p> <p>If there is already an object in the <a class="el" href="classcaffe2_1_1_blob.html" title="Blob is a general container that hosts a typed pointer. ">Blob</a>, the old object is freed.</p> <p>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. </p> <p>Definition at line <a class="el" href="blob_8h_source.html#l00163">163</a> of file <a class="el" href="blob_8h_source.html">blob.h</a>.</p> </div> </div> <hr/>The documentation for this class was generated from the following files:<ul> <li>caffe2/core/<a class="el" href="blob_8h_source.html">blob.h</a></li> <li>caffe2/core/<a class="el" href="blob__serialization_8cc_source.html">blob_serialization.cc</a></li> </ul> </div><!-- contents --> <!-- HTML footer for doxygen 1.8.14--> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> Generated on Thu Apr 19 2018 13:03:58 for Caffe2 - C++ API by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.11 </small></address> <div class="footerContainer"> <div id="footer_wrap" class="wrapper footerWrapper"> <div class="footerBlocks"> <div id="fb_oss" class="footerSection fbOpenSourceFooter"> <svg class="facebookOSSLogoSvg" viewBox="0 0 1133.9 1133.9" x="0px" y="0px" height=50 width=50> <g> <path class="logoRing outerRing" d="M 498.3 3.7 c 153.6 88.9 307.3 177.7 461.1 266.2 c 7.6 4.4 10.3 9.1 10.3 17.8 c -0.3 179.1 -0.2 358.3 0 537.4 c 0 8.1 -2.4 12.8 -9.7 17.1 c -154.5 88.9 -308.8 178.1 -462.9 267.5 c -9 5.2 -15.5 5.3 -24.6 0.1 c -153.9 -89.2 -307.9 -178 -462.1 -266.8 C 3 838.8 0 833.9 0 825.1 c 0.3 -179.1 0.2 -358.3 0 -537.4 c 0 -8.6 2.6 -13.6 10.2 -18 C 164.4 180.9 318.4 92 472.4 3 C 477 -1.5 494.3 -0.7 498.3 3.7 Z M 48.8 555.3 c 0 79.9 0.2 159.9 -0.2 239.8 c -0.1 10 3 15.6 11.7 20.6 c 137.2 78.8 274.2 157.8 411 237.3 c 9.9 5.7 17 5.7 26.8 0.1 c 137.5 -79.8 275.2 -159.2 412.9 -238.5 c 7.4 -4.3 10.5 -8.9 10.5 -17.8 c -0.3 -160.2 -0.3 -320.5 0 -480.7 c 0 -8.8 -2.8 -13.6 -10.3 -18 C 772.1 218 633.1 137.8 494.2 57.4 c -6.5 -3.8 -11.5 -4.5 -18.5 -0.5 C 336.8 137.4 197.9 217.7 58.8 297.7 c -7.7 4.4 -10.2 9.2 -10.2 17.9 C 48.9 395.5 48.8 475.4 48.8 555.3 Z" /> <path class="logoRing middleRing" d="M 184.4 555.9 c 0 -33.3 -1 -66.7 0.3 -100 c 1.9 -48 24.1 -86 64.7 -110.9 c 54.8 -33.6 110.7 -65.5 167 -96.6 c 45.7 -25.2 92.9 -24.7 138.6 1 c 54.4 30.6 108.7 61.5 162.2 93.7 c 44 26.5 67.3 66.8 68 118.4 c 0.9 63.2 0.9 126.5 0 189.7 c -0.7 50.6 -23.4 90.7 -66.6 116.9 c -55 33.4 -110.8 65.4 -167.1 96.5 c -43.4 24 -89 24.2 -132.3 0.5 c -57.5 -31.3 -114.2 -64 -170 -98.3 c -41 -25.1 -62.9 -63.7 -64.5 -112.2 C 183.5 621.9 184.3 588.9 184.4 555.9 Z M 232.9 556.3 c 0 29.5 0.5 59.1 -0.1 88.6 c -0.8 39.2 16.9 67.1 50.2 86.2 c 51.2 29.4 102.2 59.2 153.4 88.4 c 31.4 17.9 63.6 18.3 95 0.6 c 53.7 -30.3 107.1 -61.2 160.3 -92.5 c 29.7 -17.5 45 -44.5 45.3 -78.8 c 0.6 -61.7 0.5 -123.5 0 -185.2 c -0.3 -34.4 -15.3 -61.5 -44.9 -79 C 637.7 352.6 583 320.8 527.9 290 c -27.5 -15.4 -57.2 -16.1 -84.7 -0.7 c -56.9 31.6 -113.4 64 -169.1 97.6 c -26.4 15.9 -40.7 41.3 -41.1 72.9 C 232.6 491.9 232.9 524.1 232.9 556.3 Z" /> <path class="logoRing innerRing" d="M 484.9 424.4 c 69.8 -2.8 133.2 57.8 132.6 132 C 617 630 558.5 688.7 484.9 689.1 c -75.1 0.4 -132.6 -63.6 -132.7 -132.7 C 352.1 485 413.4 421.5 484.9 424.4 Z M 401.3 556.7 c -3.4 37.2 30.5 83.6 83 84.1 c 46.6 0.4 84.8 -37.6 84.9 -84 c 0.1 -46.6 -37.2 -84.4 -84.2 -84.6 C 432.2 472.1 397.9 518.3 401.3 556.7 Z" /> </g> </svg> <h2>Facebook Open Source</h2> </div> <div class="footerSection"> <a class="footerLink" href="https://code.facebook.com/projects/" target="_blank">Open Source Projects</a> <a class="footerLink" href="https://github.com/facebook/" target="_blank">GitHub</a> <a class="footerLink" href="https://twitter.com/fbOpenSource" target="_blank">Twitter</a> </div> <div class="footerSection rightAlign"> <a class="footerLink" href="https://github.com/caffe2/caffe2" target="_blank">Contribute to this project on GitHub</a> </div> </div> </div> </div> <script type="text/javascript" src="/js/jekyll-link-anchors.js"></script> <script> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create', '{{ site.gacode }}', 'auto'); ga('send', 'pageview'); </script> </body> </html>