blob: 6f5361fc6c0a777a4cee1307a35dbc2d557e54f3 [file] [log] [blame]
<!DOCTYPE html>
<!--[if IE]><![endif]-->
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Namespace Lucene.Net.Support
| Apache Lucene.NET 4.8.0 Documentation </title>
<meta name="viewport" content="width=device-width">
<meta name="title" content="Namespace Lucene.Net.Support
| Apache Lucene.NET 4.8.0 Documentation ">
<meta name="generator" content="docfx 2.47.0.0">
<link rel="shortcut icon" href="../../logo/favicon.ico">
<link rel="stylesheet" href="../../styles/docfx.vendor.css">
<link rel="stylesheet" href="../../styles/docfx.css">
<link rel="stylesheet" href="../../styles/main.css">
<meta property="docfx:navrel" content="../../toc.html">
<meta property="docfx:tocrel" content="../toc.html">
<meta property="docfx:rel" content="../../">
</head>
<body data-spy="scroll" data-target="#affix" data-offset="120">
<div id="wrapper">
<header>
<nav id="autocollapse" class="navbar ng-scope" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="../../index.html">
<img id="logo" class="svg" src="../../logo/lucene-net-color.png" alt="">
</a>
</div>
<div class="collapse navbar-collapse" id="navbar">
<form class="navbar-form navbar-right" role="search" id="search">
<div class="form-group">
<input type="text" class="form-control" id="search-query" placeholder="Search" autocomplete="off">
</div>
</form>
</div>
</div>
</nav>
<div class="subnav navbar navbar-default">
<div class="container hide-when-search" id="breadcrumb">
<ul class="breadcrumb">
<li></li>
</ul>
</div>
</div>
</header>
<div class="container body-content">
<div id="search-results">
<div class="search-list"></div>
<div class="sr-items">
<p><i class="glyphicon glyphicon-refresh index-loading"></i></p>
</div>
<ul id="pagination"></ul>
</div>
</div>
<div role="main" class="container body-content hide-when-search">
<div class="sidenav hide-when-search">
<a class="btn toc-toggle collapse" data-toggle="collapse" href="#sidetoggle" aria-expanded="false" aria-controls="sidetoggle">Show / Hide Table of Contents</a>
<div class="sidetoggle collapse" id="sidetoggle">
<div id="sidetoc"></div>
</div>
</div>
<div class="article row grid-right">
<div class="col-md-10">
<article class="content wrap" id="_content" data-uid="Lucene.Net.Support">
<h1 id="Lucene_Net_Support" data-uid="Lucene.Net.Support" class="text-break">Namespace Lucene.Net.Support
</h1>
<div class="markdown level0 summary"></div>
<div class="markdown level0 conceptual"></div>
<div class="markdown level0 remarks"></div>
<h3 id="classes">Classes
</h3>
<h4><a class="xref" href="Lucene.Net.Support.Arrays.html">Arrays</a></h4>
<section></section>
<h4><a class="xref" href="Lucene.Net.Support.AssemblyExtensions.html">AssemblyExtensions</a></h4>
<section></section>
<h4><a class="xref" href="Lucene.Net.Support.AssemblyUtils.html">AssemblyUtils</a></h4>
<section><p>Methods for working with Assemblies.</p>
</section>
<h4><a class="xref" href="Lucene.Net.Support.AssemblyUtils.DotNetFrameworkFilter.html">AssemblyUtils.DotNetFrameworkFilter</a></h4>
<section><p>Assembly filter logic from:
<a href="https://raw.githubusercontent.com/Microsoft/dotnet-apiport/master/src/Microsoft.Fx.Portability/Analyzer/DotNetFrameworkFilter.cs">https://raw.githubusercontent.com/Microsoft/dotnet-apiport/master/src/Microsoft.Fx.Portability/Analyzer/DotNetFrameworkFilter.cs</a></p>
</section>
<h4><a class="xref" href="Lucene.Net.Support.BitArrayExtensions.html">BitArrayExtensions</a></h4>
<section><p>This class provides supporting methods of java.util.BitSet
that are not present in System.Collections.BitArray.</p>
</section>
<h4><a class="xref" href="Lucene.Net.Support.Character.html">Character</a></h4>
<section><p>Mimics Java&apos;s Character class.</p>
</section>
<h4><a class="xref" href="Lucene.Net.Support.Collections.html">Collections</a></h4>
<section></section>
<h4><a class="xref" href="Lucene.Net.Support.ConcurrentHashMapWrapper-2.html">ConcurrentHashMapWrapper&lt;TKey, TValue&gt;</a></h4>
<section></section>
<h4><a class="xref" href="Lucene.Net.Support.ConcurrentHashSet-1.html">ConcurrentHashSet&lt;T&gt;</a></h4>
<section></section>
<h4><a class="xref" href="Lucene.Net.Support.CRC32.html">CRC32</a></h4>
<section></section>
<h4><a class="xref" href="Lucene.Net.Support.DictionaryExtensions.html">DictionaryExtensions</a></h4>
<section></section>
<h4><a class="xref" href="Lucene.Net.Support.EnumerableExtensions.html">EnumerableExtensions</a></h4>
<section><p>.NET Specific Helper Extensions for IEnumerable</p>
</section>
<h4><a class="xref" href="Lucene.Net.Support.Equatable.html">Equatable</a></h4>
<section><p>A set of utilities uses for easily wrapping .NET
collections so they can be used with <span class="xref">System.Object.Equals(System.Object)</span>
<span class="xref">System.Object.GetHashCode()</span>, and <span class="xref">System.Object.ToString()</span>
behavior similar to that in Java. The equality checking of collections
will recursively compare the values of all elements and any nested collections.
The same goes for using <span class="xref">System.Object.ToString()</span> - the string is based
on the values in the collection and any nested collections.
<p>
Do note this has a side-effect that any custom <span class="xref">System.Object.Equals(System.Object)</span>
<span class="xref">System.Object.GetHashCode()</span>, and <span class="xref">System.Object.ToString()</span> implementations
for types that implement <span class="xref">System.Collections.Generic.IList&lt;T&gt;</span> (including arrays), <span class="xref">System.Collections.Generic.ISet&lt;T&gt;</span>,
or <span class="xref">System.Collections.Generic.IDictionary&lt;TKey, TValue&gt;</span> will be ignored.</p>
</section>
<h4><a class="xref" href="Lucene.Net.Support.EquatableList-1.html">EquatableList&lt;T&gt;</a></h4>
<section><p>Represents a strongly typed list of objects that can be accessed by index.
Provides methods to manipulate lists. Also provides functionality
to compare lists against each other through an implementations of
<span class="xref">System.IEquatable&lt;T&gt;</span>, or to wrap an existing list to use
the same comparison logic as this one while not affecting any of its
other functionality.</p>
</section>
<h4><a class="xref" href="Lucene.Net.Support.EquatableSet-1.html">EquatableSet&lt;T&gt;</a></h4>
<section><p>Represents a strongly typed set of objects.
Provides methods to manipulate the set. Also provides functionality
to compare sets against each other through an implementations of
<span class="xref">System.IEquatable&lt;T&gt;</span>, or to wrap an existing set to use
the same comparison logic as this one while not affecting any of its
other functionality.</p>
</section>
<h4><a class="xref" href="Lucene.Net.Support.ExceptionExtensions.html">ExceptionExtensions</a></h4>
<section><p>Extensions to the <span class="xref">System.Exception</span> class to allow for
adding and retrieving suppressed exceptions, like you can do in Java.</p>
</section>
<h4><a class="xref" href="Lucene.Net.Support.ExceptionToClassNameConventionAttribute.html">ExceptionToClassNameConventionAttribute</a></h4>
<section><p>Use this attribute to make an exception to the class naming rules (which should not be named like Interfaces).</p>
</section>
<h4><a class="xref" href="Lucene.Net.Support.ExceptionToNetNumericConventionAttribute.html">ExceptionToNetNumericConventionAttribute</a></h4>
<section><p>Properties, methods, or events marked with this attribute can ignore
the numeric naming conventions of &quot;Int16&quot;, &quot;Int32&quot;, &quot;Int64&quot;, and &quot;Single&quot;
that are commonly used in .NET method and property names.</p>
</section>
<h4><a class="xref" href="Lucene.Net.Support.ExceptionToNullableEnumConvention.html">ExceptionToNullableEnumConvention</a></h4>
<section><p>Use this attribute to make an exception to the nullable enum rule.
Some of these cannot be avoided.</p>
</section>
<h4><a class="xref" href="Lucene.Net.Support.HashMap-2.html">HashMap&lt;TKey, TValue&gt;</a></h4>
<section><p>A C# emulation of the <a href="http://download.oracle.com/javase/1,5.0/docs/api/java/util/HashMap.html">Java Hashmap</a>
<p>
A <span class="xref">System.Collections.Generic.Dictionary`2</span> is a close equivalent to the Java
Hashmap. One difference java implementation of the class is that
the Hashmap supports both null keys and values, where the C# Dictionary
only supports null values not keys. Also, <code>V Get(TKey)</code>
method in Java returns null if the key doesn&apos;t exist, instead of throwing
an exception. In .NET, using <a class="xref" href="Lucene.Net.Support.HashMap-2.html#Lucene_Net_Support_HashMap_2_TryGetValue__0__1__">TryGetValue(TKey, out TValue)</a>
will provide similar behavior as <code>V Get(TKey)</code> This class is slower than using a
<span class="xref">System.Collections.Generic.Dictionary`2</span>, because of extra checks that have to be
done on each access, to check for null.
</p>
Consider also implementing IDictionary, IEnumerable, and ICollection
like <span class="xref">System.Collections.Generic.Dictionary`2</span> does, so HashMap can be
used in substituted in place for the same interfaces it implements.</p>
</section>
<h4><a class="xref" href="Lucene.Net.Support.IdentityComparer.html">IdentityComparer</a></h4>
<section><p>Represents a comparison operation that tests equality by reference
instead of equality by value. Basically, the comparison is done by
checking if <span class="xref">System.Object.ReferenceEquals(System.Object, System.Object)</span>
returns true rather than by calling the &quot;Equals&quot; function.
<p>
Note that the assumption is that the object is passed will be a reference type,
although it is not strictly enforced.</p>
</section>
<h4><a class="xref" href="Lucene.Net.Support.IdentityComparer-1.html">IdentityComparer&lt;T&gt;</a></h4>
<section><p>Represents a comparison operation that tests equality by reference
instead of equality by value. Basically, the comparison is done by
checking if <span class="xref">System.Object.ReferenceEquals(System.Object, System.Object)</span>
returns true rather than by calling the &quot;Equals&quot; function.</p>
</section>
<h4><a class="xref" href="Lucene.Net.Support.IdentityHashMap-2.html">IdentityHashMap&lt;TKey, TValue&gt;</a></h4>
<section></section>
<h4><a class="xref" href="Lucene.Net.Support.IdentityHashSet-1.html">IdentityHashSet&lt;T&gt;</a></h4>
<section></section>
<h4><a class="xref" href="Lucene.Net.Support.IdentityWeakReference-1.html">IdentityWeakReference&lt;T&gt;</a></h4>
<section></section>
<h4><a class="xref" href="Lucene.Net.Support.LinkedHashMap-2.html">LinkedHashMap&lt;TKey, TValue&gt;</a></h4>
<section><p>LinkedHashMap is a specialized dictionary that preserves the entry order of elements.
Like a HashMap, there can be a <code>null</code> key, but it also guarantees that the enumeration
order of the elements are the same as insertion order, regardless of the number of add/remove/update
operations that are performed on it.</p>
</section>
<h4><a class="xref" href="Lucene.Net.Support.ListExtensions.html">ListExtensions</a></h4>
<section></section>
<h4><a class="xref" href="Lucene.Net.Support.LurchTable-2.html">LurchTable&lt;TKey, TValue&gt;</a></h4>
<section><p>LurchTable stands for &quot;Least Used Recently Concurrent Hash Table&quot; and has definate
similarities to both the .NET 4 ConcurrentDictionary as well as Java&apos;s LinkedHashMap.
This gives you a thread-safe dictionary/hashtable that stores element ordering by
insertion, updates, or access. In addition it can be configured to use a &apos;hard-limit&apos;
count of items that will automatically &apos;pop&apos; the oldest item in the collection.</p>
</section>
<h4><a class="xref" href="Lucene.Net.Support.LurchTable-2.KeyCollection.html">LurchTable&lt;TKey, TValue&gt;.KeyCollection</a></h4>
<section><p>Provides the collection of Keys for the LurchTable</p>
</section>
<h4><a class="xref" href="Lucene.Net.Support.LurchTable-2.ValueCollection.html">LurchTable&lt;TKey, TValue&gt;.ValueCollection</a></h4>
<section><p>Provides the collection of Values for the LurchTable</p>
</section>
<h4><a class="xref" href="Lucene.Net.Support.LurchTableCorruptionException.html">LurchTableCorruptionException</a></h4>
<section><p>Exception class: LurchTableCorruptionException
The LurchTable internal datastructure appears to be corrupted.</p>
</section>
<h4><a class="xref" href="Lucene.Net.Support.Number.html">Number</a></h4>
<section><p>A simple class for number conversions.</p>
</section>
<h4><a class="xref" href="Lucene.Net.Support.NumberFormat.html">NumberFormat</a></h4>
<section></section>
<h4><a class="xref" href="Lucene.Net.Support.PriorityQueue-1.html">PriorityQueue&lt;T&gt;</a></h4>
<section><p>A <a class="xref" href="Lucene.Net.Support.PriorityQueue-1.html">PriorityQueue&lt;T&gt;</a> holds elements on a priority heap, which orders the elements
according to their natural order or according to the comparator specified at
construction time. If the queue uses natural ordering, only elements that are
comparable are permitted to be inserted into the queue.
<p>
The least element of the specified ordering is stored at the head of the
queue and the greatest element is stored at the tail of the queue.
<p>
A <a class="xref" href="Lucene.Net.Support.PriorityQueue-1.html">PriorityQueue&lt;T&gt;</a> is not synchronized.</p>
</section>
<h4><a class="xref" href="Lucene.Net.Support.RectangularArrays.html">RectangularArrays</a></h4>
<section></section>
<h4><a class="xref" href="Lucene.Net.Support.SetExtensions.html">SetExtensions</a></h4>
<section></section>
<h4><a class="xref" href="Lucene.Net.Support.SignedZeroComparer.html">SignedZeroComparer</a></h4>
<section><p>LUCENENET specific comparer to handle the special case
of comparing negative zero with positive zero.
<p>
For IEEE floating-point numbers, there is a distinction of negative and positive zero.
Reference: <a href="http://stackoverflow.com/a/3139636">http://stackoverflow.com/a/3139636</a></p>
</section>
<h4><a class="xref" href="Lucene.Net.Support.StringBuilderCharSequenceWrapper.html">StringBuilderCharSequenceWrapper</a></h4>
<section><p>An adapter for <span class="xref">System.Text.StringBuilder</span> that implements <a class="xref" href="Lucene.Net.Support.ICharSequence.html">ICharSequence</a></p>
</section>
<h4><a class="xref" href="Lucene.Net.Support.StringBuilderExtensions.html">StringBuilderExtensions</a></h4>
<section></section>
<h4><a class="xref" href="Lucene.Net.Support.StringCharSequenceWrapper.html">StringCharSequenceWrapper</a></h4>
<section><p>An adapter for <span class="xref">System.String</span> that implements <a class="xref" href="Lucene.Net.Support.ICharSequence.html">ICharSequence</a></p>
</section>
<h4><a class="xref" href="Lucene.Net.Support.StringExtensions.html">StringExtensions</a></h4>
<section></section>
<h4><a class="xref" href="Lucene.Net.Support.SystemConsole.html">SystemConsole</a></h4>
<section><p>Mimics <span class="xref">System.Console</span>, but allows for swapping
the <span class="xref">System.IO.TextWriter</span> of
<a class="xref" href="Lucene.Net.Support.SystemConsole.html#Lucene_Net_Support_SystemConsole_Out">Out</a> and <a class="xref" href="Lucene.Net.Support.SystemConsole.html#Lucene_Net_Support_SystemConsole_Error">Error</a>, or the <span class="xref">System.IO.TextReader</span> of <a class="xref" href="Lucene.Net.Support.SystemConsole.html#Lucene_Net_Support_SystemConsole_In">In</a>
with user-defined implementations.</p>
</section>
<h4><a class="xref" href="Lucene.Net.Support.SystemProperties.html">SystemProperties</a></h4>
<section><p>Helper for environment variables. This class helps to convert the environment
variables to int or bool data types and also silently handles read permission
errors.
<p>
For instructions how to set environment variables for your OS, see
<a href="https://www.schrodinger.com/kb/1842">https://www.schrodinger.com/kb/1842</a>.
<p>
Note that if you want to load any of these settings for your application from a
configuration file, it is recommended your application load them at startup and
call <a class="xref" href="Lucene.Net.Support.SystemProperties.html#Lucene_Net_Support_SystemProperties_SetProperty_System_String_System_String_">SetProperty(String, String)</a> to set them.
<p>
Set the environment variable <code>lucene.ignoreSecurityExceptions</code> to <code>false</code>
to change the read behavior of these methods to throw the underlying exception
instead of returning the default value.</p>
</section>
<h4><a class="xref" href="Lucene.Net.Support.Time.html">Time</a></h4>
<section></section>
<h4><a class="xref" href="Lucene.Net.Support.TreeDictionary-2.html">TreeDictionary&lt;TKey, TValue&gt;</a></h4>
<section><p>A sorted generic dictionary based on a red-black tree set.
<p>
A <a class="xref" href="Lucene.Net.Support.TreeDictionary-2.html">TreeDictionary&lt;TKey, TValue&gt;</a> provides similar behavior to a <span class="xref">System.Collections.Generic.SortedDictionary`2</span>,
except that <a class="xref" href="Lucene.Net.Support.TreeDictionary-2.html">TreeDictionary&lt;TKey, TValue&gt;</a> allows elements with null or duplicate keys to be created, where a
<span class="xref">System.Collections.Generic.SortedDictionary`2</span> does not.</p>
</section>
<h4><a class="xref" href="Lucene.Net.Support.TreeDictionary-2.KeyCollection.html">TreeDictionary&lt;TKey, TValue&gt;.KeyCollection</a></h4>
<section></section>
<h4><a class="xref" href="Lucene.Net.Support.TreeDictionary-2.ValueCollection.html">TreeDictionary&lt;TKey, TValue&gt;.ValueCollection</a></h4>
<section></section>
<h4><a class="xref" href="Lucene.Net.Support.TreeSet-1.html">TreeSet&lt;T&gt;</a></h4>
<section><p>An implementation of Red-Black trees as an indexed, sorted collection with set semantics,
cf. <a href="litterature.htm#CLRS">CLRS</a>. <span class="xref">C5.TreeBag`1</span> for a version
with bag semantics. <span class="xref">C5.TreeDictionary`2</span> for a sorted dictionary
based on this tree implementation.
<em>
The comparer (sorting order) may be either natural, because the item type is comparable
(generic: <span class="xref">C5.IComparable`1</span> or non-generic: System.IComparable) or it can
be external and supplied by the user in the constructor.</em></p>
<p><em>TODO: describe performance here</em>
<em>TODO: discuss persistence and its useful usage modes. Warn about the space
leak possible with other usage modes.</em></p>
</section>
<h4><a class="xref" href="Lucene.Net.Support.WeakDictionary-2.html">WeakDictionary&lt;TKey, TValue&gt;</a></h4>
<section></section>
<h4><a class="xref" href="Lucene.Net.Support.WritableArrayAttribute.html">WritableArrayAttribute</a></h4>
<section><p>Attribute to define a property or method as a writable array.
Per MSDN, members should never return arrays because the array contents
can be updated, which makes the behavior confusing. However,
Lucene&apos;s design sometimes relies on other classes to update arrays -
both as array fields and as methods that return arrays. So, in these
cases we are making an exception to this rule and marking them with
<a class="xref" href="Lucene.Net.Support.WritableArrayAttribute.html">WritableArrayAttribute</a> to signify that this is intentional.
<p>
For properties that violate this rule, you should also use
the <span class="xref">System.Diagnostics.CodeAnalysis.SuppressMessageAttribute</span>:</p>
<pre><code>[WritableArray, SuppressMessage(&quot;Microsoft.Performance&quot;, &quot;CA1819&quot;, Justification = &quot;Lucene&apos;s design requires some writable array properties&quot;)]</code></pre>
</section>
<h3 id="structs">Structs
</h3>
<h4><a class="xref" href="Lucene.Net.Support.LurchTable-2.Enumerator.html">LurchTable&lt;TKey, TValue&gt;.Enumerator</a></h4>
<section><p>Provides an enumerator that iterates through the collection.</p>
</section>
<h4><a class="xref" href="Lucene.Net.Support.LurchTable-2.KeyCollection.Enumerator.html">LurchTable&lt;TKey, TValue&gt;.KeyCollection.Enumerator</a></h4>
<section><p>Provides an enumerator that iterates through the collection.</p>
</section>
<h4><a class="xref" href="Lucene.Net.Support.LurchTable-2.ValueCollection.Enumerator.html">LurchTable&lt;TKey, TValue&gt;.ValueCollection.Enumerator</a></h4>
<section><p>Provides an enumerator that iterates through the collection.</p>
</section>
<h4><a class="xref" href="Lucene.Net.Support.TreeDictionary-2.Enumerator.html">TreeDictionary&lt;TKey, TValue&gt;.Enumerator</a></h4>
<section></section>
<h3 id="interfaces">Interfaces
</h3>
<h4><a class="xref" href="Lucene.Net.Support.ICallable-1.html">ICallable&lt;V&gt;</a></h4>
<section></section>
<h4><a class="xref" href="Lucene.Net.Support.ICharSequence.html">ICharSequence</a></h4>
<section><p>This interface represents an ordered set of characters and defines the
methods to probe them.</p>
</section>
<h4><a class="xref" href="Lucene.Net.Support.IChecksum.html">IChecksum</a></h4>
<section><p>Contains conversion support elements such as classes, interfaces and static methods.</p>
</section>
<h4><a class="xref" href="Lucene.Net.Support.ICreateOrUpdateValue-2.html">ICreateOrUpdateValue&lt;TKey, TValue&gt;</a></h4>
<section><p>An interface to provide conditional or custom creation or update logic to a concurrent dictionary.</p>
</section>
<h4><a class="xref" href="Lucene.Net.Support.ICreateValue-2.html">ICreateValue&lt;TKey, TValue&gt;</a></h4>
<section><p>An interface to provide conditional or custom creation logic to a concurrent dictionary.</p>
</section>
<h4><a class="xref" href="Lucene.Net.Support.IRemoveValue-2.html">IRemoveValue&lt;TKey, TValue&gt;</a></h4>
<section><p>An interface to provide conditional removal of an item from a concurrent dictionary.</p>
</section>
<h4><a class="xref" href="Lucene.Net.Support.IUpdateValue-2.html">IUpdateValue&lt;TKey, TValue&gt;</a></h4>
<section><p>An interface to provide conditional or custom update logic to a concurrent dictionary.</p>
</section>
<h3 id="enums">Enums
</h3>
<h4><a class="xref" href="Lucene.Net.Support.LurchTableOrder.html">LurchTableOrder</a></h4>
<section><p>Defines if and how items added to a LurchTable are linked together, this defines
the value returned from Peek/Dequeue as the oldest entry of the specified operation.</p>
</section>
<h3 id="delegates">Delegates
</h3>
<h4><a class="xref" href="Lucene.Net.Support.KeyValuePredicate-2.html">KeyValuePredicate&lt;TKey, TValue&gt;</a></h4>
<section><p>Provides a delegate that performs a test on key/value pair </p>
</section>
<h4><a class="xref" href="Lucene.Net.Support.KeyValueUpdate-2.html">KeyValueUpdate&lt;TKey, TValue&gt;</a></h4>
<section><p>Provides a delegate that performs an atomic update of a key/value pair </p>
</section>
<h4><a class="xref" href="Lucene.Net.Support.LurchTable-2.ItemUpdatedMethod.html">LurchTable&lt;TKey, TValue&gt;.ItemUpdatedMethod</a></h4>
<section><p>Method signature for the ItemUpdated event </p>
</section>
</article>
</div>
<div class="hidden-sm col-md-2" role="complementary">
<div class="sideaffix">
<div class="contribution">
<ul class="nav">
</ul>
</div>
<nav class="bs-docs-sidebar hidden-print hidden-xs hidden-sm affix" id="affix">
<!-- <p><a class="back-to-top" href="#top">Back to top</a><p> -->
</nav>
</div>
</div>
</div>
</div>
<footer>
<div class="grad-bottom"></div>
<div class="footer">
<div class="container">
<span class="pull-right">
<a href="#top">Back to top</a>
</span>
Copyright © 2020 Licensed to the Apache Software Foundation (ASF)
</div>
</div>
</footer>
</div>
<script type="text/javascript" src="../../styles/docfx.vendor.js"></script>
<script type="text/javascript" src="../../styles/docfx.js"></script>
<script type="text/javascript" src="../../styles/main.js"></script>
</body>
</html>