Mercurial > pub > dyncall > dyncall
diff doc/manual/manual_dyncallback_api.tex @ 490:17287342e273
manual:
- removed all API description and referred to manual instead, to avoid outdated and/or duplicated doc
- cleanups and clarificaions
author | Tassilo Philipp |
---|---|
date | Sun, 20 Mar 2022 14:26:55 +0100 |
parents | b47168dacba6 |
children | 71c884e610f0 |
line wrap: on
line diff
--- a/doc/manual/manual_dyncallback_api.tex Fri Mar 18 12:36:49 2022 +0100 +++ b/doc/manual/manual_dyncallback_api.tex Sun Mar 20 14:26:55 2022 +0100 @@ -17,84 +17,87 @@ % %////////////////////////////////////////////////////////////////////////////// -\clearpage \section{\emph{Dyncallback} C library API} -This library extends \product{dyncall} with function callback support, allowing -the user to dynamically create a callback object that can be called directly, -or passed to functions expecting a function-pointer as argument.\\ -\\ -Invoking a \product{dyncallback} calls into a user-defined unified handler that -permits iteration and thus dynamic handling over the called-back-function's -parameters.\\ -\\ -The flexibility is constrained by the set of supported types, though.\\ -\\ -For style conventions and supported types, see \product{dyncall} API section. -In order to use \product{dyncallback}, include {\tt "dyncall\_callback.h"}. - -\subsection{Callback Object} - -The \emph{Callback Object} is the core component to this library. - -\paragraph{Types} - -\begin{lstlisting}[language=c] -typedef struct DCCallback DCCallback; -\end{lstlisting} - -\paragraph{Details} -The \emph{Callback Object} is an object that mimics a fully typed function -call to another function (a generic callback handler, in this case).\\ -\\ -This means, a pointer to this object is passed to a function accepting a pointer -to a callback function \emph{as the very callback function pointer itself}. -Or, if called directly, cast a pointer to this object to a function pointer and -issue a call. - - -\subsection{Allocation} - -\paragraph{Functions} +See the dyncallback(3) manpage for more information. -\begin{lstlisting}[language=c] -DCCallback* dcbNewCallback(const char* signature, - DCCallbackHandler* funcptr, - void* userdata, - DCaggr** aggrs); -void dcbFreeCallback(DCCallback* pcb); -\end{lstlisting} - -\lstinline{dcbNewCallback} creates and initializes a new \emph{Callback} object, -where \lstinline{signature} is the needed function signature (format is the -one outlined in the language bindings-section of this manual, see Table \ref{sigchar}) -of the function to mimic, \lstinline{funcptr} is a pointer to a callback handler, -and \lstinline{userdata} a pointer to custom data that might be useful in the -handler. -Use \lstinline{dcbFreeCallback} to destroy the \emph{Callback} object.\\ -\\ -As with \capi{dcNewCallVM}/\capi{dcFree}, this will allocate memory using the -system allocators or custom overrides. - - -\subsection{Callback handler} - -The unified callback handler's declaration used when creating a \capi{DCCallback} -is: - -\begin{lstlisting} -char cbHandler(DCCallback* cb, - DCArgs* args, - DCValue* result, - void* userdata); -\end{lstlisting} - -\capi{cb} is a pointer to the \capi{DCCallback} object in use, \capi{args} allows -for dynamic iteration over the called-back-function's arguments (input) and -\capi{result} is a pointer to a \capi{DCValue} object in order to store the -callback's return value (output, to be set by handler).\\ -Finally, \capi{userdata} is a pointer to some user defined data that can be -set when creating the callback object. -The handler itself returns a signature character (see Table \ref{sigchar}) specifying the -data type used for \capi{result}. - +%@@@ removed, as manpages are more precise and up to date -------------------> +% +%This library extends \product{dyncall} with function callback support, allowing +%the user to dynamically create a callback object that can be called directly, +%or passed to functions expecting a function-pointer as argument.\\ +%\\ +%Invoking a \product{dyncallback} calls into a user-defined unified handler that +%permits iteration and thus dynamic handling over the called-back-function's +%parameters.\\ +%\\ +%The flexibility is constrained by the set of supported types, though.\\ +%\\ +%For style conventions and supported types, see \product{dyncall} API section. +%In order to use \product{dyncallback}, include {\tt "dyncall\_callback.h"}. +% +%\subsection{Callback Object} +% +%The \emph{Callback Object} is the core component to this library. +% +%\paragraph{Types} +% +%\begin{lstlisting}[language=c] +%typedef struct DCCallback DCCallback; +%\end{lstlisting} +% +%\paragraph{Details} +%The \emph{Callback Object} is an object that mimics a fully typed function +%call to another function (a generic callback handler, in this case).\\ +%\\ +%This means, a pointer to this object is passed to a function accepting a pointer +%to a callback function \emph{as the very callback function pointer itself}. +%Or, if called directly, cast a pointer to this object to a function pointer and +%issue a call. +% +% +%\subsection{Allocation} +% +%\paragraph{Functions} +% +%\begin{lstlisting}[language=c] +%DCCallback* dcbNewCallback(const DCsigchar* signature, +% DCCallbackHandler* funcptr, +% void* userdata, +% DCaggr** aggrs); +%void dcbFreeCallback(DCCallback* pcb); +%\end{lstlisting} +% +%\lstinline{dcbNewCallback} creates and initializes a new \emph{Callback} object, +%where \lstinline{signature} is the needed function signature (format is the +%one outlined in the language bindings-section of this manual, see Table \ref{sigchar}) +%of the function to mimic, \lstinline{funcptr} is a pointer to a callback handler, +%and \lstinline{userdata} a pointer to custom data that might be useful in the +%handler. +%Use \lstinline{dcbFreeCallback} to destroy the \emph{Callback} object.\\ +%\\ +%As with \capi{dcNewCallVM}/\capi{dcFree}, this will allocate memory using the +%system allocators or custom overrides. +% +% +%\subsection{Callback handler} +% +%The unified callback handler's declaration used when creating a \capi{DCCallback} +%is: +% +%\begin{lstlisting} +%DCsigchar cbHandler(DCCallback* cb, +% DCArgs* args, +% DCValue* result, +% void* userdata); +%\end{lstlisting} +% +%\capi{cb} is a pointer to the \capi{DCCallback} object in use, \capi{args} allows +%for dynamic iteration over the called-back-function's arguments (input) and +%\capi{result} is a pointer to a \capi{DCValue} object in order to store the +%callback's return value (output, to be set by handler).\\ +%Finally, \capi{userdata} is a pointer to some user defined data that can be +%set when creating the callback object. +%The handler itself returns a signature character (see Table \ref{sigchar}) specifying the +%data type used for \capi{result}. +%