\hypertarget{classComSquare_1_1Callback}{}\doxysection{Com\+Square\+::Callback$<$ Types $>$ Class Template Reference}
\label{classComSquare_1_1Callback}\index{ComSquare::Callback$<$ Types $>$@{ComSquare::Callback$<$ Types $>$}}


A callback where you can subscribe to and emit it.  




{\ttfamily \#include $<$Callback.\+hpp$>$}



Collaboration diagram for Com\+Square\+::Callback$<$ Types $>$\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=201pt]{classComSquare_1_1Callback__coll__graph}
\end{center}
\end{figure}
\doxysubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
{\footnotesize template$<$typename Func $>$ }\\int \mbox{\hyperlink{classComSquare_1_1Callback_aa6b54f4835069d20c22b6fa1786c6a3c}{add\+Callback}} (Func callback)
\begin{DoxyCompactList}\small\item\em Add a method to be called when this callback is invoked. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{classComSquare_1_1Callback_aa5338ac89c68289c484b6a3e3c185963}{remove\+Callback}} (int id)
\begin{DoxyCompactList}\small\item\em Remove a function from this callback. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{classComSquare_1_1Callback_a5cd6dba0f0e9ea54fb993a4015985058}{operator()}} (Types ...args) const
\item 
\mbox{\hyperlink{classComSquare_1_1Callback_a764204f626c1699d806b6c67bb31fc39}{Callback}} ()=default
\begin{DoxyCompactList}\small\item\em A default constructor. \end{DoxyCompactList}\item 
\mbox{\hyperlink{classComSquare_1_1Callback_ab233a5401d403f89ac895b1e20203b43}{Callback}} (const \mbox{\hyperlink{classComSquare_1_1Callback}{Callback}} \&)=default
\begin{DoxyCompactList}\small\item\em A default copy constructor. \end{DoxyCompactList}\item 
\mbox{\hyperlink{classComSquare_1_1Callback_a2ca3e9b366d64dbfb4cb31e397f608dc}{$\sim$\+Callback}} ()=default
\begin{DoxyCompactList}\small\item\em A default destructor. \end{DoxyCompactList}\item 
\mbox{\hyperlink{classComSquare_1_1Callback}{Callback}} \& \mbox{\hyperlink{classComSquare_1_1Callback_ad5e4f33ce0525823e39310f7b1b99158}{operator=}} (const \mbox{\hyperlink{classComSquare_1_1Callback}{Callback}} \&)=default
\begin{DoxyCompactList}\small\item\em A default assignment operator. \end{DoxyCompactList}\item 
{\footnotesize template$<$typename Func $>$ }\\\mbox{\hyperlink{classComSquare_1_1Callback_ae591813accffdb5fd37cb4ccb673d41d}{Callback}} (Func callback)
\begin{DoxyCompactList}\small\item\em Implicitly transform a callable into a callback. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
int \mbox{\hyperlink{classComSquare_1_1Callback_a744461787dcc2e16ee74b31d810785dd}{\+\_\+next\+ID}} = 0
\item 
std\+::unordered\+\_\+map$<$ int, std\+::function$<$ void(Types...)$>$ $>$ \mbox{\hyperlink{classComSquare_1_1Callback_a849a860cc7d4a1ba004a1c00af0e890f}{\+\_\+functions}} = \{\}
\begin{DoxyCompactList}\small\item\em The list of functions to call. \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
\subsubsection*{template$<$typename ... Types$>$\newline
class Com\+Square\+::\+Callback$<$ Types $>$}

A callback where you can subscribe to and emit it. 

\doxysubsection{Constructor \& Destructor Documentation}
\mbox{\Hypertarget{classComSquare_1_1Callback_a764204f626c1699d806b6c67bb31fc39}\label{classComSquare_1_1Callback_a764204f626c1699d806b6c67bb31fc39}} 
\index{ComSquare::Callback$<$ Types $>$@{ComSquare::Callback$<$ Types $>$}!Callback@{Callback}}
\index{Callback@{Callback}!ComSquare::Callback$<$ Types $>$@{ComSquare::Callback$<$ Types $>$}}
\doxysubsubsection{\texorpdfstring{Callback()}{Callback()}\hspace{0.1cm}{\footnotesize\ttfamily [1/3]}}
{\footnotesize\ttfamily template$<$typename ... Types$>$ \\
\mbox{\hyperlink{classComSquare_1_1Callback}{Com\+Square\+::\+Callback}}$<$ Types $>$\+::\mbox{\hyperlink{classComSquare_1_1Callback}{Callback}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [default]}}



A default constructor. 

