\doxysection{DObject Class Reference}
\hypertarget{class_d_object}{}\label{class_d_object}\index{DObject@{DObject}}


A universal data container class.  




{\ttfamily \#include $<$DObject.\+h$>$}

\doxysubsubsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
using \mbox{\hyperlink{class_d_object_a55b7cdac36a3a518ba6e1ecef0e25dcd}{Data\+Type}}
\begin{DoxyCompactList}\small\item\em Supported data types for the \doxylink{class_d_object}{DObject}. \end{DoxyCompactList}\item 
using \mbox{\hyperlink{class_d_object_af11334d08ef85c68b3aae7554548e5a7}{Plugin}} = std\+::function$<$void(\mbox{\hyperlink{class_d_object}{DObject}}\&)$>$
\begin{DoxyCompactList}\small\item\em Placeholder type for plugins. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{class_d_object_a0ae54853e18265657296bfb5ac3bf9d0}{DObject}} ()
\begin{DoxyCompactList}\small\item\em Default constructor. \end{DoxyCompactList}\item 
\mbox{\hyperlink{class_d_object_a598321f3b8524b98df72393c04d7470c}{DObject}} (const \mbox{\hyperlink{class_d_object_a55b7cdac36a3a518ba6e1ecef0e25dcd}{Data\+Type}} \&data)
\begin{DoxyCompactList}\small\item\em Constructor to initialize a \doxylink{class_d_object}{DObject} with data. \end{DoxyCompactList}\item 
const \mbox{\hyperlink{class_d_object_a55b7cdac36a3a518ba6e1ecef0e25dcd}{Data\+Type}} \& \mbox{\hyperlink{class_d_object_a4862655c3634d019b0a45b811d6f7235}{get\+Data}} () const noexcept
\begin{DoxyCompactList}\small\item\em Retrieves the data stored in the \doxylink{class_d_object}{DObject}. \end{DoxyCompactList}\item 
{\footnotesize template$<$typename T$>$ }\\T \mbox{\hyperlink{class_d_object_aca2db093c1c8c6f7893de07544aed619}{get\+Data\+As}} () const
\begin{DoxyCompactList}\small\item\em Retrieves the data stored in the \doxylink{class_d_object}{DObject} as a typed object so that std\+::get$<$\+T$>$() is not needed. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{class_d_object_ab1718571434e84e90f1ec463e4786a8a}{set\+Data}} (const \mbox{\hyperlink{class_d_object_a55b7cdac36a3a518ba6e1ecef0e25dcd}{Data\+Type}} \&data)
\begin{DoxyCompactList}\small\item\em Sets the data for the \doxylink{class_d_object}{DObject}. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{class_d_object_a6f0023aee463e71d92442dcf61b6ed47}{set\+Debugging}} (bool enable\+Debug)
\begin{DoxyCompactList}\small\item\em Enables or disables debugging and tracing for the \doxylink{class_d_object}{DObject}. \end{DoxyCompactList}\item 
bool \mbox{\hyperlink{class_d_object_ae47bf220fbe2173cf6933c2380035dbd}{is\+Debugging\+Enabled}} () const noexcept
\begin{DoxyCompactList}\small\item\em Checks if debugging is enabled for the \doxylink{class_d_object}{DObject}. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{class_d_object_a3dce47a519f9da5085c0c5ac1eea4f38}{set\+Error\+Code}} (int code) noexcept
\item 
int \mbox{\hyperlink{class_d_object_afa8926d916081de72478cb8813c25e98}{get\+Error\+Code}} () const noexcept
\begin{DoxyCompactList}\small\item\em Get the error code tracked by the \doxylink{class_d_object}{DObject}. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{class_d_object_a15afffdf339150fc872bf63bdd08d581}{register\+Plugin}} (const std\+::string \&id, \mbox{\hyperlink{class_d_object_af11334d08ef85c68b3aae7554548e5a7}{Plugin}} plugin)
\begin{DoxyCompactList}\small\item\em Registers a plugin with the \doxylink{class_d_object}{DObject}. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{class_d_object_a99b8688849e11501033a25f61efb8356}{unregister\+Plugin}} (const std\+::string \&id)
\begin{DoxyCompactList}\small\item\em Unregisters a plugin by its identifier. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{class_d_object_a99072eb52bb22745f0248f273fbf28fb}{run\+Plugin}} (const std\+::string \&id)
\begin{DoxyCompactList}\small\item\em Executes a plugin by its identifier. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{class_d_object_a1223275dcbbf20334ea11707346acb93}{run\+All\+Plugins}} ()
\begin{DoxyCompactList}\small\item\em Executes all registered plugins in the registry. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Public Attributes}
\begin{DoxyCompactItemize}
\item 
std\+::map$<$ int, std\+::string $>$ \mbox{\hyperlink{class_d_object_a358d5f015da09ae5f0cbb46f3fd9e401}{data\+Type\+Map}}
\end{DoxyCompactItemize}
\doxysubsubsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{class_d_object_a55b7cdac36a3a518ba6e1ecef0e25dcd}{Data\+Type}} \mbox{\hyperlink{class_d_object_ad7ba02f6d87ce64792149096f3310b21}{data\+\_\+}}
\begin{DoxyCompactList}\small\item\em The main data stored in the \doxylink{class_d_object}{DObject}. \end{DoxyCompactList}\item 
bool \mbox{\hyperlink{class_d_object_accf5c10d4afc3969607e11b0055312d5}{debug\+Enabled\+\_\+}} = false
\begin{DoxyCompactList}\small\item\em Indicates whether debugging is enabled. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{class_d_object_ad8de5890e8dae5fc7e72fabca2520fc3}{error\+Code\+\_\+}} = 0
\begin{DoxyCompactList}\small\item\em Error code tracked by the \doxylink{class_d_object}{DObject}. \end{DoxyCompactList}\item 
std\+::map$<$ std\+::string, \mbox{\hyperlink{class_d_object_af11334d08ef85c68b3aae7554548e5a7}{Plugin}} $>$ \mbox{\hyperlink{class_d_object_ae9f7e4d2fbabc076961a40185676e208}{plugins\+\_\+}}
\begin{DoxyCompactList}\small\item\em Registry for dynamically registered plugins. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Friends}
\begin{DoxyCompactItemize}
\item 
std\+::ostream \& \mbox{\hyperlink{class_d_object_aa54e75574f0302a2ca7252f9f0f0b3f1}{operator$<$$<$}} (std\+::ostream \&os, const \mbox{\hyperlink{class_d_object}{DObject}} \&obj)
\begin{DoxyCompactList}\small\item\em Provides a human-\/readable summary of the \doxylink{class_d_object}{DObject}. \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
A universal data container class. 

