aboutsummaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/GlueGen_Mapping.html960
-rw-r--r--doc/GlueGen_Mapping.md136
-rw-r--r--doc/JogAmpMacOSVersions.html723
3 files changed, 1073 insertions, 746 deletions
diff --git a/doc/GlueGen_Mapping.html b/doc/GlueGen_Mapping.html
index 537ce89..20e9265 100644
--- a/doc/GlueGen_Mapping.html
+++ b/doc/GlueGen_Mapping.html
@@ -1,407 +1,415 @@
-<style>
-div#header, header
- {
-
- border-bottom: 1px solid #aaa;
- margin-bottom: 0.5em;
- }
-
-.title
- {
- text-align: center;
- }
-
-.author, .date
- {
- text-align: center;
- }
-
-div#TOC, nav#TOC
- {
-
- border-bottom: 1px solid #aaa;
- margin-bottom: 0.5em;
- }
-
-nav#TOC {
- margin-bottom: var(--line-height);
-
- padding-bottom: 0.5rem;
-}
-
-nav#TOC input {
- display: none;
-}
-
-nav#TOC label {
- color: var(--color-link);
- cursor: pointer;
-}
-
-nav#TOC > ul {
- display: none;
-}
-
-nav#TOC > input:checked + ul {
- display: block;
-}
-
-@media print
- {
- div#TOC, nav#TOC
- {
-
- display: none;
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
+<head>
+ <meta charset="utf-8" />
+ <meta name="generator" content="pandoc" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
+ <title>GlueGen_Mapping.md</title>
+ <style>
+ div#header, header
+ {
+
+ border-bottom: 1px solid #aaa;
+ margin-bottom: 0.5em;
+ }
+
+ .title
+ {
+ text-align: center;
+ }
+
+ .author, .date
+ {
+ text-align: center;
+ }
+
+ div#TOC, nav#TOC
+ {
+
+ border-bottom: 1px solid #aaa;
+ margin-bottom: 0.5em;
+ }
+
+ nav#TOC {
+ margin-bottom: var(--line-height);
+
+ padding-bottom: 0.5rem;
}
- }
-
-div.content
- {
- color: #111111;
- font-size: 14px;
- line-height: 1.6;
- }
-
-div#cgit a
- {
- color: #1212a0;
- }
-
-div#cgit a.sourceLine
- {
- color: #111111;
- }
-
-h1, h2, h3, h4, h5, h6
-{
- font-family: "Helvetica Neue", Helvetica, "Liberation Sans", Calibri, Arial, sans-serif;
-
- page-break-after: avoid;
-
- margin: 20px 0 10px;
- padding: 0;
-}
-
-h2 {
- border-bottom: 1px solid #ccc;
-}
-div div
- {
-
- }
-
-section section
- {
- margin-left: 2em;
- }
+ nav#TOC input {
+ display: none;
+ }
-p {}
+ nav#TOC label {
+ color: var(--color-link);
+ cursor: pointer;
+ }
-blockquote
- {
- font-style: italic;
- }
+ nav#TOC > ul {
+ display: none;
+ }
-li
- {
- }
+ nav#TOC > input:checked + ul {
+ display: block;
+ }
-li > p
- {
- margin-top: 1em;
- }
+ @media print
+ {
+ div#TOC, nav#TOC
+ {
+
+ display: none;
+ }
+ }
+
+ div.content
+ {
+ color: #111111;
+ font-size: 14px;
+ line-height: 1.6;
+ }
+
+ div#cgit a
+ {
+ color: #1212a0;
+ }
+
+ div#cgit a.sourceLine
+ {
+ color: #111111;
+ }
+
+ h1, h2, h3, h4, h5, h6
+ {
+ font-family: "Helvetica Neue", Helvetica, "Liberation Sans", Calibri, Arial, sans-serif;
-ul
- {
- }
+ page-break-after: avoid;
-ul li
- {
- }
+ margin: 20px 0 10px;
+ padding: 0;
+ }
-ol
- {
- }
+ h2 {
+ border-bottom: 1px solid #ccc;
+ }
-ol li
- {
- }
+ div div
+ {
-hr {}
+ }
-sub
- {
- }
+ section section
+ {
+ margin-left: 2em;
+ }
-sup
- {
- }
+ p {}
-em
- {
- }
+ blockquote
+ {
+ font-style: italic;
+ }
-em > em
- {
- font-style: normal;
- }
+ li
+ {
+ }
-strong
- {
- }
+ li > p
+ {
+ margin-top: 1em;
+ }
-a
- {
+ ul
+ {
+ }
- text-decoration: none;
- }
+ ul li
+ {
+ }
-@media screen
- {
- a:hover
- {
+ ol
+ {
+ }
- text-decoration: underline;
- }
- }
+ ol li
+ {
+ }
-@media print
- {
- a {
+ hr {}
- color: black;
- background: transparent;
- }
+ sub
+ {
+ }
- a[href^="http://"]:after, a[href^="https://"]:after
- {
+ sup
+ {
+ }
- content: " (" attr(href) ") ";
- font-size: 90%;
- }
- }
+ em
+ {
+ }
-img
- {
+ em > em
+ {
+ font-style: normal;
+ }
- vertical-align: middle;
- }
+ strong
+ {
+ }
-div.figure
- {
+ a
+ {
- margin-left: auto;
- margin-right: auto;
- text-align: center;
- font-style: italic;
- }
+ text-decoration: none;
+ }
-p.caption
- {
+ @media screen
+ {
+ a:hover
+ {
- }
+ text-decoration: underline;
+ }
+ }
-pre, code
- {
- background-color: #f8f8f8;
+ @media print
+ {
+ a {
- white-space: pre-wrap;
- white-space: -moz-pre-wrap !important;
- white-space: -pre-wrap;
- white-space: -o-pre-wrap;
- word-wrap: break-word;
+ color: black;
+ background: transparent;
+ }
- }
+ a[href^="http://"]:after, a[href^="https://"]:after
+ {
-pre
- {
+ content: " (" attr(href) ") ";
+ font-size: 90%;
+ }
+ }
- padding: 0.5em;
- border-radius: 5px;
+ img
+ {
- background-color: #f8f8f8;
- border: 1px solid #ccc;
- font-size: 13px;
- line-height: 19px;
- overflow: auto;
- padding: 6px 10px;
+ vertical-align: middle;
+ }
- margin-left: 0.5em;
- margin-right: 0.5em;
- }
+ div.figure
+ {
-@media screen
- {
- pre
- {
+ margin-left: auto;
+ margin-right: auto;
+ text-align: center;
+ font-style: italic;
+ }
- white-space: pre;
- overflow: auto;
+ p.caption
+ {
- border: 1px dotted #777;
- }
- }
-
-code
- {
- }
-
-p > code, li > code
- {
-
- padding-left: 2px;
- padding-right: 2px;
- }
-
-li > p code
- {
-
- padding: 2px;
- }
-
-span.math
- {
-
- }
-
-div.math
- {
- }
-
-span.LaTeX
- {
- }
-
-eq
- {
- }
-
-table
- {
- border-collapse: collapse;
- border-spacing: 0;
-
- margin-left: auto;
- margin-right: auto;
- }
-
-thead
- {
- border-bottom: 1pt solid #000;
- background-color: #eee;
- }
-
-tr.header
- {
- }
-
-tbody
- {
- }
-
-tr {
- }
-tr.odd:hover, tr.even:hover
- {
- background-color: #eee;
- }
-
-tr.odd {}
-tr.even {}
-
-td, th
- {
- vertical-align: top;
- vertical-align: baseline;
- padding-left: 0.5em;
- padding-right: 0.5em;
- padding-top: 0.2em;
- padding-bottom: 0.2em;
- }
-th
- {
- font-weight: bold;
- }
-
-tfoot
- {
- }
-
-caption
- {
- caption-side: top;
- border: none;
- font-size: 0.9em;
- font-style: italic;
- text-align: center;
- margin-bottom: 0.3em;
- padding-bottom: 0.2em;
- }
-
-dl
- {
- border-top: 2pt solid black;
- padding-top: 0.5em;
- border-bottom: 2pt solid black;
- }
-
-dt
- {
- font-weight: bold;
- }
-
-dd+dt
- {
- border-top: 1pt solid black;
- padding-top: 0.5em;
- }
-
-dd
- {
- margin-bottom: 0.5em;
- }
-
-dd+dd
- {
- border-top: 1px solid black;
- }
-
-a.footnote, a.footnoteRef {
- font-size: small;
- vertical-align: text-top;
-}
+ }
-a[href^="#fnref"], a.reversefootnote
- {
- }
+ pre, code
+ {
+ background-color: #f8f8f8;
-@media print
- {
- a[href^="#fnref"], a.reversefootnote
- {
+ white-space: pre-wrap;
+ white-space: -moz-pre-wrap !important;
+ white-space: -pre-wrap;
+ white-space: -o-pre-wrap;
+ word-wrap: break-word;
- display: none;
- }
- }
+ }
-div.footnotes
- {
- }
+ pre
+ {
-div.footnotes li[id^="fn"]
- {
- }
+ padding: 0.5em;
+ border-radius: 5px;
-@media print
- {
- .noprint
- {
- display:none;
+ background-color: #f8f8f8;
+ border: 1px solid #ccc;
+ font-size: 13px;
+ line-height: 19px;
+ overflow: auto;
+ padding: 6px 10px;
+
+ margin-left: 0.5em;
+ margin-right: 0.5em;
+ }
+
+ @media screen
+ {
+ pre
+ {
+
+ white-space: pre;
+ overflow: auto;
+
+ border: 1px dotted #777;
+ }
+ }
+
+ code
+ {
+ }
+
+ p > code, li > code
+ {
+
+ padding-left: 2px;
+ padding-right: 2px;
+ }
+
+ li > p code
+ {
+
+ padding: 2px;
+ }
+
+ span.math
+ {
+
+ }
+
+ div.math
+ {
+ }
+
+ span.LaTeX
+ {
+ }
+
+ eq
+ {
+ }
+
+ table
+ {
+ border-collapse: collapse;
+ border-spacing: 0;
+
+ margin-left: auto;
+ margin-right: auto;
+ }
+
+ thead
+ {
+ border-bottom: 1pt solid #000;
+ background-color: #eee;
+ }
+
+ tr.header
+ {
+ }
+
+ tbody
+ {
+ }
+
+ tr {
+ }
+ tr.odd:hover, tr.even:hover
+ {
+ background-color: #eee;
+ }
+
+ tr.odd {}
+ tr.even {}
+
+ td, th
+ {
+ vertical-align: top;
+ vertical-align: baseline;
+ padding-left: 0.5em;
+ padding-right: 0.5em;
+ padding-top: 0.2em;
+ padding-bottom: 0.2em;
+ }
+ th
+ {
+ font-weight: bold;
+ }
+
+ tfoot
+ {
+ }
+
+ caption
+ {
+ caption-side: top;
+ border: none;
+ font-size: 0.9em;
+ font-style: italic;
+ text-align: center;
+ margin-bottom: 0.3em;
+ padding-bottom: 0.2em;
+ }
+
+ dl
+ {
+ border-top: 2pt solid black;
+ padding-top: 0.5em;
+ border-bottom: 2pt solid black;
+ }
+
+ dt
+ {
+ font-weight: bold;
+ }
+
+ dd+dt
+ {
+ border-top: 1pt solid black;
+ padding-top: 0.5em;
+ }
+
+ dd
+ {
+ margin-bottom: 0.5em;
+ }
+
+ dd+dd
+ {
+ border-top: 1px solid black;
+ }
+
+ a.footnote, a.footnoteRef {
+ font-size: small;
+ vertical-align: text-top;
}
- }
-</style>
+ a[href^="#fnref"], a.reversefootnote
+ {
+ }
+
+ @media print
+ {
+ a[href^="#fnref"], a.reversefootnote
+ {
+
+ display: none;
+ }
+ }
+
+ div.footnotes
+ {
+ }
+
+ div.footnotes li[id^="fn"]
+ {
+ }
+
+ @media print
+ {
+ .noprint
+ {
+ display:none;
+ }
+ }
+ </style>
+</head>
+<body>
<nav id="TOC" role="doc-toc">
<strong>Contents</strong><label for="contents">⊕</label>
<input type="checkbox" id="contents">
@@ -424,6 +432,8 @@ div.footnotes li[id^="fn"]
<li><a href="#struct-mapping-notes">Struct Mapping Notes</a></li>
<li><a href="#struct-java-signature-table">Struct Java Signature
Table</a></li>
+ <li><a href="#struct-java-signature-examples">Struct Java Signature
+ Examples</a></li>
<li><a href="#struct-setter-pseudo-code">Struct Setter
Pseudo-Code</a></li>
</ul></li>
@@ -432,7 +442,6 @@ div.footnotes li[id^="fn"]
</ul></li>
</ul>
</nav>
-
<style>
table, th, td {
border: 1px solid black;
@@ -1021,13 +1030,18 @@ constant. Otherwise the <em>native</em> memory has <em>java
ownership</em>. See <a
href="#returnedarraylength-symbol-expression">ReturnedArrayLength
Setting</a> above.</p></li>
+<li><p>Utilizing a <em>flexible</em> <em>elemCount</em> via
+<strong>ReturnedArrayLength getValElements()</strong> renders us unable
+to determine ownership of pointer referenced <em>native</em> memory
+segment and hence renders ownership <em>mixed or ambiguous</em>, <a
+href="#signature-const-int32_t--customsize-ambiguous-java-owned">see
+[5]</a>. This is due to the fact, that native code may allocate memory
+and writes its <em>elemCount</em> into the designated field
+<em>valElements</em>. In such cases, the user being aware of the
+underlying API shall utilize <code>setVal(..)</code> and
+<code>releaseVal()</code> with care.</p></li>
<li><p>To release native memory with <em>java ownership</em>, i.e. a
native ByteBuffer, <code>releaseVal()</code> can be used.</p></li>
-<li><p>To shrink a <em>Pointer</em> &amp; <em>VariaElemCount</em>
-pointer-array elemCount size with <em>java ownership</em> , the memory
-must be cleared with <code>releaseVal()</code> first. This is due to
-<code>setVal(src, srcPos, destPos, len)</code> reusing the existing
-memory in case <code>destPos + len &lt; elemCount</code>.</p></li>
</ul>
<h3 id="struct-java-signature-table">Struct Java Signature Table</h3>
<p>Please find below signature table as generated by the <em>C
@@ -1127,7 +1141,7 @@ getBuffer()</td>
<td style="text-align: left;">setVal(int v)</td>
<td style="text-align: left;">int getVal()</td>
<td style="text-align: left;"></td>
-<td style="text-align: left;">Static</td>
+<td style="text-align: left;">Parent</td>
<td style="text-align: left;"></td>
</tr>
<tr class="odd">
@@ -1136,7 +1150,7 @@ getBuffer()</td>
<td style="text-align: left;"><em>none</em></td>
<td style="text-align: left;">int getVal()</td>
<td style="text-align: left;"></td>
-<td style="text-align: left;">Static</td>
+<td style="text-align: left;">Parent</td>
<td style="text-align: left;">Read only</td>
</tr>
<tr class="even">
@@ -1145,13 +1159,16 @@ getBuffer()</td>
<td style="text-align: left;"><em>none</em></td>
<td style="text-align: left;">int getVal()</td>
<td style="text-align: left;"><strong>ImmutableAccess</strong></td>
-<td style="text-align: left;">Static</td>
+<td style="text-align: left;">Parent</td>
<td style="text-align: left;">Read only</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[const]</td>
<td style="text-align: left;">int32_t* val</td>
-<td style="text-align: left;">setVal(int v) <br> releaseVal()</td>
+<td style="text-align: left;">setVal(int v) [<a
+href="#signature-int32_t--maxoneelement-java-owned">1</a>][<a
+href="#signature-const-int32_t--maxoneelement-java-owned">2</a>] <br>
+releaseVal()</td>
<td style="text-align: left;">int getVal() <br> boolean isValNull() <br>
int getValElemCount()</td>
<td style="text-align: left;"><strong>MaxOneElement</strong></td>
@@ -1189,7 +1206,7 @@ int len)</td>
<td style="text-align: left;">IntBuffer getVal() <br> int[] getVal(int
srcPos, int[] dest, int destPos, int len)</td>
<td style="text-align: left;"></td>
-<td style="text-align: left;">Static</td>
+<td style="text-align: left;">Parent</td>
<td style="text-align: left;"></td>
</tr>
<tr class="odd">
@@ -1199,7 +1216,7 @@ srcPos, int[] dest, int destPos, int len)</td>
<td style="text-align: left;">IntBuffer getVal() <br> int[] getVal(int
srcPos, int[] dest, int destPos, int len)</td>
<td style="text-align: left;"></td>
-<td style="text-align: left;">Static</td>
+<td style="text-align: left;">Parent</td>
<td style="text-align: left;">Read only</td>
</tr>
<tr class="even">
@@ -1218,7 +1235,8 @@ static int getValElemCount()</td>
<td style="text-align: left;"></td>
<td style="text-align: left;">int32_t* val</td>
<td style="text-align: left;">setVal(int[] src, int srcPos, int destPos,
-int len)</td>
+int len) [<a
+href="#signature-int32_t--constelemcount-3-natively-owned">2</a>]</td>
<td style="text-align: left;">IntBuffer getVal() <br> int[] getVal(int
srcPos, int[] dest, int destPos, int len) <br> boolean isValNull() <br>
static int getValElemCount()</td>
@@ -1228,10 +1246,12 @@ static int getValElemCount()</td>
<td style="text-align: left;">Const element count 3</td>
</tr>
<tr class="even">
-<td style="text-align: left;">[const]</td>
+<td style="text-align: left;"></td>
<td style="text-align: left;">int32_t* val</td>
-<td style="text-align: left;">setVal(int[] src, int srcPos, int destPos,
-int len) <br> releaseVal()</td>
+<td style="text-align: left;">setVal(boolean subset, int[] src, int
+srcPos, int destPos, int len) [<a
+href="#signature-int32_t--freesize-java-owned">3</a>] <br>
+releaseVal()</td>
<td style="text-align: left;">IntBuffer getVal() <br> int[] getVal(int
srcPos, int[] dest, int destPos, int len) <br> boolean isValNull() <br>
int getValElemCount()</td>
@@ -1240,19 +1260,34 @@ int getValElemCount()</td>
<td style="text-align: left;">Starts w/ null elements</td>
</tr>
<tr class="odd">
+<td style="text-align: left;">const</td>
+<td style="text-align: left;">int32_t* val</td>
+<td style="text-align: left;">setVal(int[] src, int srcPos, int destPos,
+int len) [<a href="#signature-const-int32_t--freesize-java-owned">4</a>]
+<br> releaseVal()</td>
+<td style="text-align: left;">IntBuffer getVal() <br> int[] getVal(int
+srcPos, int[] dest, int destPos, int len) <br> boolean isValNull() <br>
+int getValElemCount()</td>
+<td style="text-align: left;"></td>
+<td style="text-align: left;">Java</td>
+<td style="text-align: left;">Starts w/ null elements</td>
+</tr>
+<tr class="even">
<td style="text-align: left;">[const]</td>
<td style="text-align: left;">int32_t* val</td>
<td style="text-align: left;">setVal(int[] src, int srcPos, int destPos,
-int len) <br> releaseVal()</td>
+int len) [<a
+href="#signature-const-int32_t--customsize-ambiguous-java-owned">5</a>]
+<br> releaseVal()</td>
<td style="text-align: left;">IntBuffer getVal() <br> int[] getVal(int
srcPos, int[] dest, int destPos, int len) <br> boolean isValNull()</td>
<td style="text-align: left;"><strong>ReturnedArrayLength
getValCount()</strong></td>
-<td style="text-align: left;"><em>Ambiguous</em></td>
+<td style="text-align: left;"><strong>Ambiguous</strong></td>
<td style="text-align: left;">Variable element count<br>using field
<em>valCount</em>,<br>which has getter and setter</td>
</tr>
-<tr class="even">
+<tr class="odd">
<td style="text-align: left;">[const]</td>
<td style="text-align: left;">char* name</td>
<td style="text-align: left;">setName(String srcVal) <br>
@@ -1263,7 +1298,7 @@ releaseVal()</td>
<td style="text-align: left;">Java</td>
<td style="text-align: left;">String only, w/ EOS</td>
</tr>
-<tr class="odd">
+<tr class="even">
<td style="text-align: left;">[const]</td>
<td style="text-align: left;">char* name</td>
<td style="text-align: left;">setName(String srcVal) <br> setName(byte[]
@@ -1276,6 +1311,177 @@ getName() <br> boolean isNameNull() <br> int getNameElemCount()</td>
</tr>
</tbody>
</table>
+<h3 id="struct-java-signature-examples">Struct Java Signature
+Examples</h3>
+<h4 id="signature-int32_t--maxoneelement-java-owned">Signature
+<code>int32_t *</code> MaxOneElement, Java owned</h4>
+<ul>
+<li><p><code>void com.jogamp.gluegen.test.junit.generation.TK_Field.setVariaInt32PointerMaxOneElemElemCount(int src)</code></p>
+<p>Setter for native field variaInt32PointerMaxOneElem, referencing a
+Java owned array with variable element count of 0 initial elements.</p>
+<p>Maximum element count is 1.</p>
+<p>Native Signature:</p>
+<ul>
+<li>field-type (PointerType) 'int32_t <em>' -&gt; (int32_t) * , size
+[fixed false, lnx64 8], const[false], pointer</em>1</li>
+<li>referenced (IntType) typedef 'int32_t', size [fixed true, lnx64 4],
+const[false], int</li>
+</ul>
+<p>Will reuse memory if existing, otherwise allocating memory.</p></li>
+</ul>
+<h4 id="signature-const-int32_t--maxoneelement-java-owned">Signature
+<code>const int32_t *</code> MaxOneElement, Java owned</h4>
+<ul>
+<li><p><code>TK_Field com.jogamp.gluegen.test.junit.generation.TK_Field.setConstInt32PointerMaxOneElem(int src)</code></p>
+<p>Setter for native field variaInt32PointerMaxOneElem, referencing a
+Java owned array with variable element count of 0 initial elements.</p>
+<p>Maximum element count is 1.</p>
+<p>Native Signature:</p>
+<ul>
+<li>field-type (PointerType) 'int32_t <em>' -&gt; (const int32_t) * ,
+size [fixed false, lnx64 8], const[false], pointer</em>1</li>
+<li>referenced (IntType) typedef 'int32_t', size [fixed true, lnx64 4],
+const[native, true], int</li>
+</ul>
+<p>Always replaces memory due to <code>const</code> value
+modifier.</p></li>
+</ul>
+<h4 id="signature-int32_t--constelemcount-3-natively-owned">Signature
+<code>int32_t *</code> ConstElemCount 3, Natively owned</h4>
+<ul>
+<li><p><code>TK_Field com.jogamp.gluegen.test.junit.generation.TK_Field.setVariaInt32PointerConstLen(int[] src, int srcPos, int destPos, int length)</code></p>
+<p>Setter for native field variaInt32PointerConstLen, referencing a
+natively owned array with fixed element count of 3 elements.</p>
+<p>Native Signature:</p>
+<ul>
+<li>field-type (PointerType) 'int32_t <em>' -&gt; (int32_t) * , size
+[fixed false, lnx64 8], const[false], pointer</em>1</li>
+<li>referenced (IntType) typedef 'int32_t', size [fixed true, lnx64 4],
+const[false], int</li>
+</ul>
+<p>Copies the given source elements into the respective field's existing
+memory.</p>
+<p>Parameters:</p>
+<ul>
+<li>src the source array of elements</li>
+<li>srcPos starting element position within the source array with
+'srcPos &gt;= 0<code>&amp;&amp;</code>srcPos + length &lt;= src.length`,
+otherwise an IndexOutOfBoundsException is thrown</li>
+<li>destPos starting element position within the destination with
+'destPos &gt;= 0<code>&amp;&amp;</code>destPos + length &lt;=
+elemCount`, otherwise an exception is thrown</li>
+<li>length the element count to be copied with 'length &gt;=
+0<code>&amp;&amp;</code>srcPos + length &lt;=
+src.length<code>&amp;&amp;</code>destPos + length &lt;= elemCount`,
+otherwise an IndexOutOfBoundsException is thrown</li>
+</ul>
+<p>Returns:</p>
+<ul>
+<li>this instance of chaining</li>
+</ul></li>
+</ul>
+<h4 id="signature-int32_t--freesize-java-owned">Signature
+<code>int32_t *</code> FreeSize, Java owned</h4>
+<ul>
+<li><p><code>TK_Field com.jogamp.gluegen.test.junit.generation.TK_Field.setVariaInt32PointerVariaLen(boolean subset, int[] src, int srcPos, int destPos, int length)</code></p>
+<p>Setter for native field variaInt32PointerVariaLen, referencing a Java
+owned array with variable element count of 0 initial elements.</p>
+<p>Native Signature:</p>
+<ul>
+<li>field-type (PointerType) 'int32_t <em>' -&gt; (int32_t) * , size
+[fixed false, lnx64 8], const[false], pointer</em>1</li>
+<li>referenced (IntType) typedef 'int32_t', size [fixed true, lnx64 4],
+const[false], int</li>
+</ul>
+<p>Copies the given source elements into the respective field, either
+writing into the existing memory or creating a new memory and
+referencing it.</p>
+<p>Parameters:</p>
+<ul>
+<li>subset if <code>true</code> keeps the underlying memory and only
+allows to set up to <code>elemCount</code> elements. Otherwise may
+replace the underlying memory if
+<code>destPos + length != elemCount</code>.</li>
+<li>src the source array of elements</li>
+<li>srcPos starting element position within the source array with
+'srcPos &gt;= 0<code>&amp;&amp;</code>srcPos + length &lt;= src.length`,
+otherwise an IndexOutOfBoundsException is thrown</li>
+<li>destPos starting element position within the destination with
+'destPos &gt;= 0<code>. If </code>subset == true<code>, </code>destPos +
+length &lt;= elemCount<code>also must be be</code>true`. Otherwise an
+exception is thrown</li>
+<li>length the element count to be copied with 'length &gt;=
+0<code>&amp;&amp;</code>srcPos + length &lt;= src.length`, otherwise an
+IndexOutOfBoundsException is thrown</li>
+</ul>
+<p>Returns:</p>
+<ul>
+<li>this instance of chaining</li>
+</ul></li>
+</ul>
+<h4 id="signature-const-int32_t--freesize-java-owned">Signature
+<code>const int32_t *</code> FreeSize, Java owned</h4>
+<ul>
+<li><p><code>TK_Field com.jogamp.gluegen.test.junit.generation.TK_Field.setConstInt32PointerVariaLen(int[] src, int srcPos, int length)</code></p>
+<p>Setter for native field constInt32PointerVariaLen, referencing a Java
+owned array with variable element count of 0 initial elements.</p>
+<p>Native Signature:</p>
+<ul>
+<li>field-type (PointerType) 'int32_t <em>' -&gt; (const int32_t) * ,
+size [fixed false, lnx64 8], const[false], pointer</em>1</li>
+<li>referenced (IntType) typedef 'int32_t', size [fixed true, lnx64 4],
+const[native, true], int</li>
+</ul>
+<p>Replaces the respective field's memory with a new memory segment
+containing given source elements and referencing it.</p>
+<p>Parameters:</p>
+<ul>
+<li>src the source array of elements</li>
+<li>srcPos starting element position within the source array with
+'srcPos &gt;= 0<code>&amp;&amp;</code>srcPos + length &lt;= src.length`,
+otherwise an IndexOutOfBoundsException is thrown</li>
+<li>length the element count to be copied with 'length &gt;=
+0<code>&amp;&amp;</code>srcPos + length &lt;= src.length`, otherwise an
+IndexOutOfBoundsException is thrown</li>
+</ul>
+<p>Returns:</p>
+<ul>
+<li>this instance of chaining</li>
+</ul></li>
+</ul>
+<h4
+id="signature-const-int32_t--customsize-ambiguous-java-owned">Signature
+<code>const int32_t *</code> CustomSize, Ambiguous, Java owned</h4>
+<ul>
+<li><p><code>TK_Field com.jogamp.gluegen.test.junit.generation.TK_Field.setConstInt32PointerCustomLen(int[] src, int srcPos, int length)</code></p>
+<p>Setter for native field constIntxxPointerCustomLen, referencing a
+mixed and ambigously owned (<strong>warning</strong>) array with
+variable element count of getConstIntxxPointerCustomLenElemCount()
+elements.</p>
+<p>Native Signature:</p>
+<ul>
+<li>field-type (PointerType) 'int32_t <em>' -&gt; (const int32_t) * ,
+size [fixed false, lnx64 8], const[false], pointer</em>1</li>
+<li>referenced (IntType) typedef 'int32_t', size [fixed true, lnx64 4],
+const[native, true], int</li>
+</ul>
+<p>Replaces the respective field's memory with a new memory segment
+containing given source elements and referencing it.</p>
+<p>Parameters:</p>
+<ul>
+<li>src the source array of elements</li>
+<li>srcPos starting element position within the source array with
+'srcPos &gt;= 0<code>&amp;&amp;</code>srcPos + length &lt;= src.length`,
+otherwise an IndexOutOfBoundsException is thrown</li>
+<li>length the element count to be copied with 'length &gt;=
+0<code>&amp;&amp;</code>srcPos + length &lt;= src.length`, otherwise an
+IndexOutOfBoundsException is thrown</li>
+</ul>
+<p>Returns:</p>
+<ul>
+<li>this instance of chaining</li>
+</ul></li>
+</ul>
<h3 id="struct-setter-pseudo-code">Struct Setter Pseudo-Code</h3>
<ul>
<li><em>ImmutableAccess</em>: Drops setter, immutable</li>
@@ -1370,3 +1576,5 @@ folder to your GlueGen <code>includeRefid</code> element:</p>
<p>To identity a GlueGen code generation run, GlueGen defines the
following macros:</p>
<pre><code> #define __GLUEGEN__ 2</code></pre>
+</body>
+</html>
diff --git a/doc/GlueGen_Mapping.md b/doc/GlueGen_Mapping.md
index dcdb51a..ad7ec27 100644
--- a/doc/GlueGen_Mapping.md
+++ b/doc/GlueGen_Mapping.md
@@ -296,11 +296,10 @@ A direct C code `char` array or indirect array via pointer can be interpreted as
if the expression is constant. Otherwise the *native* memory has *java ownership*.
See [ReturnedArrayLength Setting](#returnedarraylength-symbol-expression) above.
+* Utilizing a *flexible* *elemCount* via **ReturnedArrayLength getValElements()** renders us unable to determine ownership
+ of pointer referenced *native* memory segment and hence renders ownership *mixed or ambiguous*, [see \[5\]](#signature-const-int32_t--customsize-ambiguous-java-owned). This is due to the fact, that native code may allocate memory and writes its *elemCount* into the designated field *valElements*. In such cases, the user being aware of the underlying API shall utilize `setVal(..)` and `releaseVal()` with care.
+
* To release native memory with *java ownership*, i.e. a native ByteBuffer, `releaseVal()` can be used.
-
-* To shrink a *Pointer* & *VariaElemCount* pointer-array elemCount size with *java ownership* ,
- the memory must be cleared with `releaseVal()` first. This is due to `setVal(src, srcPos, destPos, len)`
- reusing the existing memory in case `destPos + len < elemCount`.
### Struct Java Signature Table
@@ -322,21 +321,132 @@ A similar mapping is produced for `struct` types, i.e. *compounds*.
| | | | static TK_Struct derefPointer(long addr) | | | Java, static ctor <br> dereferencing ByteBuffer <br> at native address of size() |
| | | | ByteBuffer getBuffer() | | | Java, <br> underlying ByteBuffer |
| | | | long getDirectBufferAddress() | | | Java, native address <br> of underlying getBuffer() |
-| | int32_t val | setVal(int v) | int getVal() | | Static | |
-| const | int32_t val | *none* | int getVal() | | Static | Read only |
-| | int32_t val | *none* | int getVal() | **ImmutableAccess** | Static | Read only |
-| [const] | int32_t* val | setVal(int v) <br> releaseVal() | int getVal() <br> boolean isValNull() <br> int getValElemCount() | **MaxOneElement** | Java | Starts w/ null elements,<br>max 1 element |
+| | int32_t val | setVal(int v) | int getVal() | | Parent | |
+| const | int32_t val | *none* | int getVal() | | Parent | Read only |
+| | int32_t val | *none* | int getVal() | **ImmutableAccess** | Parent | Read only |
+| [const] | int32_t* val | setVal(int v) \[[1](#signature-int32_t--maxoneelement-java-owned)\]\[[2](#signature-const-int32_t--maxoneelement-java-owned)\] <br> releaseVal() | int getVal() <br> boolean isValNull() <br> int getValElemCount() | **MaxOneElement** | Java | Starts w/ null elements,<br>max 1 element |
| const | int32_t* val | *none* | int getVal() <br> boolean isValNull() <br> static int getValElemCount() | **ReturnedArrayLength 1** | Native | Const element count 1 |
| | int32_t* val | setVal(int v) | int getVal() <br> boolean isValNull() <br> static int getValElemCount() | **ReturnedArrayLength 1** | Native | Const element count 1 | |
-| | int32_t val[3]| setVal(int[] src, int srcPos, int destPos, int len) | IntBuffer getVal() <br> int[] getVal(int srcPos, int[] dest, int destPos, int len) | | Static | |
-| const | int32_t val[3]| *none* | IntBuffer getVal() <br> int[] getVal(int srcPos, int[] dest, int destPos, int len) | | Static | Read only |
+| | int32_t val[3]| setVal(int[] src, int srcPos, int destPos, int len) | IntBuffer getVal() <br> int[] getVal(int srcPos, int[] dest, int destPos, int len) | | Parent | |
+| const | int32_t val[3]| *none* | IntBuffer getVal() <br> int[] getVal(int srcPos, int[] dest, int destPos, int len) | | Parent | Read only |
| const | int32_t* val | *none* | IntBuffer getVal() <br> int[] getVal(int srcPos, int[] dest, int destPos, int len) <br> boolean isValNull() <br> static int getValElemCount() | **ReturnedArrayLength 3** | Native | Read only <br> Const element count 3 |
-| | int32_t* val | setVal(int[] src, int srcPos, int destPos, int len) | IntBuffer getVal() <br> int[] getVal(int srcPos, int[] dest, int destPos, int len) <br> boolean isValNull() <br> static int getValElemCount() | **ReturnedArrayLength 3** | Native | Const element count 3 |
-| [const] | int32_t* val | setVal(int[] src, int srcPos, int destPos, int len) <br> releaseVal() | IntBuffer getVal() <br> int[] getVal(int srcPos, int[] dest, int destPos, int len) <br> boolean isValNull() <br> int getValElemCount() | | Java | Starts w/ null elements |
-| [const] | int32_t* val | setVal(int[] src, int srcPos, int destPos, int len) <br> releaseVal() | IntBuffer getVal() <br> int[] getVal(int srcPos, int[] dest, int destPos, int len) <br> boolean isValNull() | **ReturnedArrayLength getValCount()** | *Ambiguous* | Variable element count<br>using field *valCount*,<br>which has getter and setter |
+| | int32_t* val | setVal(int[] src, int srcPos, int destPos, int len) \[[2](#signature-int32_t--constelemcount-3-natively-owned)\] | IntBuffer getVal() <br> int[] getVal(int srcPos, int[] dest, int destPos, int len) <br> boolean isValNull() <br> static int getValElemCount() | **ReturnedArrayLength 3** | Native | Const element count 3 |
+| | int32_t* val | setVal(boolean subset, int[] src, int srcPos, int destPos, int len) \[[3](#signature-int32_t--freesize-java-owned)\] <br> releaseVal() | IntBuffer getVal() <br> int[] getVal(int srcPos, int[] dest, int destPos, int len) <br> boolean isValNull() <br> int getValElemCount() | | Java | Starts w/ null elements |
+| const | int32_t* val | setVal(int[] src, int srcPos, int destPos, int len) \[[4](#signature-const-int32_t--freesize-java-owned)\] <br> releaseVal() | IntBuffer getVal() <br> int[] getVal(int srcPos, int[] dest, int destPos, int len) <br> boolean isValNull() <br> int getValElemCount() | | Java | Starts w/ null elements |
+| [const] | int32_t* val | setVal(int[] src, int srcPos, int destPos, int len) \[[5](#signature-const-int32_t--customsize-ambiguous-java-owned)\] <br> releaseVal() | IntBuffer getVal() <br> int[] getVal(int srcPos, int[] dest, int destPos, int len) <br> boolean isValNull() | **ReturnedArrayLength getValCount()** | **Ambiguous** | Variable element count<br>using field *valCount*,<br>which has getter and setter |
| [const] | char* name | setName(String srcVal) <br> releaseVal() | String getName() <br> boolean isNameNull() <br> int getNameElemCount() | **ReturnsStringOnly** | Java | String only, w/ EOS |
| [const] | char* name | setName(String srcVal) <br> setName(byte[] src, int srcPos, int destPos, int len) <br> releaseVal() | String getNameAsString() <br> ByteBuffer getName() <br> boolean isNameNull() <br> int getNameElemCount() | **ReturnsString** | Java | String and byte access, w/ EOS|
+### Struct Java Signature Examples
+
+#### Signature `int32_t *` MaxOneElement, Java owned
+
+* `void com.jogamp.gluegen.test.junit.generation.TK_Field.setVariaInt32PointerMaxOneElemElemCount(int src)`
+
+ Setter for native field variaInt32PointerMaxOneElem, referencing a Java owned array with variable element count of 0 initial elements.
+
+ Maximum element count is 1.
+
+ Native Signature:
+ * field-type (PointerType) 'int32_t *' -> (int32_t) * , size [fixed false, lnx64 8], const[false], pointer*1
+ * referenced (IntType) typedef 'int32_t', size [fixed true, lnx64 4], const[false], int
+
+ Will reuse memory if existing, otherwise allocating memory.
+
+#### Signature `const int32_t *` MaxOneElement, Java owned
+
+* `TK_Field com.jogamp.gluegen.test.junit.generation.TK_Field.setConstInt32PointerMaxOneElem(int src)`
+
+ Setter for native field variaInt32PointerMaxOneElem, referencing a Java owned array with variable element count of 0 initial elements.
+
+ Maximum element count is 1.
+
+ Native Signature:
+ * field-type (PointerType) 'int32_t *' -> (const int32_t) * , size [fixed false, lnx64 8], const[false], pointer*1
+ * referenced (IntType) typedef 'int32_t', size [fixed true, lnx64 4], const[native, true], int
+
+ Always replaces memory due to `const` value modifier.
+
+#### Signature `int32_t *` ConstElemCount 3, Natively owned
+
+* `TK_Field com.jogamp.gluegen.test.junit.generation.TK_Field.setVariaInt32PointerConstLen(int[] src, int srcPos, int destPos, int length)`
+
+ Setter for native field variaInt32PointerConstLen, referencing a natively owned array with fixed element count of 3 elements.
+
+ Native Signature:
+ * field-type (PointerType) 'int32_t *' -> (int32_t) * , size [fixed false, lnx64 8], const[false], pointer*1
+ * referenced (IntType) typedef 'int32_t', size [fixed true, lnx64 4], const[false], int
+
+ Copies the given source elements into the respective field's existing memory.
+
+ Parameters:
+ * src the source array of elements
+ * srcPos starting element position within the source array with 'srcPos >= 0` && `srcPos + length <= src.length`, otherwise an IndexOutOfBoundsException is thrown
+ * destPos starting element position within the destination with 'destPos >= 0` && `destPos + length <= elemCount`, otherwise an exception is thrown
+ * length the element count to be copied with 'length >= 0` && `srcPos + length <= src.length` && `destPos + length <= elemCount`, otherwise an IndexOutOfBoundsException is thrown
+
+ Returns:
+ * this instance of chaining
+
+#### Signature `int32_t *` FreeSize, Java owned
+* `TK_Field com.jogamp.gluegen.test.junit.generation.TK_Field.setVariaInt32PointerVariaLen(boolean subset, int[] src, int srcPos, int destPos, int length)`
+
+ Setter for native field variaInt32PointerVariaLen, referencing a Java owned array with variable element count of 0 initial elements.
+
+ Native Signature:
+ * field-type (PointerType) 'int32_t *' -> (int32_t) * , size [fixed false, lnx64 8], const[false], pointer*1
+ * referenced (IntType) typedef 'int32_t', size [fixed true, lnx64 4], const[false], int
+
+ Copies the given source elements into the respective field, either writing into the existing memory or creating a new memory and referencing it.
+
+ Parameters:
+ * subset if `true` keeps the underlying memory and only allows to set up to `elemCount` elements. Otherwise may replace the underlying memory if `destPos + length != elemCount`.
+ * src the source array of elements
+ * srcPos starting element position within the source array with 'srcPos >= 0` && `srcPos + length <= src.length`, otherwise an IndexOutOfBoundsException is thrown
+ * destPos starting element position within the destination with 'destPos >= 0`. If `subset == true`, `destPos + length <= elemCount` also must be be `true`. Otherwise an exception is thrown
+ * length the element count to be copied with 'length >= 0` && `srcPos + length <= src.length`, otherwise an IndexOutOfBoundsException is thrown
+
+ Returns:
+ * this instance of chaining
+
+#### Signature `const int32_t *` FreeSize, Java owned
+* `TK_Field com.jogamp.gluegen.test.junit.generation.TK_Field.setConstInt32PointerVariaLen(int[] src, int srcPos, int length)`
+
+ Setter for native field constInt32PointerVariaLen, referencing a Java owned array with variable element count of 0 initial elements.
+
+ Native Signature:
+ * field-type (PointerType) 'int32_t *' -> (const int32_t) * , size [fixed false, lnx64 8], const[false], pointer*1
+ * referenced (IntType) typedef 'int32_t', size [fixed true, lnx64 4], const[native, true], int
+
+ Replaces the respective field's memory with a new memory segment containing given source elements and referencing it.
+
+ Parameters:
+ * src the source array of elements
+ * srcPos starting element position within the source array with 'srcPos >= 0` && `srcPos + length <= src.length`, otherwise an IndexOutOfBoundsException is thrown
+ * length the element count to be copied with 'length >= 0` && `srcPos + length <= src.length`, otherwise an IndexOutOfBoundsException is thrown
+
+ Returns:
+ * this instance of chaining
+
+#### Signature `const int32_t *` CustomSize, Ambiguous, Java owned
+* `TK_Field com.jogamp.gluegen.test.junit.generation.TK_Field.setConstInt32PointerCustomLen(int[] src, int srcPos, int length)`
+
+ Setter for native field constIntxxPointerCustomLen, referencing a mixed and ambigously owned (**warning**) array with variable element count of getConstIntxxPointerCustomLenElemCount() elements.
+
+ Native Signature:
+ * field-type (PointerType) 'int32_t *' -> (const int32_t) * , size [fixed false, lnx64 8], const[false], pointer*1
+ * referenced (IntType) typedef 'int32_t', size [fixed true, lnx64 4], const[native, true], int
+
+ Replaces the respective field's memory with a new memory segment containing given source elements and referencing it.
+
+ Parameters:
+ * src the source array of elements
+ * srcPos starting element position within the source array with 'srcPos >= 0` && `srcPos + length <= src.length`, otherwise an IndexOutOfBoundsException is thrown
+ * length the element count to be copied with 'length >= 0` && `srcPos + length <= src.length`, otherwise an IndexOutOfBoundsException is thrown
+
+ Returns:
+ * this instance of chaining
+
### Struct Setter Pseudo-Code
* *ImmutableAccess*: Drops setter, immutable
diff --git a/doc/JogAmpMacOSVersions.html b/doc/JogAmpMacOSVersions.html
index 22c2351..3b56244 100644
--- a/doc/JogAmpMacOSVersions.html
+++ b/doc/JogAmpMacOSVersions.html
@@ -1,407 +1,415 @@
-<style>
-div#header, header
- {
-
- border-bottom: 1px solid #aaa;
- margin-bottom: 0.5em;
- }
-
-.title
- {
- text-align: center;
- }
-
-.author, .date
- {
- text-align: center;
- }
-
-div#TOC, nav#TOC
- {
-
- border-bottom: 1px solid #aaa;
- margin-bottom: 0.5em;
- }
-
-nav#TOC {
- margin-bottom: var(--line-height);
-
- padding-bottom: 0.5rem;
-}
-
-nav#TOC input {
- display: none;
-}
-
-nav#TOC label {
- color: var(--color-link);
- cursor: pointer;
-}
-
-nav#TOC > ul {
- display: none;
-}
-
-nav#TOC > input:checked + ul {
- display: block;
-}
-
-@media print
- {
- div#TOC, nav#TOC
- {
-
- display: none;
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
+<head>
+ <meta charset="utf-8" />
+ <meta name="generator" content="pandoc" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
+ <title>JogAmpMacOSVersions.md</title>
+ <style>
+ div#header, header
+ {
+
+ border-bottom: 1px solid #aaa;
+ margin-bottom: 0.5em;
+ }
+
+ .title
+ {
+ text-align: center;
+ }
+
+ .author, .date
+ {
+ text-align: center;
+ }
+
+ div#TOC, nav#TOC
+ {
+
+ border-bottom: 1px solid #aaa;
+ margin-bottom: 0.5em;
+ }
+
+ nav#TOC {
+ margin-bottom: var(--line-height);
+
+ padding-bottom: 0.5rem;
}
- }
-div.content
- {
- color: #111111;
- font-size: 14px;
- line-height: 1.6;
- }
-
-div#cgit a
- {
- color: #1212a0;
- }
-
-div#cgit a.sourceLine
- {
- color: #111111;
- }
-
-h1, h2, h3, h4, h5, h6
-{
- font-family: "Helvetica Neue", Helvetica, "Liberation Sans", Calibri, Arial, sans-serif;
-
- page-break-after: avoid;
-
- margin: 20px 0 10px;
- padding: 0;
-}
+ nav#TOC input {
+ display: none;
+ }
-h2 {
- border-bottom: 1px solid #ccc;
-}
+ nav#TOC label {
+ color: var(--color-link);
+ cursor: pointer;
+ }
-div div
- {
+ nav#TOC > ul {
+ display: none;
+ }
- }
+ nav#TOC > input:checked + ul {
+ display: block;
+ }
-section section
- {
- margin-left: 2em;
- }
+ @media print
+ {
+ div#TOC, nav#TOC
+ {
+
+ display: none;
+ }
+ }
+
+ div.content
+ {
+ color: #111111;
+ font-size: 14px;
+ line-height: 1.6;
+ }
+
+ div#cgit a
+ {
+ color: #1212a0;
+ }
+
+ div#cgit a.sourceLine
+ {
+ color: #111111;
+ }
+
+ h1, h2, h3, h4, h5, h6
+ {
+ font-family: "Helvetica Neue", Helvetica, "Liberation Sans", Calibri, Arial, sans-serif;
-p {}
+ page-break-after: avoid;
-blockquote
- {
- font-style: italic;
- }
+ margin: 20px 0 10px;
+ padding: 0;
+ }
-li
- {
- }
+ h2 {
+ border-bottom: 1px solid #ccc;
+ }
-li > p
- {
- margin-top: 1em;
- }
+ div div
+ {
-ul
- {
- }
+ }
-ul li
- {
- }
+ section section
+ {
+ margin-left: 2em;
+ }
-ol
- {
- }
+ p {}
-ol li
- {
- }
+ blockquote
+ {
+ font-style: italic;
+ }
-hr {}
+ li
+ {
+ }
-sub
- {
- }
+ li > p
+ {
+ margin-top: 1em;
+ }
-sup
- {
- }
+ ul
+ {
+ }
-em
- {
- }
+ ul li
+ {
+ }
-em > em
- {
- font-style: normal;
- }
+ ol
+ {
+ }
-strong
- {
- }
+ ol li
+ {
+ }
-a
- {
+ hr {}
- text-decoration: none;
- }
+ sub
+ {
+ }
-@media screen
- {
- a:hover
- {
+ sup
+ {
+ }
- text-decoration: underline;
- }
- }
+ em
+ {
+ }
-@media print
- {
- a {
+ em > em
+ {
+ font-style: normal;
+ }
- color: black;
- background: transparent;
- }
+ strong
+ {
+ }
- a[href^="http://"]:after, a[href^="https://"]:after
- {
+ a
+ {
- content: " (" attr(href) ") ";
- font-size: 90%;
- }
- }
+ text-decoration: none;
+ }
-img
- {
+ @media screen
+ {
+ a:hover
+ {
- vertical-align: middle;
- }
+ text-decoration: underline;
+ }
+ }
-div.figure
- {
+ @media print
+ {
+ a {
- margin-left: auto;
- margin-right: auto;
- text-align: center;
- font-style: italic;
- }
+ color: black;
+ background: transparent;
+ }
-p.caption
- {
+ a[href^="http://"]:after, a[href^="https://"]:after
+ {
- }
+ content: " (" attr(href) ") ";
+ font-size: 90%;
+ }
+ }
-pre, code
- {
- background-color: #f8f8f8;
+ img
+ {
- white-space: pre-wrap;
- white-space: -moz-pre-wrap !important;
- white-space: -pre-wrap;
- white-space: -o-pre-wrap;
- word-wrap: break-word;
+ vertical-align: middle;
+ }
- }
+ div.figure
+ {
-pre
- {
+ margin-left: auto;
+ margin-right: auto;
+ text-align: center;
+ font-style: italic;
+ }
- padding: 0.5em;
- border-radius: 5px;
+ p.caption
+ {
- background-color: #f8f8f8;
- border: 1px solid #ccc;
- font-size: 13px;
- line-height: 19px;
- overflow: auto;
- padding: 6px 10px;
+ }
- margin-left: 0.5em;
- margin-right: 0.5em;
- }
+ pre, code
+ {
+ background-color: #f8f8f8;
-@media screen
- {
- pre
- {
-
- white-space: pre;
- overflow: auto;
-
- border: 1px dotted #777;
- }
- }
-
-code
- {
- }
-
-p > code, li > code
- {
-
- padding-left: 2px;
- padding-right: 2px;
- }
-
-li > p code
- {
-
- padding: 2px;
- }
-
-span.math
- {
-
- }
-
-div.math
- {
- }
-
-span.LaTeX
- {
- }
-
-eq
- {
- }
-
-table
- {
- border-collapse: collapse;
- border-spacing: 0;
-
- margin-left: auto;
- margin-right: auto;
- }
-
-thead
- {
- border-bottom: 1pt solid #000;
- background-color: #eee;
- }
-
-tr.header
- {
- }
-
-tbody
- {
- }
-
-tr {
- }
-tr.odd:hover, tr.even:hover
- {
- background-color: #eee;
- }
-
-tr.odd {}
-tr.even {}
-
-td, th
- {
- vertical-align: top;
- vertical-align: baseline;
- padding-left: 0.5em;
- padding-right: 0.5em;
- padding-top: 0.2em;
- padding-bottom: 0.2em;
- }
-th
- {
- font-weight: bold;
- }
-
-tfoot
- {
- }
-
-caption
- {
- caption-side: top;
- border: none;
- font-size: 0.9em;
- font-style: italic;
- text-align: center;
- margin-bottom: 0.3em;
- padding-bottom: 0.2em;
- }
-
-dl
- {
- border-top: 2pt solid black;
- padding-top: 0.5em;
- border-bottom: 2pt solid black;
- }
-
-dt
- {
- font-weight: bold;
- }
-
-dd+dt
- {
- border-top: 1pt solid black;
- padding-top: 0.5em;
- }
-
-dd
- {
- margin-bottom: 0.5em;
- }
-
-dd+dd
- {
- border-top: 1px solid black;
- }
-
-a.footnote, a.footnoteRef {
- font-size: small;
- vertical-align: text-top;
-}
-
-a[href^="#fnref"], a.reversefootnote
- {
- }
+ white-space: pre-wrap;
+ white-space: -moz-pre-wrap !important;
+ white-space: -pre-wrap;
+ white-space: -o-pre-wrap;
+ word-wrap: break-word;
-@media print
- {
- a[href^="#fnref"], a.reversefootnote
- {
-
- display: none;
- }
- }
+ }
-div.footnotes
- {
- }
+ pre
+ {
-div.footnotes li[id^="fn"]
- {
- }
+ padding: 0.5em;
+ border-radius: 5px;
-@media print
- {
- .noprint
- {
- display:none;
+ background-color: #f8f8f8;
+ border: 1px solid #ccc;
+ font-size: 13px;
+ line-height: 19px;
+ overflow: auto;
+ padding: 6px 10px;
+
+ margin-left: 0.5em;
+ margin-right: 0.5em;
+ }
+
+ @media screen
+ {
+ pre
+ {
+
+ white-space: pre;
+ overflow: auto;
+
+ border: 1px dotted #777;
+ }
+ }
+
+ code
+ {
+ }
+
+ p > code, li > code
+ {
+
+ padding-left: 2px;
+ padding-right: 2px;
+ }
+
+ li > p code
+ {
+
+ padding: 2px;
+ }
+
+ span.math
+ {
+
+ }
+
+ div.math
+ {
+ }
+
+ span.LaTeX
+ {
+ }
+
+ eq
+ {
+ }
+
+ table
+ {
+ border-collapse: collapse;
+ border-spacing: 0;
+
+ margin-left: auto;
+ margin-right: auto;
+ }
+
+ thead
+ {
+ border-bottom: 1pt solid #000;
+ background-color: #eee;
+ }
+
+ tr.header
+ {
+ }
+
+ tbody
+ {
+ }
+
+ tr {
+ }
+ tr.odd:hover, tr.even:hover
+ {
+ background-color: #eee;
+ }
+
+ tr.odd {}
+ tr.even {}
+
+ td, th
+ {
+ vertical-align: top;
+ vertical-align: baseline;
+ padding-left: 0.5em;
+ padding-right: 0.5em;
+ padding-top: 0.2em;
+ padding-bottom: 0.2em;
+ }
+ th
+ {
+ font-weight: bold;
+ }
+
+ tfoot
+ {
+ }
+
+ caption
+ {
+ caption-side: top;
+ border: none;
+ font-size: 0.9em;
+ font-style: italic;
+ text-align: center;
+ margin-bottom: 0.3em;
+ padding-bottom: 0.2em;
+ }
+
+ dl
+ {
+ border-top: 2pt solid black;
+ padding-top: 0.5em;
+ border-bottom: 2pt solid black;
+ }
+
+ dt
+ {
+ font-weight: bold;
+ }
+
+ dd+dt
+ {
+ border-top: 1pt solid black;
+ padding-top: 0.5em;
+ }
+
+ dd
+ {
+ margin-bottom: 0.5em;
+ }
+
+ dd+dd
+ {
+ border-top: 1px solid black;
+ }
+
+ a.footnote, a.footnoteRef {
+ font-size: small;
+ vertical-align: text-top;
}
- }
-</style>
+ a[href^="#fnref"], a.reversefootnote
+ {
+ }
+
+ @media print
+ {
+ a[href^="#fnref"], a.reversefootnote
+ {
+
+ display: none;
+ }
+ }
+
+ div.footnotes
+ {
+ }
+
+ div.footnotes li[id^="fn"]
+ {
+ }
+
+ @media print
+ {
+ .noprint
+ {
+ display:none;
+ }
+ }
+ </style>
+</head>
+<body>
<nav id="TOC" role="doc-toc">
<strong>Contents</strong><label for="contents">⊕</label>
<input type="checkbox" id="contents">
@@ -425,7 +433,6 @@ div.footnotes li[id^="fn"]
</ul></li>
</ul>
</nav>
-
<style>
table, th, td {
border: 1px solid black;
@@ -566,3 +573,5 @@ Sierra), Darwin 17, <code>x86_64</code></h3>
</tr>
</tbody>
</table>
+</body>
+</html>