2025-10-11 01:35:43 +01:00
<!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" / >
2026-10-08 20:15:08 +01:00
< meta name = "generator" content = "Doxygen 1.18.0" / >
2025-10-11 01:35:43 +01:00
< meta name = "viewport" content = "width=device-width, initial-scale=1" / >
< title > libaaruformat: include/aaruformat/structs/data.h File Reference< / title >
< link href = "tabs.css" rel = "stylesheet" type = "text/css" / >
< script type = "text/javascript" src = "dynsections.js" > < / script >
2026-10-08 20:15:08 +01:00
< script type = "text/javascript" src = "codefolding.js" > < / script >
2025-10-11 01:35:43 +01:00
< 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" >   1.0< / span >
< / div >
< div id = "projectbrief" > Aaru Data Preservation Suite - Format Library< / div >
< / td >
< / tr >
< / tbody >
< / table >
< / div >
<!-- end header part -->
2026-10-08 20:15:08 +01:00
<!-- Generated by Doxygen 1.18.0 -->
2025-10-11 01:35:43 +01:00
< script type = "text/javascript" >
2026-10-08 20:15:08 +01:00
let searchBox = new SearchBox("searchBox", "search/",'.html');
2025-10-11 01:35:43 +01:00
< / script >
< script type = "text/javascript" >
2026-10-08 20:15:08 +01:00
document.addEventListener('DOMContentLoaded', codefold.init);
< / script >
< script type = "application/json" id = "doxygen-config" >
{
"relPath": "",
"generateTreeView": true,
"searchEngine": true,
"serverBasedSearch": false,
"disableIndex": false,
"dynamicMenus": true,
"fullSidebar": false
}
2025-10-11 01:35:43 +01:00
< / script >
< script type = "text/javascript" src = "menudata.js" > < / script >
< script type = "text/javascript" src = "menu.js" > < / script >
2026-10-08 20:15:08 +01:00
< div id = "main-nav-mobile" >
< div class = "sm sm-dox" > < input id = "main-menu-state" type = "checkbox" / >
< label class = "main-menu-btn" for = "main-menu-state" >
< span class = "main-menu-btn-icon" > < / span > Toggle main menu visibility< / label >
< span id = "searchBoxPos1" > < / span >
< / div >
< / div > <!-- main - nav - mobile -->
< div id = "main-nav" >
< ul class = "sm sm-dox" id = "main-menu" >
< li id = "searchBoxPos2" >
< div id = "MSearchBox" class = "MSearchBoxInactive" >
< span class = "left" >
< span id = "MSearchSelect" class = "search-icon" > < span class = "search-icon-dropdown" > < / span > < / span >
< input type = "text" id = "MSearchField" value = "" placeholder = "Search" accesskey = "S" / >
< / span > < span class = "right" >
< a id = "MSearchClose" href = "javascript:searchBox.CloseResultsWindow()" > < div id = "MSearchCloseImg" class = "close-icon" > < / div > < / a >
< / span >
< / div >
< / li >
< / ul >
< / div > <!-- main - nav -->
2025-10-11 01:35:43 +01:00
< / 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 >
2026-10-08 20:15:08 +01:00
< div id = "splitbar" class = "ui-resizable-handle" >
2025-10-11 01:35:43 +01:00
< / div >
< / div >
< script type = "text/javascript" >
2026-10-08 20:15:08 +01:00
document.addEventListener('DOMContentLoaded',() => { initNavTree('data_8h.html','',''); });
2025-10-11 01:35:43 +01:00
< / script >
< div id = "container" >
< div id = "doc-content" >
<!-- window showing the filter options -->
2026-10-08 20:15:08 +01:00
< div id = "MSearchSelectWindow" >
2025-10-11 01:35:43 +01:00
< / 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" > data.h File Reference< / div > < / div >
< / div > <!-- header -->
< div class = "contents" >
< p > On-disk layout structures for data-bearing and geometry blocks.
< a href = "#details" > More...< / a > < / p >
< div class = "textblock" > < code > #include < stdint.h> < / code > < br / >
< / div >
< p > < a href = "data_8h_source.html" > Go to the source code of this file.< / a > < / p >
< table class = "memberdecls" >
< tr class = "heading" > < td colspan = "2" > < h2 id = "header-nested-classes" class = "groupheader" > < a id = "nested-classes" name = "nested-classes" > < / a >
Data Structures< / h2 > < / td > < / tr >
2026-04-11 23:17:09 +01:00
< tr class = "memitem:BlockHeader" id = "r_BlockHeader" > < td class = "memItemLeft" > struct   < / td > < td class = "memItemRight" > < a class = "el" href = "structBlockHeader.html" > BlockHeader< / a > < / td > < / tr >
2025-10-11 01:35:43 +01:00
< tr class = "memdesc:" > < td class = "mdescLeft" >   < / td > < td class = "mdescRight" > Header preceding the compressed data payload of a data block (BlockType::DataBlock). < a href = "structBlockHeader.html#details" > More...< / a > < br / > < / td > < / tr >
2026-04-11 23:17:09 +01:00
< tr class = "memitem:GeometryBlockHeader" id = "r_GeometryBlockHeader" > < td class = "memItemLeft" > struct   < / td > < td class = "memItemRight" > < a class = "el" href = "structGeometryBlockHeader.html" > GeometryBlockHeader< / a > < / td > < / tr >
2025-10-11 01:35:43 +01:00
< tr class = "memdesc:" > < td class = "mdescLeft" >   < / td > < td class = "mdescRight" > Legacy CHS style logical geometry metadata (BlockType::GeometryBlock). < a href = "structGeometryBlockHeader.html#details" > More...< / a > < br / > < / td > < / tr >
< / table > < table class = "memberdecls" >
< tr class = "heading" > < td colspan = "2" > < h2 id = "header-typedef-members" class = "groupheader" > < a id = "typedef-members" name = "typedef-members" > < / a >
Typedefs< / h2 > < / td > < / tr >
2026-04-11 23:17:09 +01:00
< tr class = "memitem:a1ca609714b5efe0b8571c14c51fd4609" id = "r_a1ca609714b5efe0b8571c14c51fd4609" > < td class = "memItemLeft" > typedef struct BlockHeader  < / td > < td class = "memItemRight" > < a class = "el" href = "#a1ca609714b5efe0b8571c14c51fd4609" > BlockHeader< / a > < / td > < / tr >
< tr class = "memitem:ac4dce55b0edbc0bfdef3fcc84c63a78d" id = "r_ac4dce55b0edbc0bfdef3fcc84c63a78d" > < td class = "memItemLeft" > typedef struct GeometryBlockHeader  < / td > < td class = "memItemRight" > < a class = "el" href = "#ac4dce55b0edbc0bfdef3fcc84c63a78d" > GeometryBlockHeader< / a > < / td > < / tr >
2025-10-11 01:35:43 +01:00
< / table >
< a name = "details" id = "details" > < / a > < h2 id = "header-details" class = "groupheader" > Detailed Description< / h2 >
< div class = "textblock" > < p > On-disk layout structures for data-bearing and geometry blocks. < / p >
2026-04-11 23:17:09 +01:00
< p > These packed structures describe the headers that precede variable-length payloads inside blocks whose identifiers are enumerated in < a class = "el" href = "enums_8h.html#a54420623f26ab6bb61042b41cccf37a3" title = "BlockType" > BlockType< / a > . All integer fields are stored little-endian on disk. The library currently assumes a little-endian host; if ported to a big-endian architecture explicit byte swapping will be required.< / p >
2025-10-11 01:35:43 +01:00
< p > Layout of a data block (BlockType::DataBlock): < a class = "el" href = "structBlockHeader.html" title = "Header preceding the compressed data payload of a data block (BlockType::DataBlock)." > BlockHeader< / a > (sizeof(BlockHeader) bytes) Compressed payload (cmpLength bytes)< / p >
< p > Payload decoding:< / p > < ul >
2026-04-11 23:17:09 +01:00
< li > Apply the algorithm indicated by < a class = "el" href = "structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559" title = "BlockHeader::compression" > BlockHeader::compression< / a > (< a class = "el" href = "enums_8h.html#affec749ed88365143745313ae9168263" title = "CompressionType" > CompressionType< / a > ) to the cmpLength bytes following the header to obtain exactly < a class = "el" href = "structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5" title = "BlockHeader::length" > BlockHeader::length< / a > bytes.< / li >
< li > The uncompressed data MUST be an integer multiple of < a class = "el" href = "structBlockHeader.html#a5bd50f95c8c1f91e5013a1a154690beb" title = "BlockHeader::sectorSize" > BlockHeader::sectorSize< / a > .< / li >
2025-10-11 01:35:43 +01:00
< li > A CRC64-ECMA is provided for both compressed (cmpCrc64) and uncompressed (crc64) forms to allow validation at either stage of the pipeline.< / li >
< / ul >
2026-04-11 23:17:09 +01:00
< p > Geometry block (BlockType::GeometryBlock) has a < a class = "el" href = "structGeometryBlockHeader.html" title = "GeometryBlockHeader" > GeometryBlockHeader< / a > followed by no additional fixed payload in the current format version; it conveys legacy CHS-style logical geometry metadata.< / p >
2025-10-11 01:35:43 +01:00
< dl class = "section warning" > < dt > Warning< / dt > < dd > These structs are packed; do not take their address and assume natural alignment. < / dd > < / dl >
< dl class = "section see" > < dt > See also< / dt > < dd > < a class = "el" href = "enums_8h.html#a54420623f26ab6bb61042b41cccf37a3" title = "List of known block types contained in an Aaru image." > BlockType< / a > < / dd >
< dd >
< a class = "el" href = "enums_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6" title = "List of known data types stored within an Aaru image." > DataType< / a > < / dd >
< dd >
< a class = "el" href = "enums_8h.html#affec749ed88365143745313ae9168263" title = "List of known compression types." > CompressionType< / a > < / dd > < / dl >
< p class = "definition" > Definition in file < a class = "el" href = "data_8h_source.html" > data.h< / a > .< / p >
< / div > < a name = "doc-typedef-members" id = "doc-typedef-members" > < / a > < h2 id = "header-doc-typedef-members" class = "groupheader" > Typedef Documentation< / h2 >
< a id = "a1ca609714b5efe0b8571c14c51fd4609" name = "a1ca609714b5efe0b8571c14c51fd4609" > < / a >
< h2 class = "memtitle" > < span class = "permalink" > < a href = "#a1ca609714b5efe0b8571c14c51fd4609" > ◆   < / a > < / span > BlockHeader< / h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > typedef struct BlockHeader BlockHeader< / td >
< / tr >
< / table >
< / div > < div class = "memdoc" >
< / div >
< / div >
< a id = "ac4dce55b0edbc0bfdef3fcc84c63a78d" name = "ac4dce55b0edbc0bfdef3fcc84c63a78d" > < / a >
< h2 class = "memtitle" > < span class = "permalink" > < a href = "#ac4dce55b0edbc0bfdef3fcc84c63a78d" > ◆   < / a > < / span > GeometryBlockHeader< / h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > typedef struct GeometryBlockHeader GeometryBlockHeader< / td >
< / tr >
< / table >
< / div > < div class = "memdoc" >
< / div >
< / div >
< / div > <!-- contents -->
< / div > <!-- doc - content -->
< div id = "page-nav" class = "page-nav-panel" >
< div id = "page-nav-resize-handle" > < / div >
< div id = "page-nav-tree" >
< div id = "page-nav-contents" >
< / div > <!-- page - nav - contents -->
< / div > <!-- page - nav - tree -->
< / div > <!-- page - nav -->
< / 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 = "data_8h.html" > data.h< / a > < / li >
2026-10-08 20:15:08 +01:00
< 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.18.0 < / li >
2025-10-11 01:35:43 +01:00
< / ul >
< / div >
< / body >
< / html >