The \doxylink{class_d_object}{DObject} class is designed to store arbitrary data alongside descriptive metadata. It supports plugin registration to allow extensible functionality.

The general purpose of this is to simplify memory managment, function interfaces, and interoperability with other languages by wrapping all of that up inside of one location (\doxylink{class_d_object}{DObject}). There are still a limited number of types that DOBject can represent these include
\begin{DoxyItemize}
\item bool
\item short int
\item int
\item long int
\item float
\item double
\item long double
\item std\+::string
\item std\+::monostate
\item std\+::vector$<$int$>$
\item std\+::vector$<$float$>$
\item std\+::vector$<$double$>$
\item std\+::vector$<$std\+::string$>$
\item std\+::vector$<$std\+::vector$<$int$>$$>$
\item std\+::vector$<$std\+::vector$<$float$>$$>$
\item std\+::vector$<$std\+::vector$<$double$>$$>$
\item std\+::vector$<$std\+::vector$<$std\+::vector$<$int$>$$>$$>$
\item std\+::vector$<$std\+::vector$<$std\+::vector$<$float$>$$>$$>$
\item std\+::vector\texorpdfstring{$<$}{<}std\+::vector$<$std\+::vector$<$double$>$$>$
\end{DoxyItemize}

If more types are needed, they can be added to the \doxylink{class_d_object_a55b7cdac36a3a518ba6e1ecef0e25dcd}{Data\+Type} variant.

