<!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.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>iceberg-cpp: Class Members - Variables</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 id="projectrow">
  <td id="projectalign">
   <div id="projectname">iceberg-cpp
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @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:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- 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="contents">
<div class="textblock">Here is a list of all documented variables with links to the class documentation for each member:</div>

<h3><a id="index_p" name="index_p"></a>- p -</h3><ul>
<li>parent_snapshot_id&#160;:&#160;<a class="el" href="structiceberg_1_1Snapshot.html#aef3a444c939ab4f76e0b9a28f96c6b7a">iceberg::Snapshot</a></li>
<li>partition&#160;:&#160;<a class="el" href="structiceberg_1_1DataFile.html#a42b8804daaa21ad80279831a1fd9eaf1">iceberg::DataFile</a></li>
<li>partition_spec_id&#160;:&#160;<a class="el" href="structiceberg_1_1DataFile.html#a83b5dbd37957fae5b359d23e276f4584">iceberg::DataFile</a>, <a class="el" href="structiceberg_1_1ManifestFile.html#ab50ebf3f4244132987b17c316f5cbd5b">iceberg::ManifestFile</a></li>
<li>partition_specs&#160;:&#160;<a class="el" href="structiceberg_1_1TableMetadata.html#a23fcb664a4819dcda141eea1bbd5999e">iceberg::TableMetadata</a></li>
<li>partition_statistics&#160;:&#160;<a class="el" href="structiceberg_1_1TableMetadata.html#a98ebf368798e69856e71decfe98f9441">iceberg::TableMetadata</a></li>
<li>partitions&#160;:&#160;<a class="el" href="structiceberg_1_1ManifestFile.html#a023d5a670c12e8f4e8a1e4154d8d7976">iceberg::ManifestFile</a></li>
<li>path&#160;:&#160;<a class="el" href="structiceberg_1_1PartitionStatisticsFile.html#ab2f5786ce6b9a7a4ecb1a7fec8cf6efc">iceberg::PartitionStatisticsFile</a>, <a class="el" href="structiceberg_1_1ReaderOptions.html#a959dc0c774f0a3d55991f1eb73753b2c">iceberg::ReaderOptions</a>, <a class="el" href="structiceberg_1_1StatisticsFile.html#a032a5ea20ec4a7b3f5eb535de8479580">iceberg::StatisticsFile</a>, <a class="el" href="structiceberg_1_1WriterOptions.html#a64566361f2b34747e98bf8f9ead4e94c">iceberg::WriterOptions</a></li>
<li>positional_delete_files&#160;:&#160;<a class="el" href="structiceberg_1_1ScanMetricsResult.html#a8a49aa2101e754ac818201243ab6cf95">iceberg::ScanMetricsResult</a></li>
<li>processed_manifest_entries_count&#160;:&#160;<a class="el" href="structiceberg_1_1CommitMetricsResult.html#a3ab924e1028194b9dea3c266ab1b95aa">iceberg::CommitMetricsResult</a></li>
<li>projected_field_ids&#160;:&#160;<a class="el" href="structiceberg_1_1ScanReport.html#a2198a16bf30531c8819e02921cd71713">iceberg::ScanReport</a></li>
<li>projected_field_names&#160;:&#160;<a class="el" href="structiceberg_1_1ScanReport.html#a9d3365b4cc7406d9cd6e75b69890a40a">iceberg::ScanReport</a></li>
<li>projected_schema&#160;:&#160;<a class="el" href="structiceberg_1_1FileScanTaskReader_1_1Options.html#a07fc7c34e0484ecec603e835d2ad8792">iceberg::FileScanTaskReader::Options</a></li>
<li>projection&#160;:&#160;<a class="el" href="structiceberg_1_1ReaderOptions.html#a418c6556965b0db7f12131e4f0070304">iceberg::ReaderOptions</a></li>
<li>properties&#160;:&#160;<a class="el" href="structiceberg_1_1BlobMetadata.html#a4221b8b17fa719b1146c3c63248ffeb2">iceberg::BlobMetadata</a>, <a class="el" href="structiceberg_1_1FileScanTaskReader_1_1Options.html#abfbb4ef4e9b10a03cc7c45cae02d4e4b">iceberg::FileScanTaskReader::Options</a>, <a class="el" href="structiceberg_1_1ReaderOptions.html#abfe412d377c1207df04c3a2c4fe23d55">iceberg::ReaderOptions</a>, <a class="el" href="structiceberg_1_1SessionContext.html#aa6c674958e10672e7a07311d984546ed">iceberg::SessionContext</a>, <a class="el" href="structiceberg_1_1sql_1_1CatalogStoreOptions.html#ab678411ded511db3f4d3fc34ad146e8b">iceberg::sql::CatalogStoreOptions</a>, <a class="el" href="structiceberg_1_1TableMetadata.html#a48f696b77d6f772bfcdf9b05cf46fc93">iceberg::TableMetadata</a>, <a class="el" href="structiceberg_1_1WriterOptions.html#a3db3b2d7fc42f10243afedf29a1f8e05">iceberg::WriterOptions</a></li>
<li>props&#160;:&#160;<a class="el" href="structiceberg_1_1sql_1_1SqlCatalogConfig.html#ae9aa26b126dd678fb63d89f690cb0f51">iceberg::sql::SqlCatalogConfig</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8
</small></address>
</body>
</html>
