<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://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.15"/> <meta name="viewport" content="width=device-width, initial-scale=1"/> <title>libfilezilla: file Class Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <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> <link href="doxygen.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"><img alt="Logo" src="libfilezilla.png"/></td> <td id="projectalign" style="padding-left: 0.5em;"> <div id="projectname">libfilezilla </div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.8.15 --> <script type="text/javascript"> /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ var searchBox = new SearchBox("searchBox", "search",false,'Search'); /* @license-end */ </script> <script type="text/javascript" src="menudata.js"></script> <script type="text/javascript" src="menu.js"></script> <script type="text/javascript"> /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ $(function() { initMenu('',true,false,'search.php','Search'); $(document).ready(function() { init_search(); }); }); /* @license-end */</script> <div id="main-nav"></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="namespacefz.html">fz</a></li><li class="navelem"><a class="el" href="classfz_1_1file.html">file</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> | <a href="classfz_1_1file-members.html">List of all members</a> </div> <div class="headertitle"> <div class="title">file Class Reference<span class="mlabels"><span class="mlabel">final</span></span></div> </div> </div><!--header--> <div class="contents"> <p>Lean class for file access. <a href="classfz_1_1file.html#details">More...</a></p> <p><code>#include <<a class="el" href="file_8hpp_source.html">file.hpp</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:a1a6b6fb557d8d37d59700faf4e4c9167"><td class="memItemLeft" align="right" valign="top"><a id="a1a6b6fb557d8d37d59700faf4e4c9167"></a>enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="classfz_1_1file.html#a1a6b6fb557d8d37d59700faf4e4c9167">mode</a> { <b>reading</b>, <b>writing</b> }</td></tr> <tr class="memdesc:a1a6b6fb557d8d37d59700faf4e4c9167"><td class="mdescLeft"> </td><td class="mdescRight">Files can be opened for reading or writing, but not both. <br /></td></tr> <tr class="separator:a1a6b6fb557d8d37d59700faf4e4c9167"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a2ab80132239aa270a1d61be4212d4ec4"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="classfz_1_1file.html#a2ab80132239aa270a1d61be4212d4ec4">creation_flags</a> { <a class="el" href="classfz_1_1file.html#a2ab80132239aa270a1d61be4212d4ec4ae27b03a961c26a366e366696467903fa">existing</a>, <a class="el" href="classfz_1_1file.html#a2ab80132239aa270a1d61be4212d4ec4ae8654263bd8adf1d0922f427d8f3fc1b">empty</a> }</td></tr> <tr class="memdesc:a2ab80132239aa270a1d61be4212d4ec4"><td class="mdescLeft"> </td><td class="mdescRight">Creation flags when opening file for writing. <a href="classfz_1_1file.html#a2ab80132239aa270a1d61be4212d4ec4">More...</a><br /></td></tr> <tr class="separator:a2ab80132239aa270a1d61be4212d4ec4"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ad7cd68f5f041004164c1ea9bf96a7812"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="classfz_1_1file.html#ad7cd68f5f041004164c1ea9bf96a7812">seek_mode</a> { <a class="el" href="classfz_1_1file.html#ad7cd68f5f041004164c1ea9bf96a7812a6e2739552f337cfb632f5afc4a10892b">begin</a>, <a class="el" href="classfz_1_1file.html#ad7cd68f5f041004164c1ea9bf96a7812a8225bfb34b5298eb7529ec580a4d178e">current</a>, <a class="el" href="classfz_1_1file.html#ad7cd68f5f041004164c1ea9bf96a7812a80b1a820e533d7cf0e1715319339e6d0">end</a> }</td></tr> <tr class="memdesc:ad7cd68f5f041004164c1ea9bf96a7812"><td class="mdescLeft"> </td><td class="mdescRight">Used by <a class="el" href="classfz_1_1file.html#a399b3337028c1680e7dfd6987100f9a7">seek</a>. <a href="classfz_1_1file.html#ad7cd68f5f041004164c1ea9bf96a7812">More...</a><br /></td></tr> <tr class="separator:ad7cd68f5f041004164c1ea9bf96a7812"><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:a3d9859a778796aaccf603ed6a99851d2"><td class="memItemLeft" align="right" valign="top"><a id="a3d9859a778796aaccf603ed6a99851d2"></a>  </td><td class="memItemRight" valign="bottom"><b>file</b> (<a class="el" href="namespacefz.html#a79dcecd35ee9a55ae1a5afe76d23e9e5">native_string</a> const &f, <a class="el" href="classfz_1_1file.html#a1a6b6fb557d8d37d59700faf4e4c9167">mode</a> m, <a class="el" href="classfz_1_1file.html#a2ab80132239aa270a1d61be4212d4ec4">creation_flags</a> d=<a class="el" href="classfz_1_1file.html#a2ab80132239aa270a1d61be4212d4ec4ae27b03a961c26a366e366696467903fa">existing</a>)</td></tr> <tr class="separator:a3d9859a778796aaccf603ed6a99851d2"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aa293f0822b6a49486559367215378e79"><td class="memItemLeft" align="right" valign="top"><a id="aa293f0822b6a49486559367215378e79"></a>  </td><td class="memItemRight" valign="bottom"><b>file</b> (<a class="el" href="classfz_1_1file.html">file</a> const &)=delete</td></tr> <tr class="separator:aa293f0822b6a49486559367215378e79"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a6e05a4c2823b54d466bfefd070405563"><td class="memItemLeft" align="right" valign="top"><a id="a6e05a4c2823b54d466bfefd070405563"></a> <a class="el" href="classfz_1_1file.html">file</a> & </td><td class="memItemRight" valign="bottom"><b>operator=</b> (<a class="el" href="classfz_1_1file.html">file</a> const &)=delete</td></tr> <tr class="separator:a6e05a4c2823b54d466bfefd070405563"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a298583c3d514f1169bfc43169ba78c38"><td class="memItemLeft" align="right" valign="top"><a id="a298583c3d514f1169bfc43169ba78c38"></a> bool </td><td class="memItemRight" valign="bottom"><b>opened</b> () const</td></tr> <tr class="separator:a298583c3d514f1169bfc43169ba78c38"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:af736fb1d4076b6e9ceca7c1e38b690e7"><td class="memItemLeft" align="right" valign="top"><a id="af736fb1d4076b6e9ceca7c1e38b690e7"></a> bool </td><td class="memItemRight" valign="bottom"><b>open</b> (<a class="el" href="namespacefz.html#a79dcecd35ee9a55ae1a5afe76d23e9e5">native_string</a> const &f, <a class="el" href="classfz_1_1file.html#a1a6b6fb557d8d37d59700faf4e4c9167">mode</a> m, <a class="el" href="classfz_1_1file.html#a2ab80132239aa270a1d61be4212d4ec4">creation_flags</a> d=<a class="el" href="classfz_1_1file.html#a2ab80132239aa270a1d61be4212d4ec4ae27b03a961c26a366e366696467903fa">existing</a>)</td></tr> <tr class="separator:af736fb1d4076b6e9ceca7c1e38b690e7"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a5ae591df94fc66ccb85cbb6565368bca"><td class="memItemLeft" align="right" valign="top"><a id="a5ae591df94fc66ccb85cbb6565368bca"></a> void </td><td class="memItemRight" valign="bottom"><b>close</b> ()</td></tr> <tr class="separator:a5ae591df94fc66ccb85cbb6565368bca"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aa326d81dcac346461f3b8528bf0b49de"><td class="memItemLeft" align="right" valign="top">int64_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classfz_1_1file.html#aa326d81dcac346461f3b8528bf0b49de">size</a> () const</td></tr> <tr class="memdesc:aa326d81dcac346461f3b8528bf0b49de"><td class="mdescLeft"> </td><td class="mdescRight">Gets size of file. <a href="#aa326d81dcac346461f3b8528bf0b49de">More...</a><br /></td></tr> <tr class="separator:aa326d81dcac346461f3b8528bf0b49de"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a399b3337028c1680e7dfd6987100f9a7"><td class="memItemLeft" align="right" valign="top">int64_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classfz_1_1file.html#a399b3337028c1680e7dfd6987100f9a7">seek</a> (int64_t offset, <a class="el" href="classfz_1_1file.html#ad7cd68f5f041004164c1ea9bf96a7812">seek_mode</a> m)</td></tr> <tr class="memdesc:a399b3337028c1680e7dfd6987100f9a7"><td class="mdescLeft"> </td><td class="mdescRight">Relative seek based on seek mode. <a href="#a399b3337028c1680e7dfd6987100f9a7">More...</a><br /></td></tr> <tr class="separator:a399b3337028c1680e7dfd6987100f9a7"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:af119155155b4db44bdc4c1677a869b80"><td class="memItemLeft" align="right" valign="top"><a id="af119155155b4db44bdc4c1677a869b80"></a> int64_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classfz_1_1file.html#af119155155b4db44bdc4c1677a869b80">position</a> ()</td></tr> <tr class="memdesc:af119155155b4db44bdc4c1677a869b80"><td class="mdescLeft"> </td><td class="mdescRight">Get Current position in file. <br /></td></tr> <tr class="separator:af119155155b4db44bdc4c1677a869b80"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a92d96aabb25a62d5b8435eeea2682945"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classfz_1_1file.html#a92d96aabb25a62d5b8435eeea2682945">truncate</a> ()</td></tr> <tr class="memdesc:a92d96aabb25a62d5b8435eeea2682945"><td class="mdescLeft"> </td><td class="mdescRight">Truncate the file to the current position of the file pointer. <a href="#a92d96aabb25a62d5b8435eeea2682945">More...</a><br /></td></tr> <tr class="separator:a92d96aabb25a62d5b8435eeea2682945"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a7357db10d87582d9e0fae78f8abd8f7a"><td class="memItemLeft" align="right" valign="top">int64_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classfz_1_1file.html#a7357db10d87582d9e0fae78f8abd8f7a">read</a> (void *buf, int64_t count)</td></tr> <tr class="memdesc:a7357db10d87582d9e0fae78f8abd8f7a"><td class="mdescLeft"> </td><td class="mdescRight">Read data from file. <a href="#a7357db10d87582d9e0fae78f8abd8f7a">More...</a><br /></td></tr> <tr class="separator:a7357db10d87582d9e0fae78f8abd8f7a"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a51049bbe766d5e29fa572e984ac203fd"><td class="memItemLeft" align="right" valign="top">int64_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classfz_1_1file.html#a51049bbe766d5e29fa572e984ac203fd">write</a> (void const *buf, int64_t count)</td></tr> <tr class="memdesc:a51049bbe766d5e29fa572e984ac203fd"><td class="mdescLeft"> </td><td class="mdescRight">Write data to file. <a href="#a51049bbe766d5e29fa572e984ac203fd">More...</a><br /></td></tr> <tr class="separator:a51049bbe766d5e29fa572e984ac203fd"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:af355a0afe5a01ec2cf613cab206de65f"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classfz_1_1file.html#af355a0afe5a01ec2cf613cab206de65f">fsync</a> ()</td></tr> <tr class="memdesc:af355a0afe5a01ec2cf613cab206de65f"><td class="mdescLeft"> </td><td class="mdescRight">Ensure data is flushed to disk. <a href="#af355a0afe5a01ec2cf613cab206de65f">More...</a><br /></td></tr> <tr class="separator:af355a0afe5a01ec2cf613cab206de65f"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> <div class="textblock"><p>Lean class for file access. </p> <p>This class uses the system's native file access functions. It is a less convoluted and much faster alternative to the almost useless std::fstream.</p> <p>Supports large files exceeding the 32bit limits. </p> </div><h2 class="groupheader">Member Enumeration Documentation</h2> <a id="a2ab80132239aa270a1d61be4212d4ec4"></a> <h2 class="memtitle"><span class="permalink"><a href="#a2ab80132239aa270a1d61be4212d4ec4">◆ </a></span>creation_flags</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">enum <a class="el" href="classfz_1_1file.html#a2ab80132239aa270a1d61be4212d4ec4">creation_flags</a></td> </tr> </table> </div><div class="memdoc"> <p>Creation flags when opening file for writing. </p> <p>Only evaluated when opening existing files for writing Non-existing files will always be created when writing. Opening for reading never creates files. </p> <table class="fieldtable"> <tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a2ab80132239aa270a1d61be4212d4ec4ae27b03a961c26a366e366696467903fa"></a>existing </td><td class="fielddoc"><p>Keep existing data if file exists, otherwise create new. </p> </td></tr> <tr><td class="fieldname"><a id="a2ab80132239aa270a1d61be4212d4ec4ae8654263bd8adf1d0922f427d8f3fc1b"></a>empty </td><td class="fielddoc"><p>Truncate file if already existing, otherwise create new. </p> </td></tr> </table> </div> </div> <a id="ad7cd68f5f041004164c1ea9bf96a7812"></a> <h2 class="memtitle"><span class="permalink"><a href="#ad7cd68f5f041004164c1ea9bf96a7812">◆ </a></span>seek_mode</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">enum <a class="el" href="classfz_1_1file.html#ad7cd68f5f041004164c1ea9bf96a7812">seek_mode</a></td> </tr> </table> </div><div class="memdoc"> <p>Used by <a class="el" href="classfz_1_1file.html#a399b3337028c1680e7dfd6987100f9a7">seek</a>. </p> <table class="fieldtable"> <tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="ad7cd68f5f041004164c1ea9bf96a7812a6e2739552f337cfb632f5afc4a10892b"></a>begin </td><td class="fielddoc"><p>Seek from beginning of file. </p> </td></tr> <tr><td class="fieldname"><a id="ad7cd68f5f041004164c1ea9bf96a7812a8225bfb34b5298eb7529ec580a4d178e"></a>current </td><td class="fielddoc"><p>Seek from current position in the file. </p> </td></tr> <tr><td class="fieldname"><a id="ad7cd68f5f041004164c1ea9bf96a7812a80b1a820e533d7cf0e1715319339e6d0"></a>end </td><td class="fielddoc"><p>Seek from end of file. </p> </td></tr> </table> </div> </div> <h2 class="groupheader">Member Function Documentation</h2> <a id="af355a0afe5a01ec2cf613cab206de65f"></a> <h2 class="memtitle"><span class="permalink"><a href="#af355a0afe5a01ec2cf613cab206de65f">◆ </a></span>fsync()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool fsync </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Ensure data is flushed to disk. </p> <dl class="section return"><dt>Returns</dt><dd>true Data has been flushed to disk. </dd> <dd> false Data could not be flushed to disk. </dd></dl> </div> </div> <a id="a7357db10d87582d9e0fae78f8abd8f7a"></a> <h2 class="memtitle"><span class="permalink"><a href="#a7357db10d87582d9e0fae78f8abd8f7a">◆ </a></span>read()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int64_t read </td> <td>(</td> <td class="paramtype">void * </td> <td class="paramname"><em>buf</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int64_t </td> <td class="paramname"><em>count</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Read data from file. </p> <p>Reading from file advances the file pointer with the number of octets read.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">buf</td><td>The buffer that should receive the data. Must be large enough to hold at least <code>count</code> octets </td></tr> <tr><td class="paramname">count</td><td>The number of octets to read</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>>0 The number of octets read and placed into <code>buf</code>. It may be less than <code>count</code>. </dd> <dd> 0 at EOF </dd> <dd> -1 on error</dd></dl> <dl class="section note"><dt>Note</dt><dd>Reading less than <code>count</code> octets can happen at any time, it does not indicate EOF. </dd></dl> </div> </div> <a id="a399b3337028c1680e7dfd6987100f9a7"></a> <h2 class="memtitle"><span class="permalink"><a href="#a399b3337028c1680e7dfd6987100f9a7">◆ </a></span>seek()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int64_t seek </td> <td>(</td> <td class="paramtype">int64_t </td> <td class="paramname"><em>offset</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="classfz_1_1file.html#ad7cd68f5f041004164c1ea9bf96a7812">seek_mode</a> </td> <td class="paramname"><em>m</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Relative seek based on seek mode. </p> <p>It is possible to seek past the end of the file. Doing so does not change the size of the file. It will only change on subsequent writes.</p> <p>You can get the current position int the file by passing <code>current</code> as <a class="el" href="classfz_1_1file.html#ad7cd68f5f041004164c1ea9bf96a7812">seek_mode</a> with a 0 offset.</p> <dl class="section return"><dt>Returns</dt><dd>-1 on error, otherwise new absolute offset in file </dd></dl> <dl class="section note"><dt>Note</dt><dd>On failure, the new position in the file is undefined. </dd></dl> </div> </div> <a id="aa326d81dcac346461f3b8528bf0b49de"></a> <h2 class="memtitle"><span class="permalink"><a href="#aa326d81dcac346461f3b8528bf0b49de">◆ </a></span>size()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int64_t size </td> <td>(</td> <td class="paramname"></td><td>)</td> <td> const</td> </tr> </table> </div><div class="memdoc"> <p>Gets size of file. </p> <dl class="section return"><dt>Returns</dt><dd>Size of file or -1 on error </dd></dl> </div> </div> <a id="a92d96aabb25a62d5b8435eeea2682945"></a> <h2 class="memtitle"><span class="permalink"><a href="#a92d96aabb25a62d5b8435eeea2682945">◆ </a></span>truncate()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool truncate </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Truncate the file to the current position of the file pointer. </p> <p>Despite its name, this function can extend the size of the file if the current file pointer is past the end of the file. </p> </div> </div> <a id="a51049bbe766d5e29fa572e984ac203fd"></a> <h2 class="memtitle"><span class="permalink"><a href="#a51049bbe766d5e29fa572e984ac203fd">◆ </a></span>write()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int64_t write </td> <td>(</td> <td class="paramtype">void const * </td> <td class="paramname"><em>buf</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int64_t </td> <td class="paramname"><em>count</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Write data to file. </p> <p>Writing to file advances the file pointer with the number of octets written</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">buf</td><td>The buffer that holds the data to be written. Must hold at least <code>count</code> octets </td></tr> <tr><td class="paramname">count</td><td>The number of octets to write</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>>=0 The number of octets written to the file. It may be less than <code>count</code>. </dd> <dd> -1 on error </dd></dl> </div> </div> <hr/>The documentation for this class was generated from the following file:<ul> <li><a class="el" href="file_8hpp_source.html">file.hpp</a></li> </ul> </div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> Generated by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.15 </small></address> </body> </html>