In general the usage of this might look like 
\begin{DoxyCode}{0}
\DoxyCodeLine{\mbox{\hyperlink{class_d_object_a0ae54853e18265657296bfb5ac3bf9d0}{DObject}}\ obj;}
\DoxyCodeLine{std::vector<int>\ data\ =\ \{1,\ 2,\ 3,\ 4,\ 5\};}
\DoxyCodeLine{obj.\mbox{\hyperlink{class_d_object_ab1718571434e84e90f1ec463e4786a8a}{setData}}(data);}
\DoxyCodeLine{std::cout\ <<\ \textcolor{stringliteral}{"{}Data\ is\ "{}}\ <<\ obj\ <<\ std::end;}
\DoxyCodeLine{someFunction(\&obj);}

\end{DoxyCode}


All memory managment should be taken care of as all datatypes accepted by the varient are either primatives or include their own built in memory managment (i.\+e. this means that wherever possible vectors should be used in place of raw arrays). 

Definition at line \mbox{\hyperlink{_d_object_8h_source_l00089}{89}} of file \mbox{\hyperlink{_d_object_8h_source}{DObject.\+h}}.



\doxysubsection{Member Typedef Documentation}
\Hypertarget{class_d_object_a55b7cdac36a3a518ba6e1ecef0e25dcd}\index{DObject@{DObject}!DataType@{DataType}}
\index{DataType@{DataType}!DObject@{DObject}}
\doxysubsubsection{\texorpdfstring{DataType}{DataType}}
{\footnotesize\ttfamily \label{class_d_object_a55b7cdac36a3a518ba6e1ecef0e25dcd} 
using \mbox{\hyperlink{class_d_object_a55b7cdac36a3a518ba6e1ecef0e25dcd}{DObject\+::\+Data\+Type}}}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{\ std::variant<}
\DoxyCodeLine{\ \ \ \ \ \ \ \ bool,\ \textcolor{keywordtype}{short}\ int,\ int,\ \textcolor{keywordtype}{long}\ int,\ float,\ double,\ }
\DoxyCodeLine{\ \ \ \ \ \ \ \ \textcolor{keywordtype}{long}\ double,\ std::string,\ std::monostate,\ std::vector<int>,}
\DoxyCodeLine{\ \ \ \ \ \ \ \ std::vector<float>,\ std::vector<double>,\ std::vector<std::string>,}
\DoxyCodeLine{\ \ \ \ \ \ \ \ std::vector<std::vector<int>>,\ std::vector<std::vector<float>>,}
\DoxyCodeLine{\ \ \ \ \ \ \ \ std::vector<std::vector<double>>,}
\DoxyCodeLine{\ \ \ \ \ \ \ \ std::vector<std::vector<std::vector<int>>>,}
\DoxyCodeLine{\ \ \ \ \ \ \ \ std::vector<std::vector<std::vector<float>>>,}
\DoxyCodeLine{\ \ \ \ \ \ \ \ std::vector<std::vector<std::vector<double>>>}
\DoxyCodeLine{\ \ \ \ >}

\end{DoxyCode}


Supported data types for the \doxylink{class_d_object}{DObject}. 

This type alias uses {\ttfamily std\+::variant} to store different types of data, ensuring type safety and flexibility. 

Definition at line \mbox{\hyperlink{_d_object_8h_source_l00097}{97}} of file \mbox{\hyperlink{_d_object_8h_source}{DObject.\+h}}.

\Hypertarget{class_d_object_af11334d08ef85c68b3aae7554548e5a7}\index{DObject@{DObject}!Plugin@{Plugin}}
\index{Plugin@{Plugin}!DObject@{DObject}}
\doxysubsubsection{\texorpdfstring{Plugin}{Plugin}}
{\footnotesize\ttfamily \label{class_d_object_af11334d08ef85c68b3aae7554548e5a7} 
using \mbox{\hyperlink{class_d_object_af11334d08ef85c68b3aae7554548e5a7}{DObject\+::\+Plugin}} = std\+::function$<$void(\mbox{\hyperlink{class_d_object}{DObject}}\&)$>$}



Placeholder type for plugins. 

In the future, this will be replaced with a concrete interface. 

Definition at line \mbox{\hyperlink{_d_object_8h_source_l00125}{125}} of file \mbox{\hyperlink{_d_object_8h_source}{DObject.\+h}}.



