parent
49065790fe
commit
cbbef5124f
@ -0,0 +1,11 @@ |
||||
TODO - 06/05/2003 |
||||
----------------- |
||||
|
||||
- Finish up documentation generator, specifically: |
||||
|
||||
- Structure/class/enumeration/typedef support. |
||||
- Support for argument names with type info, |
||||
e.g. "int (*cb)(mxml_node_t *)" |
||||
- Links at top to jump to specific sections? |
||||
|
||||
- Code documentation cleanup to take advantage of mxmldoc... |
@ -0,0 +1,338 @@ |
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> |
||||
<head> |
||||
<title>Documentation</title> |
||||
<style><!-- |
||||
h1, h2, h3, p { font-family: sans-serif; text-align: justify; } |
||||
tt, pre a:link, pre a:visited, tt a:link, tt a:visited { font-weight: bold; color: #7f0000; } |
||||
pre { font-weight: bold; color: #7f0000; margin-left: 5em; } |
||||
--></style> |
||||
</head> |
||||
<body> |
||||
<h1>Functions</h1> |
||||
<ul> |
||||
<li><a href="#mxmlAdd"><tt>mxmlAdd()</tt></a></li> |
||||
<li><a href="#mxmlDelete"><tt>mxmlDelete()</tt></a></li> |
||||
<li><a href="#mxmlElementGetAttr"><tt>mxmlElementGetAttr()</tt></a></li> |
||||
<li><a href="#mxmlElementSetAttr"><tt>mxmlElementSetAttr()</tt></a></li> |
||||
<li><a href="#mxmlFindElement"><tt>mxmlFindElement()</tt></a></li> |
||||
<li><a href="#mxmlLoadFile"><tt>mxmlLoadFile()</tt></a></li> |
||||
<li><a href="#mxmlNewElement"><tt>mxmlNewElement()</tt></a></li> |
||||
<li><a href="#mxmlNewInteger"><tt>mxmlNewInteger()</tt></a></li> |
||||
<li><a href="#mxmlNewOpaque"><tt>mxmlNewOpaque()</tt></a></li> |
||||
<li><a href="#mxmlNewReal"><tt>mxmlNewReal()</tt></a></li> |
||||
<li><a href="#mxmlNewText"><tt>mxmlNewText()</tt></a></li> |
||||
<li><a href="#mxmlRemove"><tt>mxmlRemove()</tt></a></li> |
||||
<li><a href="#mxmlSaveFile"><tt>mxmlSaveFile()</tt></a></li> |
||||
<li><a href="#mxmlWalkNext"><tt>mxmlWalkNext()</tt></a></li> |
||||
<li><a href="#mxmlWalkPrev"><tt>mxmlWalkPrev()</tt></a></li> |
||||
</ul> |
||||
<hr noshade/> |
||||
<h2><a name="mxmlAdd">mxmlAdd()</a></h2> |
||||
<p>Add a node to a tree.</p> |
||||
<h3>Syntax</h3> |
||||
<pre> |
||||
void |
||||
mxmlAdd( |
||||
mxml_node_t * parent, |
||||
int where, |
||||
mxml_node_t * child, |
||||
mxml_node_t * node); |
||||
</pre> |
||||
<h3>Arguments</h3> |
||||
<p class="table"><table align="center" border="1" width="80%"> |
||||
<thead><tr><th>Name</th><th>Description</th></tr></thead> |
||||
<tbody> |
||||
<tr><td><tt>parent</tt></td><td>Parent node</td></tr> |
||||
<tr><td><tt>where</tt></td><td>Where to add</td></tr> |
||||
<tr><td><tt>child</tt></td><td>Child node for where</td></tr> |
||||
<tr><td><tt>node</tt></td><td>Node to add</td></tr> |
||||
</tbody></table></p> |
||||
<h3>Returns</h3> |
||||
<p>Nothing.</p> |
||||
<hr noshade/> |
||||
<h2><a name="mxmlDelete">mxmlDelete()</a></h2> |
||||
<p>Delete a node and all of its children.</p> |
||||
<h3>Syntax</h3> |
||||
<pre> |
||||
void |
||||
mxmlDelete( |
||||
mxml_node_t * node); |
||||
</pre> |
||||
<h3>Arguments</h3> |
||||
<p class="table"><table align="center" border="1" width="80%"> |
||||
<thead><tr><th>Name</th><th>Description</th></tr></thead> |
||||
<tbody> |
||||
<tr><td><tt>node</tt></td><td>Node</td></tr> |
||||
</tbody></table></p> |
||||
<h3>Returns</h3> |
||||
<p>Nothing.</p> |
||||
<hr noshade/> |
||||
<h2><a name="mxmlElementGetAttr">mxmlElementGetAttr()</a></h2> |
||||
<p>Get an attribute.</p> |
||||
<h3>Syntax</h3> |
||||
<pre> |
||||
const char * |
||||
mxmlElementGetAttr( |
||||
mxml_node_t * node, |
||||
const char * name); |
||||
</pre> |
||||
<h3>Arguments</h3> |
||||
<p class="table"><table align="center" border="1" width="80%"> |
||||
<thead><tr><th>Name</th><th>Description</th></tr></thead> |
||||
<tbody> |
||||
<tr><td><tt>node</tt></td><td>Element node</td></tr> |
||||
<tr><td><tt>name</tt></td><td>Name of attribute</td></tr> |
||||
</tbody></table></p> |
||||
<h3>Returns</h3> |
||||
<p>Attribute value or NULL</p> |
||||
<hr noshade/> |
||||
<h2><a name="mxmlElementSetAttr">mxmlElementSetAttr()</a></h2> |
||||
<p>Set an attribute.</p> |
||||
<h3>Syntax</h3> |
||||
<pre> |
||||
void |
||||
mxmlElementSetAttr( |
||||
mxml_node_t * node, |
||||
const char * name, |
||||
const char * value); |
||||
</pre> |
||||
<h3>Arguments</h3> |
||||
<p class="table"><table align="center" border="1" width="80%"> |
||||
<thead><tr><th>Name</th><th>Description</th></tr></thead> |
||||
<tbody> |
||||
<tr><td><tt>node</tt></td><td>Element node</td></tr> |
||||
<tr><td><tt>name</tt></td><td>Name of attribute</td></tr> |
||||
<tr><td><tt>value</tt></td><td>Attribute value</td></tr> |
||||
</tbody></table></p> |
||||
<h3>Returns</h3> |
||||
<p>Nothing.</p> |
||||
<hr noshade/> |
||||
<h2><a name="mxmlFindElement">mxmlFindElement()</a></h2> |
||||
<p>Find the named element.</p> |
||||
<h3>Syntax</h3> |
||||
<pre> |
||||
mxml_node_t * |
||||
mxmlFindElement( |
||||
mxml_node_t * node, |
||||
mxml_node_t * top, |
||||
const char * name, |
||||
const char * attr, |
||||
const char * value, |
||||
int descend); |
||||
</pre> |
||||
<h3>Arguments</h3> |
||||
<p class="table"><table align="center" border="1" width="80%"> |
||||
<thead><tr><th>Name</th><th>Description</th></tr></thead> |
||||
<tbody> |
||||
<tr><td><tt>node</tt></td><td>Current node</td></tr> |
||||
<tr><td><tt>top</tt></td><td>Top node</td></tr> |
||||
<tr><td><tt>name</tt></td><td>Element name or NULL for any</td></tr> |
||||
<tr><td><tt>attr</tt></td><td>Attribute name, or NULL for none</td></tr> |
||||
<tr><td><tt>value</tt></td><td>Attribute value, or NULL for any</td></tr> |
||||
<tr><td><tt>descend</tt></td><td>Descend into tree?</td></tr> |
||||
</tbody></table></p> |
||||
<h3>Returns</h3> |
||||
<p>Element node or NULL</p> |
||||
<hr noshade/> |
||||
<h2><a name="mxmlLoadFile">mxmlLoadFile()</a></h2> |
||||
<p>Load a file into an XML node tree.</p> |
||||
<h3>Syntax</h3> |
||||
<pre> |
||||
mxml_node_t * |
||||
mxmlLoadFile( |
||||
mxml_node_t * top, |
||||
FILE * fp, |
||||
mxml_type_t * cb); |
||||
</pre> |
||||
<h3>Arguments</h3> |
||||
<p class="table"><table align="center" border="1" width="80%"> |
||||
<thead><tr><th>Name</th><th>Description</th></tr></thead> |
||||
<tbody> |
||||
<tr><td><tt>top</tt></td><td>Top node</td></tr> |
||||
<tr><td><tt>fp</tt></td><td>File to read from</td></tr> |
||||
<tr><td><tt>cb</tt></td><td>Callback function</td></tr> |
||||
</tbody></table></p> |
||||
<h3>Returns</h3> |
||||
<p>First node</p> |
||||
<hr noshade/> |
||||
<h2><a name="mxmlNewElement">mxmlNewElement()</a></h2> |
||||
<p>Create a new element node.</p> |
||||
<h3>Syntax</h3> |
||||
<pre> |
||||
mxml_node_t * |
||||
mxmlNewElement( |
||||
mxml_node_t * parent, |
||||
const char * name); |
||||
</pre> |
||||
<h3>Arguments</h3> |
||||
<p class="table"><table align="center" border="1" width="80%"> |
||||
<thead><tr><th>Name</th><th>Description</th></tr></thead> |
||||
<tbody> |
||||
<tr><td><tt>parent</tt></td><td>Parent node</td></tr> |
||||
<tr><td><tt>name</tt></td><td>Name of element</td></tr> |
||||
</tbody></table></p> |
||||
<h3>Returns</h3> |
||||
<p>New node</p> |
||||
<hr noshade/> |
||||
<h2><a name="mxmlNewInteger">mxmlNewInteger()</a></h2> |
||||
<p>Create a new integer node.</p> |
||||
<h3>Syntax</h3> |
||||
<pre> |
||||
mxml_node_t * |
||||
mxmlNewInteger( |
||||
mxml_node_t * parent, |
||||
int integer); |
||||
</pre> |
||||
<h3>Arguments</h3> |
||||
<p class="table"><table align="center" border="1" width="80%"> |
||||
<thead><tr><th>Name</th><th>Description</th></tr></thead> |
||||
<tbody> |
||||
<tr><td><tt>parent</tt></td><td>Parent node</td></tr> |
||||
<tr><td><tt>integer</tt></td><td>Integer value</td></tr> |
||||
</tbody></table></p> |
||||
<h3>Returns</h3> |
||||
<p>New node</p> |
||||
<hr noshade/> |
||||
<h2><a name="mxmlNewOpaque">mxmlNewOpaque()</a></h2> |
||||
<p>Create a new opaque string.</p> |
||||
<h3>Syntax</h3> |
||||
<pre> |
||||
mxml_node_t * |
||||
mxmlNewOpaque( |
||||
mxml_node_t * parent, |
||||
const char * opaque); |
||||
</pre> |
||||
<h3>Arguments</h3> |
||||
<p class="table"><table align="center" border="1" width="80%"> |
||||
<thead><tr><th>Name</th><th>Description</th></tr></thead> |
||||
<tbody> |
||||
<tr><td><tt>parent</tt></td><td>Parent node</td></tr> |
||||
<tr><td><tt>opaque</tt></td><td>Opaque string</td></tr> |
||||
</tbody></table></p> |
||||
<h3>Returns</h3> |
||||
<p>New node</p> |
||||
<hr noshade/> |
||||
<h2><a name="mxmlNewReal">mxmlNewReal()</a></h2> |
||||
<p>Create a new real number node.</p> |
||||
<h3>Syntax</h3> |
||||
<pre> |
||||
mxml_node_t * |
||||
mxmlNewReal( |
||||
mxml_node_t * parent, |
||||
double real); |
||||
</pre> |
||||
<h3>Arguments</h3> |
||||
<p class="table"><table align="center" border="1" width="80%"> |
||||
<thead><tr><th>Name</th><th>Description</th></tr></thead> |
||||
<tbody> |
||||
<tr><td><tt>parent</tt></td><td>Parent node</td></tr> |
||||
<tr><td><tt>real</tt></td><td>Real number value</td></tr> |
||||
</tbody></table></p> |
||||
<h3>Returns</h3> |
||||
<p>New node</p> |
||||
<hr noshade/> |
||||
<h2><a name="mxmlNewText">mxmlNewText()</a></h2> |
||||
<p>Create a new text fragment node.</p> |
||||
<h3>Syntax</h3> |
||||
<pre> |
||||
mxml_node_t * |
||||
mxmlNewText( |
||||
mxml_node_t * parent, |
||||
int whitespace, |
||||
const char * string); |
||||
</pre> |
||||
<h3>Arguments</h3> |
||||
<p class="table"><table align="center" border="1" width="80%"> |
||||
<thead><tr><th>Name</th><th>Description</th></tr></thead> |
||||
<tbody> |
||||
<tr><td><tt>parent</tt></td><td>Parent node</td></tr> |
||||
<tr><td><tt>whitespace</tt></td><td>Leading whitespace?</td></tr> |
||||
<tr><td><tt>string</tt></td><td>String</td></tr> |
||||
</tbody></table></p> |
||||
<h3>Returns</h3> |
||||
<p>New node</p> |
||||
<hr noshade/> |
||||
<h2><a name="mxmlRemove">mxmlRemove()</a></h2> |
||||
<p>Remove a node from its parent.</p> |
||||
<h3>Syntax</h3> |
||||
<pre> |
||||
void |
||||
mxmlRemove( |
||||
mxml_node_t * node); |
||||
</pre> |
||||
<h3>Arguments</h3> |
||||
<p class="table"><table align="center" border="1" width="80%"> |
||||
<thead><tr><th>Name</th><th>Description</th></tr></thead> |
||||
<tbody> |
||||
<tr><td><tt>node</tt></td><td>Node to remove</td></tr> |
||||
</tbody></table></p> |
||||
<h3>Returns</h3> |
||||
<p>Nothing.</p> |
||||
<hr noshade/> |
||||
<h2><a name="mxmlSaveFile">mxmlSaveFile()</a></h2> |
||||
<p>Save an XML tree to a file.</p> |
||||
<h3>Syntax</h3> |
||||
<pre> |
||||
int |
||||
mxmlSaveFile( |
||||
mxml_node_t * node, |
||||
FILE * fp, |
||||
int * cb, |
||||
mxml_node_t * int); |
||||
</pre> |
||||
<h3>Arguments</h3> |
||||
<p class="table"><table align="center" border="1" width="80%"> |
||||
<thead><tr><th>Name</th><th>Description</th></tr></thead> |
||||
<tbody> |
||||
<tr><td><tt>node</tt></td><td>Node to write</td></tr> |
||||
<tr><td><tt>fp</tt></td><td>File to write to</td></tr> |
||||
<tr><td><tt>cb</tt></td><td></td></tr> |
||||
<tr><td><tt>int</tt></td><td>Whitespace callback</td></tr> |
||||
</tbody></table></p> |
||||
<h3>Returns</h3> |
||||
<p>0 on success, -1 on error</p> |
||||
<hr noshade/> |
||||
<h2><a name="mxmlWalkNext">mxmlWalkNext()</a></h2> |
||||
<p>Walk to the next logical node in the tree.</p> |
||||
<h3>Syntax</h3> |
||||
<pre> |
||||
mxml_node_t * |
||||
mxmlWalkNext( |
||||
mxml_node_t * node, |
||||
mxml_node_t * top, |
||||
int descend); |
||||
</pre> |
||||
<h3>Arguments</h3> |
||||
<p class="table"><table align="center" border="1" width="80%"> |
||||
<thead><tr><th>Name</th><th>Description</th></tr></thead> |
||||
<tbody> |
||||
<tr><td><tt>node</tt></td><td>Current node</td></tr> |
||||
<tr><td><tt>top</tt></td><td>Top node</td></tr> |
||||
<tr><td><tt>descend</tt></td><td>Descend into tree?</td></tr> |
||||
</tbody></table></p> |
||||
<h3>Returns</h3> |
||||
<p>Next node or NULL</p> |
||||
<hr noshade/> |
||||
<h2><a name="mxmlWalkPrev">mxmlWalkPrev()</a></h2> |
||||
<p>Walk to the previous logical node in the tree.</p> |
||||
<h3>Syntax</h3> |
||||
<pre> |
||||
mxml_node_t * |
||||
mxmlWalkPrev( |
||||
mxml_node_t * node, |
||||
mxml_node_t * top, |
||||
int descend); |
||||
</pre> |
||||
<h3>Arguments</h3> |
||||
<p class="table"><table align="center" border="1" width="80%"> |
||||
<thead><tr><th>Name</th><th>Description</th></tr></thead> |
||||
<tbody> |
||||
<tr><td><tt>node</tt></td><td>Current node</td></tr> |
||||
<tr><td><tt>top</tt></td><td>Top node</td></tr> |
||||
<tr><td><tt>descend</tt></td><td>Descend into tree?</td></tr> |
||||
</tbody></table></p> |
||||
<h3>Returns</h3> |
||||
<p>Previous node or NULL</p> |
||||
</body> |
||||
</html> |
@ -0,0 +1,102 @@ |
||||
<?xml version="1.0"?> |
||||
<variable name="fp"><type>FILE *</type><description>File to write to</description><description>Callback function</description></variable> |
||||
<function name="mxmlAdd"><description>Add a node to a tree.</description><argument |
||||
name="parent" direction="I"><type>mxml_node_t *</type><description>Parent node</description></argument> |
||||
<argument name="where" direction="I"><type>int</type><description>Where to add</description></argument> |
||||
<argument name="child" direction="I"><type>mxml_node_t *</type><description>Child node for where</description></argument> |
||||
<argument name="node" direction="I"><type>mxml_node_t *</type><description>Node to add</description></argument> |
||||
</function> |
||||
<function name="mxmlDelete"><description>Delete a node and all of its children.</description><argument |
||||
name="node" direction="I"><type>mxml_node_t *</type><description>Node</description></argument> |
||||
</function> |
||||
<function name="mxmlElementGetAttr"><returnvalue><description>Attribute value or NULL</description><type>const |
||||
char *</type></returnvalue> |
||||
<description>Get an attribute.</description><argument name="node" |
||||
direction="I"><type>mxml_node_t *</type><description>Element node</description></argument> |
||||
<argument name="name" direction="I"><type>const char *</type><description>Name of attribute</description></argument> |
||||
</function> |
||||
<function name="mxmlElementSetAttr"><description>Set an attribute.</description><argument |
||||
name="node" direction="I"><type>mxml_node_t *</type><description>Element node</description></argument> |
||||
<argument name="name" direction="I"><type>const char *</type><description>Name of attribute</description></argument> |
||||
<argument name="value" direction="I"><type>const char *</type><description>Attribute value</description></argument> |
||||
</function> |
||||
<function name="mxmlFindElement"><returnvalue><description>Element node or NULL</description><type>mxml_node_t |
||||
*</type></returnvalue> |
||||
<description>Find the named element.</description><argument name="node" |
||||
direction="I"><type>mxml_node_t *</type><description>Current node</description></argument> |
||||
<argument name="top" direction="I"><type>mxml_node_t *</type><description>Top node</description></argument> |
||||
<argument name="name" direction="I"><type>const char *</type><description>Element name or NULL for any</description></argument> |
||||
<argument name="attr" direction="I"><type>const char *</type><description>Attribute name, or NULL for none</description></argument> |
||||
<argument name="value" direction="I"><type>const char *</type><description>Attribute value, or NULL for any</description></argument> |
||||
<argument name="descend" direction="I"><type>int</type><description>Descend into tree?</description></argument> |
||||
</function> |
||||
<function name="mxmlLoadFile"><returnvalue><description>First node</description><type>mxml_node_t |
||||
*</type></returnvalue> |
||||
<description>Load a file into an XML node tree.</description><argument |
||||
name="top" direction="I"><type>mxml_node_t *</type><description>Top node</description></argument> |
||||
<argument name="fp" direction="I"><type>FILE *</type><description>File to read from</description></argument> |
||||
<argument name="cb" direction="I"><type>mxml_type_t *</type><description>Callback function</description></argument> |
||||
</function> |
||||
<function name="mxmlNewElement"><returnvalue><description>New node</description><type>mxml_node_t |
||||
*</type></returnvalue> |
||||
<description>Create a new element node.</description><argument |
||||
name="parent" direction="I"><type>mxml_node_t *</type><description>Parent node</description></argument> |
||||
<argument name="name" direction="I"><type>const char *</type><description>Name of element</description></argument> |
||||
</function> |
||||
<function name="mxmlNewInteger"><returnvalue><description>New node</description><type>mxml_node_t |
||||
*</type></returnvalue> |
||||
<description>Create a new integer node.</description><argument |
||||
name="parent" direction="I"><type>mxml_node_t *</type><description>Parent node</description></argument> |
||||
<argument name="integer" direction="I"><type>int</type><description>Integer value</description></argument> |
||||
</function> |
||||
<function name="mxmlNewOpaque"><returnvalue><description>New node</description><type>mxml_node_t |
||||
*</type></returnvalue> |
||||
<description>Create a new opaque string.</description><argument |
||||
name="parent" direction="I"><type>mxml_node_t *</type><description>Parent node</description></argument> |
||||
<argument name="opaque" direction="I"><type>const char *</type><description>Opaque string</description></argument> |
||||
</function> |
||||
<function name="mxmlNewReal"><returnvalue><description>New node</description><type>mxml_node_t |
||||
*</type></returnvalue> |
||||
<description>Create a new real number node.</description><argument |
||||
name="parent" direction="I"><type>mxml_node_t *</type><description>Parent node</description></argument> |
||||
<argument name="real" direction="I"><type>double</type><description>Real number value</description></argument> |
||||
</function> |
||||
<function name="mxmlNewText"><returnvalue><description>New node</description><type>mxml_node_t |
||||
*</type></returnvalue> |
||||
<description>Create a new text fragment node.</description><argument |
||||
name="parent" direction="I"><type>mxml_node_t *</type><description>Parent node</description></argument> |
||||
<argument name="whitespace" direction="I"><type>int</type><description>Leading whitespace?</description></argument> |
||||
<argument name="string" direction="I"><type>const char *</type><description>String</description></argument> |
||||
</function> |
||||
<function name="mxmlRemove"><description>Remove a node from its parent.</description><argument |
||||
name="node" direction="I"><type>mxml_node_t *</type><description>Node to remove</description></argument> |
||||
</function> |
||||
<function name="mxmlSaveFile"><returnvalue><description>0 on success, -1 on error</description><type>int</type></returnvalue> |
||||
<description>Save an XML tree to a file.</description><argument |
||||
name="node" direction="I"><type>mxml_node_t *</type><description>Node to write</description></argument> |
||||
<argument name="fp" direction="I"><type>FILE *</type><description>File to write to</description></argument> |
||||
<argument name="cb"><type>int *</type></argument> |
||||
<argument name="int" direction="I"><type>mxml_node_t *</type><description>Whitespace callback</description></argument> |
||||
</function> |
||||
<function name="mxmlWalkNext"><returnvalue><description>Next node or NULL</description><type>mxml_node_t |
||||
*</type></returnvalue> |
||||
<description>Walk to the next logical node in the tree.</description><argument |
||||
name="node" direction="I"><type>mxml_node_t *</type><description>Current node</description></argument> |
||||
<argument name="top" direction="I"><type>mxml_node_t *</type><description>Top node</description></argument> |
||||
<argument name="descend" direction="I"><type>int</type><description>Descend into tree?</description></argument> |
||||
</function> |
||||
<function name="mxmlWalkPrev"><returnvalue><description>Previous node or NULL</description><type>mxml_node_t |
||||
*</type></returnvalue> |
||||
<description>Walk to the previous logical node in the tree.</description><argument |
||||
name="node" direction="I"><type>mxml_node_t *</type><description>Current node</description></argument> |
||||
<argument name="top" direction="I"><type>mxml_node_t *</type><description>Top node</description></argument> |
||||
<argument name="descend" direction="I"><type>int</type><description>Descend into tree?</description></argument> |
||||
</function> |
||||
<variable name="mxml_attr_t"><type/></variable> |
||||
<variable name="mxml_element_t"><type/></variable> |
||||
<variable name="mxml_node_t"><type>typedef struct mxml_node_str</type></variable> |
||||
<variable name="mxml_type_t"><type/></variable> |
||||
<variable name="node"><type>mxml_node_t *</type><description>Current node</description></variable> |
||||
<variable name="parent"><type>mxml_node_t *</type><description>Parent node</description><description>Node type</description></variable> |
||||
<variable name="s"><type>const char *</type><description>String to write</description><description>File to write to</description></variable> |
||||
<variable name="ws"><type>int * cb mxml_node_t * int int</type><description>Where value</description><description>Current column</description></variable> |
Loading…
Reference in new issue