\mbox{\Hypertarget{classComSquare_1_1Callback_ab233a5401d403f89ac895b1e20203b43}\label{classComSquare_1_1Callback_ab233a5401d403f89ac895b1e20203b43}} 
\index{ComSquare::Callback$<$ Types $>$@{ComSquare::Callback$<$ Types $>$}!Callback@{Callback}}
\index{Callback@{Callback}!ComSquare::Callback$<$ Types $>$@{ComSquare::Callback$<$ Types $>$}}
\doxysubsubsection{\texorpdfstring{Callback()}{Callback()}\hspace{0.1cm}{\footnotesize\ttfamily [2/3]}}
{\footnotesize\ttfamily template$<$typename ... Types$>$ \\
\mbox{\hyperlink{classComSquare_1_1Callback}{Com\+Square\+::\+Callback}}$<$ Types $>$\+::\mbox{\hyperlink{classComSquare_1_1Callback}{Callback}} (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classComSquare_1_1Callback}{Callback}}$<$ Types $>$ \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [default]}}



A default copy constructor. 

\mbox{\Hypertarget{classComSquare_1_1Callback_a2ca3e9b366d64dbfb4cb31e397f608dc}\label{classComSquare_1_1Callback_a2ca3e9b366d64dbfb4cb31e397f608dc}} 
\index{ComSquare::Callback$<$ Types $>$@{ComSquare::Callback$<$ Types $>$}!````~Callback@{$\sim$Callback}}
\index{````~Callback@{$\sim$Callback}!ComSquare::Callback$<$ Types $>$@{ComSquare::Callback$<$ Types $>$}}
\doxysubsubsection{\texorpdfstring{$\sim$Callback()}{~Callback()}}
{\footnotesize\ttfamily template$<$typename ... Types$>$ \\
\mbox{\hyperlink{classComSquare_1_1Callback}{Com\+Square\+::\+Callback}}$<$ Types $>$\+::$\sim$\mbox{\hyperlink{classComSquare_1_1Callback}{Callback}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [default]}}



A default destructor. 