\doxysubsection{Constructor \& Destructor Documentation}
\Hypertarget{class_d_object_a0ae54853e18265657296bfb5ac3bf9d0}\index{DObject@{DObject}!DObject@{DObject}}
\index{DObject@{DObject}!DObject@{DObject}}
\doxysubsubsection{\texorpdfstring{DObject()}{DObject()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily \label{class_d_object_a0ae54853e18265657296bfb5ac3bf9d0} 
DObject\+::\+DObject (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})}



Default constructor. 

Creates an empty \doxylink{class_d_object}{DObject}. 

Definition at line \mbox{\hyperlink{_d_object_8cpp_source_l00033}{33}} of file \mbox{\hyperlink{_d_object_8cpp_source}{DObject.\+cpp}}.

\Hypertarget{class_d_object_a598321f3b8524b98df72393c04d7470c}\index{DObject@{DObject}!DObject@{DObject}}
\index{DObject@{DObject}!DObject@{DObject}}
\doxysubsubsection{\texorpdfstring{DObject()}{DObject()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily \label{class_d_object_a598321f3b8524b98df72393c04d7470c} 
DObject\+::\+DObject (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{class_d_object_a55b7cdac36a3a518ba6e1ecef0e25dcd}{Data\+Type}} \&}]{data}{}\end{DoxyParamCaption})}



Constructor to initialize a \doxylink{class_d_object}{DObject} with data. 


\begin{DoxyParams}{Parameters}
{\em data} & The data to be stored in the \doxylink{class_d_object}{DObject}. \\
\hline
\end{DoxyParams}


Definition at line \mbox{\hyperlink{_d_object_8cpp_source_l00040}{40}} of file \mbox{\hyperlink{_d_object_8cpp_source}{DObject.\+cpp}}.



\doxysubsection{Member Function Documentation}
\Hypertarget{class_d_object_a4862655c3634d019b0a45b811d6f7235}\index{DObject@{DObject}!getData@{getData}}
\index{getData@{getData}!DObject@{DObject}}
\doxysubsubsection{\texorpdfstring{getData()}{getData()}}
{\footnotesize\ttfamily \label{class_d_object_a4862655c3634d019b0a45b811d6f7235} 
const \mbox{\hyperlink{class_d_object_a55b7cdac36a3a518ba6e1ecef0e25dcd}{DObject\+::\+Data\+Type}} \& DObject\+::get\+Data (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [noexcept]}}



Retrieves the data stored in the \doxylink{class_d_object}{DObject}. 

Use the appropriate type (matching the stored data) with {\ttfamily std\+::get\texorpdfstring{$<$}{<}T\texorpdfstring{$>$}{>}()}.

\begin{DoxyReturn}{Returns}
A constant reference to the stored data. 
\end{DoxyReturn}


Definition at line \mbox{\hyperlink{_d_object_8cpp_source_l00046}{46}} of file \mbox{\hyperlink{_d_object_8cpp_source}{DObject.\+cpp}}.

