<!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.14"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Kudu C++ client API: Class Members - Functions</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="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Kudu C++ client API
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.14 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;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&amp;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>
</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">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="contents">
&#160;

<h3><a id="index_i"></a>- i -</h3><ul>
<li>id()
: <a class="el" href="classkudu_1_1client_1_1_kudu_table.html#ac5436bdd675d45de6c2980f3a05f5e20">kudu::client::KuduTable</a>
, <a class="el" href="classkudu_1_1client_1_1_kudu_tablet.html#a3d38d4bb09f0c135e999290d03dea837">kudu::client::KuduTablet</a>
</li>
<li>import_authentication_credentials()
: <a class="el" href="classkudu_1_1client_1_1_kudu_client_builder.html#a5c411bc4638cbf77e5d318f5049b0b7e">kudu::client::KuduClientBuilder</a>
</li>
<li>Increment()
: <a class="el" href="classkudu_1_1client_1_1_resource_metrics.html#ae7b5f6021f63c25bbd087ba2cf48dc8a">kudu::client::ResourceMetrics</a>
</li>
<li>indirect_data()
: <a class="el" href="classkudu_1_1client_1_1_kudu_scan_batch.html#a3cb4c17aa228e680ecf088a29a075989">kudu::client::KuduScanBatch</a>
</li>
<li>Initialized()
: <a class="el" href="classkudu_1_1_mono_delta.html#a2aaa30660bd168200074330f098f680a">kudu::MonoDelta</a>
</li>
<li>IntoKuduScanner()
: <a class="el" href="classkudu_1_1client_1_1_kudu_scan_token.html#adb95c9538bb1fc4c83963557ce487292">kudu::client::KuduScanToken</a>
</li>
<li>is_leader()
: <a class="el" href="classkudu_1_1client_1_1_kudu_replica.html#a383c26df7f94bca3acffddda1a7d12f5">kudu::client::KuduReplica</a>
</li>
<li>is_nullable()
: <a class="el" href="classkudu_1_1client_1_1_kudu_column_schema.html#a3f8197dd468546ce83e21481a361c1ec">kudu::client::KuduColumnSchema</a>
</li>
<li>IsAborted()
: <a class="el" href="classkudu_1_1_status.html#a6640d27d5c48d9257b9ba19416530874">kudu::Status</a>
</li>
<li>IsAlreadyPresent()
: <a class="el" href="classkudu_1_1_status.html#a4e0c73bb6bb9c78d590c1d1f6d4c7282">kudu::Status</a>
</li>
<li>IsAlterTableInProgress()
: <a class="el" href="classkudu_1_1client_1_1_kudu_client.html#a7a331e528759296089837b4611c01809">kudu::client::KuduClient</a>
</li>
<li>IsColumnSet()
: <a class="el" href="class_kudu_partial_row.html#aaa665d17637cd02e53cde5c68186daf8">KuduPartialRow</a>
</li>
<li>IsConfigurationError()
: <a class="el" href="classkudu_1_1_status.html#aa15dd07c7e6cf0d7ddf152ad2e8dbfef">kudu::Status</a>
</li>
<li>IsCorruption()
: <a class="el" href="classkudu_1_1_status.html#a4f22e819a88715855c0700a42116efc4">kudu::Status</a>
</li>
<li>IsCreateTableInProgress()
: <a class="el" href="classkudu_1_1client_1_1_kudu_client.html#a2f0323b439d8658b2ac31fde7f46de63">kudu::client::KuduClient</a>
</li>
<li>IsDiskFailure()
: <a class="el" href="classkudu_1_1_status.html#aa3b4e9aa437a3b42371505a496b14f9c">kudu::Status</a>
</li>
<li>IsEndOfFile()
: <a class="el" href="classkudu_1_1_status.html#a16814843bac757a1c9559fd3e9ec7ae6">kudu::Status</a>
</li>
<li>IsIllegalState()
: <a class="el" href="classkudu_1_1_status.html#ad3f3cd05b402351f260f8ee528d13f24">kudu::Status</a>
</li>
<li>IsIncomplete()
: <a class="el" href="classkudu_1_1_status.html#ac78fdef5d20751a791a1944d9ece0ee7">kudu::Status</a>
</li>
<li>IsInvalidArgument()
: <a class="el" href="classkudu_1_1_status.html#a067cd380b0babb8133636a423524426b">kudu::Status</a>
</li>
<li>IsIOError()
: <a class="el" href="classkudu_1_1_status.html#a63c36a062e1f3ac68ec8ee2f032da250">kudu::Status</a>
</li>
<li>IsKeySet()
: <a class="el" href="class_kudu_partial_row.html#a3db12a1c2807ed0e49ca2ba933248fa1">KuduPartialRow</a>
</li>
<li>IsMultiMaster()
: <a class="el" href="classkudu_1_1client_1_1_kudu_client.html#a1e1363d5dfab959b0d9ca98bfd390433">kudu::client::KuduClient</a>
</li>
<li>IsNetworkError()
: <a class="el" href="classkudu_1_1_status.html#ad4acc174b0c45945ba180f4c6cf8b431">kudu::Status</a>
</li>
<li>IsNotAuthorized()
: <a class="el" href="classkudu_1_1_status.html#ac850292b4c11cc4736d80d5e03805171">kudu::Status</a>
</li>
<li>IsNotFound()
: <a class="el" href="classkudu_1_1_status.html#a98720ec81c8af525c363999d526b4efd">kudu::Status</a>
</li>
<li>IsNotSupported()
: <a class="el" href="classkudu_1_1_status.html#ab07ec85036fcbebe4987e588997076ea">kudu::Status</a>
</li>
<li>IsNull()
: <a class="el" href="classkudu_1_1client_1_1_kudu_scan_batch.html#a63aa794845d41cc5251ee5d30547e520">kudu::client::KuduScanBatch</a>
, <a class="el" href="class_kudu_partial_row.html#a9288c78e2a10cd9feb1189110e04e186">KuduPartialRow</a>
</li>
<li>IsRemoteError()
: <a class="el" href="classkudu_1_1_status.html#a100f6f01e8bcdefb67f6e7fb17146ee6">kudu::Status</a>
</li>
<li>IsRuntimeError()
: <a class="el" href="classkudu_1_1_status.html#ae0cb472b2431a7898769fc0263908ae8">kudu::Status</a>
</li>
<li>IsServiceUnavailable()
: <a class="el" href="classkudu_1_1_status.html#a9f9f0d6696809fa52af0e34e18477668">kudu::Status</a>
</li>
<li>IsTimedOut()
: <a class="el" href="classkudu_1_1_status.html#a1f9cf3d3393efb81be08f18ccedb3e03">kudu::Status</a>
</li>
<li>IsUninitialized()
: <a class="el" href="classkudu_1_1_status.html#a20ddf7be88cb0f304e4fe9ac2402f00b">kudu::Status</a>
</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/>
<address class="footer">
  <small>Generated for Kudu version 1.7.0 on Thu Mar 22 2018 13:30:03 by Doxygen 1.8.14</small>
  <br>
  <small>Copyright © 2018 The Apache Software Foundation.</small>
</address>
</body>
</html>
