Document argc argv library

This commit is contained in:
William S Fulton 2022-05-15 19:12:39 +01:00
commit 6860e2bc03
5 changed files with 57 additions and 9 deletions

View file

@ -7,6 +7,12 @@ the issue number to the end of the URL: https://github.com/swig/swig/issues/
Version 4.1.0 (in progress) Version 4.1.0 (in progress)
=========================== ===========================
2022-05-15: erezgeva, eiselekd
[Lua, Perl, PHP, Tcl] #2275 #2276 Add argcargv.i library containing
(int ARGC, char **ARGV) multi-argument typemaps.
Document this library in Typemaps.html.
2022-05-04: wsfulton 2022-05-04: wsfulton
[C#] Add C# wchar_t * director typemaps [C#] Add C# wchar_t * director typemaps

View file

@ -419,6 +419,7 @@
<li><a href="Library.html#Library_nn2">The %include directive and library search path</a> <li><a href="Library.html#Library_nn2">The %include directive and library search path</a>
<li><a href="Library.html#Library_nn3">C arrays and pointers</a> <li><a href="Library.html#Library_nn3">C arrays and pointers</a>
<ul> <ul>
<li><a href="Library.html#Library_argcargv">argcargv.i</a>
<li><a href="Library.html#Library_nn4">cpointer.i</a> <li><a href="Library.html#Library_nn4">cpointer.i</a>
<li><a href="Library.html#Library_carrays">carrays.i</a> <li><a href="Library.html#Library_carrays">carrays.i</a>
<li><a href="Library.html#Library_nn6">cmalloc.i</a> <li><a href="Library.html#Library_nn6">cmalloc.i</a>

View file

@ -14,6 +14,7 @@
<li><a href="#Library_nn2">The %include directive and library search path</a> <li><a href="#Library_nn2">The %include directive and library search path</a>
<li><a href="#Library_nn3">C arrays and pointers</a> <li><a href="#Library_nn3">C arrays and pointers</a>
<ul> <ul>
<li><a href="#Library_argcargv">argcargv.i</a>
<li><a href="#Library_nn4">cpointer.i</a> <li><a href="#Library_nn4">cpointer.i</a>
<li><a href="#Library_carrays">carrays.i</a> <li><a href="#Library_carrays">carrays.i</a>
<li><a href="#Library_nn6">cmalloc.i</a> <li><a href="#Library_nn6">cmalloc.i</a>
@ -115,7 +116,48 @@ pointers as class-like objects. Since these functions provide direct access to
memory, their use is potentially unsafe and you should exercise caution. memory, their use is potentially unsafe and you should exercise caution.
</p> </p>
<H3><a name="Library_nn4">12.2.1 cpointer.i</a></H3> <H3><a name="Library_argcargv">12.2.1 argcargv.i</a></H3>
<p>
The argcargv.i library is a simple library providing multi-argument typemaps for handling C
argc argv command line argument C string arrays.
The <tt>argc</tt> parameter contains the argument count and <tt>argv</tt> contains the argument vector array.
</p>
<p>
This library provides the following multi-argument typemap:
</p>
<p>
<b><tt>(int ARGC, char **ARGV)</tt></b>
</p>
<p>
Apply this multi-argument typemap to your use case, for example:
</p>
<div class="code">
<pre>
%apply (int ARGC, char **ARGV) { (size_t argc, const char **argv) }
int mainApp(size_t argc, const char **argv);
</pre>
</div>
<p>
then from Ruby:
</p>
<div class="targetlang">
<pre>
$args = ["myarg1", "myarg2"]
mainApp(args);
</pre>
</div>
<H3><a name="Library_nn4">12.2.2 cpointer.i</a></H3>
<p> <p>
@ -331,7 +373,7 @@ In this example, the function <tt>int_to_uint()</tt> would be used to cast type
<b>Note:</b> When working with simple pointers, typemaps can often be used to provide more seamless operation. <b>Note:</b> When working with simple pointers, typemaps can often be used to provide more seamless operation.
</p> </p>
<H3><a name="Library_carrays">12.2.2 carrays.i</a></H3> <H3><a name="Library_carrays">12.2.3 carrays.i</a></H3>
<p> <p>
@ -510,7 +552,7 @@ used with types of <tt>char</tt> or <tt>char *</tt>.
SWIG's default handling of these types is to handle them as character strings and the two macros do not do enough to change this. SWIG's default handling of these types is to handle them as character strings and the two macros do not do enough to change this.
</p> </p>
<H3><a name="Library_nn6">12.2.3 cmalloc.i</a></H3> <H3><a name="Library_nn6">12.2.4 cmalloc.i</a></H3>
<p> <p>
@ -671,7 +713,7 @@ Now, in a script:
</pre> </pre>
</div> </div>
<H3><a name="Library_nn7">12.2.4 cdata.i</a></H3> <H3><a name="Library_nn7">12.2.5 cdata.i</a></H3>
<p> <p>

View file

@ -9,7 +9,7 @@
then from lua: then from lua:
args = { "arg0", "arg1" } args = { "arg0", "arg1" }
mainApp(args); mainApp(args)
* ------------------------------------------------------------ */ * ------------------------------------------------------------ */

View file

@ -7,15 +7,14 @@
%inline %{ %inline %{
int mainApp(size_t argc, const char **argv) int mainApp(size_t argc, const char **argv) {
{
return argc; return argc;
} }
then from ruby: then from ruby:
args = ["asdf", "asdf2"] $args = ["asdf", "asdf2"]
mainApp(args); mainApp(args)
* ------------------------------------------------------------ */ * ------------------------------------------------------------ */