\Hypertarget{class_d_object_aca2db093c1c8c6f7893de07544aed619}\index{DObject@{DObject}!getDataAs@{getDataAs}}
\index{getDataAs@{getDataAs}!DObject@{DObject}}
\doxysubsubsection{\texorpdfstring{getDataAs()}{getDataAs()}}
{\footnotesize\ttfamily \label{class_d_object_aca2db093c1c8c6f7893de07544aed619} 
template$<$typename T$>$ \\
T DObject\+::get\+Data\+As (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



Retrieves the data stored in the \doxylink{class_d_object}{DObject} as a typed object so that std\+::get$<$\+T$>$() is not needed. 

\begin{DoxyReturn}{Returns}
Data as type T 
\end{DoxyReturn}


Definition at line \mbox{\hyperlink{_d_object_8h_source_l00156}{156}} of file \mbox{\hyperlink{_d_object_8h_source}{DObject.\+h}}.

\Hypertarget{class_d_object_afa8926d916081de72478cb8813c25e98}\index{DObject@{DObject}!getErrorCode@{getErrorCode}}
\index{getErrorCode@{getErrorCode}!DObject@{DObject}}
\doxysubsubsection{\texorpdfstring{getErrorCode()}{getErrorCode()}}
{\footnotesize\ttfamily \label{class_d_object_afa8926d916081de72478cb8813c25e98} 
int DObject\+::get\+Error\+Code (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [noexcept]}}



Get the error code tracked by the \doxylink{class_d_object}{DObject}. 

\begin{DoxyReturn}{Returns}
The error code 
\end{DoxyReturn}


Definition at line \mbox{\hyperlink{_d_object_8cpp_source_l00080}{80}} of file \mbox{\hyperlink{_d_object_8cpp_source}{DObject.\+cpp}}.

\Hypertarget{class_d_object_ae47bf220fbe2173cf6933c2380035dbd}\index{DObject@{DObject}!isDebuggingEnabled@{isDebuggingEnabled}}
\index{isDebuggingEnabled@{isDebuggingEnabled}!DObject@{DObject}}
\doxysubsubsection{\texorpdfstring{isDebuggingEnabled()}{isDebuggingEnabled()}}
{\footnotesize\ttfamily \label{class_d_object_ae47bf220fbe2173cf6933c2380035dbd} 
bool DObject\+::is\+Debugging\+Enabled (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [noexcept]}}



Checks if debugging is enabled for the \doxylink{class_d_object}{DObject}. 

\begin{DoxyReturn}{Returns}
True if debugging is enabled, false otherwise. 
\end{DoxyReturn}


Definition at line \mbox{\hyperlink{_d_object_8cpp_source_l00067}{67}} of file \mbox{\hyperlink{_d_object_8cpp_source}{DObject.\+cpp}}.

\Hypertarget{class_d_object_a15afffdf339150fc872bf63bdd08d581}\index{DObject@{DObject}!registerPlugin@{registerPlugin}}
\index{registerPlugin@{registerPlugin}!DObject@{DObject}}
\doxysubsubsection{\texorpdfstring{registerPlugin()}{registerPlugin()}}
{\footnotesize\ttfamily \label{class_d_object_a15afffdf339150fc872bf63bdd08d581} 
void DObject\+::register\+Plugin (\begin{DoxyParamCaption}\item[{const std\+::string \&}]{id}{, }\item[{\mbox{\hyperlink{class_d_object_af11334d08ef85c68b3aae7554548e5a7}{Plugin}}}]{plugin}{}\end{DoxyParamCaption})}



Registers a plugin with the \doxylink{class_d_object}{DObject}. 

Plugins are stored in a registry and can add custom functionality to the \doxylink{class_d_object}{DObject}.


\begin{DoxyParams}{Parameters}
{\em id} & A unique identifier for the plugin. \\
\hline
{\em plugin} & The plugin function to register. \\
\hline
\end{DoxyParams}


Definition at line \mbox{\hyperlink{_d_object_8cpp_source_l00087}{87}} of file \mbox{\hyperlink{_d_object_8cpp_source}{DObject.\+cpp}}.

\Hypertarget{class_d_object_a1223275dcbbf20334ea11707346acb93}\index{DObject@{DObject}!runAllPlugins@{runAllPlugins}}
\index{runAllPlugins@{runAllPlugins}!DObject@{DObject}}
\doxysubsubsection{\texorpdfstring{runAllPlugins()}{runAllPlugins()}}
{\footnotesize\ttfamily \label{class_d_object_a1223275dcbbf20334ea11707346acb93} 
void DObject\+::run\+All\+Plugins (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})}



Executes all registered plugins in the registry. 

Iterates through all plugins and invokes them on the current \doxylink{class_d_object}{DObject}. 

Definition at line \mbox{\hyperlink{_d_object_8cpp_source_l00117}{117}} of file \mbox{\hyperlink{_d_object_8cpp_source}{DObject.\+cpp}}.

\Hypertarget{class_d_object_a99072eb52bb22745f0248f273fbf28fb}\index{DObject@{DObject}!runPlugin@{runPlugin}}
\index{runPlugin@{runPlugin}!DObject@{DObject}}
\doxysubsubsection{\texorpdfstring{runPlugin()}{runPlugin()}}
{\footnotesize\ttfamily \label{class_d_object_a99072eb52bb22745f0248f273fbf28fb} 
void DObject\+::run\+Plugin (\begin{DoxyParamCaption}\item[{const std\+::string \&}]{id}{}\end{DoxyParamCaption})}



Executes a plugin by its identifier. 

Invokes the registered plugin function. If the plugin is not found, no action is taken.


\begin{DoxyParams}{Parameters}
{\em id} & The unique identifier of the plugin to execute. \\
\hline
\end{DoxyParams}


Definition at line \mbox{\hyperlink{_d_object_8cpp_source_l00106}{106}} of file \mbox{\hyperlink{_d_object_8cpp_source}{DObject.\+cpp}}.

\Hypertarget{class_d_object_ab1718571434e84e90f1ec463e4786a8a}\index{DObject@{DObject}!setData@{setData}}
\index{setData@{setData}!DObject@{DObject}}
\doxysubsubsection{\texorpdfstring{setData()}{setData()}}
{\footnotesize\ttfamily \label{class_d_object_ab1718571434e84e90f1ec463e4786a8a} 
void DObject\+::set\+Data (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{class_d_object_a55b7cdac36a3a518ba6e1ecef0e25dcd}{Data\+Type}} \&}]{data}{}\end{DoxyParamCaption})}



