<!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 .NET Reference: Data Fields - 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="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 .NET 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_func_i.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">
&#160;

<h3><a id="index_i"></a>- i -</h3><ul>
<li>IllegalArgumentException()
: <a class="el" href="a00634.html#a3c069e6084022a51f46ea51ddbc262da">Apache::Geode::Client::IllegalArgumentException</a>
</li>
<li>IllegalStateException()
: <a class="el" href="a00638.html#a4445821494c89ee43f4f0ef6e2c8b23c">Apache::Geode::Client::IllegalStateException</a>
</li>
<li>Info()
: <a class="el" href="a01038.html#a7c07ad5f39f8dcadbd4016a2d9e4ff13">Apache::Geode::Client::Log</a>
</li>
<li>Init()
: <a class="el" href="a00998.html#ae6dffbf19d398e283cc04cc12844c8fe">Apache::Geode::Client::IPersistenceManager&lt; TKey, TValue &gt;</a>
, <a class="el" href="a01038.html#a7a4dcfb3d4a7f44b5671db49790f9bed">Apache::Geode::Client::Log</a>
</li>
<li>InitCqListeners()
: <a class="el" href="a00566.html#afe9e54a5d939e57b01a39d8121a98e39">Apache::Geode::Client::CqAttributesFactory&lt; TKey, TResult &gt;</a>
</li>
<li>InitFailedException()
: <a class="el" href="a00782.html#a1e4567fb3b07e676f464443ddc63c025">Apache::Geode::Client::InitFailedException</a>
</li>
<li>InitializeDeclarativeCache()
: <a class="el" href="a00410.html#a6fc2198912ba5d564ec09af0ddbef8f1">Apache::Geode::Client::Cache</a>
, <a class="el" href="a00958.html#a87042dc41ebefcff8fc5109e52889899">Apache::Geode::Client::IGeodeCache</a>
</li>
<li>Insert()
: <a class="el" href="a00406.html#ac4ca003e245250aa6d95b6ee9fc27388">Apache::Geode::Client::Properties&lt; TPropKey, TPropValue &gt;</a>
</li>
<li>InterruptedException()
: <a class="el" href="a00698.html#afba131e24cdddcc15b8c761b013b0343">Apache::Geode::Client::InterruptedException</a>
</li>
<li>Invalidate()
: <a class="el" href="a01014.html#a9509ea72521220db274586d0623690b5">Apache::Geode::Client::IRegion&lt; TKey, TValue &gt;</a>
</li>
<li>InvalidateRegion()
: <a class="el" href="a01014.html#a13e1fb5d0863bf6db36bb14cc8019051">Apache::Geode::Client::IRegion&lt; TKey, TValue &gt;</a>
</li>
<li>IsClosed()
: <a class="el" href="a00590.html#a21c843da6231cd6c75ef1c45d46ce706">Apache::Geode::Client::CqQuery&lt; TKey, TResult &gt;</a>
</li>
<li>IsDestroy()
: <a class="el" href="a00886.html#a2be2f5124a578bc908072b37de9ae078">Apache::Geode::Client::Expiration</a>
</li>
<li>IsDistributed()
: <a class="el" href="a00886.html#a222ae3ab6a86fa1a7a1196eacc11fc25">Apache::Geode::Client::Expiration</a>
</li>
<li>IsFieldIncluded()
: <a class="el" href="a01090.html#a0f8e1cb1e96ea53e9efe42dbb0fcffee">Apache::Geode::Client::ReflectionBasedAutoSerializer</a>
</li>
<li>IsIdentityField()
: <a class="el" href="a00966.html#a08b01851325f6f8ba9a1ec958d3770c8">Apache::Geode::Client::IPdxInstance</a>
, <a class="el" href="a00974.html#a41735ec8ac5c4aaf9c7da2a991e29fa7">Apache::Geode::Client::IPdxReader</a>
, <a class="el" href="a01090.html#a77edc9c5289c56e81150367a55656366">Apache::Geode::Client::ReflectionBasedAutoSerializer</a>
</li>
<li>IsInvalidate()
: <a class="el" href="a00886.html#a5fb6d5712f13bb7b701c81f0b8ac8931">Apache::Geode::Client::Expiration</a>
</li>
<li>IsLocal()
: <a class="el" href="a00886.html#ad550f2d4d604fb780cbf7a2a28edaae2">Apache::Geode::Client::Expiration</a>
</li>
<li>IsLocalDestroy()
: <a class="el" href="a00886.html#a33edb25717d9b92d21573a3829e04abe">Apache::Geode::Client::Expiration</a>
</li>
<li>IsLocalInvalidate()
: <a class="el" href="a00886.html#a38d93ea870bd7dca1d12cc589eb6bfc1">Apache::Geode::Client::Expiration</a>
</li>
<li>IsNone()
: <a class="el" href="a00610.html#aaa7c5153947313e5fe11e0ef526103f1">Apache::Geode::Client::DiskPolicy</a>
</li>
<li>IsNullOrEmpty()
: <a class="el" href="a00522.html#a7e28a866226c76e2a83265c6dc2de6b2">Apache::Geode::Client::CacheableString</a>
</li>
<li>IsOverflow()
: <a class="el" href="a00610.html#a2157f4c595ada999f601a8e932d02400">Apache::Geode::Client::DiskPolicy</a>
</li>
<li>IsRunning()
: <a class="el" href="a00590.html#a250afb454c3376eb83c016584d4b4c27">Apache::Geode::Client::CqQuery&lt; TKey, TResult &gt;</a>
</li>
<li>IsStopped()
: <a class="el" href="a00590.html#ac29a89c2fc8cc7f90e91eb238256ab53">Apache::Geode::Client::CqQuery&lt; TKey, TResult &gt;</a>
</li>
<li>IsSuspended()
: <a class="el" href="a00550.html#a3cbedabc7f4fb3fc861260b1b67c3b41">Apache::Geode::Client::CacheTransactionManager</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 .NET API Documentation</small></address>