\mbox{\Hypertarget{classComSquare_1_1Callback_ae591813accffdb5fd37cb4ccb673d41d}\label{classComSquare_1_1Callback_ae591813accffdb5fd37cb4ccb673d41d}} 
\index{ComSquare::Callback$<$ Types $>$@{ComSquare::Callback$<$ Types $>$}!Callback@{Callback}}
\index{Callback@{Callback}!ComSquare::Callback$<$ Types $>$@{ComSquare::Callback$<$ Types $>$}}
\doxysubsubsection{\texorpdfstring{Callback()}{Callback()}\hspace{0.1cm}{\footnotesize\ttfamily [3/3]}}
{\footnotesize\ttfamily template$<$typename ... Types$>$ \\
template$<$typename Func $>$ \\
\mbox{\hyperlink{classComSquare_1_1Callback}{Com\+Square\+::\+Callback}}$<$ Types $>$\+::\mbox{\hyperlink{classComSquare_1_1Callback}{Callback}} (\begin{DoxyParamCaption}\item[{Func}]{callback }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Implicitly transform a callable into a callback. 



\doxysubsection{Member Function Documentation}
\mbox{\Hypertarget{classComSquare_1_1Callback_aa6b54f4835069d20c22b6fa1786c6a3c}\label{classComSquare_1_1Callback_aa6b54f4835069d20c22b6fa1786c6a3c}} 
\index{ComSquare::Callback$<$ Types $>$@{ComSquare::Callback$<$ Types $>$}!addCallback@{addCallback}}
\index{addCallback@{addCallback}!ComSquare::Callback$<$ Types $>$@{ComSquare::Callback$<$ Types $>$}}
\doxysubsubsection{\texorpdfstring{addCallback()}{addCallback()}}
{\footnotesize\ttfamily template$<$typename ... Types$>$ \\
template$<$typename Func $>$ \\
int \mbox{\hyperlink{classComSquare_1_1Callback}{Com\+Square\+::\+Callback}}$<$ Types $>$\+::add\+Callback (\begin{DoxyParamCaption}\item[{Func}]{callback }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Add a method to be called when this callback is invoked. 


\begin{DoxyParams}{Parameters}
{\em callback} & The list of arguments of the callback method \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A unique ID for this callback. That can be used to remove the callback later. 
\end{DoxyReturn}
\mbox{\Hypertarget{classComSquare_1_1Callback_a5cd6dba0f0e9ea54fb993a4015985058}\label{classComSquare_1_1Callback_a5cd6dba0f0e9ea54fb993a4015985058}} 
\index{ComSquare::Callback$<$ Types $>$@{ComSquare::Callback$<$ Types $>$}!operator()@{operator()}}
\index{operator()@{operator()}!ComSquare::Callback$<$ Types $>$@{ComSquare::Callback$<$ Types $>$}}
\doxysubsubsection{\texorpdfstring{operator()()}{operator()()}}
{\footnotesize\ttfamily template$<$typename ... Types$>$ \\
void \mbox{\hyperlink{classComSquare_1_1Callback}{Com\+Square\+::\+Callback}}$<$ Types $>$\+::operator() (\begin{DoxyParamCaption}\item[{Types ...}]{args }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

\mbox{\Hypertarget{classComSquare_1_1Callback_ad5e4f33ce0525823e39310f7b1b99158}\label{classComSquare_1_1Callback_ad5e4f33ce0525823e39310f7b1b99158}} 
\index{ComSquare::Callback$<$ Types $>$@{ComSquare::Callback$<$ Types $>$}!operator=@{operator=}}
\index{operator=@{operator=}!ComSquare::Callback$<$ Types $>$@{ComSquare::Callback$<$ Types $>$}}
\doxysubsubsection{\texorpdfstring{operator=()}{operator=()}}
{\footnotesize\ttfamily template$<$typename ... Types$>$ \\
\mbox{\hyperlink{classComSquare_1_1Callback}{Callback}}\& \mbox{\hyperlink{classComSquare_1_1Callback}{Com\+Square\+::\+Callback}}$<$ Types $>$\+::operator= (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classComSquare_1_1Callback}{Callback}}$<$ Types $>$ \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [default]}}



A default assignment operator. 

\mbox{\Hypertarget{classComSquare_1_1Callback_aa5338ac89c68289c484b6a3e3c185963}\label{classComSquare_1_1Callback_aa5338ac89c68289c484b6a3e3c185963}} 
\index{ComSquare::Callback$<$ Types $>$@{ComSquare::Callback$<$ Types $>$}!removeCallback@{removeCallback}}
\index{removeCallback@{removeCallback}!ComSquare::Callback$<$ Types $>$@{ComSquare::Callback$<$ Types $>$}}
\doxysubsubsection{\texorpdfstring{removeCallback()}{removeCallback()}}
{\footnotesize\ttfamily template$<$typename ... Types$>$ \\
void \mbox{\hyperlink{classComSquare_1_1Callback}{Com\+Square\+::\+Callback}}$<$ Types $>$\+::remove\+Callback (\begin{DoxyParamCaption}\item[{int}]{id }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Remove a function from this callback. 


\begin{DoxyParams}{Parameters}
{\em id} & The ID of the function. \\
\hline
\end{DoxyParams}


\doxysubsection{Member Data Documentation}
\mbox{\Hypertarget{classComSquare_1_1Callback_a849a860cc7d4a1ba004a1c00af0e890f}\label{classComSquare_1_1Callback_a849a860cc7d4a1ba004a1c00af0e890f}} 
\index{ComSquare::Callback$<$ Types $>$@{ComSquare::Callback$<$ Types $>$}!\_functions@{\_functions}}
\index{\_functions@{\_functions}!ComSquare::Callback$<$ Types $>$@{ComSquare::Callback$<$ Types $>$}}
\doxysubsubsection{\texorpdfstring{\_functions}{\_functions}}
{\footnotesize\ttfamily template$<$typename ... Types$>$ \\
std\+::unordered\+\_\+map$<$int, std\+::function$<$void (Types...)$>$ $>$ \mbox{\hyperlink{classComSquare_1_1Callback}{Com\+Square\+::\+Callback}}$<$ Types $>$\+::\+\_\+functions = \{\}\hspace{0.3cm}{\ttfamily [private]}}



The list of functions to call. 

\mbox{\Hypertarget{classComSquare_1_1Callback_a744461787dcc2e16ee74b31d810785dd}\label{classComSquare_1_1Callback_a744461787dcc2e16ee74b31d810785dd}} 
\index{ComSquare::Callback$<$ Types $>$@{ComSquare::Callback$<$ Types $>$}!\_nextID@{\_nextID}}
\index{\_nextID@{\_nextID}!ComSquare::Callback$<$ Types $>$@{ComSquare::Callback$<$ Types $>$}}
\doxysubsubsection{\texorpdfstring{\_nextID}{\_nextID}}
{\footnotesize\ttfamily template$<$typename ... Types$>$ \\
int \mbox{\hyperlink{classComSquare_1_1Callback}{Com\+Square\+::\+Callback}}$<$ Types $>$\+::\+\_\+next\+ID = 0\hspace{0.3cm}{\ttfamily [private]}}



The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
\item 
sources/\+Models/\mbox{\hyperlink{Callback_8hpp}{Callback.\+hpp}}\end{DoxyCompactItemize}
