You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
195 lines
8.0 KiB
195 lines
8.0 KiB
\hypertarget{interface_8h}{
|
|
\section{include/interface.h File Reference}
|
|
\label{interface_8h}\index{include/interface.h@{include/interface.h}}
|
|
}
|
|
{\ttfamily \#include $<$sys/types.h$>$}\par
|
|
Include dependency graph for interface.h:
|
|
This graph shows which files directly or indirectly include this file:
|
|
\subsection*{Classes}
|
|
\begin{DoxyCompactItemize}
|
|
\item
|
|
struct \hyperlink{structinterface}{interface}
|
|
\item
|
|
struct \hyperlink{structiface__impl}{iface\_\-impl}
|
|
\end{DoxyCompactItemize}
|
|
\subsection*{Defines}
|
|
\begin{DoxyCompactItemize}
|
|
\item
|
|
\#define \hyperlink{interface_8h_ad620a89e939b586d6a025cf342da8e55}{MAX\_\-IFACE}~32
|
|
\item
|
|
\#define \hyperlink{interface_8h_a02255665665c91d905ec32d00d9a4a85}{IFACE}(name)~((const struct i\_\-\#\#name const$\ast$)\&i\_\-\#\#name\#\#\_\-impl)
|
|
\item
|
|
\#define \hyperlink{interface_8h_a446cc7d7282f8a0b8e62a371671ea605}{INIT\_\-IFACE}(name,...)~static const struct i\_\-\#\#name i\_\-\#\#name\#\#\_\-impl = \{\&i\_\-\#\#name,\_\-\_\-VA\_\-ARGS\_\-\_\-\}
|
|
\item
|
|
\#define \hyperlink{interface_8h_a9dda4d034150e3159927f83d9d15d840}{NUMARGS}(...)~(sizeof((const void$\ast$\mbox{[}$\,$\mbox{]})\{\_\-\_\-VA\_\-ARGS\_\-\_\-\})/sizeof(void$\ast$))
|
|
\item
|
|
\#define \hyperlink{interface_8h_a6e8015282e5aac5747daff5bb71d8601}{INIT\_\-IMPL}(...)~\{NUMARGS(\_\-\_\-VA\_\-ARGS\_\-\_\-), 0, \{\_\-\_\-VA\_\-ARGS\_\-\_\-\}\}
|
|
\item
|
|
\#define \hyperlink{interface_8h_a855b98f3119c2d64e7dd4c2c910bd5b5}{CREATE\_\-IMPL}(...)~static struct \hyperlink{structiface__impl}{iface\_\-impl} \hyperlink{structiface__impl}{iface\_\-impl} = INIT\_\-IMPL(\_\-\_\-VA\_\-ARGS\_\-\_\-)
|
|
\item
|
|
\#define \hyperlink{interface_8h_a12243bdd01e5366fecc15f395f09221a}{METHOD\_\-GET}(iface, method)~(iface-\/$>$method)
|
|
\end{DoxyCompactItemize}
|
|
\subsection*{Typedefs}
|
|
\begin{DoxyCompactItemize}
|
|
\item
|
|
typedef struct \hyperlink{structinterface}{interface} $\ast$ \hyperlink{interface_8h_afaa63cd951f41a496111e88acf36dc40}{iface\_\-ptr}
|
|
\item
|
|
typedef struct \hyperlink{structiface__impl}{iface\_\-impl} $\ast$ \hyperlink{interface_8h_a998b025a5015049fd824424d6983f2df}{iface\_\-impl\_\-ptr}
|
|
\end{DoxyCompactItemize}
|
|
\subsection*{Functions}
|
|
\begin{DoxyCompactItemize}
|
|
\item
|
|
struct \hyperlink{structinterface}{interface} $\ast$ \hyperlink{interface_8h_ae4bb16dde691d2513d444ce772f48718}{interfaceGet} (\hyperlink{structiface__impl}{iface\_\-impl\_\-ptr}, const \hyperlink{structinterface}{iface\_\-ptr})
|
|
\end{DoxyCompactItemize}
|
|
|
|
|
|
\subsection{Define Documentation}
|
|
\hypertarget{interface_8h_a855b98f3119c2d64e7dd4c2c910bd5b5}{
|
|
\index{interface.h@{interface.h}!CREATE\_\-IMPL@{CREATE\_\-IMPL}}
|
|
\index{CREATE\_\-IMPL@{CREATE\_\-IMPL}!interface.h@{interface.h}}
|
|
\subsubsection[{CREATE\_\-IMPL}]{\setlength{\rightskip}{0pt plus 5cm}\#define CREATE\_\-IMPL(
|
|
\begin{DoxyParamCaption}
|
|
\item[{}]{...}
|
|
\end{DoxyParamCaption}
|
|
)~static struct {\bf iface\_\-impl} {\bf iface\_\-impl} = INIT\_\-IMPL(\_\-\_\-VA\_\-ARGS\_\-\_\-)}}
|
|
\label{interface_8h_a855b98f3119c2d64e7dd4c2c910bd5b5}
|
|
|
|
|
|
Definition at line 16 of file interface.h.
|
|
|
|
\hypertarget{interface_8h_a02255665665c91d905ec32d00d9a4a85}{
|
|
\index{interface.h@{interface.h}!IFACE@{IFACE}}
|
|
\index{IFACE@{IFACE}!interface.h@{interface.h}}
|
|
\subsubsection[{IFACE}]{\setlength{\rightskip}{0pt plus 5cm}\#define IFACE(
|
|
\begin{DoxyParamCaption}
|
|
\item[{}]{name}
|
|
\end{DoxyParamCaption}
|
|
)~((const struct i\_\-\#\#name const$\ast$)\&i\_\-\#\#name\#\#\_\-impl)}}
|
|
\label{interface_8h_a02255665665c91d905ec32d00d9a4a85}
|
|
|
|
|
|
Definition at line 8 of file interface.h.
|
|
|
|
\hypertarget{interface_8h_a446cc7d7282f8a0b8e62a371671ea605}{
|
|
\index{interface.h@{interface.h}!INIT\_\-IFACE@{INIT\_\-IFACE}}
|
|
\index{INIT\_\-IFACE@{INIT\_\-IFACE}!interface.h@{interface.h}}
|
|
\subsubsection[{INIT\_\-IFACE}]{\setlength{\rightskip}{0pt plus 5cm}\#define INIT\_\-IFACE(
|
|
\begin{DoxyParamCaption}
|
|
\item[{}]{name, }
|
|
\item[{}]{...}
|
|
\end{DoxyParamCaption}
|
|
)~static const struct i\_\-\#\#name i\_\-\#\#name\#\#\_\-impl = \{\&i\_\-\#\#name,\_\-\_\-VA\_\-ARGS\_\-\_\-\}}}
|
|
\label{interface_8h_a446cc7d7282f8a0b8e62a371671ea605}
|
|
|
|
|
|
Definition at line 10 of file interface.h.
|
|
|
|
\hypertarget{interface_8h_a6e8015282e5aac5747daff5bb71d8601}{
|
|
\index{interface.h@{interface.h}!INIT\_\-IMPL@{INIT\_\-IMPL}}
|
|
\index{INIT\_\-IMPL@{INIT\_\-IMPL}!interface.h@{interface.h}}
|
|
\subsubsection[{INIT\_\-IMPL}]{\setlength{\rightskip}{0pt plus 5cm}\#define INIT\_\-IMPL(
|
|
\begin{DoxyParamCaption}
|
|
\item[{}]{...}
|
|
\end{DoxyParamCaption}
|
|
)~\{NUMARGS(\_\-\_\-VA\_\-ARGS\_\-\_\-), 0, \{\_\-\_\-VA\_\-ARGS\_\-\_\-\}\}}}
|
|
\label{interface_8h_a6e8015282e5aac5747daff5bb71d8601}
|
|
|
|
|
|
Definition at line 15 of file interface.h.
|
|
|
|
\hypertarget{interface_8h_ad620a89e939b586d6a025cf342da8e55}{
|
|
\index{interface.h@{interface.h}!MAX\_\-IFACE@{MAX\_\-IFACE}}
|
|
\index{MAX\_\-IFACE@{MAX\_\-IFACE}!interface.h@{interface.h}}
|
|
\subsubsection[{MAX\_\-IFACE}]{\setlength{\rightskip}{0pt plus 5cm}\#define MAX\_\-IFACE~32}}
|
|
\label{interface_8h_ad620a89e939b586d6a025cf342da8e55}
|
|
|
|
|
|
Definition at line 6 of file interface.h.
|
|
|
|
\hypertarget{interface_8h_a12243bdd01e5366fecc15f395f09221a}{
|
|
\index{interface.h@{interface.h}!METHOD\_\-GET@{METHOD\_\-GET}}
|
|
\index{METHOD\_\-GET@{METHOD\_\-GET}!interface.h@{interface.h}}
|
|
\subsubsection[{METHOD\_\-GET}]{\setlength{\rightskip}{0pt plus 5cm}\#define METHOD\_\-GET(
|
|
\begin{DoxyParamCaption}
|
|
\item[{}]{iface, }
|
|
\item[{}]{method}
|
|
\end{DoxyParamCaption}
|
|
)~(iface-\/$>$method)}}
|
|
\label{interface_8h_a12243bdd01e5366fecc15f395f09221a}
|
|
|
|
|
|
Definition at line 19 of file interface.h.
|
|
|
|
\hypertarget{interface_8h_a9dda4d034150e3159927f83d9d15d840}{
|
|
\index{interface.h@{interface.h}!NUMARGS@{NUMARGS}}
|
|
\index{NUMARGS@{NUMARGS}!interface.h@{interface.h}}
|
|
\subsubsection[{NUMARGS}]{\setlength{\rightskip}{0pt plus 5cm}\#define NUMARGS(
|
|
\begin{DoxyParamCaption}
|
|
\item[{}]{...}
|
|
\end{DoxyParamCaption}
|
|
)~(sizeof((const void$\ast$\mbox{[}$\,$\mbox{]})\{\_\-\_\-VA\_\-ARGS\_\-\_\-\})/sizeof(void$\ast$))}}
|
|
\label{interface_8h_a9dda4d034150e3159927f83d9d15d840}
|
|
|
|
|
|
Definition at line 13 of file interface.h.
|
|
|
|
|
|
|
|
\subsection{Typedef Documentation}
|
|
\hypertarget{interface_8h_a998b025a5015049fd824424d6983f2df}{
|
|
\index{interface.h@{interface.h}!iface\_\-impl\_\-ptr@{iface\_\-impl\_\-ptr}}
|
|
\index{iface\_\-impl\_\-ptr@{iface\_\-impl\_\-ptr}!interface.h@{interface.h}}
|
|
\subsubsection[{iface\_\-impl\_\-ptr}]{\setlength{\rightskip}{0pt plus 5cm}typedef struct {\bf iface\_\-impl}$\ast$ {\bf iface\_\-impl\_\-ptr}}}
|
|
\label{interface_8h_a998b025a5015049fd824424d6983f2df}
|
|
|
|
|
|
Definition at line 33 of file interface.h.
|
|
|
|
\hypertarget{interface_8h_afaa63cd951f41a496111e88acf36dc40}{
|
|
\index{interface.h@{interface.h}!iface\_\-ptr@{iface\_\-ptr}}
|
|
\index{iface\_\-ptr@{iface\_\-ptr}!interface.h@{interface.h}}
|
|
\subsubsection[{iface\_\-ptr}]{\setlength{\rightskip}{0pt plus 5cm}typedef struct {\bf interface}$\ast$ {\bf iface\_\-ptr}}}
|
|
\label{interface_8h_afaa63cd951f41a496111e88acf36dc40}
|
|
|
|
|
|
Definition at line 26 of file interface.h.
|
|
|
|
|
|
|
|
\subsection{Function Documentation}
|
|
\hypertarget{interface_8h_ae4bb16dde691d2513d444ce772f48718}{
|
|
\index{interface.h@{interface.h}!interfaceGet@{interfaceGet}}
|
|
\index{interfaceGet@{interfaceGet}!interface.h@{interface.h}}
|
|
\subsubsection[{interfaceGet}]{\setlength{\rightskip}{0pt plus 5cm}struct {\bf interface}$\ast$ interfaceGet (
|
|
\begin{DoxyParamCaption}
|
|
\item[{{\bf iface\_\-impl\_\-ptr}}]{iface\_\-impl, }
|
|
\item[{const {\bf iface\_\-ptr}}]{\_\-iface}
|
|
\end{DoxyParamCaption}
|
|
)\hspace{0.3cm}{\ttfamily \mbox{[}read\mbox{]}}}}
|
|
\label{interface_8h_ae4bb16dde691d2513d444ce772f48718}
|
|
this one is important in selector functions to get the correct interface implementation of a class.
|
|
|
|
Definition at line 25 of file interface.c.
|
|
|
|
|
|
\begin{DoxyCode}
|
|
{
|
|
const iface_ptr * iface = &_iface;
|
|
void * dummy;
|
|
|
|
if (! iface_impl->simpl) {
|
|
qsort((void**)(iface_impl->impl), iface_impl->nimpl, sizeof(iface_ptr), c
|
|
omp);
|
|
iface_impl->simpl=TRUE;
|
|
}
|
|
|
|
dummy = bsearch(
|
|
&iface,
|
|
iface_impl->impl,
|
|
iface_impl->nimpl,
|
|
sizeof(iface_ptr),
|
|
comp);
|
|
|
|
return dummy? *(struct interface **)dummy : dummy;
|
|
}
|
|
\end{DoxyCode}
|