annotate dyncall/dyncall.3 @ 0:3e629dc19168

initial from svn dyncall-1745
author Daniel Adler
date Thu, 19 Mar 2015 22:24:28 +0100
parents
children 9bd3c5219505
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
1 .\" Copyright (c) 2007-2013 Daniel Adler <dadler AT uni-goettingen DOT de>,
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
2 .\" Tassilo Philipp <tphilipp AT potion-studios DOT com>
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
3 .\"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
4 .\" Permission to use, copy, modify, and distribute this software for any
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
5 .\" purpose with or without fee is hereby granted, provided that the above
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
6 .\" copyright notice and this permission notice appear in all copies.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
7 .\"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
8 .\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
9 .\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
10 .\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
11 .\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
12 .\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
13 .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
14 .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
15 .\"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
16 .Dd $Mdocdate$
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
17 .Dt dyncall 3
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
18 .Os
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
19
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
20 .Sh NAME
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
21 .Nm dyncall
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
22 .Nd encapsulation of architecture-, OS- and compiler-specific function call
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
23 semantics
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
24 .Sh SYNOPSIS
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
25 .In dyncall.h
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
26 .Ft DCCallVM *
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
27 .Fn dcNewCallVM "DCsize size"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
28 .Ft void
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
29 .Fn dcFree "DCCallVM * vm"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
30 .Ft void
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
31 .Fn dcMode "DCCallVM * vm" "DCint mode"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
32 .Ft void
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
33 .Fn dcReset "DCCallVM * vm"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
34 .Ft void
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
35 .Fn dcArgBool "DCCallVM * vm" "DCbool arg"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
36 .Ft void
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
37 .Fn dcArgChar "DCCallVM * vm" "DCchar arg"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
38 .Ft void
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
39 .Fn dcArgShort "DCCallVM * vm" "DCshort arg"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
40 .Ft void
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
41 .Fn dcArgInt "DCCallVM * vm" "DCint arg"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
42 .Ft void
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
43 .Fn dcArgLong "DCCallVM * vm" "DClong arg"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
44 .Ft void
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
45 .Fn dcArgLongLong "DCCallVM * vm" "DClonglong arg"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
46 .Ft void
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
47 .Fn dcArgFloat "DCCallVM * vm" "DCfloat arg"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
48 .Ft void
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
49 .Fn dcArgDouble "DCCallVM * vm" "DCdouble arg"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
50 .Ft void
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
51 .Fn dcArgPointer "DCCallVM * vm" "DCpointer arg"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
52 .Ft DCvoid
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
53 .Fn dcCallVoid "DCCallVM * vm" "DCpointer funcptr"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
54 .Ft DCbool
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
55 .Fn dcCallBool "DCCallVM * vm" "DCpointer funcptr"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
56 .Ft DCchar
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
57 .Fn dcCallChar "DCCallVM * vm" "DCpointer funcptr"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
58 .Ft DCshort
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
59 .Fn dcCallShort "DCCallVM * vm" "DCpointer funcptr"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
60 .Ft DCint
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
61 .Fn dcCallInt "DCCallVM * vm" "DCpointer funcptr"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
62 .Ft DClong
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
63 .Fn dcCallLong "DCCallVM * vm" "DCpointer funcptr"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
64 .Ft DClonglong
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
65 .Fn dcCallLongLong "DCCallVM * vm" "DCpointer funcptr"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
66 .Ft DCfloat
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
67 .Fn dcCallFloat "DCCallVM * vm" "DCpointer funcptr"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
68 .Ft DCdouble
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
69 .Fn dcCallDouble "DCCallVM * vm" "DCpointer funcptr"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
70 .Ft DCpointer
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
71 .Fn dcCallPointer "DCCallVM * vm" "DCpointer funcptr"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
72 .Ft void
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
73 .Fn dcArgF "DCCallVM * vm" "const DCsigchar * signature" "..."
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
74 .Ft void
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
75 .Fn dcVArgF "DCCallVM * vm" "const DCsigchar * signature" "va_list args"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
76 .Ft void
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
77 .Fn dcCallF "DCCallVM * vm" "DCValue * result" "DCpointer funcptr" "const DCsigchar * signature" "..."
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
78 .Ft void
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
79 .Fn dcVCallF "DCCallVM * vm" "DCValue * result" "DCpointer funcptr" "const DCsigchar * signature" "va_list args"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
80 .Sh DESCRIPTION
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
81 The
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
82 .Nm
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
83 library encapsulates architecture-, OS- and compiler-specific function call
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
84 semantics in a virtual "bind argument parameters from left to right and then
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
85 call" interface allowing programmers to call C functions in a completely
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
86 dynamic manner.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
87 .Pp
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
88 In other words, instead of calling a function directly, the
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
89 .Nm
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
90 library provides a mechanism to push the function parameters manually and to
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
91 issue the call afterwards.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
92 .Pp
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
93 Since the idea behind this concept is similar to call dispatching mechanisms
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
94 of virtual machines, the object that can be dynamically loaded with arguments,
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
95 and then used to actually invoke the call, is called CallVM. It is possible to
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
96 change the calling convention used by the CallVM at run-time. Due to the fact
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
97 that nearly every platform comes with one or more distinct calling conventions, the
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
98 .Nm
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
99 library project intends to be a portable and open-source approach to the variety of
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
100 compiler-specific binary interfaces, platform specific subtleties, and so on...
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
101 .Pp
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
102 .Fn dcNewCallVM
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
103 creates a new CallVM object, where
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
104 .Ar size
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
105 specifies the max size of the internal stack that will be allocated and used to
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
106 bind the arguments to. Use
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
107 .Fn dcFree
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
108 to destroy the CallVM object.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
109 .Pp
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
110 .Fn dcMode
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
111 sets the calling convention to use. See dyncall.h for a list of
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
112 available modes. Note that some mode/platform combinations don't make any
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
113 sense (e.g. using a PowerPC calling convention on a MIPS platform) and are
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
114 silently ignored.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
115 .Pp
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
116 .Fn dcReset
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
117 resets the internal stack of arguments and prepares it for the selected mode.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
118 This function should be called after setting the call mode (using dcMode), but
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
119 prior to binding arguments to the CallVM. Use it also when reusing a CallVM, as
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
120 arguments don't get flushed automatically after a function call invocation.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
121 .Pp
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
122 .Fn dcArgBool ,
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
123 .Fn dcArgChar ,
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
124 .Fn dcArgShort ,
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
125 .Fn dcArgInt ,
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
126 .Fn dcArgLong ,
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
127 .Fn dcArgLongLong ,
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
128 .Fn dcArgFloat ,
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
129 .Fn dcArgDouble
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
130 and
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
131 .Fn dcArgPointer
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
132 are used to bind arguments of the named types to the CallVM object. Arguments should
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
133 be bound in
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
134 .Em "left to right"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
135 order regarding the C function prototype.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
136 .Pp
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
137 .Fn dcCallVoid ,
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
138 .Fn dcCallBool ,
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
139 .Fn dcCallChar ,
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
140 .Fn dcCallShort ,
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
141 .Fn dcCallInt ,
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
142 .Fn dcCallLong ,
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
143 .Fn dcCallLongLong ,
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
144 .Fn dcCallFloat ,
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
145 .Fn dcCallDouble
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
146 and
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
147 .Fn dcCallPointer
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
148 call the function with the bound arguments and returning the named type, where
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
149 .Ar funcptr
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
150 is a pointer to the function to call. After the invocation of the function
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
151 call, the argument values are still bound to the CallVM and a second call
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
152 using the same arguments can be issued. Call
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
153 .Fn reset
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
154 to clear the internal argument stack.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
155 .Pp
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
156 .Fn dcArgF ,
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
157 .Fn dcVArgF ,
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
158 .Fn dcCallF
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
159 and
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
160 .Fn dcVCallF
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
161 can be used to bind arguments in a printf-style call, using a signature
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
162 string encoding the argument types and return type. The former 2 only bind
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
163 the arguments to the
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
164 .Ar vm
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
165 object (and ignore return types specified in the
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
166 signature), whereas the latter two issue a call to the given function pointer,
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
167 afterwards. The return value will be stored in
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
168 .Ar result .
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
169 For information about the signature format, refer to the
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
170 .Nm
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
171 manual in PDF format.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
172 .Sh EXAMPLE
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
173 Let's say, we want to make a call to the function:
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
174 .Bd -literal -offset indent
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
175 double sqrt(double x);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
176 .Ed
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
177 .Pp
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
178 Using the
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
179 .Nm
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
180 library, this function would be called as follows:
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
181 .Bd -literal -offset indent
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
182 double r;
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
183 DCCallVM* vm = dcNewCallVM(4096);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
184 dcMode(vm, DC_CALL_C_DEFAULT);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
185 dcReset(vm);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
186 dcArgDouble(vm, 4.2373);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
187 r = dcCallDouble(vm, (DCpointer)&sqrt);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
188 dcFree(vm);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
189 .Ed
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
190 .Sh SEE ALSO
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
191 .Xr dyncallback 3 ,
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
192 .Xr dynload 3
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
193 and the
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
194 .Nm
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
195 manual (available in PDF format) for a way more detailed documentation of this
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
196 library.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
197 .Sh AUTHORS
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
198 .An "Daniel Adler" Aq dadler@uni-goettingen.de
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
199 .An "Tassilo Philipp" Aq tphilipp@potion-studios.com