view lua/luadyncall/doc/guide.tex @ 54:918dab7a6606

- added callback support (comes with some bigger refactoring) - allow CPython's Py{CObject,Capsule} to be used as 'p'ointers
author Tassilo Philipp
date Tue, 02 Feb 2021 20:42:02 +0100
parents 0cfcc391201f
children
line wrap: on
line source

\documentclass{article}
\begin{document}
\section{Introduction}

The luadyncall package is a framework for writing system-level software
using lua.

It uses the libraries from the DynCall Project for the low-level implementation
such as code loading, symbol resolving and invocation of function calls.

It implements the portable dynamic linkage system 'dynport' for lua which
allows to bind whole shared C libraries with a single command.

\section{Overview}

This package provides the following extensions:

\begin{description}
\item [dynload]   dynamic loading of code and resolving of C functions
\item [dyncall]   dynamic calling of loaded C functions
\item [dynport]   dynamic binding of whole shared C libraries
\item [array]     allocate and access C-typed arrays
\item [smartptr]  smart pointer utility
\item [int64]     64-bit (unsigned) integer datatype for lua
\item [ldynguess] guess the operating system
\end{description}

\section{C Pointers}

One major issue was to decide how to handle pointer values and in
particular NULL pointers using dynports.

Lua can compare pointer-values. The current dyncall implementation comes with 
a function \verb@topointer(value)@ which makes a pointer value from an integer 
value. There is also a \verb@NULL@ variable which holds a pointer value of 0.

\section{Dynport}

\subsection {The LDP\_PATH environment variable}

The variable contains the patterns to search for dynport files when
\verb@dynport("someport")@ is called.

\end{document}