Sets the data for the \doxylink{class_d_object}{DObject}. 

Updates the stored data and optionally updates metadata.


\begin{DoxyParams}{Parameters}
{\em data} & The new data to store in the \doxylink{class_d_object}{DObject}. \\
\hline
\end{DoxyParams}


Definition at line \mbox{\hyperlink{_d_object_8cpp_source_l00053}{53}} of file \mbox{\hyperlink{_d_object_8cpp_source}{DObject.\+cpp}}.

\Hypertarget{class_d_object_a6f0023aee463e71d92442dcf61b6ed47}\index{DObject@{DObject}!setDebugging@{setDebugging}}
\index{setDebugging@{setDebugging}!DObject@{DObject}}
\doxysubsubsection{\texorpdfstring{setDebugging()}{setDebugging()}}
{\footnotesize\ttfamily \label{class_d_object_a6f0023aee463e71d92442dcf61b6ed47} 
void DObject\+::set\+Debugging (\begin{DoxyParamCaption}\item[{bool}]{enable\+Debug}{}\end{DoxyParamCaption})}



Enables or disables debugging and tracing for the \doxylink{class_d_object}{DObject}. 

When debugging is enabled, the \doxylink{class_d_object}{DObject} tracks creation and modification history.


\begin{DoxyParams}{Parameters}
{\em enable\+Debug} & True to enable debugging, false to disable it. \\
\hline
\end{DoxyParams}


Definition at line \mbox{\hyperlink{_d_object_8cpp_source_l00060}{60}} of file \mbox{\hyperlink{_d_object_8cpp_source}{DObject.\+cpp}}.

\Hypertarget{class_d_object_a3dce47a519f9da5085c0c5ac1eea4f38}\index{DObject@{DObject}!setErrorCode@{setErrorCode}}
\index{setErrorCode@{setErrorCode}!DObject@{DObject}}
\doxysubsubsection{\texorpdfstring{setErrorCode()}{setErrorCode()}}
{\footnotesize\ttfamily \label{class_d_object_a3dce47a519f9da5085c0c5ac1eea4f38} 
int DObject\+::set\+Error\+Code (\begin{DoxyParamCaption}\item[{int}]{code}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [noexcept]}}

@breif Set error code tracked by the DOBject

\begin{DoxyReturn}{Returns}
The previous error code
\end{DoxyReturn}
@breif Sets an error code and returns the old one 

Definition at line \mbox{\hyperlink{_d_object_8cpp_source_l00074}{74}} of file \mbox{\hyperlink{_d_object_8cpp_source}{DObject.\+cpp}}.

\Hypertarget{class_d_object_a99b8688849e11501033a25f61efb8356}\index{DObject@{DObject}!unregisterPlugin@{unregisterPlugin}}
\index{unregisterPlugin@{unregisterPlugin}!DObject@{DObject}}
\doxysubsubsection{\texorpdfstring{unregisterPlugin()}{unregisterPlugin()}}
{\footnotesize\ttfamily \label{class_d_object_a99b8688849e11501033a25f61efb8356} 
void DObject\+::unregister\+Plugin (\begin{DoxyParamCaption}\item[{const std\+::string \&}]{id}{}\end{DoxyParamCaption})}



