<!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">
<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.15"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Apache Geode Native C++ Reference: Data Fields</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="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
  $(document).ready(initResizable);
/* @license-end */</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">Apache Geode Native C++ Reference
   &#160;<span id="projectnumber">1.13.1</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.15 -->
<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 -->
<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">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('functions_o.html','');});
/* @license-end */
</script>
<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">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="contents">
<div class="textblock">Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:</div>

<h3><a id="index_o"></a>- o -</h3><ul>
<li>objectSize()
: <a class="el" href="a00327.html#ae5c6cd45fdfc3c547899456cb6f4c129">apache::geode::client::CacheableDate</a>
, <a class="el" href="a00331.html#a7eaa7d097c0761ea913ead9f3817ba6d">apache::geode::client::CacheableEnum</a>
, <a class="el" href="a00359.html#afaac3e6c0601e799b224243dd293a50d">apache::geode::client::CacheableString</a>
, <a class="el" href="a00751.html#a147bbc2fa40218981d1e4c9a0eaed512">apache::geode::client::PdxInstance</a>
, <a class="el" href="a00855.html#aa1e74dde03eb0d3fb17752bfdcd347ef">apache::geode::client::Serializable</a>
, <a class="el" href="a00859.html#a29dd41b95a5b916ab5a42f0ea27638de">apache::geode::client::Struct</a>
</li>
<li>onClientDisconnectClearPdxTypeIds()
: <a class="el" href="a00867.html#a22c85ec4b4eb963bdf257a64383fd162">apache::geode::client::SystemProperties</a>
</li>
<li>onCqConnected()
: <a class="el" href="a00431.html#a3aca7cb9d67edd17df327cb0e47a8863">apache::geode::client::CqStatusListener</a>
</li>
<li>onCqDisconnected()
: <a class="el" href="a00431.html#ab08c99cbdfdafbc846097b27e12562ae">apache::geode::client::CqStatusListener</a>
</li>
<li>onError()
: <a class="el" href="a00411.html#a4050fa02b1386d48a6f9877464a892bc">apache::geode::client::CqListener</a>
</li>
<li>onEvent()
: <a class="el" href="a00411.html#a5ba90775e233d64d2c20e190862f0bc9">apache::geode::client::CqListener</a>
</li>
<li>onRegion()
: <a class="el" href="a00739.html#a824e55ef433d8c7d9cf5a7910422899c">apache::geode::client::FunctionService</a>
</li>
<li>onServer()
: <a class="el" href="a00739.html#ac64664e504faa87912fc9d1d9b610054">apache::geode::client::FunctionService</a>
</li>
<li>onServers()
: <a class="el" href="a00739.html#a89bf08f75d48e18c27b9d68ab9fe2a21">apache::geode::client::FunctionService</a>
</li>
<li>operator!=()
: <a class="el" href="a00819.html#a970a3f610db9e5be479f2e0a1fb802d0">apache::geode::client::RegionAttributes</a>
</li>
<li>operator==()
: <a class="el" href="a00327.html#a163129601ba9f5e6a6d8b5529b42dd66">apache::geode::client::CacheableDate</a>
, <a class="el" href="a00331.html#a54e2d72daaf3fa662be9642262565c1a">apache::geode::client::CacheableEnum</a>
, <a class="el" href="a00339.html#a508b0eef9d80aeda9edf877880c0705f">apache::geode::client::CacheableKey</a>
, <a class="el" href="a00359.html#ad017884259abbca42deb80ae3a4c640c">apache::geode::client::CacheableString</a>
, <a class="el" href="a00751.html#a00654c7ddd97e35970bac9d8fa92c8b6">apache::geode::client::PdxInstance</a>
, <a class="el" href="a00763.html#ab8fb2a61f8b949dd511efb60a08d2950">apache::geode::client::PdxSerializable</a>
, <a class="el" href="a00775.html#aaef3ddf82d18e028bd16afacd1dcd886">apache::geode::client::PdxWrapper</a>
, <a class="el" href="a00819.html#ae765606ca65aff466f84290431d137de">apache::geode::client::RegionAttributes</a>
</li>
<li>operator[]()
: <a class="el" href="a00851.html#a267694c8d139ff91b578548c907dd083">apache::geode::client::SelectResults</a>
, <a class="el" href="a00859.html#a0acfd7c62eb4d7e4ea7a2d542a2a7c51">apache::geode::client::Struct</a>
</li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements.  See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License.  You may obtain a copy of the License at
     http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<HR><address style="align: right;"><small>Apache Geode C++ Cache API Documentation</small></address>
