<!-- This comment will put IE 6, 7 and 8 in quirks mode -->
<!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"/>
<title>Kudu C++ client API: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javaScript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body onload='searchBox.OnSelectItem(0);'>
<!-- Generated by Doxygen 1.6.1 -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <img id="MSearchSelect" src="search/search.png"
             onmouseover="return searchBox.OnSearchSelectShow()"
             onmouseout="return searchBox.OnSearchSelectHide()"
             alt=""/>
        <input type="text" id="MSearchField" value="Search" accesskey="S"
             onfocus="searchBox.OnSearchFieldFocus(true)" 
             onblur="searchBox.OnSearchFieldFocus(false)" 
             onkeyup="searchBox.OnSearchFieldChange(event)"/>
        <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
        </div>
      </li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
      <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
    </ul>
  </div>
</div>
<div class="contents">
<h1>kudu::client::KuduWriteOperation Member List</h1>This is the complete list of members for <a class="el" href="classkudu_1_1client_1_1KuduWriteOperation.html">kudu::client::KuduWriteOperation</a>, including all inherited members.<table>
  <tr bgcolor="#f0f0f0"><td><b>DELETE</b> enum value (defined in <a class="el" href="classkudu_1_1client_1_1KuduWriteOperation.html">kudu::client::KuduWriteOperation</a>)</td><td><a class="el" href="classkudu_1_1client_1_1KuduWriteOperation.html">kudu::client::KuduWriteOperation</a></td><td></td></tr>
  <tr bgcolor="#f0f0f0"><td><b>INSERT</b> enum value (defined in <a class="el" href="classkudu_1_1client_1_1KuduWriteOperation.html">kudu::client::KuduWriteOperation</a>)</td><td><a class="el" href="classkudu_1_1client_1_1KuduWriteOperation.html">kudu::client::KuduWriteOperation</a></td><td></td></tr>
  <tr bgcolor="#f0f0f0"><td><b>internal::Batcher</b> (defined in <a class="el" href="classkudu_1_1client_1_1KuduWriteOperation.html">kudu::client::KuduWriteOperation</a>)</td><td><a class="el" href="classkudu_1_1client_1_1KuduWriteOperation.html">kudu::client::KuduWriteOperation</a></td><td><code> [friend]</code></td></tr>
  <tr bgcolor="#f0f0f0"><td><b>internal::WriteRpc</b> (defined in <a class="el" href="classkudu_1_1client_1_1KuduWriteOperation.html">kudu::client::KuduWriteOperation</a>)</td><td><a class="el" href="classkudu_1_1client_1_1KuduWriteOperation.html">kudu::client::KuduWriteOperation</a></td><td><code> [friend]</code></td></tr>
  <tr class="memlist"><td><a class="el" href="classkudu_1_1client_1_1KuduWriteOperation.html#a8889770ce62e2ca0ce5d55c9c90af6bc">mutable_row</a>()</td><td><a class="el" href="classkudu_1_1client_1_1KuduWriteOperation.html">kudu::client::KuduWriteOperation</a></td><td><code> [inline]</code></td></tr>
  <tr class="memlist"><td><a class="el" href="classkudu_1_1client_1_1KuduWriteOperation.html#a973b342ced786b23754b57fd83b34aa3">row</a>() const </td><td><a class="el" href="classkudu_1_1client_1_1KuduWriteOperation.html">kudu::client::KuduWriteOperation</a></td><td><code> [inline]</code></td></tr>
  <tr class="memlist"><td><a class="el" href="classkudu_1_1client_1_1KuduWriteOperation.html#a50b5405c4dfc7af038daa4780aea6e19">ToString</a>() const =0</td><td><a class="el" href="classkudu_1_1client_1_1KuduWriteOperation.html">kudu::client::KuduWriteOperation</a></td><td><code> [pure virtual]</code></td></tr>
  <tr class="memlist"><td><a class="el" href="classkudu_1_1client_1_1KuduWriteOperation.html#a87d94ee5801a6b16fc6d1f44ee2e4357">Type</a> enum name</td><td><a class="el" href="classkudu_1_1client_1_1KuduWriteOperation.html">kudu::client::KuduWriteOperation</a></td><td></td></tr>
  <tr bgcolor="#f0f0f0"><td><b>UPDATE</b> enum value (defined in <a class="el" href="classkudu_1_1client_1_1KuduWriteOperation.html">kudu::client::KuduWriteOperation</a>)</td><td><a class="el" href="classkudu_1_1client_1_1KuduWriteOperation.html">kudu::client::KuduWriteOperation</a></td><td></td></tr>
  <tr bgcolor="#f0f0f0"><td><b>UPSERT</b> enum value (defined in <a class="el" href="classkudu_1_1client_1_1KuduWriteOperation.html">kudu::client::KuduWriteOperation</a>)</td><td><a class="el" href="classkudu_1_1client_1_1KuduWriteOperation.html">kudu::client::KuduWriteOperation</a></td><td></td></tr>
  <tr bgcolor="#f0f0f0"><td><b>~KuduWriteOperation</b>() (defined in <a class="el" href="classkudu_1_1client_1_1KuduWriteOperation.html">kudu::client::KuduWriteOperation</a>)</td><td><a class="el" href="classkudu_1_1client_1_1KuduWriteOperation.html">kudu::client::KuduWriteOperation</a></td><td><code> [virtual]</code></td></tr>
</table></div>
<!--- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&nbsp;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&nbsp;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&nbsp;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&nbsp;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&nbsp;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&nbsp;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&nbsp;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&nbsp;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&nbsp;</span>Defines</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<!-- start footer part -->
<hr class="footer"/>
<address class="footer">
  <small>Generated for Kudu version 1.0.1 on Tue Oct 11 08:52:01 2016 by Doxygen 1.6.1</small>
  <br>
  <small>Copyright © 2016 The Apache Software Foundation.</small>
</address>
</body>
</html>
