Files
libaaruformat/docs/html/index_8h_source.html

188 lines
21 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>libaaruformat: include/aaruformat/structs/index.h Source File</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>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="cookie.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 id="projectrow">
<td id="projectalign">
<div id="projectname">libaaruformat<span id="projectnumber">&#160;1.0</span>
</div>
<div id="projectbrief">Aaru Data Preservation Suite - Format Library</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search/",'.html');
</script>
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search',true);
$(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(function(){initNavTree('index_8h_source.html','',''); });
</script>
<div id="container">
<div id="doc-content">
<!-- 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">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">index.h</div></div>
</div><!--header-->
<div class="contents">
<a href="index_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">/*</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment"> * This file is part of the Aaru Data Preservation Suite.</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment"> * Copyright (c) 2019-2025 Natalia Portillo.</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment"> *</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment"> * This library is free software; you can redistribute it and/or modify</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment"> * it under the terms of the GNU Lesser General Public License as</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment"> * published by the Free Software Foundation; either version 2.1 of the</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment"> * License, or (at your option) any later version.</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment"> *</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment"> * This library is distributed in the hope that it will be useful, but</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment"> * Lesser General Public License for more details.</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment"> *</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment"> * You should have received a copy of the GNU Lesser General Public</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment"> * License along with this library; if not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment"> */</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span> </div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="preprocessor">#ifndef LIBAARUFORMAT_INDEX_H</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="preprocessor">#define LIBAARUFORMAT_INDEX_H</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span> </div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="preprocessor">#pragma pack(push, 1)</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span></div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span></div>
<div class="foldopen" id="foldopen00066" data-start="{" data-end="};">
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"><a class="line" href="structIndexHeader.html"> 66</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code hl_struct" href="structIndexHeader.html">IndexHeader</a></div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span>{</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"><a class="line" href="structIndexHeader.html#ae177ec4a99f07ed0e3caadf38a27268e"> 68</a></span> uint32_t <a class="code hl_variable" href="structIndexHeader.html#ae177ec4a99f07ed0e3caadf38a27268e">identifier</a>; </div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"><a class="line" href="structIndexHeader.html#ae58869887e8b622c63cc4ca85b8490a6"> 69</a></span> uint16_t <a class="code hl_variable" href="structIndexHeader.html#ae58869887e8b622c63cc4ca85b8490a6">entries</a>; </div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"><a class="line" href="structIndexHeader.html#a2813a47694e6c1e6bb4bdf7f0ced6cc4"> 70</a></span> uint64_t <a class="code hl_variable" href="structIndexHeader.html#a2813a47694e6c1e6bb4bdf7f0ced6cc4">crc64</a>; </div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"><a class="line" href="index_8h.html#af68e20e1f9ee3ea029ed4f69ea82c32f"> 71</a></span>} <a class="code hl_struct" href="structIndexHeader.html">IndexHeader</a>;</div>
</div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span></div>
<div class="foldopen" id="foldopen00078" data-start="{" data-end="};">
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"><a class="line" href="structIndexHeader2.html"> 78</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code hl_struct" href="structIndexHeader2.html">IndexHeader2</a></div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span>{</div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"><a class="line" href="structIndexHeader2.html#a6b95ee733661cf13e56a46ecd1e048b0"> 80</a></span> uint32_t <a class="code hl_variable" href="structIndexHeader2.html#a6b95ee733661cf13e56a46ecd1e048b0">identifier</a>; </div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"><a class="line" href="structIndexHeader2.html#a514ed0ba071841bc96f9583b67c664f9"> 81</a></span> uint64_t <a class="code hl_variable" href="structIndexHeader2.html#a514ed0ba071841bc96f9583b67c664f9">entries</a>; </div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"><a class="line" href="structIndexHeader2.html#a8851ba5d67ff638378d9e61db5413b8f"> 82</a></span> uint64_t <a class="code hl_variable" href="structIndexHeader2.html#a8851ba5d67ff638378d9e61db5413b8f">crc64</a>; </div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"><a class="line" href="index_8h.html#a5f7e5a06dff1100016015c4809277d2a"> 83</a></span>} <a class="code hl_struct" href="structIndexHeader2.html">IndexHeader2</a>;</div>
</div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span></div>
<div class="foldopen" id="foldopen00092" data-start="{" data-end="};">
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"><a class="line" href="structIndexHeader3.html"> 92</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code hl_struct" href="structIndexHeader3.html">IndexHeader3</a></div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span>{</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"><a class="line" href="structIndexHeader3.html#a482f94fd93019dd2879d984bc8eecf67"> 94</a></span> uint32_t <a class="code hl_variable" href="structIndexHeader3.html#a482f94fd93019dd2879d984bc8eecf67">identifier</a>; </div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"><a class="line" href="structIndexHeader3.html#af05fe8e08e929aa0eab6b74638f22b74"> 95</a></span> uint64_t <a class="code hl_variable" href="structIndexHeader3.html#af05fe8e08e929aa0eab6b74638f22b74">entries</a>; </div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"><a class="line" href="structIndexHeader3.html#a7291ac63956c468bf48aa17d24d3f7b2"> 96</a></span> uint64_t <a class="code hl_variable" href="structIndexHeader3.html#a7291ac63956c468bf48aa17d24d3f7b2">crc64</a>; </div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"><a class="line" href="structIndexHeader3.html#a33743c206cb10cc1d8ff2c7f9e61ddcf"> 97</a></span> uint64_t <a class="code hl_variable" href="structIndexHeader3.html#a33743c206cb10cc1d8ff2c7f9e61ddcf">previous</a>; </div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"><a class="line" href="index_8h.html#acae06d4f1500d591e6d86b9d52d29a84"> 98</a></span>} <a class="code hl_struct" href="structIndexHeader3.html">IndexHeader3</a>;</div>
</div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span></div>
<div class="foldopen" id="foldopen00108" data-start="{" data-end="};">
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"><a class="line" href="structIndexEntry.html"> 108</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code hl_struct" href="structIndexEntry.html">IndexEntry</a></div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span>{</div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"><a class="line" href="structIndexEntry.html#a4b5c7115ac83019c3f77c6f047e5f75e"> 110</a></span> uint32_t <a class="code hl_variable" href="structIndexEntry.html#a4b5c7115ac83019c3f77c6f047e5f75e">blockType</a>; </div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"><a class="line" href="structIndexEntry.html#ae5d35082a756e0388efbf5fabbe93d10"> 111</a></span> uint16_t <a class="code hl_variable" href="structIndexEntry.html#ae5d35082a756e0388efbf5fabbe93d10">dataType</a>; </div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"><a class="line" href="structIndexEntry.html#a854951a64192d7e4cdcfa6dd6fd2b3ea"> 112</a></span> uint64_t <a class="code hl_variable" href="structIndexEntry.html#a854951a64192d7e4cdcfa6dd6fd2b3ea">offset</a>; </div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"><a class="line" href="index_8h.html#a12d666b4c91b2de9ba60887f0783e98d"> 113</a></span>} <a class="code hl_struct" href="structIndexEntry.html">IndexEntry</a>;</div>
</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> </div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span><span class="preprocessor">#pragma pack(pop)</span></div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> </div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span><span class="preprocessor">#endif </span><span class="comment">// LIBAARUFORMAT_INDEX_H</span></div>
<div class="ttc" id="astructIndexEntry_html"><div class="ttname"><a href="structIndexEntry.html">IndexEntry</a></div><div class="ttdoc">Single index entry describing a block&#39;s type, (optional) data classification, and file offset.</div><div class="ttdef"><b>Definition</b> <a href="#l00108">index.h:109</a></div></div>
<div class="ttc" id="astructIndexEntry_html_a4b5c7115ac83019c3f77c6f047e5f75e"><div class="ttname"><a href="structIndexEntry.html#a4b5c7115ac83019c3f77c6f047e5f75e">IndexEntry::blockType</a></div><div class="ttdeci">uint32_t blockType</div><div class="ttdoc">Block identifier of the referenced block (value from BlockType).</div><div class="ttdef"><b>Definition</b> <a href="#l00110">index.h:110</a></div></div>
<div class="ttc" id="astructIndexEntry_html_a854951a64192d7e4cdcfa6dd6fd2b3ea"><div class="ttname"><a href="structIndexEntry.html#a854951a64192d7e4cdcfa6dd6fd2b3ea">IndexEntry::offset</a></div><div class="ttdeci">uint64_t offset</div><div class="ttdoc">Absolute byte offset in the image where the referenced block header begins.</div><div class="ttdef"><b>Definition</b> <a href="#l00112">index.h:112</a></div></div>
<div class="ttc" id="astructIndexEntry_html_ae5d35082a756e0388efbf5fabbe93d10"><div class="ttname"><a href="structIndexEntry.html#ae5d35082a756e0388efbf5fabbe93d10">IndexEntry::dataType</a></div><div class="ttdeci">uint16_t dataType</div><div class="ttdoc">Data classification (value from DataType) or unused for untyped blocks.</div><div class="ttdef"><b>Definition</b> <a href="#l00111">index.h:111</a></div></div>
<div class="ttc" id="astructIndexHeader2_html"><div class="ttname"><a href="structIndexHeader2.html">IndexHeader2</a></div><div class="ttdoc">Index header (version 2) with 64bit entry counter (identifier == IndexBlock2).</div><div class="ttdef"><b>Definition</b> <a href="#l00078">index.h:79</a></div></div>
<div class="ttc" id="astructIndexHeader2_html_a514ed0ba071841bc96f9583b67c664f9"><div class="ttname"><a href="structIndexHeader2.html#a514ed0ba071841bc96f9583b67c664f9">IndexHeader2::entries</a></div><div class="ttdeci">uint64_t entries</div><div class="ttdoc">Number of IndexEntry records that follow immediately.</div><div class="ttdef"><b>Definition</b> <a href="#l00081">index.h:81</a></div></div>
<div class="ttc" id="astructIndexHeader2_html_a6b95ee733661cf13e56a46ecd1e048b0"><div class="ttname"><a href="structIndexHeader2.html#a6b95ee733661cf13e56a46ecd1e048b0">IndexHeader2::identifier</a></div><div class="ttdeci">uint32_t identifier</div><div class="ttdoc">Block identifier (must be BlockType::IndexBlock2).</div><div class="ttdef"><b>Definition</b> <a href="#l00080">index.h:80</a></div></div>
<div class="ttc" id="astructIndexHeader2_html_a8851ba5d67ff638378d9e61db5413b8f"><div class="ttname"><a href="structIndexHeader2.html#a8851ba5d67ff638378d9e61db5413b8f">IndexHeader2::crc64</a></div><div class="ttdeci">uint64_t crc64</div><div class="ttdoc">CRC64-ECMA of the entries array (legacy byte-swapped rule still applies for old versions).</div><div class="ttdef"><b>Definition</b> <a href="#l00082">index.h:82</a></div></div>
<div class="ttc" id="astructIndexHeader3_html"><div class="ttname"><a href="structIndexHeader3.html">IndexHeader3</a></div><div class="ttdoc">Index header (version 3) adding hierarchical chaining (identifier == IndexBlock3).</div><div class="ttdef"><b>Definition</b> <a href="#l00092">index.h:93</a></div></div>
<div class="ttc" id="astructIndexHeader3_html_a33743c206cb10cc1d8ff2c7f9e61ddcf"><div class="ttname"><a href="structIndexHeader3.html#a33743c206cb10cc1d8ff2c7f9e61ddcf">IndexHeader3::previous</a></div><div class="ttdeci">uint64_t previous</div><div class="ttdoc">File offset of a previous IndexBlock3 header (0 if none / root segment).</div><div class="ttdef"><b>Definition</b> <a href="#l00097">index.h:97</a></div></div>
<div class="ttc" id="astructIndexHeader3_html_a482f94fd93019dd2879d984bc8eecf67"><div class="ttname"><a href="structIndexHeader3.html#a482f94fd93019dd2879d984bc8eecf67">IndexHeader3::identifier</a></div><div class="ttdeci">uint32_t identifier</div><div class="ttdoc">Block identifier (must be BlockType::IndexBlock3).</div><div class="ttdef"><b>Definition</b> <a href="#l00094">index.h:94</a></div></div>
<div class="ttc" id="astructIndexHeader3_html_a7291ac63956c468bf48aa17d24d3f7b2"><div class="ttname"><a href="structIndexHeader3.html#a7291ac63956c468bf48aa17d24d3f7b2">IndexHeader3::crc64</a></div><div class="ttdeci">uint64_t crc64</div><div class="ttdoc">CRC64-ECMA of the local entries array (does NOT cover subindexes or previous chains).</div><div class="ttdef"><b>Definition</b> <a href="#l00096">index.h:96</a></div></div>
<div class="ttc" id="astructIndexHeader3_html_af05fe8e08e929aa0eab6b74638f22b74"><div class="ttname"><a href="structIndexHeader3.html#af05fe8e08e929aa0eab6b74638f22b74">IndexHeader3::entries</a></div><div class="ttdeci">uint64_t entries</div><div class="ttdoc">Number of IndexEntry records that follow in this (sub)index block.</div><div class="ttdef"><b>Definition</b> <a href="#l00095">index.h:95</a></div></div>
<div class="ttc" id="astructIndexHeader_html"><div class="ttname"><a href="structIndexHeader.html">IndexHeader</a></div><div class="ttdoc">Index header (version 1) for legacy images (identifier == IndexBlock).</div><div class="ttdef"><b>Definition</b> <a href="#l00066">index.h:67</a></div></div>
<div class="ttc" id="astructIndexHeader_html_a2813a47694e6c1e6bb4bdf7f0ced6cc4"><div class="ttname"><a href="structIndexHeader.html#a2813a47694e6c1e6bb4bdf7f0ced6cc4">IndexHeader::crc64</a></div><div class="ttdeci">uint64_t crc64</div><div class="ttdoc">CRC64-ECMA of the entries array (legacy byte-swapped for early images).</div><div class="ttdef"><b>Definition</b> <a href="#l00070">index.h:70</a></div></div>
<div class="ttc" id="astructIndexHeader_html_ae177ec4a99f07ed0e3caadf38a27268e"><div class="ttname"><a href="structIndexHeader.html#ae177ec4a99f07ed0e3caadf38a27268e">IndexHeader::identifier</a></div><div class="ttdeci">uint32_t identifier</div><div class="ttdoc">Block identifier (must be BlockType::IndexBlock).</div><div class="ttdef"><b>Definition</b> <a href="#l00068">index.h:68</a></div></div>
<div class="ttc" id="astructIndexHeader_html_ae58869887e8b622c63cc4ca85b8490a6"><div class="ttname"><a href="structIndexHeader.html#ae58869887e8b622c63cc4ca85b8490a6">IndexHeader::entries</a></div><div class="ttdeci">uint16_t entries</div><div class="ttdoc">Number of IndexEntry records that follow immediately.</div><div class="ttdef"><b>Definition</b> <a href="#l00069">index.h:69</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
</div><!-- container -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a href="dir_aeff2545c9dfcfc842fe9d84b123cb31.html">aaruformat</a></li><li class="navelem"><a href="dir_6387aeb6e475a334d8dc12d69f21999e.html">structs</a></li><li class="navelem"><a href="index_8h.html">index.h</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0 </li>
</ul>
</div>
</body>
</html>