\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_ad6fc2e29eae70cf94a2d241527857573}{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_ab0c940fa193a42158c6726bf1a2ef54d}{DObject}} (const \mbox{\hyperlink{class_d_object_ad6fc2e29eae70cf94a2d241527857573}{Data\+Type}} \&data, const \mbox{\hyperlink{class_metadata}{Metadata}} \&metadata) \begin{DoxyCompactList}\small\item\em Constructor to initialize a \doxylink{class_d_object}{DObject} with data and metadata. \end{DoxyCompactList}\item const \mbox{\hyperlink{class_d_object_ad6fc2e29eae70cf94a2d241527857573}{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 void \mbox{\hyperlink{class_d_object_ab1718571434e84e90f1ec463e4786a8a}{set\+Data}} (const \mbox{\hyperlink{class_d_object_ad6fc2e29eae70cf94a2d241527857573}{Data\+Type}} \&data) \begin{DoxyCompactList}\small\item\em Sets the data for the \doxylink{class_d_object}{DObject}. \end{DoxyCompactList}\item const \mbox{\hyperlink{class_metadata}{Metadata}} \& \mbox{\hyperlink{class_d_object_a157b31e881aac6dd40782d3abc561d4e}{get\+Metadata}} () const noexcept \begin{DoxyCompactList}\small\item\em Retrieves the metadata associated with the \doxylink{class_d_object}{DObject}. \end{DoxyCompactList}\item void \mbox{\hyperlink{class_d_object_a296b1519249fdc1f6c7b4ab62d5421bc}{set\+Metadata}} (const \mbox{\hyperlink{class_metadata}{Metadata}} \&metadata) \begin{DoxyCompactList}\small\item\em Updates the metadata 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 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*{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. \doxysubsection{Member Typedef Documentation} \Hypertarget{class_d_object_ad6fc2e29eae70cf94a2d241527857573}\index{DObject@{DObject}!DataType@{DataType}} \index{DataType@{DataType}!DObject@{DObject}} \doxysubsubsection{\texorpdfstring{DataType}{DataType}} {\footnotesize\ttfamily \label{class_d_object_ad6fc2e29eae70cf94a2d241527857573} using \mbox{\hyperlink{class_d_object_ad6fc2e29eae70cf94a2d241527857573}{DObject\+::\+Data\+Type}}} {\bfseries Initial value\+:} \begin{DoxyCode}{0} \DoxyCodeLine{\ std::variant<} \DoxyCodeLine{\ \ \ \ \ \ \ \ int,\ float,\ double,\ std::string,\ std::monostate,} \DoxyCodeLine{\ \ \ \ \ \ \ \ std::vector,\ std::vector,\ std::vector} \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. \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. \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} with default metadata. \Hypertarget{class_d_object_ab0c940fa193a42158c6726bf1a2ef54d}\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_ab0c940fa193a42158c6726bf1a2ef54d} DObject\+::\+DObject (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{class_d_object_ad6fc2e29eae70cf94a2d241527857573}{Data\+Type}} \&}]{data}{, }\item[{const \mbox{\hyperlink{class_metadata}{Metadata}} \&}]{metadata}{}\end{DoxyParamCaption})} Constructor to initialize a \doxylink{class_d_object}{DObject} with data and metadata. \begin{DoxyParams}{Parameters} {\em data} & The data to be stored in the \doxylink{class_d_object}{DObject}. \\ \hline {\em metadata} & \doxylink{class_metadata}{Metadata} describing the stored data. \\ \hline \end{DoxyParams} \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_ad6fc2e29eae70cf94a2d241527857573}{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} \Hypertarget{class_d_object_a157b31e881aac6dd40782d3abc561d4e}\index{DObject@{DObject}!getMetadata@{getMetadata}} \index{getMetadata@{getMetadata}!DObject@{DObject}} \doxysubsubsection{\texorpdfstring{getMetadata()}{getMetadata()}} {\footnotesize\ttfamily \label{class_d_object_a157b31e881aac6dd40782d3abc561d4e} const \mbox{\hyperlink{class_metadata}{Metadata}} \& DObject\+::get\+Metadata (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [noexcept]}} Retrieves the metadata associated with the \doxylink{class_d_object}{DObject}. The metadata provides essential information about the stored data, such as its type, size, and dimensions. \begin{DoxyReturn}{Returns} A constant reference to the metadata. \end{DoxyReturn} \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 [nodiscard]}, {\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} \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} \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}. \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} \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_ad6fc2e29eae70cf94a2d241527857573}{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} \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} \Hypertarget{class_d_object_a296b1519249fdc1f6c7b4ab62d5421bc}\index{DObject@{DObject}!setMetadata@{setMetadata}} \index{setMetadata@{setMetadata}!DObject@{DObject}} \doxysubsubsection{\texorpdfstring{setMetadata()}{setMetadata()}} {\footnotesize\ttfamily \label{class_d_object_a296b1519249fdc1f6c7b4ab62d5421bc} void DObject\+::set\+Metadata (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{class_metadata}{Metadata}} \&}]{metadata}{}\end{DoxyParamCaption})} Updates the metadata for the \doxylink{class_d_object}{DObject}. Use this function carefully to ensure consistency between the data and metadata. \begin{DoxyParams}{Parameters} {\em metadata} & The new metadata to associate with the \doxylink{class_d_object}{DObject}. \\ \hline \end{DoxyParams} \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} \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} 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}