Unregisters a plugin by its identifier. 

Removes the plugin from the registry if it exists.


\begin{DoxyParams}{Parameters}
{\em id} & The unique identifier of the plugin to unregister. \\
\hline
\end{DoxyParams}


Definition at line \mbox{\hyperlink{_d_object_8cpp_source_l00097}{97}} of file \mbox{\hyperlink{_d_object_8cpp_source}{DObject.\+cpp}}.



\doxysubsection{Friends And Related Symbol Documentation}
\Hypertarget{class_d_object_aa54e75574f0302a2ca7252f9f0f0b3f1}\index{DObject@{DObject}!operator$<$$<$@{operator$<$$<$}}
\index{operator$<$$<$@{operator$<$$<$}!DObject@{DObject}}
\doxysubsubsection{\texorpdfstring{operator$<$$<$}{operator<<}}
{\footnotesize\ttfamily \label{class_d_object_aa54e75574f0302a2ca7252f9f0f0b3f1} 
std\+::ostream \& operator$<$$<$ (\begin{DoxyParamCaption}\item[{std\+::ostream \&}]{os}{, }\item[{const \mbox{\hyperlink{class_d_object}{DObject}} \&}]{obj}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [friend]}}



Provides a human-\/readable summary of the \doxylink{class_d_object}{DObject}. 

Useful for quick inspection or logging during debugging sessions.


\begin{DoxyParams}{Parameters}
{\em os} & The output stream to write to. \\
\hline
{\em obj} & The \doxylink{class_d_object}{DObject} to summarize. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A reference to the output stream. 
\end{DoxyReturn}


Definition at line \mbox{\hyperlink{_d_object_8cpp_source_l00126}{126}} of file \mbox{\hyperlink{_d_object_8cpp_source}{DObject.\+cpp}}.



\doxysubsection{Member Data Documentation}
\Hypertarget{class_d_object_ad7ba02f6d87ce64792149096f3310b21}\index{DObject@{DObject}!data\_@{data\_}}
\index{data\_@{data\_}!DObject@{DObject}}
\doxysubsubsection{\texorpdfstring{data\_}{data\_}}
{\footnotesize\ttfamily \label{class_d_object_ad7ba02f6d87ce64792149096f3310b21} 
\mbox{\hyperlink{class_d_object_a55b7cdac36a3a518ba6e1ecef0e25dcd}{Data\+Type}} DObject\+::data\+\_\+\hspace{0.3cm}{\ttfamily [private]}}



The main data stored in the \doxylink{class_d_object}{DObject}. 



Definition at line \mbox{\hyperlink{_d_object_8h_source_l00251}{251}} of file \mbox{\hyperlink{_d_object_8h_source}{DObject.\+h}}.

\Hypertarget{class_d_object_a358d5f015da09ae5f0cbb46f3fd9e401}\index{DObject@{DObject}!dataTypeMap@{dataTypeMap}}
\index{dataTypeMap@{dataTypeMap}!DObject@{DObject}}
\doxysubsubsection{\texorpdfstring{dataTypeMap}{dataTypeMap}}
{\footnotesize\ttfamily \label{class_d_object_a358d5f015da09ae5f0cbb46f3fd9e401} 
std\+::map$<$int, std\+::string$>$ DObject\+::data\+Type\+Map}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{=\ \{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \{0,\ \textcolor{stringliteral}{"{}bool"{}}\},\ \{1,\ \textcolor{stringliteral}{"{}short\ int"{}}\},\ \{2,\ \textcolor{stringliteral}{"{}int"{}}\},\ \{3,\ \textcolor{stringliteral}{"{}long\ int"{}}\},\ \{4,\ \textcolor{stringliteral}{"{}float"{}}\},}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \{5,\ \textcolor{stringliteral}{"{}double"{}}\},\ \{6,\ \textcolor{stringliteral}{"{}long\ double"{}}\},\ \{7,\ \textcolor{stringliteral}{"{}string"{}}\},\ \{8,\ \textcolor{stringliteral}{"{}std::monostate"{}}\},}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \{9,\ \textcolor{stringliteral}{"{}vector<int>"{}}\},\ \{10,\ \textcolor{stringliteral}{"{}vector<float>"{}}\},\ \{11,\ \textcolor{stringliteral}{"{}vector<double>"{}}\},}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \{12,\ \textcolor{stringliteral}{"{}vector<string>"{}}\},\ \{13,\ \textcolor{stringliteral}{"{}vector<vector<int>"{}}\},}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \{14,\ \textcolor{stringliteral}{"{}vector<vector<float>"{}}\},\ \{15,\ \textcolor{stringliteral}{"{}vector<vector<double>"{}}\},}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \{16,\ \textcolor{stringliteral}{"{}vector<vector<vector<int>>"{}}\},\ \{17,\ \textcolor{stringliteral}{"{}vector<vector<vector<float>>"{}}\},}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \{18,\ \textcolor{stringliteral}{"{}vector<vector<vector<double>>"{}}\}}
\DoxyCodeLine{\ \ \ \ \}}

