0
|
1 \documentclass{article}
|
|
2 \begin{document}
|
|
3 \section{Introduction}
|
|
4
|
|
5 The luadyncall package is a framework for writing system-level software
|
|
6 using lua.
|
|
7
|
|
8 It uses the libraries from the DynCall Project for the low-level implementation
|
|
9 such as code loading, symbol resolving and invocation of function calls.
|
|
10
|
|
11 It implements the portable dynamic linkage system 'dynport' for lua which
|
|
12 allows to bind whole shared C libraries with a single command.
|
|
13
|
|
14 \section{Overview}
|
|
15
|
|
16 This package provides the following extensions:
|
|
17
|
|
18 \begin{description}
|
|
19 \item [dynload] dynamic loading of code and resolving of C functions
|
|
20 \item [dyncall] dynamic calling of loaded C functions
|
|
21 \item [dynport] dynamic binding of whole shared C libraries
|
|
22 \item [array] allocate and access C-typed arrays
|
|
23 \item [smartptr] smart pointer utility
|
|
24 \item [int64] 64-bit (unsigned) integer datatype for lua
|
|
25 \item [ldynguess] guess the operating system
|
|
26 \end{description}
|
|
27
|
|
28 \section{C Pointers}
|
|
29
|
|
30 One major issue was to decide how to handle pointer values and in
|
|
31 particular NULL pointers using dynports.
|
|
32
|
|
33 Lua can compare pointer-values. The current dyncall implementation comes with
|
|
34 a function \verb@topointer(value)@ which makes a pointer value from an integer
|
|
35 value. There is also a \verb@NULL@ variable which holds a pointer value of 0.
|
|
36
|
|
37 \section{Dynport}
|
|
38
|
|
39 \subsection {The LDP\_PATH environment variable}
|
|
40
|
|
41 The variable contains the patterns to search for dynport files when
|
|
42 \verb@dynport("someport")@ is called.
|
|
43
|
|
44 \end{document}
|
|
45
|