\doxysection{DObject.\+h}
\hypertarget{_d_object_8h_source}{}\label{_d_object_8h_source}\index{src/dobj/public/DObject.h@{src/dobj/public/DObject.h}}
\mbox{\hyperlink{_d_object_8h}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{00001\ \textcolor{preprocessor}{\#ifndef\ DOBJECT\_H}}
\DoxyCodeLine{00002\ \textcolor{preprocessor}{\#define\ DOBJECT\_H}}
\DoxyCodeLine{00003\ }
\DoxyCodeLine{00004\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{_metadata_8h}{Metadata.h}}"{}}}
\DoxyCodeLine{00005\ \textcolor{preprocessor}{\#include\ <variant>}}
\DoxyCodeLine{00006\ \textcolor{preprocessor}{\#include\ <memory>}}
\DoxyCodeLine{00007\ \textcolor{preprocessor}{\#include\ <vector>}}
\DoxyCodeLine{00008\ \textcolor{preprocessor}{\#include\ <string>}}
\DoxyCodeLine{00009\ \textcolor{preprocessor}{\#include\ <mutex>}}
\DoxyCodeLine{00010\ \textcolor{preprocessor}{\#include\ <map>}}
\DoxyCodeLine{00011\ \textcolor{preprocessor}{\#include\ <functional>}}
\DoxyCodeLine{00012\ }
\DoxyCodeLine{00021\ }
\DoxyCodeLine{00029\ \textcolor{keyword}{class\ }\mbox{\hyperlink{class_d_object_a0ae54853e18265657296bfb5ac3bf9d0}{DObject}}\ \{}
\DoxyCodeLine{00030\ \textcolor{keyword}{public}:}
\DoxyCodeLine{00037\ \ \ \ \ \textcolor{keyword}{using\ }\mbox{\hyperlink{class_d_object_ad6fc2e29eae70cf94a2d241527857573}{DataType}}\ =\ std::variant<}
\DoxyCodeLine{00038\ \ \ \ \ \ \ \ \ int,\ float,\ double,\ std::string,\ std::monostate,}
\DoxyCodeLine{00039\ \ \ \ \ \ \ \ \ std::vector<int>,\ std::vector<float>,\ std::vector<double>}
\DoxyCodeLine{00040\ \ \ \ \ >;}
\DoxyCodeLine{00041\ }
\DoxyCodeLine{00047\ \ \ \ \ \textcolor{keyword}{using\ }\mbox{\hyperlink{class_d_object_af11334d08ef85c68b3aae7554548e5a7}{Plugin}}\ =\ std::function<void(\mbox{\hyperlink{class_d_object_a0ae54853e18265657296bfb5ac3bf9d0}{DObject}}\&)>;}
\DoxyCodeLine{00048\ }
\DoxyCodeLine{00054\ \ \ \ \ \mbox{\hyperlink{class_d_object_a0ae54853e18265657296bfb5ac3bf9d0}{DObject}}();}
\DoxyCodeLine{00055\ }
\DoxyCodeLine{00062\ \ \ \ \ \mbox{\hyperlink{class_d_object_a0ae54853e18265657296bfb5ac3bf9d0}{DObject}}(\textcolor{keyword}{const}\ \mbox{\hyperlink{class_d_object_ad6fc2e29eae70cf94a2d241527857573}{DataType}}\&\ data,\ \textcolor{keyword}{const}\ \mbox{\hyperlink{class_metadata}{Metadata}}\&\ metadata);}
\DoxyCodeLine{00063\ }
\DoxyCodeLine{00071\ \ \ \ \ \textcolor{keyword}{const}\ \mbox{\hyperlink{class_d_object_ad6fc2e29eae70cf94a2d241527857573}{DataType}}\&\ \mbox{\hyperlink{class_d_object_a4862655c3634d019b0a45b811d6f7235}{getData}}()\ const\ noexcept;}
\DoxyCodeLine{00072\ }
\DoxyCodeLine{00080\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{class_d_object_ab1718571434e84e90f1ec463e4786a8a}{setData}}(const\ \mbox{\hyperlink{class_d_object_ad6fc2e29eae70cf94a2d241527857573}{DataType}}\&\ data);}
\DoxyCodeLine{00081\ }
\DoxyCodeLine{00090\ \ \ \ \ const\ \mbox{\hyperlink{class_metadata}{Metadata}}\&\ \mbox{\hyperlink{class_d_object_a157b31e881aac6dd40782d3abc561d4e}{getMetadata}}()\ const\ noexcept;}
\DoxyCodeLine{00091\ }
\DoxyCodeLine{00099\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{class_d_object_a296b1519249fdc1f6c7b4ab62d5421bc}{setMetadata}}(const\ \mbox{\hyperlink{class_metadata}{Metadata}}\&\ metadata);}
\DoxyCodeLine{00100\ }
\DoxyCodeLine{00108\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{class_d_object_a6f0023aee463e71d92442dcf61b6ed47}{setDebugging}}(\textcolor{keywordtype}{bool}\ enableDebug);}
\DoxyCodeLine{00109\ }
\DoxyCodeLine{00115\ \ \ \ \ [[nodiscard]]\ \textcolor{keywordtype}{bool}\ \mbox{\hyperlink{class_d_object_ae47bf220fbe2173cf6933c2380035dbd}{isDebuggingEnabled}}()\ const\ noexcept;}
\DoxyCodeLine{00116\ }
\DoxyCodeLine{00125\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{class_d_object_a15afffdf339150fc872bf63bdd08d581}{registerPlugin}}(const\ std::\textcolor{keywordtype}{string}\&\ \textcolor{keywordtype}{id},\ \mbox{\hyperlink{class_d_object_af11334d08ef85c68b3aae7554548e5a7}{Plugin}}\ plugin);}
\DoxyCodeLine{00126\ }
\DoxyCodeLine{00134\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{class_d_object_a99b8688849e11501033a25f61efb8356}{unregisterPlugin}}(const\ std::\textcolor{keywordtype}{string}\&\ \textcolor{keywordtype}{id});}
\DoxyCodeLine{00135\ }
\DoxyCodeLine{00143\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{class_d_object_a99072eb52bb22745f0248f273fbf28fb}{runPlugin}}(const\ std::\textcolor{keywordtype}{string}\&\ \textcolor{keywordtype}{id});}
\DoxyCodeLine{00144\ }
\DoxyCodeLine{00150\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{class_d_object_a1223275dcbbf20334ea11707346acb93}{runAllPlugins}}();}
\DoxyCodeLine{00151\ }
\DoxyCodeLine{00161\ \ \ \ \ friend\ std::ostream\&\ operator<<(std::ostream\&\ os,\ const\ \mbox{\hyperlink{class_d_object_a0ae54853e18265657296bfb5ac3bf9d0}{DObject}}\&\ obj);}
\DoxyCodeLine{00162\ }
\DoxyCodeLine{00163\ private:}
\DoxyCodeLine{00164\ \ \ \ \ \mbox{\hyperlink{class_d_object_ad6fc2e29eae70cf94a2d241527857573}{DataType}}\ data\_;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }
\DoxyCodeLine{00165\ \ \ \ \ \mbox{\hyperlink{class_metadata}{Metadata}}\ metadata\_;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }
\DoxyCodeLine{00166\ \ \ \ \ \textcolor{keywordtype}{bool}\ debugEnabled\_\ =\ false;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }
\DoxyCodeLine{00167\ \ \ \ \ std::map<std::\textcolor{keywordtype}{string},\ \mbox{\hyperlink{class_d_object_af11334d08ef85c68b3aae7554548e5a7}{Plugin}}>\ plugins\_;\ \ \ \ \ \ }
\DoxyCodeLine{00168\ \};}
\DoxyCodeLine{00169\ }
\DoxyCodeLine{00170\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ DOBJECT\_H}}

\end{DoxyCode}