\end{DoxyCode}


Definition at line \mbox{\hyperlink{_d_object_8h_source_l00109}{109}} of file \mbox{\hyperlink{_d_object_8h_source}{DObject.\+h}}.

\Hypertarget{class_d_object_accf5c10d4afc3969607e11b0055312d5}\index{DObject@{DObject}!debugEnabled\_@{debugEnabled\_}}
\index{debugEnabled\_@{debugEnabled\_}!DObject@{DObject}}
\doxysubsubsection{\texorpdfstring{debugEnabled\_}{debugEnabled\_}}
{\footnotesize\ttfamily \label{class_d_object_accf5c10d4afc3969607e11b0055312d5} 
bool DObject\+::debug\+Enabled\+\_\+ = false\hspace{0.3cm}{\ttfamily [private]}}



Indicates whether debugging is enabled. 



Definition at line \mbox{\hyperlink{_d_object_8h_source_l00252}{252}} of file \mbox{\hyperlink{_d_object_8h_source}{DObject.\+h}}.

\Hypertarget{class_d_object_ad8de5890e8dae5fc7e72fabca2520fc3}\index{DObject@{DObject}!errorCode\_@{errorCode\_}}
\index{errorCode\_@{errorCode\_}!DObject@{DObject}}
\doxysubsubsection{\texorpdfstring{errorCode\_}{errorCode\_}}
{\footnotesize\ttfamily \label{class_d_object_ad8de5890e8dae5fc7e72fabca2520fc3} 
int DObject\+::error\+Code\+\_\+ = 0\hspace{0.3cm}{\ttfamily [private]}}



Error code tracked by the \doxylink{class_d_object}{DObject}. 



Definition at line \mbox{\hyperlink{_d_object_8h_source_l00253}{253}} of file \mbox{\hyperlink{_d_object_8h_source}{DObject.\+h}}.

\Hypertarget{class_d_object_ae9f7e4d2fbabc076961a40185676e208}\index{DObject@{DObject}!plugins\_@{plugins\_}}
\index{plugins\_@{plugins\_}!DObject@{DObject}}
\doxysubsubsection{\texorpdfstring{plugins\_}{plugins\_}}
{\footnotesize\ttfamily \label{class_d_object_ae9f7e4d2fbabc076961a40185676e208} 
std\+::map$<$std\+::string, \mbox{\hyperlink{class_d_object_af11334d08ef85c68b3aae7554548e5a7}{Plugin}}$>$ DObject\+::plugins\+\_\+\hspace{0.3cm}{\ttfamily [private]}}



Registry for dynamically registered plugins. 



Definition at line \mbox{\hyperlink{_d_object_8h_source_l00254}{254}} of file \mbox{\hyperlink{_d_object_8h_source}{DObject.\+h}}.



The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
\item 
src/dobj/public/\mbox{\hyperlink{_d_object_8h}{DObject.\+h}}\item 
src/dobj/private/\mbox{\hyperlink{_d_object_8cpp}{DObject.\+cpp}}\end{DoxyCompactItemize}
