Initial UI setup

This commit is contained in:
Sylvain Schneider
2026-05-22 17:24:30 +02:00
parent 975717cb67
commit 0165dfe8f0
316 changed files with 78404 additions and 31 deletions

View File

@@ -0,0 +1,80 @@
<!-- HTML header for doxygen 1.9.8-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<title>SDi toolsBox</title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="custom_doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">sdi_toolBox
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',false,false,'search.php','Search');
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">Class List</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock">Here are the classes, structs, unions and interfaces with brief descriptions:</div><div class="directory">
<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span><span onclick="javascript:toggleLevel(3);">3</span><span onclick="javascript:toggleLevel(4);">4</span><span onclick="javascript:toggleLevel(5);">5</span>]</div><table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespacesdi__toolBox.html" target="_self">sdi_toolBox</a></td><td class="desc">Root namespace for the <a class="el" href="namespacesdi__toolBox.html" title="Root namespace for the sdi_toolBox library.">sdi_toolBox</a> library </td></tr>
<tr id="row_0_0_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_0_" class="arrow" onclick="toggleFolder('0_0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespacesdi__toolBox_1_1common.html" target="_self">common</a></td><td class="desc">Cross-platform, reusable components shared across all <a class="el" href="namespacesdi__toolBox.html" title="Root namespace for the sdi_toolBox library.">sdi_toolBox</a> modules </td></tr>
<tr id="row_0_0_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_0_0_0_" class="arrow" onclick="toggleFolder('0_0_0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespacesdi__toolBox_1_1common_1_1utils.html" target="_self">utils</a></td><td class="desc">General-purpose utility functions shared across all <a class="el" href="namespacesdi__toolBox.html" title="Root namespace for the sdi_toolBox library.">sdi_toolBox</a> modules </td></tr>
<tr id="row_0_0_0_0_" class="odd"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html" target="_self">CircularBuffer</a></td><td class="desc">Fixed-size circular buffer with compile-time capacity and no-overwrite behavior </td></tr>
<tr id="row_0_0_0_1_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1RingBuffer.html" target="_self">RingBuffer</a></td><td class="desc">Fixed-size ring (circular) buffer with compile-time capacity and overwrite-on-full behavior </td></tr>
<tr id="row_0_1_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_1_" class="arrow" onclick="toggleFolder('0_1_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespacesdi__toolBox_1_1desktop.html" target="_self">desktop</a></td><td class="desc">Desktop-specific components of the <a class="el" href="namespacesdi__toolBox.html" title="Root namespace for the sdi_toolBox library.">sdi_toolBox</a> library </td></tr>
<tr id="row_0_1_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_0_1_0_" class="arrow" onclick="toggleFolder('0_1_0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html" target="_self">eventBus</a></td><td class="desc">Lightweight thread-safe event bus for decoupled message passing </td></tr>
<tr id="row_0_1_0_0_" class="odd"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html" target="_self">Bus</a></td><td class="desc">Central message dispatcher for the event bus system </td></tr>
<tr id="row_0_1_0_1_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html" target="_self">INode</a></td><td class="desc">Abstract interface representing a subscriber node in the event bus system </td></tr>
<tr id="row_0_1_0_2_" class="odd"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html" target="_self">Message</a></td><td class="desc">Base class for all messages dispatched through the event bus </td></tr>
<tr id="row_0_1_0_3_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html" target="_self">Node</a></td><td class="desc">Concrete subscriber node in the event bus system </td></tr>
<tr id="row_0_1_1_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_0_1_1_" class="arrow" onclick="toggleFolder('0_1_1_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespacesdi__toolBox_1_1desktop_1_1utils.html" target="_self">utils</a></td><td class="desc">General-purpose utility functions and helpers for desktop applications </td></tr>
<tr id="row_0_1_1_0_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html" target="_self">Base64</a></td><td class="desc">Utility class providing <a class="el" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html" title="Utility class providing Base64 encoding and decoding functionality.">Base64</a> encoding and decoding functionality </td></tr>
<tr id="row_0_1_2_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_0_1_2_" class="arrow" onclick="toggleFolder('0_1_2_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespacesdi__toolBox_1_1desktop_1_1wxWidgets.html" target="_self">wxWidgets</a></td><td class="desc">Namespace containing desktop UI utilities built on top of the <a class="el" href="namespacesdi__toolBox_1_1desktop_1_1wxWidgets.html" title="Namespace containing desktop UI utilities built on top of the wxWidgets framework.">wxWidgets</a> framework </td></tr>
<tr id="row_0_1_2_0_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span id="arr_0_1_2_0_" class="arrow" onclick="toggleFolder('0_1_2_0_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html" target="_self">Wildcard</a></td><td class="desc">Manages a list of file wildcard entries for use in <a class="el" href="namespacesdi__toolBox_1_1desktop_1_1wxWidgets.html" title="Namespace containing desktop UI utilities built on top of the wxWidgets framework.">wxWidgets</a> file dialogs </td></tr>
<tr id="row_0_1_2_0_0_" class="odd"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard_1_1WildcardEntry.html" target="_self">WildcardEntry</a></td><td class="desc">Represents a single wildcard filter entry </td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
<!-- HTML footer for doxygen 1.9.8-->
<!-- start footer part -->
<hr class="footer"/><address class="footer">
<small>
SDi toolsBox is licensed under the terms and conditions of the <a href="https://opensource.org/licenses/zlib-license.php" target="_blank">zlib/png license</a>
<br />
Copyright (c) 2026 - SD-Innovation S.A.S. - FRANCE | ver: 2.x.x - build: 2026-04-28
<br />
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen" /></a> 1.9.8
</small>
</address>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

View File

@@ -0,0 +1,108 @@
<!-- HTML header for doxygen 1.9.8-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<title>SDi toolsBox</title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="custom_doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">sdi_toolBox
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',false,false,'search.php','Search');
});
/* @license-end */
</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_1635ad76f8180971a36e709fb0d71e5a.html">toolBox</a></li><li class="navelem"><a class="el" href="dir_a330ae4cda0dd4c6ab0e77aa921b4b70.html">sdi_toolBox</a></li><li class="navelem"><a class="el" href="dir_089392a25720db55834b493c7f458d0d.html">desktop</a></li><li class="navelem"><a class="el" href="dir_11c5793896b93cca99bb38bbe3ee2a48.html">utils</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#namespaces">Namespaces</a> </div>
<div class="headertitle"><div class="title">base64.h File Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;optional&gt;</code><br />
<code>#include &lt;span&gt;</code><br />
<code>#include &lt;string&gt;</code><br />
<code>#include &lt;vector&gt;</code><br />
</div><div class="textblock"><div class="dynheader">
Include dependency graph for base64.h:</div>
<div class="dyncontent">
<div class="center"><img src="base64_8h__incl.png" border="0" usemap="#abase64_8h" alt=""/></div>
<map name="abase64_8h" id="abase64_8h">
<area shape="rect" title=" " alt="" coords="130,5,211,31"/>
<area shape="rect" title=" " alt="" coords="5,79,80,104"/>
<area shape="poly" title=" " alt="" coords="151,33,77,74,75,69,149,28"/>
<area shape="rect" title=" " alt="" coords="104,79,157,104"/>
<area shape="poly" title=" " alt="" coords="166,32,146,68,142,65,162,30"/>
<area shape="rect" title=" " alt="" coords="181,79,240,104"/>
<area shape="poly" title=" " alt="" coords="180,30,200,65,195,68,175,32"/>
<area shape="rect" title=" " alt="" coords="265,79,327,104"/>
<area shape="poly" title=" " alt="" coords="192,28,265,69,262,74,189,33"/>
</map>
</div>
</div>
<p><a href="base64_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html">Base64</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Utility class providing <a class="el" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html" title="Utility class providing Base64 encoding and decoding functionality.">Base64</a> encoding and decoding functionality. <a href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:namespacesdi__toolBox" id="r_namespacesdi__toolBox"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesdi__toolBox.html">sdi_toolBox</a></td></tr>
<tr class="memdesc:namespacesdi__toolBox"><td class="mdescLeft">&#160;</td><td class="mdescRight">Root namespace for the <a class="el" href="namespacesdi__toolBox.html" title="Root namespace for the sdi_toolBox library.">sdi_toolBox</a> library. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:namespacesdi__toolBox_1_1desktop" id="r_namespacesdi__toolBox_1_1desktop"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesdi__toolBox_1_1desktop.html">sdi_toolBox::desktop</a></td></tr>
<tr class="memdesc:namespacesdi__toolBox_1_1desktop"><td class="mdescLeft">&#160;</td><td class="mdescRight">Desktop-specific components of the <a class="el" href="namespacesdi__toolBox.html" title="Root namespace for the sdi_toolBox library.">sdi_toolBox</a> library. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:namespacesdi__toolBox_1_1desktop_1_1utils" id="r_namespacesdi__toolBox_1_1desktop_1_1utils"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesdi__toolBox_1_1desktop_1_1utils.html">sdi_toolBox::desktop::utils</a></td></tr>
<tr class="memdesc:namespacesdi__toolBox_1_1desktop_1_1utils"><td class="mdescLeft">&#160;</td><td class="mdescRight">General-purpose utility functions and helpers for desktop applications. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
<!-- HTML footer for doxygen 1.9.8-->
<!-- start footer part -->
<hr class="footer"/><address class="footer">
<small>
SDi toolsBox is licensed under the terms and conditions of the <a href="https://opensource.org/licenses/zlib-license.php" target="_blank">zlib/png license</a>
<br />
Copyright (c) 2026 - SD-Innovation S.A.S. - FRANCE | ver: 2.x.x - build: 2026-04-28
<br />
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen" /></a> 1.9.8
</small>
</address>
</body>
</html>

View File

@@ -0,0 +1,11 @@
<map id="base64.h" name="base64.h">
<area shape="rect" id="Node000001" title=" " alt="" coords="130,5,211,31"/>
<area shape="rect" id="Node000002" title=" " alt="" coords="5,79,80,104"/>
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="151,33,77,74,75,69,149,28"/>
<area shape="rect" id="Node000003" title=" " alt="" coords="104,79,157,104"/>
<area shape="poly" id="edge2_Node000001_Node000003" title=" " alt="" coords="166,32,146,68,142,65,162,30"/>
<area shape="rect" id="Node000004" title=" " alt="" coords="181,79,240,104"/>
<area shape="poly" id="edge3_Node000001_Node000004" title=" " alt="" coords="180,30,200,65,195,68,175,32"/>
<area shape="rect" id="Node000005" title=" " alt="" coords="265,79,327,104"/>
<area shape="poly" id="edge4_Node000001_Node000005" title=" " alt="" coords="192,28,265,69,262,74,189,33"/>
</map>

View File

@@ -0,0 +1 @@
ead93328ecd2c7e45c0deccd102428a5

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

View File

@@ -0,0 +1,267 @@
<!-- HTML header for doxygen 1.9.8-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<title>SDi toolsBox</title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="custom_doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">sdi_toolBox
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',false,false,'search.php','Search');
});
/* @license-end */
</script>
<div id="main-nav"></div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function() { init_codefold(0); });
/* @license-end */
</script>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_1635ad76f8180971a36e709fb0d71e5a.html">toolBox</a></li><li class="navelem"><a class="el" href="dir_a330ae4cda0dd4c6ab0e77aa921b4b70.html">sdi_toolBox</a></li><li class="navelem"><a class="el" href="dir_089392a25720db55834b493c7f458d0d.html">desktop</a></li><li class="navelem"><a class="el" href="dir_11c5793896b93cca99bb38bbe3ee2a48.html">utils</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">base64.h</div></div>
</div><!--header-->
<div class="contents">
<a href="base64_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">/*</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment"> Copyright (c) 2026 - SD-Innovation S.A.S. - FRANCE</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment">*/</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span> </div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">/*</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment">ver: 2.x.x - build: 2026-04-28</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment">*/</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span> </div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment">/*</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment">The zlib License
Copyright (c) 2026 SD-Innovation S.A.S.
This software is provided as-is, without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source
distribution.
</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment">*/</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span> </div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="preprocessor">#pragma once</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span> </div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="preprocessor">#include &lt;optional&gt;</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="preprocessor">#include &lt;span&gt;</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="preprocessor">#include &lt;string&gt;</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="preprocessor">#include &lt;vector&gt;</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span> </div>
<div class="foldopen" id="foldopen00020" data-start="{" data-end="}">
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"><a class="line" href="namespacesdi__toolBox_1_1desktop_1_1utils.html"> 20</a></span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespacesdi__toolBox_1_1desktop_1_1utils.html">sdi_toolBox::desktop::utils</a></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span>{</div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment">//--------------------------------------------------------------</span></div>
<div class="foldopen" id="foldopen00052" data-start="{" data-end="};">
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"><a class="line" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html"> 52</a></span><span class="keyword">class </span><a class="code hl_class" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html">Base64</a></div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span>{</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"><a class="line" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html#a2e146328e4ebf4dfbb018ec1609ffb0d"> 58</a></span> <a class="code hl_function" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html#a2e146328e4ebf4dfbb018ec1609ffb0d">Base64</a>() = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> </div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> </div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> [[nodiscard]] <span class="keyword">static</span> std::string <a class="code hl_function" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html#aa3aa7a6ab01dfcb27b4b54248288d863">encode</a>(std::span&lt;const std::uint8_t&gt; data);</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> </div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> [[nodiscard]] <span class="keyword">static</span> std::string <a class="code hl_function" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html#aa3aa7a6ab01dfcb27b4b54248288d863">encode</a>(std::string_view text);</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> </div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> </div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> [[nodiscard]] <span class="keyword">static</span> std::optional&lt;std::vector&lt;std::uint8_t&gt;&gt; <a class="code hl_function" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html#a935d1f391f3f2f7225e8afb6e2d8b7c4">decode</a>(std::string_view input);</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> </div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> [[nodiscard]] <span class="keyword">static</span> std::optional&lt;std::string&gt; <a class="code hl_function" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html#a9f119bd9a4f05b462ee53198bd7db5f6">decode_to_string</a>(std::string_view input);</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> </div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> </div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> </div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> [[nodiscard]] <span class="keyword">static</span> std::optional&lt;std::uint8_t&gt; decode_char(<span class="keywordtype">char</span> c) <span class="keyword">noexcept</span>;</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> </div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> </div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> <span class="keyword">static</span> <span class="keyword">constexpr</span> std::string_view ENCODE_LOOKUP = <span class="stringliteral">&quot;ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/&quot;</span>;</div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> </div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> <span class="keyword">static</span> <span class="keyword">constexpr</span> <span class="keywordtype">char</span> PADDING_CAR = <span class="charliteral">&#39;=&#39;</span>;</div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> </div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span>};</div>
</div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span><span class="comment">//--------------------------------------------------------------</span></div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> </div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span><span class="comment">//--------------------------------------------------------------</span></div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span><span class="comment">/* Encode binary data to Base64 string */</span></div>
<div class="foldopen" id="foldopen00134" data-start="{" data-end="}">
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"><a class="line" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html#aa3aa7a6ab01dfcb27b4b54248288d863"> 134</a></span><span class="keyword">inline</span> std::string <a class="code hl_function" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html#aa3aa7a6ab01dfcb27b4b54248288d863">Base64::encode</a>(<span class="keyword">const</span> std::span&lt;const std::uint8_t&gt; data)</div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span>{</div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> std::string result;</div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> result.reserve(((data.size() + 2) / 3) * 4);</div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> </div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> <span class="keywordflow">for</span> (std::size_t i = 0; i &lt; data.size(); i += 3)</div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> {</div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> <span class="keyword">const</span> std::uint32_t b0 = data[i];</div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> <span class="keyword">const</span> std::uint32_t b1 = (i + 1 &lt; data.size()) ? data[i + 1] : 0u;</div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> <span class="keyword">const</span> std::uint32_t b2 = (i + 2 &lt; data.size()) ? data[i + 2] : 0u;</div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> </div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> <span class="keyword">const</span> std::uint32_t triple = (b0 &lt;&lt; 16) | (b1 &lt;&lt; 8) | b2;</div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> </div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> result += ENCODE_LOOKUP[(triple &gt;&gt; 18) &amp; 0x3F];</div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> result += ENCODE_LOOKUP[(triple &gt;&gt; 12) &amp; 0x3F];</div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> result += (i + 1 &lt; data.size()) ? ENCODE_LOOKUP[(triple &gt;&gt; 6) &amp; 0x3F] : PADDING_CAR;</div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> result += (i + 2 &lt; data.size()) ? ENCODE_LOOKUP[(triple &gt;&gt; 0) &amp; 0x3F] : PADDING_CAR;</div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> }</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> </div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> <span class="keywordflow">return</span> result;</div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span>}</div>
</div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span><span class="comment">//--------------------------------------------------------------</span></div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span><span class="comment">/* Encode a text string to Base64 string */</span></div>
<div class="foldopen" id="foldopen00157" data-start="{" data-end="}">
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"><a class="line" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html#a1894a56a676ed98e17066c4d185593b4"> 157</a></span><span class="keyword">inline</span> std::string <a class="code hl_function" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html#aa3aa7a6ab01dfcb27b4b54248288d863">Base64::encode</a>(<span class="keyword">const</span> std::string_view text)</div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span>{</div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> <span class="keywordflow">return</span> <a class="code hl_function" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html#aa3aa7a6ab01dfcb27b4b54248288d863">encode</a>(std::span(<span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>std::uint8_t *<span class="keyword">&gt;</span>(text.data()), text.size()));</div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span>}</div>
</div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span><span class="comment">//--------------------------------------------------------------</span></div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span><span class="comment">/* Decode a Base64 string to binary data (returns std::nullopt if invalid) */</span></div>
<div class="foldopen" id="foldopen00163" data-start="{" data-end="}">
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"><a class="line" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html#a935d1f391f3f2f7225e8afb6e2d8b7c4"> 163</a></span><span class="keyword">inline</span> std::optional&lt;std::vector&lt;std::uint8_t&gt;&gt; <a class="code hl_function" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html#a935d1f391f3f2f7225e8afb6e2d8b7c4">Base64::decode</a>(<span class="keyword">const</span> std::string_view input)</div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span>{</div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> <span class="keywordflow">if</span> (input.size() % 4 != 0)</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> <span class="keywordflow">return</span> std::nullopt;</div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> </div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> <span class="keywordflow">if</span> (input.empty())</div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> <span class="keywordflow">return</span> std::vector&lt;std::uint8_t&gt;{};</div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> </div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> <span class="comment">// Validate padding: &#39;=&#39; is only allowed in the last group, in position 2 or 3</span></div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> <span class="comment">// Valid forms: &quot;xxx=&quot; or &quot;xx==&quot;</span></div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> <span class="keywordflow">for</span> (std::size_t i = 0; i &lt; input.size() - 4; ++i)</div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> {</div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> <span class="keywordflow">if</span> (input[i] == PADDING_CAR)</div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> <span class="keywordflow">return</span> std::nullopt; <span class="comment">// &#39;=&#39; found outside the last group</span></div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> }</div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> </div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> <span class="keyword">const</span> std::string_view last = input.substr(input.size() - 4);</div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> <span class="comment">// &quot;xx==&quot; : positions 0,1 must be valid chars, positions 2,3 must be &#39;=&#39;</span></div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> <span class="comment">// &quot;xxx=&quot; : positions 0,1,2 must be valid chars, position 3 must be &#39;=&#39;</span></div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> <span class="comment">// &quot;xxxx&quot; : all positions must be valid chars</span></div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> <span class="keywordflow">if</span> (last[2] == PADDING_CAR &amp;&amp; last[3] != PADDING_CAR)</div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> <span class="keywordflow">return</span> std::nullopt; <span class="comment">// &quot;xx=x&quot; is invalid</span></div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span> </div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span> std::vector&lt;std::uint8_t&gt; result;</div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span> result.reserve((input.size() / 4) * 3);</div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span> </div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> <span class="keywordflow">for</span> (std::size_t i = 0; i &lt; input.size(); i += 4)</div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> {</div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span> <span class="keyword">const</span> <span class="keyword">auto</span> v0 = decode_char(input[i]);</div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> <span class="keyword">const</span> <span class="keyword">auto</span> v1 = decode_char(input[i + 1]);</div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> <span class="keyword">const</span> <span class="keyword">auto</span> v2 = input[i + 2] == PADDING_CAR ? std::optional&lt;std::uint8_t&gt;{ 0 } : decode_char(input[i + 2]);</div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> <span class="keyword">const</span> <span class="keyword">auto</span> v3 = input[i + 3] == PADDING_CAR ? std::optional&lt;std::uint8_t&gt;{ 0 } : decode_char(input[i + 3]);</div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> </div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> <span class="keywordflow">if</span> (!v0 || !v1 || !v2 || !v3)</div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> <span class="keywordflow">return</span> std::nullopt;</div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span> </div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span> <span class="keyword">const</span> std::uint32_t triple =</div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span> (<span class="keyword">static_cast&lt;</span>std::uint32_t<span class="keyword">&gt;</span>(*v0) &lt;&lt; 18) |</div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span> (<span class="keyword">static_cast&lt;</span>std::uint32_t<span class="keyword">&gt;</span>(*v1) &lt;&lt; 12) |</div>
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span> (<span class="keyword">static_cast&lt;</span>std::uint32_t<span class="keyword">&gt;</span>(*v2) &lt;&lt; 6) |</div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span> (<span class="keyword">static_cast&lt;</span>std::uint32_t<span class="keyword">&gt;</span>(*v3));</div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span> </div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span> result.push_back(<span class="keyword">static_cast&lt;</span>std::uint8_t<span class="keyword">&gt;</span>((triple &gt;&gt; 16) &amp; 0xFF));</div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span> <span class="keywordflow">if</span> (input[i + 2] != PADDING_CAR)</div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span> result.push_back(<span class="keyword">static_cast&lt;</span>std::uint8_t<span class="keyword">&gt;</span>((triple &gt;&gt; 8) &amp; 0xFF));</div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span> <span class="keywordflow">if</span> (input[i + 3] != PADDING_CAR)</div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span> result.push_back(<span class="keyword">static_cast&lt;</span>std::uint8_t<span class="keyword">&gt;</span>((triple &gt;&gt; 0) &amp; 0xFF));</div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span> }</div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span> </div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span> <span class="keywordflow">return</span> result;</div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span>}</div>
</div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span><span class="comment">//--------------------------------------------------------------</span></div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span><span class="comment">/* Decode a Base64 string to a text string (returns std::nullopt if invalid) */</span></div>
<div class="foldopen" id="foldopen00216" data-start="{" data-end="}">
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"><a class="line" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html#a9f119bd9a4f05b462ee53198bd7db5f6"> 216</a></span><span class="keyword">inline</span> std::optional&lt;std::string&gt; <a class="code hl_function" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html#a9f119bd9a4f05b462ee53198bd7db5f6">Base64::decode_to_string</a>(<span class="keyword">const</span> std::string_view input)</div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span>{</div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span> <span class="keyword">const</span> <span class="keyword">auto</span> bytes = <a class="code hl_function" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html#a935d1f391f3f2f7225e8afb6e2d8b7c4">decode</a>(input);</div>
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span> <span class="keywordflow">if</span> (!bytes)</div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span> <span class="keywordflow">return</span> std::nullopt;</div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span> <span class="keywordflow">return</span> std::string(<span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">char</span> *<span class="keyword">&gt;</span>(bytes-&gt;data()), bytes-&gt;size());</div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span>}</div>
</div>
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span><span class="comment">//--------------------------------------------------------------</span></div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span><span class="comment">/* Helper to decode a single Base64 character to its 6-bit value (returns std::nullopt if invalid) */</span></div>
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span><span class="keyword">inline</span> std::optional&lt;std::uint8_t&gt; Base64::decode_char(<span class="keyword">const</span> <span class="keywordtype">char</span> c) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span>{</div>
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"> 227</span> <span class="keywordflow">if</span> (c &gt;= <span class="charliteral">&#39;A&#39;</span> &amp;&amp; c &lt;= <span class="charliteral">&#39;Z&#39;</span>)</div>
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span> <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>std::uint8_t<span class="keyword">&gt;</span>(c - <span class="charliteral">&#39;A&#39;</span>);</div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span> <span class="keywordflow">if</span> (c &gt;= <span class="charliteral">&#39;a&#39;</span> &amp;&amp; c &lt;= <span class="charliteral">&#39;z&#39;</span>)</div>
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span> <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>std::uint8_t<span class="keyword">&gt;</span>(c - <span class="charliteral">&#39;a&#39;</span> + 26);</div>
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span> <span class="keywordflow">if</span> (c &gt;= <span class="charliteral">&#39;0&#39;</span> &amp;&amp; c &lt;= <span class="charliteral">&#39;9&#39;</span>)</div>
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span> <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>std::uint8_t<span class="keyword">&gt;</span>(c - <span class="charliteral">&#39;0&#39;</span> + 52);</div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> <span class="keywordflow">if</span> (c == <span class="charliteral">&#39;+&#39;</span>)</div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span> <span class="keywordflow">return</span> 62;</div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span> <span class="keywordflow">if</span> (c == <span class="charliteral">&#39;/&#39;</span>)</div>
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span> <span class="keywordflow">return</span> 63;</div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span> <span class="keywordflow">return</span> std::nullopt;</div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span>}</div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span><span class="comment">//--------------------------------------------------------------</span></div>
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span>} <span class="comment">// namespace sdi_toolBox::desktop::utils</span></div>
</div>
<div class="ttc" id="aclasssdi__toolBox_1_1desktop_1_1utils_1_1Base64_html"><div class="ttname"><a href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html">sdi_toolBox::desktop::utils::Base64</a></div><div class="ttdoc">Utility class providing Base64 encoding and decoding functionality.</div><div class="ttdef"><b>Definition</b> <a href="base64_8h_source.html#l00052">base64.h:53</a></div></div>
<div class="ttc" id="aclasssdi__toolBox_1_1desktop_1_1utils_1_1Base64_html_a2e146328e4ebf4dfbb018ec1609ffb0d"><div class="ttname"><a href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html#a2e146328e4ebf4dfbb018ec1609ffb0d">sdi_toolBox::desktop::utils::Base64::Base64</a></div><div class="ttdeci">Base64()=delete</div><div class="ttdoc">Deleted default constructor - this class is not meant to be instantiated.</div></div>
<div class="ttc" id="aclasssdi__toolBox_1_1desktop_1_1utils_1_1Base64_html_a935d1f391f3f2f7225e8afb6e2d8b7c4"><div class="ttname"><a href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html#a935d1f391f3f2f7225e8afb6e2d8b7c4">sdi_toolBox::desktop::utils::Base64::decode</a></div><div class="ttdeci">static std::optional&lt; std::vector&lt; std::uint8_t &gt; &gt; decode(std::string_view input)</div><div class="ttdoc">Decodes a Base64 string into raw binary data.</div><div class="ttdef"><b>Definition</b> <a href="base64_8h_source.html#l00163">base64.h:163</a></div></div>
<div class="ttc" id="aclasssdi__toolBox_1_1desktop_1_1utils_1_1Base64_html_a9f119bd9a4f05b462ee53198bd7db5f6"><div class="ttname"><a href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html#a9f119bd9a4f05b462ee53198bd7db5f6">sdi_toolBox::desktop::utils::Base64::decode_to_string</a></div><div class="ttdeci">static std::optional&lt; std::string &gt; decode_to_string(std::string_view input)</div><div class="ttdoc">Decodes a Base64 string into a text string.</div><div class="ttdef"><b>Definition</b> <a href="base64_8h_source.html#l00216">base64.h:216</a></div></div>
<div class="ttc" id="aclasssdi__toolBox_1_1desktop_1_1utils_1_1Base64_html_aa3aa7a6ab01dfcb27b4b54248288d863"><div class="ttname"><a href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html#aa3aa7a6ab01dfcb27b4b54248288d863">sdi_toolBox::desktop::utils::Base64::encode</a></div><div class="ttdeci">static std::string encode(std::span&lt; const std::uint8_t &gt; data)</div><div class="ttdoc">Encodes binary data into a Base64 string.</div><div class="ttdef"><b>Definition</b> <a href="base64_8h_source.html#l00134">base64.h:134</a></div></div>
<div class="ttc" id="anamespacesdi__toolBox_1_1desktop_1_1utils_html"><div class="ttname"><a href="namespacesdi__toolBox_1_1desktop_1_1utils.html">sdi_toolBox::desktop::utils</a></div><div class="ttdoc">General-purpose utility functions and helpers for desktop applications.</div><div class="ttdef"><b>Definition</b> <a href="base64_8h_source.html#l00020">base64.h:21</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- HTML footer for doxygen 1.9.8-->
<!-- start footer part -->
<hr class="footer"/><address class="footer">
<small>
SDi toolsBox is licensed under the terms and conditions of the <a href="https://opensource.org/licenses/zlib-license.php" target="_blank">zlib/png license</a>
<br />
Copyright (c) 2026 - SD-Innovation S.A.S. - FRANCE | ver: 2.x.x - build: 2026-04-28
<br />
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen" /></a> 1.9.8
</small>
</address>
</body>

Binary file not shown.

After

Width:  |  Height:  |  Size: 676 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 635 B

View File

@@ -0,0 +1,138 @@
<!-- HTML header for doxygen 1.9.8-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<title>SDi toolsBox</title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="custom_doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">sdi_toolBox
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',false,false,'search.php','Search');
});
/* @license-end */
</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_1635ad76f8180971a36e709fb0d71e5a.html">toolBox</a></li><li class="navelem"><a class="el" href="dir_a330ae4cda0dd4c6ab0e77aa921b4b70.html">sdi_toolBox</a></li><li class="navelem"><a class="el" href="dir_089392a25720db55834b493c7f458d0d.html">desktop</a></li><li class="navelem"><a class="el" href="dir_03a79da52393399f003ece50c2786062.html">eventBus</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#namespaces">Namespaces</a> </div>
<div class="headertitle"><div class="title">bus.h File Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="defs_8h_source.html">defs.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="inode_8h_source.html">inode.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="message_8h_source.html">message.h</a>&quot;</code><br />
<code>#include &lt;chrono&gt;</code><br />
<code>#include &lt;memory&gt;</code><br />
<code>#include &lt;mutex&gt;</code><br />
<code>#include &lt;ranges&gt;</code><br />
<code>#include &lt;set&gt;</code><br />
<code>#include &lt;unordered_map&gt;</code><br />
</div><div class="textblock"><div class="dynheader">
Include dependency graph for bus.h:</div>
<div class="dyncontent">
<div class="center"><img src="bus_8h__incl.png" border="0" usemap="#abus_8h" alt=""/></div>
<map name="abus_8h" id="abus_8h">
<area shape="rect" title=" " alt="" coords="273,5,330,31"/>
<area shape="rect" href="defs_8h.html" title=" " alt="" coords="103,225,166,251"/>
<area shape="poly" title=" " alt="" coords="292,33,253,80,225,130,213,152,195,179,160,218,156,214,191,176,209,149,220,127,248,77,288,29"/>
<area shape="rect" title=" " alt="" coords="5,299,72,324"/>
<area shape="poly" title=" " alt="" coords="273,25,152,43,92,59,70,69,55,80,40,104,30,130,24,158,22,187,26,241,34,285,29,286,21,242,17,187,19,157,25,129,35,101,51,77,67,65,90,54,151,38,272,19"/>
<area shape="rect" href="inode_8h.html" title=" " alt="" coords="66,79,137,104"/>
<area shape="poly" title=" " alt="" coords="273,32,147,77,145,72,271,27"/>
<area shape="rect" href="message_8h.html" title=" " alt="" coords="88,152,181,177"/>
<area shape="poly" title=" " alt="" coords="280,33,245,54,208,81,178,112,153,142,149,139,174,108,205,77,242,49,278,28"/>
<area shape="rect" title=" " alt="" coords="263,79,340,104"/>
<area shape="poly" title=" " alt="" coords="304,31,304,65,299,65,299,31"/>
<area shape="rect" title=" " alt="" coords="364,79,428,104"/>
<area shape="poly" title=" " alt="" coords="318,29,371,68,368,72,315,33"/>
<area shape="rect" title=" " alt="" coords="452,79,519,104"/>
<area shape="poly" title=" " alt="" coords="331,28,444,71,442,76,329,33"/>
<area shape="rect" title=" " alt="" coords="543,79,585,104"/>
<area shape="poly" title=" " alt="" coords="331,23,530,76,529,81,329,29"/>
<area shape="rect" title=" " alt="" coords="610,79,734,104"/>
<area shape="poly" title=" " alt="" coords="331,22,600,74,599,79,330,27"/>
<area shape="poly" title=" " alt="" coords="121,253,67,292,64,288,118,249"/>
<area shape="rect" title=" " alt="" coords="101,299,168,324"/>
<area shape="poly" title=" " alt="" coords="137,251,137,285,132,285,132,251"/>
<area shape="poly" title=" " alt="" coords="109,103,126,139,121,141,104,105"/>
<area shape="poly" title=" " alt="" coords="137,178,137,212,132,212,132,178"/>
</map>
</div>
</div><div class="textblock"><div class="dynheader">
This graph shows which files directly or indirectly include this file:</div>
<div class="dyncontent">
<div class="center"><img src="bus_8h__dep__incl.png" border="0" usemap="#abus_8hdep" alt=""/></div>
<map name="abus_8hdep" id="abus_8hdep">
<area shape="rect" title=" " alt="" coords="10,5,67,31"/>
<area shape="rect" href="node_8h.html" title=" " alt="" coords="5,79,72,104"/>
<area shape="poly" title=" " alt="" coords="41,44,41,79,36,79,36,44"/>
</map>
</div>
</div>
<p><a href="bus_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Central message dispatcher for the event bus system. <a href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:namespacesdi__toolBox" id="r_namespacesdi__toolBox"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesdi__toolBox.html">sdi_toolBox</a></td></tr>
<tr class="memdesc:namespacesdi__toolBox"><td class="mdescLeft">&#160;</td><td class="mdescRight">Root namespace for the <a class="el" href="namespacesdi__toolBox.html" title="Root namespace for the sdi_toolBox library.">sdi_toolBox</a> library. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:namespacesdi__toolBox_1_1desktop" id="r_namespacesdi__toolBox_1_1desktop"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesdi__toolBox_1_1desktop.html">sdi_toolBox::desktop</a></td></tr>
<tr class="memdesc:namespacesdi__toolBox_1_1desktop"><td class="mdescLeft">&#160;</td><td class="mdescRight">Desktop-specific components of the <a class="el" href="namespacesdi__toolBox.html" title="Root namespace for the sdi_toolBox library.">sdi_toolBox</a> library. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:namespacesdi__toolBox_1_1desktop_1_1eventBus" id="r_namespacesdi__toolBox_1_1desktop_1_1eventBus"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html">sdi_toolBox::desktop::eventBus</a></td></tr>
<tr class="memdesc:namespacesdi__toolBox_1_1desktop_1_1eventBus"><td class="mdescLeft">&#160;</td><td class="mdescRight">Lightweight thread-safe event bus for decoupled message passing. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
<!-- HTML footer for doxygen 1.9.8-->
<!-- start footer part -->
<hr class="footer"/><address class="footer">
<small>
SDi toolsBox is licensed under the terms and conditions of the <a href="https://opensource.org/licenses/zlib-license.php" target="_blank">zlib/png license</a>
<br />
Copyright (c) 2026 - SD-Innovation S.A.S. - FRANCE | ver: 2.x.x - build: 2026-04-28
<br />
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen" /></a> 1.9.8
</small>
</address>
</body>
</html>

View File

@@ -0,0 +1,5 @@
<map id="bus.h" name="bus.h">
<area shape="rect" id="Node000001" title=" " alt="" coords="10,5,67,31"/>
<area shape="rect" id="Node000002" href="$node_8h.html" title=" " alt="" coords="5,79,72,104"/>
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="41,44,41,79,36,79,36,44"/>
</map>

View File

@@ -0,0 +1 @@
01308bca61c42e9e37c65b0bc028d8e3

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@@ -0,0 +1,26 @@
<map id="bus.h" name="bus.h">
<area shape="rect" id="Node000001" title=" " alt="" coords="273,5,330,31"/>
<area shape="rect" id="Node000002" href="$defs_8h.html" title=" " alt="" coords="103,225,166,251"/>
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="292,33,253,80,225,130,213,152,195,179,160,218,156,214,191,176,209,149,220,127,248,77,288,29"/>
<area shape="rect" id="Node000003" title=" " alt="" coords="5,299,72,324"/>
<area shape="poly" id="edge8_Node000001_Node000003" title=" " alt="" coords="273,25,152,43,92,59,70,69,55,80,40,104,30,130,24,158,22,187,26,241,34,285,29,286,21,242,17,187,19,157,25,129,35,101,51,77,67,65,90,54,151,38,272,19"/>
<area shape="rect" id="Node000005" href="$inode_8h.html" title=" " alt="" coords="66,79,137,104"/>
<area shape="poly" id="edge4_Node000001_Node000005" title=" " alt="" coords="273,32,147,77,145,72,271,27"/>
<area shape="rect" id="Node000006" href="$message_8h.html" title=" " alt="" coords="88,152,181,177"/>
<area shape="poly" id="edge7_Node000001_Node000006" title=" " alt="" coords="280,33,245,54,208,81,178,112,153,142,149,139,174,108,205,77,242,49,278,28"/>
<area shape="rect" id="Node000007" title=" " alt="" coords="263,79,340,104"/>
<area shape="poly" id="edge9_Node000001_Node000007" title=" " alt="" coords="304,31,304,65,299,65,299,31"/>
<area shape="rect" id="Node000008" title=" " alt="" coords="364,79,428,104"/>
<area shape="poly" id="edge10_Node000001_Node000008" title=" " alt="" coords="318,29,371,68,368,72,315,33"/>
<area shape="rect" id="Node000009" title=" " alt="" coords="452,79,519,104"/>
<area shape="poly" id="edge11_Node000001_Node000009" title=" " alt="" coords="331,28,444,71,442,76,329,33"/>
<area shape="rect" id="Node000010" title=" " alt="" coords="543,79,585,104"/>
<area shape="poly" id="edge12_Node000001_Node000010" title=" " alt="" coords="331,23,530,76,529,81,329,29"/>
<area shape="rect" id="Node000011" title=" " alt="" coords="610,79,734,104"/>
<area shape="poly" id="edge13_Node000001_Node000011" title=" " alt="" coords="331,22,600,74,599,79,330,27"/>
<area shape="poly" id="edge2_Node000002_Node000003" title=" " alt="" coords="121,253,67,292,64,288,118,249"/>
<area shape="rect" id="Node000004" title=" " alt="" coords="101,299,168,324"/>
<area shape="poly" id="edge3_Node000002_Node000004" title=" " alt="" coords="137,251,137,285,132,285,132,251"/>
<area shape="poly" id="edge5_Node000005_Node000006" title=" " alt="" coords="109,103,126,139,121,141,104,105"/>
<area shape="poly" id="edge6_Node000006_Node000002" title=" " alt="" coords="137,178,137,212,132,212,132,178"/>
</map>

View File

@@ -0,0 +1 @@
a8d88937fc8d1309a42f3f072a7f5503

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

View File

@@ -0,0 +1,434 @@
<!-- HTML header for doxygen 1.9.8-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<title>SDi toolsBox</title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="custom_doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">sdi_toolBox
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',false,false,'search.php','Search');
});
/* @license-end */
</script>
<div id="main-nav"></div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function() { init_codefold(0); });
/* @license-end */
</script>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_1635ad76f8180971a36e709fb0d71e5a.html">toolBox</a></li><li class="navelem"><a class="el" href="dir_a330ae4cda0dd4c6ab0e77aa921b4b70.html">sdi_toolBox</a></li><li class="navelem"><a class="el" href="dir_089392a25720db55834b493c7f458d0d.html">desktop</a></li><li class="navelem"><a class="el" href="dir_03a79da52393399f003ece50c2786062.html">eventBus</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">bus.h</div></div>
</div><!--header-->
<div class="contents">
<a href="bus_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">/*</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment"> Copyright (c) 2026 - SD-Innovation S.A.S. - FRANCE</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment">*/</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span> </div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">/*</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment">ver: 2.x.x - build: 2026-04-28</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment">*/</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span> </div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment">/*</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment">The zlib License
Copyright (c) 2026 SD-Innovation S.A.S.
This software is provided as-is, without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source
distribution.
</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment">*/</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span> </div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="preprocessor">#pragma once</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span> </div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="preprocessor">#include &quot;<a class="code" href="defs_8h.html">defs.h</a>&quot;</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="preprocessor">#include &quot;<a class="code" href="inode_8h.html">inode.h</a>&quot;</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="preprocessor">#include &quot;<a class="code" href="message_8h.html">message.h</a>&quot;</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span> </div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="preprocessor">#include &lt;chrono&gt;</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="preprocessor">#include &lt;memory&gt;</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="preprocessor">#include &lt;mutex&gt;</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="preprocessor">#include &lt;ranges&gt;</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="preprocessor">#include &lt;set&gt;</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="preprocessor">#include &lt;unordered_map&gt;</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span> </div>
<div class="foldopen" id="foldopen00026" data-start="{" data-end="}">
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"><a class="line" href="namespacesdi__toolBox_1_1desktop.html"> 26</a></span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html">sdi_toolBox::desktop::eventBus</a></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span>{</div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="comment">//--------------------------------------------------------------</span></div>
<div class="foldopen" id="foldopen00062" data-start="{" data-end="};">
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"><a class="line" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html"> 62</a></span><span class="keyword">class </span><a class="code hl_class" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a> final</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span>{</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"><a class="line" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a6db9d28bd448a131448276ee03de1e6d"> 64</a></span> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code hl_class" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html">Node</a>; </div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> </div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> <span class="keyword">using </span>VectorNode = std::vector&lt;INode *&gt;;</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> </div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> </div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> <a class="code hl_function" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a29358764c7d91cfcf3447e93b43bb20f">Bus</a>(); </div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> </div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"><a class="line" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#aaf1361cfa73ea4f24a5182e4aaf7f6e3"> 83</a></span> <a class="code hl_function" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#aaf1361cfa73ea4f24a5182e4aaf7f6e3">~Bus</a>() = <span class="keywordflow">default</span>; </div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> </div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"><a class="line" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a472403c9840a1d19c264c55f00070a3e"> 90</a></span> <a class="code hl_function" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a472403c9840a1d19c264c55f00070a3e">Bus</a>(<span class="keyword">const</span> <a class="code hl_class" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a> &amp;obj) = <span class="keyword">delete</span>; </div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> </div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"><a class="line" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a422f08b55d205f02a11025e753679555"> 97</a></span> <a class="code hl_function" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a422f08b55d205f02a11025e753679555">Bus</a>(<a class="code hl_class" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a> &amp;&amp;obj) <span class="keyword">noexcept</span> = <span class="keyword">delete</span>; </div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> </div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"><a class="line" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#afc5179367040f25bcdb4e27d5682168b"> 104</a></span> <a class="code hl_class" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a> &amp;<a class="code hl_function" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#afc5179367040f25bcdb4e27d5682168b">operator=</a>(<span class="keyword">const</span> <a class="code hl_class" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a> &amp;obj) = <span class="keyword">delete</span>; </div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> </div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"><a class="line" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#ad0f453f147d8e394a5b66b8494564a82"> 111</a></span> <a class="code hl_class" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a> &amp;<a class="code hl_function" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#ad0f453f147d8e394a5b66b8494564a82">operator=</a>(<a class="code hl_class" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a> &amp;&amp;obj) <span class="keyword">noexcept</span> = <span class="keyword">delete</span>; </div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> </div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> </div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#ab06a20c7848eddbcc910d5b03ea98f20">clearAllSubscriptions</a>();</div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> </div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#aaed1ce9185dbc68270991a68901e1d3e">subscribe</a>(<a class="code hl_class" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a> *node, <a class="code hl_typedef" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html#a9a6bed6d55e3ccf6e4b27ebfa879277c">MessageTypeID</a> eventType);</div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> </div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a27cc2e333f174e22b360045c7aad959d">unsubscribe</a>(<a class="code hl_class" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a> *node, <a class="code hl_typedef" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html#a9a6bed6d55e3ccf6e4b27ebfa879277c">MessageTypeID</a> eventType);</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> </div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#af42df59cac80896d270e4bf2b350676f">unsubscribeFromAll</a>(<a class="code hl_class" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a> *node);</div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> </div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> [[nodiscard]] <span class="keywordtype">bool</span> <a class="code hl_function" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a8574031338c5bf7827cc0d561ed93171">isSubscribed</a>(<span class="keyword">const</span> <a class="code hl_class" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a> *node, <a class="code hl_typedef" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html#a9a6bed6d55e3ccf6e4b27ebfa879277c">MessageTypeID</a> eventType) <span class="keyword">const</span>;</div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span> </div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> </div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a309bedf4b2fb78c99de024ece1f39eb5">subscribeToBroadcast</a>(<a class="code hl_class" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a> *node);</div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span> </div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#ae9c37a95472381e33190bd951e381ebe">unsubscribeFromBroadcast</a>(<a class="code hl_class" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a> *node);</div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span> </div>
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span> [[nodiscard]] <span class="keywordtype">bool</span> <a class="code hl_function" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a7b375afd6d8b416cfd37e3bfce5b8ffd">isSubscribedToBroadcast</a>(<a class="code hl_class" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a> *node) <span class="keyword">const</span>; <span class="comment">// Check if a node is subscribed to broadcast mode</span></div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span> </div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> </div>
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"> 254</span> <span class="keyword">template</span>&lt;<span class="keyword">class </span>T, <span class="keyword">class</span>... Args&gt;</div>
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a9aab57a60533a1a80a705bc569a9c589">emit</a>(Args &amp;&amp;...args);</div>
<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"> 256</span> </div>
<div class="line"><a id="l00270" name="l00270"></a><span class="lineno"> 270</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a92c2bc8aa8bcf018ffe954a3e8e34324">post</a>(<span class="keyword">const</span> std::shared_ptr&lt;Message&gt; &amp;message) <span class="keyword">const</span>; <span class="comment">// Post a message to the bus</span></div>
<div class="line"><a id="l00271" name="l00271"></a><span class="lineno"> 271</span> </div>
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"> 273</span> </div>
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"> 281</span> <span class="keywordtype">size_t</span> postMessageToSubscribers(<a class="code hl_typedef" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html#a9a6bed6d55e3ccf6e4b27ebfa879277c">MessageTypeID</a> eventType, <span class="keyword">const</span> std::shared_ptr&lt;Message&gt; &amp;message) <span class="keyword">const</span>;</div>
<div class="line"><a id="l00282" name="l00282"></a><span class="lineno"> 282</span> </div>
<div class="line"><a id="l00288" name="l00288"></a><span class="lineno"> 288</span> <span class="keywordtype">size_t</span> postMessageToBroadcastSubscribers(<span class="keyword">const</span> std::shared_ptr&lt;Message&gt; &amp;message) <span class="keyword">const</span>;</div>
<div class="line"><a id="l00289" name="l00289"></a><span class="lineno"> 289</span> </div>
<div class="line"><a id="l00295" name="l00295"></a><span class="lineno"> 295</span> <span class="keyword">const</span> VectorNode *getSubscribersForMessageType(<a class="code hl_typedef" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html#a9a6bed6d55e3ccf6e4b27ebfa879277c">MessageTypeID</a> messageType) <span class="keyword">const</span>; <span class="comment">// Get the list of subscribers for a specific message type</span></div>
<div class="line"><a id="l00296" name="l00296"></a><span class="lineno"> 296</span> </div>
<div class="line"><a id="l00298" name="l00298"></a><span class="lineno"> 298</span> <a class="code hl_typedef" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html#ae5ca775e8d8c664b6edef818ce1251b9">TimePoint</a> m_busStartTimestamp;</div>
<div class="line"><a id="l00299" name="l00299"></a><span class="lineno"> 299</span> </div>
<div class="line"><a id="l00301" name="l00301"></a><span class="lineno"> 301</span> <span class="keyword">struct</span></div>
<div class="line"><a id="l00302" name="l00302"></a><span class="lineno"> 302</span> {</div>
<div class="line"><a id="l00303" name="l00303"></a><span class="lineno"><a class="line" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#ad5e0dbd36f0d71fce9b00b7f991b2f38"> 303</a></span> <span class="keyword">mutable</span> std::mutex <a class="code hl_variable" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#ad5e0dbd36f0d71fce9b00b7f991b2f38">mtx</a>; </div>
<div class="line"><a id="l00304" name="l00304"></a><span class="lineno"><a class="line" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a4bc64bd8db5527dc8af9b458a82d6a65"> 304</a></span> std::unordered_map&lt;MessageTypeID, VectorNode&gt; <a class="code hl_variable" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a4bc64bd8db5527dc8af9b458a82d6a65">nodeList</a>; </div>
<div class="line"><a id="l00305" name="l00305"></a><span class="lineno"><a class="line" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a3c682b9a6b53418d7a147960e6dcdad1"> 305</a></span> std::set&lt;INode *&gt; <a class="code hl_variable" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a3c682b9a6b53418d7a147960e6dcdad1">broadcastNodeList</a>; </div>
<div class="line"><a id="l00306" name="l00306"></a><span class="lineno"> 306</span> } m_routingTable;</div>
<div class="line"><a id="l00307" name="l00307"></a><span class="lineno"> 307</span>};</div>
</div>
<div class="line"><a id="l00308" name="l00308"></a><span class="lineno"> 308</span><span class="comment">//--------------------------------------------------------------</span></div>
<div class="line"><a id="l00309" name="l00309"></a><span class="lineno"> 309</span> </div>
<div class="line"><a id="l00310" name="l00310"></a><span class="lineno"> 310</span><span class="comment">//--------------------------------------------------------------</span></div>
<div class="line"><a id="l00311" name="l00311"></a><span class="lineno"> 311</span><span class="comment">/* Default constructor */</span></div>
<div class="foldopen" id="foldopen00312" data-start="{" data-end="}">
<div class="line"><a id="l00312" name="l00312"></a><span class="lineno"><a class="line" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a29358764c7d91cfcf3447e93b43bb20f"> 312</a></span><span class="keyword">inline</span> <a class="code hl_function" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a29358764c7d91cfcf3447e93b43bb20f">Bus::Bus</a>()</div>
<div class="line"><a id="l00313" name="l00313"></a><span class="lineno"> 313</span>{</div>
<div class="line"><a id="l00314" name="l00314"></a><span class="lineno"> 314</span> <span class="comment">// Initialization</span></div>
<div class="line"><a id="l00315" name="l00315"></a><span class="lineno"> 315</span> m_busStartTimestamp = std::chrono::steady_clock::now();</div>
<div class="line"><a id="l00316" name="l00316"></a><span class="lineno"> 316</span>}</div>
</div>
<div class="line"><a id="l00317" name="l00317"></a><span class="lineno"> 317</span><span class="comment">//--------------------------------------------------------------</span></div>
<div class="line"><a id="l00318" name="l00318"></a><span class="lineno"> 318</span><span class="comment">/* Clear all subscriptions from the bus (remove all nodes from the routing table) */</span></div>
<div class="foldopen" id="foldopen00319" data-start="{" data-end="}">
<div class="line"><a id="l00319" name="l00319"></a><span class="lineno"><a class="line" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#ab06a20c7848eddbcc910d5b03ea98f20"> 319</a></span><span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#ab06a20c7848eddbcc910d5b03ea98f20">Bus::clearAllSubscriptions</a>()</div>
<div class="line"><a id="l00320" name="l00320"></a><span class="lineno"> 320</span>{</div>
<div class="line"><a id="l00321" name="l00321"></a><span class="lineno"> 321</span> std::scoped_lock lock(m_routingTable.mtx);</div>
<div class="line"><a id="l00322" name="l00322"></a><span class="lineno"> 322</span> </div>
<div class="line"><a id="l00323" name="l00323"></a><span class="lineno"> 323</span> m_routingTable.nodeList.clear(); <span class="comment">// Clear all event subscriptions</span></div>
<div class="line"><a id="l00324" name="l00324"></a><span class="lineno"> 324</span> m_routingTable.broadcastNodeList.clear(); <span class="comment">// Clear all broadcast subscriptions</span></div>
<div class="line"><a id="l00325" name="l00325"></a><span class="lineno"> 325</span>}</div>
</div>
<div class="line"><a id="l00326" name="l00326"></a><span class="lineno"> 326</span><span class="comment">//--------------------------------------------------------------</span></div>
<div class="line"><a id="l00327" name="l00327"></a><span class="lineno"> 327</span><span class="comment">/* Subscribe a listener to a specific event type */</span></div>
<div class="foldopen" id="foldopen00328" data-start="{" data-end="}">
<div class="line"><a id="l00328" name="l00328"></a><span class="lineno"><a class="line" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#aaed1ce9185dbc68270991a68901e1d3e"> 328</a></span><span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#aaed1ce9185dbc68270991a68901e1d3e">Bus::subscribe</a>(<a class="code hl_class" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a> *node, <a class="code hl_typedef" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html#a9a6bed6d55e3ccf6e4b27ebfa879277c">MessageTypeID</a> eventType)</div>
<div class="line"><a id="l00329" name="l00329"></a><span class="lineno"> 329</span>{</div>
<div class="line"><a id="l00330" name="l00330"></a><span class="lineno"> 330</span> <span class="comment">// Sanity check</span></div>
<div class="line"><a id="l00331" name="l00331"></a><span class="lineno"> 331</span> <span class="keywordflow">if</span> (!node)</div>
<div class="line"><a id="l00332" name="l00332"></a><span class="lineno"> 332</span> <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">&quot;invalid node handle&quot;</span>);</div>
<div class="line"><a id="l00333" name="l00333"></a><span class="lineno"> 333</span> </div>
<div class="line"><a id="l00334" name="l00334"></a><span class="lineno"> 334</span> std::scoped_lock lock(m_routingTable.mtx);</div>
<div class="line"><a id="l00335" name="l00335"></a><span class="lineno"> 335</span> </div>
<div class="line"><a id="l00336" name="l00336"></a><span class="lineno"> 336</span> <span class="keywordflow">if</span> (!m_routingTable.nodeList.contains(eventType)) <span class="comment">// Event type not registered yet, create a new entry with the node</span></div>
<div class="line"><a id="l00337" name="l00337"></a><span class="lineno"> 337</span> {</div>
<div class="line"><a id="l00338" name="l00338"></a><span class="lineno"> 338</span> m_routingTable.nodeList[eventType] = { node };</div>
<div class="line"><a id="l00339" name="l00339"></a><span class="lineno"> 339</span> }</div>
<div class="line"><a id="l00340" name="l00340"></a><span class="lineno"> 340</span> <span class="keywordflow">else</span> <span class="comment">// Event type already registered, add the node if not already subscribed</span></div>
<div class="line"><a id="l00341" name="l00341"></a><span class="lineno"> 341</span> {</div>
<div class="line"><a id="l00342" name="l00342"></a><span class="lineno"> 342</span> <span class="keyword">auto</span> &amp;nodes = m_routingTable.nodeList.at(eventType);</div>
<div class="line"><a id="l00343" name="l00343"></a><span class="lineno"> 343</span> <span class="keywordflow">if</span> (std::ranges::find(nodes, node) == nodes.end())</div>
<div class="line"><a id="l00344" name="l00344"></a><span class="lineno"> 344</span> {</div>
<div class="line"><a id="l00345" name="l00345"></a><span class="lineno"> 345</span> <span class="comment">// Node not already subscribed, add it to the list</span></div>
<div class="line"><a id="l00346" name="l00346"></a><span class="lineno"> 346</span> nodes.push_back(node);</div>
<div class="line"><a id="l00347" name="l00347"></a><span class="lineno"> 347</span> }</div>
<div class="line"><a id="l00348" name="l00348"></a><span class="lineno"> 348</span> }</div>
<div class="line"><a id="l00349" name="l00349"></a><span class="lineno"> 349</span>}</div>
</div>
<div class="line"><a id="l00350" name="l00350"></a><span class="lineno"> 350</span><span class="comment">//--------------------------------------------------------------</span></div>
<div class="line"><a id="l00351" name="l00351"></a><span class="lineno"> 351</span><span class="comment">/* Unsubscribe a listener from a specific event type */</span></div>
<div class="foldopen" id="foldopen00352" data-start="{" data-end="}">
<div class="line"><a id="l00352" name="l00352"></a><span class="lineno"><a class="line" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a27cc2e333f174e22b360045c7aad959d"> 352</a></span><span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a27cc2e333f174e22b360045c7aad959d">Bus::unsubscribe</a>(<a class="code hl_class" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a> *node, <a class="code hl_typedef" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html#a9a6bed6d55e3ccf6e4b27ebfa879277c">MessageTypeID</a> eventType)</div>
<div class="line"><a id="l00353" name="l00353"></a><span class="lineno"> 353</span>{</div>
<div class="line"><a id="l00354" name="l00354"></a><span class="lineno"> 354</span> <span class="comment">// Sanity check</span></div>
<div class="line"><a id="l00355" name="l00355"></a><span class="lineno"> 355</span> <span class="keywordflow">if</span> (!node)</div>
<div class="line"><a id="l00356" name="l00356"></a><span class="lineno"> 356</span> <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">&quot;invalid node handle&quot;</span>);</div>
<div class="line"><a id="l00357" name="l00357"></a><span class="lineno"> 357</span> </div>
<div class="line"><a id="l00358" name="l00358"></a><span class="lineno"> 358</span> std::scoped_lock lock(m_routingTable.mtx);</div>
<div class="line"><a id="l00359" name="l00359"></a><span class="lineno"> 359</span> </div>
<div class="line"><a id="l00360" name="l00360"></a><span class="lineno"> 360</span> <span class="comment">// Event type not recorded, nothing to do</span></div>
<div class="line"><a id="l00361" name="l00361"></a><span class="lineno"> 361</span> <span class="keywordflow">if</span> (!m_routingTable.nodeList.contains(eventType))</div>
<div class="line"><a id="l00362" name="l00362"></a><span class="lineno"> 362</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l00363" name="l00363"></a><span class="lineno"> 363</span> </div>
<div class="line"><a id="l00364" name="l00364"></a><span class="lineno"> 364</span> <span class="comment">// Event type registered, remove the listener if subscribed</span></div>
<div class="line"><a id="l00365" name="l00365"></a><span class="lineno"> 365</span> <span class="keyword">auto</span> &amp;nodes = m_routingTable.nodeList.at(eventType);</div>
<div class="line"><a id="l00366" name="l00366"></a><span class="lineno"> 366</span> std::erase(nodes, node);</div>
<div class="line"><a id="l00367" name="l00367"></a><span class="lineno"> 367</span>}</div>
</div>
<div class="line"><a id="l00368" name="l00368"></a><span class="lineno"> 368</span><span class="comment">//--------------------------------------------------------------</span></div>
<div class="line"><a id="l00369" name="l00369"></a><span class="lineno"> 369</span><span class="comment">/* Unsubscribe a listener from a specific event type */</span></div>
<div class="foldopen" id="foldopen00370" data-start="{" data-end="}">
<div class="line"><a id="l00370" name="l00370"></a><span class="lineno"><a class="line" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#af42df59cac80896d270e4bf2b350676f"> 370</a></span><span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#af42df59cac80896d270e4bf2b350676f">Bus::unsubscribeFromAll</a>(<a class="code hl_class" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a> *node)</div>
<div class="line"><a id="l00371" name="l00371"></a><span class="lineno"> 371</span>{</div>
<div class="line"><a id="l00372" name="l00372"></a><span class="lineno"> 372</span> <span class="comment">// Sanity check</span></div>
<div class="line"><a id="l00373" name="l00373"></a><span class="lineno"> 373</span> <span class="keywordflow">if</span> (!node)</div>
<div class="line"><a id="l00374" name="l00374"></a><span class="lineno"> 374</span> <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">&quot;invalid node handle&quot;</span>);</div>
<div class="line"><a id="l00375" name="l00375"></a><span class="lineno"> 375</span> </div>
<div class="line"><a id="l00376" name="l00376"></a><span class="lineno"> 376</span> std::scoped_lock lock(m_routingTable.mtx);</div>
<div class="line"><a id="l00377" name="l00377"></a><span class="lineno"> 377</span> </div>
<div class="line"><a id="l00378" name="l00378"></a><span class="lineno"> 378</span> <span class="comment">// Iterate through all event types and remove the node from each list</span></div>
<div class="line"><a id="l00379" name="l00379"></a><span class="lineno"> 379</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span> &amp;<a class="code hl_variable" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a4bc64bd8db5527dc8af9b458a82d6a65">nodeList</a> : m_routingTable.nodeList | std::views::values)</div>
<div class="line"><a id="l00380" name="l00380"></a><span class="lineno"> 380</span> std::erase(<a class="code hl_variable" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a4bc64bd8db5527dc8af9b458a82d6a65">nodeList</a>, node);</div>
<div class="line"><a id="l00381" name="l00381"></a><span class="lineno"> 381</span> </div>
<div class="line"><a id="l00382" name="l00382"></a><span class="lineno"> 382</span> <span class="comment">// Remove from broadcast subscriptions as well</span></div>
<div class="line"><a id="l00383" name="l00383"></a><span class="lineno"> 383</span> m_routingTable.broadcastNodeList.erase(node);</div>
<div class="line"><a id="l00384" name="l00384"></a><span class="lineno"> 384</span>}</div>
</div>
<div class="line"><a id="l00385" name="l00385"></a><span class="lineno"> 385</span><span class="comment">//--------------------------------------------------------------</span></div>
<div class="line"><a id="l00386" name="l00386"></a><span class="lineno"> 386</span><span class="comment">/* Check if a listener is subscribed to a specific event type */</span></div>
<div class="foldopen" id="foldopen00387" data-start="{" data-end="}">
<div class="line"><a id="l00387" name="l00387"></a><span class="lineno"><a class="line" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a8574031338c5bf7827cc0d561ed93171"> 387</a></span><span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a8574031338c5bf7827cc0d561ed93171">Bus::isSubscribed</a>(<span class="keyword">const</span> <a class="code hl_class" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a> *node, <a class="code hl_typedef" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html#a9a6bed6d55e3ccf6e4b27ebfa879277c">MessageTypeID</a> eventType)<span class="keyword"> const</span></div>
<div class="line"><a id="l00388" name="l00388"></a><span class="lineno"> 388</span><span class="keyword"></span>{</div>
<div class="line"><a id="l00389" name="l00389"></a><span class="lineno"> 389</span> <span class="comment">// Sanity check</span></div>
<div class="line"><a id="l00390" name="l00390"></a><span class="lineno"> 390</span> <span class="keywordflow">if</span> (!node)</div>
<div class="line"><a id="l00391" name="l00391"></a><span class="lineno"> 391</span> <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">&quot;invalid node handle&quot;</span>);</div>
<div class="line"><a id="l00392" name="l00392"></a><span class="lineno"> 392</span> </div>
<div class="line"><a id="l00393" name="l00393"></a><span class="lineno"> 393</span> std::scoped_lock lock(m_routingTable.mtx);</div>
<div class="line"><a id="l00394" name="l00394"></a><span class="lineno"> 394</span> </div>
<div class="line"><a id="l00395" name="l00395"></a><span class="lineno"> 395</span> <span class="comment">// Event type not recorded, node not subscribed</span></div>
<div class="line"><a id="l00396" name="l00396"></a><span class="lineno"> 396</span> <span class="keywordflow">if</span> (!m_routingTable.nodeList.contains(eventType))</div>
<div class="line"><a id="l00397" name="l00397"></a><span class="lineno"> 397</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00398" name="l00398"></a><span class="lineno"> 398</span> </div>
<div class="line"><a id="l00399" name="l00399"></a><span class="lineno"> 399</span> <span class="comment">// Event type recorded, check if the node is in the list</span></div>
<div class="line"><a id="l00400" name="l00400"></a><span class="lineno"> 400</span> <span class="keyword">const</span> <span class="keyword">auto</span> &amp;nodes = m_routingTable.nodeList.at(eventType);</div>
<div class="line"><a id="l00401" name="l00401"></a><span class="lineno"> 401</span> <span class="keywordflow">return</span> std::ranges::find(nodes, node) != nodes.end();</div>
<div class="line"><a id="l00402" name="l00402"></a><span class="lineno"> 402</span>}</div>
</div>
<div class="line"><a id="l00403" name="l00403"></a><span class="lineno"> 403</span><span class="comment">//--------------------------------------------------------------</span></div>
<div class="line"><a id="l00404" name="l00404"></a><span class="lineno"> 404</span><span class="comment">/* Subscribe a node to receive all messages (broadcast mode) */</span></div>
<div class="foldopen" id="foldopen00405" data-start="{" data-end="}">
<div class="line"><a id="l00405" name="l00405"></a><span class="lineno"><a class="line" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a309bedf4b2fb78c99de024ece1f39eb5"> 405</a></span><span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a309bedf4b2fb78c99de024ece1f39eb5">Bus::subscribeToBroadcast</a>(<a class="code hl_class" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a> *node)</div>
<div class="line"><a id="l00406" name="l00406"></a><span class="lineno"> 406</span>{</div>
<div class="line"><a id="l00407" name="l00407"></a><span class="lineno"> 407</span> <span class="comment">// Sanity check</span></div>
<div class="line"><a id="l00408" name="l00408"></a><span class="lineno"> 408</span> <span class="keywordflow">if</span> (!node)</div>
<div class="line"><a id="l00409" name="l00409"></a><span class="lineno"> 409</span> <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">&quot;invalid node handle&quot;</span>);</div>
<div class="line"><a id="l00410" name="l00410"></a><span class="lineno"> 410</span> </div>
<div class="line"><a id="l00411" name="l00411"></a><span class="lineno"> 411</span> std::scoped_lock lock(m_routingTable.mtx);</div>
<div class="line"><a id="l00412" name="l00412"></a><span class="lineno"> 412</span> </div>
<div class="line"><a id="l00413" name="l00413"></a><span class="lineno"> 413</span> <span class="comment">// Add the node to the broadcast nodes set</span></div>
<div class="line"><a id="l00414" name="l00414"></a><span class="lineno"> 414</span> m_routingTable.broadcastNodeList.insert(node);</div>
<div class="line"><a id="l00415" name="l00415"></a><span class="lineno"> 415</span>}</div>
</div>
<div class="line"><a id="l00416" name="l00416"></a><span class="lineno"> 416</span><span class="comment">//--------------------------------------------------------------</span></div>
<div class="line"><a id="l00417" name="l00417"></a><span class="lineno"> 417</span><span class="comment">/* Unsubscribe a node from broadcast mode */</span></div>
<div class="foldopen" id="foldopen00418" data-start="{" data-end="}">
<div class="line"><a id="l00418" name="l00418"></a><span class="lineno"><a class="line" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#ae9c37a95472381e33190bd951e381ebe"> 418</a></span><span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#ae9c37a95472381e33190bd951e381ebe">Bus::unsubscribeFromBroadcast</a>(<a class="code hl_class" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a> *node)</div>
<div class="line"><a id="l00419" name="l00419"></a><span class="lineno"> 419</span>{</div>
<div class="line"><a id="l00420" name="l00420"></a><span class="lineno"> 420</span> <span class="comment">// Sanity check</span></div>
<div class="line"><a id="l00421" name="l00421"></a><span class="lineno"> 421</span> <span class="keywordflow">if</span> (!node)</div>
<div class="line"><a id="l00422" name="l00422"></a><span class="lineno"> 422</span> <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">&quot;invalid node handle&quot;</span>);</div>
<div class="line"><a id="l00423" name="l00423"></a><span class="lineno"> 423</span> </div>
<div class="line"><a id="l00424" name="l00424"></a><span class="lineno"> 424</span> std::scoped_lock lock(m_routingTable.mtx);</div>
<div class="line"><a id="l00425" name="l00425"></a><span class="lineno"> 425</span> </div>
<div class="line"><a id="l00426" name="l00426"></a><span class="lineno"> 426</span> <span class="comment">// Remove the node from the broadcast nodes set</span></div>
<div class="line"><a id="l00427" name="l00427"></a><span class="lineno"> 427</span> m_routingTable.broadcastNodeList.erase(node);</div>
<div class="line"><a id="l00428" name="l00428"></a><span class="lineno"> 428</span>}</div>
</div>
<div class="line"><a id="l00429" name="l00429"></a><span class="lineno"> 429</span><span class="comment">//--------------------------------------------------------------</span></div>
<div class="line"><a id="l00430" name="l00430"></a><span class="lineno"> 430</span><span class="comment">/* Check if a node is subscribed to broadcast mode */</span></div>
<div class="foldopen" id="foldopen00431" data-start="{" data-end="}">
<div class="line"><a id="l00431" name="l00431"></a><span class="lineno"><a class="line" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a7b375afd6d8b416cfd37e3bfce5b8ffd"> 431</a></span><span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a7b375afd6d8b416cfd37e3bfce5b8ffd">Bus::isSubscribedToBroadcast</a>(<a class="code hl_class" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a> *node)<span class="keyword"> const</span></div>
<div class="line"><a id="l00432" name="l00432"></a><span class="lineno"> 432</span><span class="keyword"></span>{</div>
<div class="line"><a id="l00433" name="l00433"></a><span class="lineno"> 433</span> <span class="comment">// Sanity check</span></div>
<div class="line"><a id="l00434" name="l00434"></a><span class="lineno"> 434</span> <span class="keywordflow">if</span> (!node)</div>
<div class="line"><a id="l00435" name="l00435"></a><span class="lineno"> 435</span> <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">&quot;invalid node handle&quot;</span>);</div>
<div class="line"><a id="l00436" name="l00436"></a><span class="lineno"> 436</span> </div>
<div class="line"><a id="l00437" name="l00437"></a><span class="lineno"> 437</span> std::scoped_lock lock(m_routingTable.mtx);</div>
<div class="line"><a id="l00438" name="l00438"></a><span class="lineno"> 438</span> </div>
<div class="line"><a id="l00439" name="l00439"></a><span class="lineno"> 439</span> <span class="comment">// Check if the node is in the broadcast nodes set</span></div>
<div class="line"><a id="l00440" name="l00440"></a><span class="lineno"> 440</span> <span class="keywordflow">return</span> m_routingTable.broadcastNodeList.contains(node);</div>
<div class="line"><a id="l00441" name="l00441"></a><span class="lineno"> 441</span>}</div>
</div>
<div class="line"><a id="l00442" name="l00442"></a><span class="lineno"> 442</span><span class="comment">//--------------------------------------------------------------</span></div>
<div class="line"><a id="l00443" name="l00443"></a><span class="lineno"> 443</span><span class="comment">/* Emit a message of type T with the given arguments(create a message and post it to the bus) */</span></div>
<div class="line"><a id="l00444" name="l00444"></a><span class="lineno"> 444</span><span class="keyword">template</span>&lt;<span class="keyword">class </span>T, <span class="keyword">class</span>... Args&gt;</div>
<div class="foldopen" id="foldopen00445" data-start="{" data-end="}">
<div class="line"><a id="l00445" name="l00445"></a><span class="lineno"><a class="line" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a9aab57a60533a1a80a705bc569a9c589"> 445</a></span><span class="keywordtype">bool</span> <a class="code hl_function" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a9aab57a60533a1a80a705bc569a9c589">Bus::emit</a>(Args &amp;&amp;...args)</div>
<div class="line"><a id="l00446" name="l00446"></a><span class="lineno"> 446</span>{</div>
<div class="line"><a id="l00447" name="l00447"></a><span class="lineno"> 447</span> <span class="keyword">static_assert</span>(std::derived_from&lt;T, Message&gt;, <span class="stringliteral">&quot;T must be derived from IMessage&quot;</span>);</div>
<div class="line"><a id="l00448" name="l00448"></a><span class="lineno"> 448</span> </div>
<div class="line"><a id="l00449" name="l00449"></a><span class="lineno"> 449</span> <span class="comment">// Create a message of type T with the given arguments</span></div>
<div class="line"><a id="l00450" name="l00450"></a><span class="lineno"> 450</span> <span class="keyword">auto</span> message = std::make_shared&lt;T&gt;(std::forward&lt;Args&gt;(args)...);</div>
<div class="line"><a id="l00451" name="l00451"></a><span class="lineno"> 451</span> </div>
<div class="line"><a id="l00452" name="l00452"></a><span class="lineno"> 452</span> <span class="comment">// Post the message to the bus</span></div>
<div class="line"><a id="l00453" name="l00453"></a><span class="lineno"> 453</span> <span class="keywordflow">return</span> <a class="code hl_function" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a92c2bc8aa8bcf018ffe954a3e8e34324">post</a>(message);</div>
<div class="line"><a id="l00454" name="l00454"></a><span class="lineno"> 454</span>}</div>
</div>
<div class="line"><a id="l00455" name="l00455"></a><span class="lineno"> 455</span><span class="comment">//--------------------------------------------------------------</span></div>
<div class="line"><a id="l00456" name="l00456"></a><span class="lineno"> 456</span><span class="comment">/* Post a message to the bus */</span></div>
<div class="foldopen" id="foldopen00457" data-start="{" data-end="}">
<div class="line"><a id="l00457" name="l00457"></a><span class="lineno"><a class="line" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a92c2bc8aa8bcf018ffe954a3e8e34324"> 457</a></span><span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a92c2bc8aa8bcf018ffe954a3e8e34324">Bus::post</a>(<span class="keyword">const</span> std::shared_ptr&lt;Message&gt; &amp;message)<span class="keyword"> const</span></div>
<div class="line"><a id="l00458" name="l00458"></a><span class="lineno"> 458</span><span class="keyword"></span>{</div>
<div class="line"><a id="l00459" name="l00459"></a><span class="lineno"> 459</span> std::scoped_lock lock(m_routingTable.mtx);</div>
<div class="line"><a id="l00460" name="l00460"></a><span class="lineno"> 460</span> </div>
<div class="line"><a id="l00461" name="l00461"></a><span class="lineno"> 461</span> <span class="comment">// Update message state</span></div>
<div class="line"><a id="l00462" name="l00462"></a><span class="lineno"> 462</span> message-&gt;updateTimestamp(); <span class="comment">// Update the timestamp of when the message was posted to the bus</span></div>
<div class="line"><a id="l00463" name="l00463"></a><span class="lineno"> 463</span> </div>
<div class="line"><a id="l00464" name="l00464"></a><span class="lineno"> 464</span> <span class="comment">// Post the message to all subscribers of the specific</span></div>
<div class="line"><a id="l00465" name="l00465"></a><span class="lineno"> 465</span> <span class="comment">// message type and get the number of subscribers that</span></div>
<div class="line"><a id="l00466" name="l00466"></a><span class="lineno"> 466</span> <span class="comment">// received the message</span></div>
<div class="line"><a id="l00467" name="l00467"></a><span class="lineno"> 467</span> <span class="keyword">const</span> <span class="keyword">auto</span> subscriberCount = postMessageToSubscribers(message-&gt;getMessageTypeID(), message);</div>
<div class="line"><a id="l00468" name="l00468"></a><span class="lineno"> 468</span> </div>
<div class="line"><a id="l00469" name="l00469"></a><span class="lineno"> 469</span> <span class="comment">// Post the message to all broadcast subscribers and</span></div>
<div class="line"><a id="l00470" name="l00470"></a><span class="lineno"> 470</span> <span class="comment">// get the number of subscribers that received the</span></div>
<div class="line"><a id="l00471" name="l00471"></a><span class="lineno"> 471</span> <span class="comment">// message</span></div>
<div class="line"><a id="l00472" name="l00472"></a><span class="lineno"> 472</span> (void)postMessageToBroadcastSubscribers(message);</div>
<div class="line"><a id="l00473" name="l00473"></a><span class="lineno"> 473</span> </div>
<div class="line"><a id="l00474" name="l00474"></a><span class="lineno"> 474</span> <span class="keywordflow">return</span> subscriberCount &gt; 0;</div>
<div class="line"><a id="l00475" name="l00475"></a><span class="lineno"> 475</span>}</div>
</div>
<div class="line"><a id="l00476" name="l00476"></a><span class="lineno"> 476</span><span class="comment">//--------------------------------------------------------------</span></div>
<div class="line"><a id="l00477" name="l00477"></a><span class="lineno"> 477</span><span class="comment">/* Post a message to all subscribers of a specific event type and return the number of subscribers that received the message */</span></div>
<div class="line"><a id="l00478" name="l00478"></a><span class="lineno"> 478</span><span class="keyword">inline</span> <span class="keywordtype">size_t</span> Bus::postMessageToSubscribers(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html#a9a6bed6d55e3ccf6e4b27ebfa879277c">MessageTypeID</a> eventType, <span class="keyword">const</span> std::shared_ptr&lt;Message&gt; &amp;message)<span class="keyword"> const</span></div>
<div class="line"><a id="l00479" name="l00479"></a><span class="lineno"> 479</span><span class="keyword"></span>{</div>
<div class="line"><a id="l00480" name="l00480"></a><span class="lineno"> 480</span> <span class="keyword">const</span> <span class="keyword">auto</span> subscriberList = getSubscribersForMessageType(eventType);</div>
<div class="line"><a id="l00481" name="l00481"></a><span class="lineno"> 481</span> <span class="keywordflow">if</span> (!subscriberList)</div>
<div class="line"><a id="l00482" name="l00482"></a><span class="lineno"> 482</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00483" name="l00483"></a><span class="lineno"> 483</span> </div>
<div class="line"><a id="l00484" name="l00484"></a><span class="lineno"> 484</span> <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;node : *subscriberList)</div>
<div class="line"><a id="l00485" name="l00485"></a><span class="lineno"> 485</span> node-&gt;append(message);</div>
<div class="line"><a id="l00486" name="l00486"></a><span class="lineno"> 486</span> </div>
<div class="line"><a id="l00487" name="l00487"></a><span class="lineno"> 487</span> <span class="keywordflow">return</span> subscriberList-&gt;size();</div>
<div class="line"><a id="l00488" name="l00488"></a><span class="lineno"> 488</span>}</div>
<div class="line"><a id="l00489" name="l00489"></a><span class="lineno"> 489</span><span class="comment">//--------------------------------------------------------------</span></div>
<div class="line"><a id="l00490" name="l00490"></a><span class="lineno"> 490</span><span class="comment">/* Post a message to all broadcast subscribers and return the number of subscribers that received the message */</span></div>
<div class="line"><a id="l00491" name="l00491"></a><span class="lineno"> 491</span><span class="keyword">inline</span> <span class="keywordtype">size_t</span> Bus::postMessageToBroadcastSubscribers(<span class="keyword">const</span> std::shared_ptr&lt;Message&gt; &amp;message)<span class="keyword"> const</span></div>
<div class="line"><a id="l00492" name="l00492"></a><span class="lineno"> 492</span><span class="keyword"></span>{</div>
<div class="line"><a id="l00493" name="l00493"></a><span class="lineno"> 493</span> <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;node : m_routingTable.<a class="code hl_variable" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a3c682b9a6b53418d7a147960e6dcdad1">broadcastNodeList</a>)</div>
<div class="line"><a id="l00494" name="l00494"></a><span class="lineno"> 494</span> node-&gt;append(message);</div>
<div class="line"><a id="l00495" name="l00495"></a><span class="lineno"> 495</span> </div>
<div class="line"><a id="l00496" name="l00496"></a><span class="lineno"> 496</span> <span class="keywordflow">return</span> m_routingTable.broadcastNodeList.size();</div>
<div class="line"><a id="l00497" name="l00497"></a><span class="lineno"> 497</span>}</div>
<div class="line"><a id="l00498" name="l00498"></a><span class="lineno"> 498</span><span class="comment">//--------------------------------------------------------------</span></div>
<div class="line"><a id="l00499" name="l00499"></a><span class="lineno"> 499</span><span class="comment">/* Get the list of subscribers for a specific message type */</span></div>
<div class="line"><a id="l00500" name="l00500"></a><span class="lineno"> 500</span><span class="keyword">inline</span> <span class="keyword">const</span> Bus::VectorNode *Bus::getSubscribersForMessageType(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html#a9a6bed6d55e3ccf6e4b27ebfa879277c">MessageTypeID</a> messageType)<span class="keyword"> const</span></div>
<div class="line"><a id="l00501" name="l00501"></a><span class="lineno"> 501</span><span class="keyword"></span>{</div>
<div class="line"><a id="l00502" name="l00502"></a><span class="lineno"> 502</span> <span class="keywordflow">if</span> (!m_routingTable.nodeList.contains(messageType))</div>
<div class="line"><a id="l00503" name="l00503"></a><span class="lineno"> 503</span> <span class="keywordflow">return</span> <span class="keyword">nullptr</span>; <span class="comment">// No subscribers for this message type</span></div>
<div class="line"><a id="l00504" name="l00504"></a><span class="lineno"> 504</span> </div>
<div class="line"><a id="l00505" name="l00505"></a><span class="lineno"> 505</span> <span class="keywordflow">return</span> &amp;m_routingTable.nodeList.at(messageType);</div>
<div class="line"><a id="l00506" name="l00506"></a><span class="lineno"> 506</span>}</div>
<div class="line"><a id="l00507" name="l00507"></a><span class="lineno"> 507</span><span class="comment">//--------------------------------------------------------------</span></div>
<div class="line"><a id="l00508" name="l00508"></a><span class="lineno"> 508</span>} <span class="comment">// namespace sdi_toolBox::desktop::eventBus</span></div>
</div>
<div class="ttc" id="aclasssdi__toolBox_1_1desktop_1_1eventBus_1_1Bus_html"><div class="ttname"><a href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">sdi_toolBox::desktop::eventBus::Bus</a></div><div class="ttdoc">Central message dispatcher for the event bus system.</div><div class="ttdef"><b>Definition</b> <a href="bus_8h_source.html#l00062">bus.h:63</a></div></div>
<div class="ttc" id="aclasssdi__toolBox_1_1desktop_1_1eventBus_1_1Bus_html_a27cc2e333f174e22b360045c7aad959d"><div class="ttname"><a href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a27cc2e333f174e22b360045c7aad959d">sdi_toolBox::desktop::eventBus::Bus::unsubscribe</a></div><div class="ttdeci">void unsubscribe(INode *node, MessageTypeID eventType)</div><div class="ttdoc">Unsubscribe a node from a specific message type.</div><div class="ttdef"><b>Definition</b> <a href="bus_8h_source.html#l00352">bus.h:352</a></div></div>
<div class="ttc" id="aclasssdi__toolBox_1_1desktop_1_1eventBus_1_1Bus_html_a29358764c7d91cfcf3447e93b43bb20f"><div class="ttname"><a href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a29358764c7d91cfcf3447e93b43bb20f">sdi_toolBox::desktop::eventBus::Bus::Bus</a></div><div class="ttdeci">Bus()</div><div class="ttdoc">Default constructor.</div><div class="ttdef"><b>Definition</b> <a href="bus_8h_source.html#l00312">bus.h:312</a></div></div>
<div class="ttc" id="aclasssdi__toolBox_1_1desktop_1_1eventBus_1_1Bus_html_a309bedf4b2fb78c99de024ece1f39eb5"><div class="ttname"><a href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a309bedf4b2fb78c99de024ece1f39eb5">sdi_toolBox::desktop::eventBus::Bus::subscribeToBroadcast</a></div><div class="ttdeci">void subscribeToBroadcast(INode *node)</div><div class="ttdoc">Subscribe a node to broadcast mode.</div><div class="ttdef"><b>Definition</b> <a href="bus_8h_source.html#l00405">bus.h:405</a></div></div>
<div class="ttc" id="aclasssdi__toolBox_1_1desktop_1_1eventBus_1_1Bus_html_a3c682b9a6b53418d7a147960e6dcdad1"><div class="ttname"><a href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a3c682b9a6b53418d7a147960e6dcdad1">sdi_toolBox::desktop::eventBus::Bus::broadcastNodeList</a></div><div class="ttdeci">std::set&lt; INode * &gt; broadcastNodeList</div><div class="ttdoc">Set of nodes subscribed to receive all messages (broadcast mode)</div><div class="ttdef"><b>Definition</b> <a href="bus_8h_source.html#l00305">bus.h:305</a></div></div>
<div class="ttc" id="aclasssdi__toolBox_1_1desktop_1_1eventBus_1_1Bus_html_a422f08b55d205f02a11025e753679555"><div class="ttname"><a href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a422f08b55d205f02a11025e753679555">sdi_toolBox::desktop::eventBus::Bus::Bus</a></div><div class="ttdeci">Bus(Bus &amp;&amp;obj) noexcept=delete</div><div class="ttdoc">Move constructor - deleted.</div></div>
<div class="ttc" id="aclasssdi__toolBox_1_1desktop_1_1eventBus_1_1Bus_html_a472403c9840a1d19c264c55f00070a3e"><div class="ttname"><a href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a472403c9840a1d19c264c55f00070a3e">sdi_toolBox::desktop::eventBus::Bus::Bus</a></div><div class="ttdeci">Bus(const Bus &amp;obj)=delete</div><div class="ttdoc">Copy constructor - deleted.</div></div>
<div class="ttc" id="aclasssdi__toolBox_1_1desktop_1_1eventBus_1_1Bus_html_a4bc64bd8db5527dc8af9b458a82d6a65"><div class="ttname"><a href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a4bc64bd8db5527dc8af9b458a82d6a65">sdi_toolBox::desktop::eventBus::Bus::nodeList</a></div><div class="ttdeci">std::unordered_map&lt; MessageTypeID, VectorNode &gt; nodeList</div><div class="ttdoc">Map of message type IDs to lists of subscribed nodes.</div><div class="ttdef"><b>Definition</b> <a href="bus_8h_source.html#l00304">bus.h:304</a></div></div>
<div class="ttc" id="aclasssdi__toolBox_1_1desktop_1_1eventBus_1_1Bus_html_a7b375afd6d8b416cfd37e3bfce5b8ffd"><div class="ttname"><a href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a7b375afd6d8b416cfd37e3bfce5b8ffd">sdi_toolBox::desktop::eventBus::Bus::isSubscribedToBroadcast</a></div><div class="ttdeci">bool isSubscribedToBroadcast(INode *node) const</div><div class="ttdoc">Check whether a node is subscribed to broadcast mode.</div><div class="ttdef"><b>Definition</b> <a href="bus_8h_source.html#l00431">bus.h:431</a></div></div>
<div class="ttc" id="aclasssdi__toolBox_1_1desktop_1_1eventBus_1_1Bus_html_a8574031338c5bf7827cc0d561ed93171"><div class="ttname"><a href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a8574031338c5bf7827cc0d561ed93171">sdi_toolBox::desktop::eventBus::Bus::isSubscribed</a></div><div class="ttdeci">bool isSubscribed(const INode *node, MessageTypeID eventType) const</div><div class="ttdoc">Check whether a node is subscribed to a specific message type.</div><div class="ttdef"><b>Definition</b> <a href="bus_8h_source.html#l00387">bus.h:387</a></div></div>
<div class="ttc" id="aclasssdi__toolBox_1_1desktop_1_1eventBus_1_1Bus_html_a92c2bc8aa8bcf018ffe954a3e8e34324"><div class="ttname"><a href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a92c2bc8aa8bcf018ffe954a3e8e34324">sdi_toolBox::desktop::eventBus::Bus::post</a></div><div class="ttdeci">bool post(const std::shared_ptr&lt; Message &gt; &amp;message) const</div><div class="ttdoc">Post an already constructed message to the bus.</div><div class="ttdef"><b>Definition</b> <a href="bus_8h_source.html#l00457">bus.h:457</a></div></div>
<div class="ttc" id="aclasssdi__toolBox_1_1desktop_1_1eventBus_1_1Bus_html_a9aab57a60533a1a80a705bc569a9c589"><div class="ttname"><a href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a9aab57a60533a1a80a705bc569a9c589">sdi_toolBox::desktop::eventBus::Bus::emit</a></div><div class="ttdeci">bool emit(Args &amp;&amp;...args)</div><div class="ttdoc">Construct and emit a message of type T to the bus.</div><div class="ttdef"><b>Definition</b> <a href="bus_8h_source.html#l00445">bus.h:445</a></div></div>
<div class="ttc" id="aclasssdi__toolBox_1_1desktop_1_1eventBus_1_1Bus_html_aaed1ce9185dbc68270991a68901e1d3e"><div class="ttname"><a href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#aaed1ce9185dbc68270991a68901e1d3e">sdi_toolBox::desktop::eventBus::Bus::subscribe</a></div><div class="ttdeci">void subscribe(INode *node, MessageTypeID eventType)</div><div class="ttdoc">Subscribe a node to a specific message type.</div><div class="ttdef"><b>Definition</b> <a href="bus_8h_source.html#l00328">bus.h:328</a></div></div>
<div class="ttc" id="aclasssdi__toolBox_1_1desktop_1_1eventBus_1_1Bus_html_aaf1361cfa73ea4f24a5182e4aaf7f6e3"><div class="ttname"><a href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#aaf1361cfa73ea4f24a5182e4aaf7f6e3">sdi_toolBox::desktop::eventBus::Bus::~Bus</a></div><div class="ttdeci">~Bus()=default</div><div class="ttdoc">Default destructor.</div></div>
<div class="ttc" id="aclasssdi__toolBox_1_1desktop_1_1eventBus_1_1Bus_html_ab06a20c7848eddbcc910d5b03ea98f20"><div class="ttname"><a href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#ab06a20c7848eddbcc910d5b03ea98f20">sdi_toolBox::desktop::eventBus::Bus::clearAllSubscriptions</a></div><div class="ttdeci">void clearAllSubscriptions()</div><div class="ttdoc">Remove all subscriptions from the routing table.</div><div class="ttdef"><b>Definition</b> <a href="bus_8h_source.html#l00319">bus.h:319</a></div></div>
<div class="ttc" id="aclasssdi__toolBox_1_1desktop_1_1eventBus_1_1Bus_html_ad0f453f147d8e394a5b66b8494564a82"><div class="ttname"><a href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#ad0f453f147d8e394a5b66b8494564a82">sdi_toolBox::desktop::eventBus::Bus::operator=</a></div><div class="ttdeci">Bus &amp; operator=(Bus &amp;&amp;obj) noexcept=delete</div><div class="ttdoc">Move assignment operator - deleted.</div></div>
<div class="ttc" id="aclasssdi__toolBox_1_1desktop_1_1eventBus_1_1Bus_html_ad5e0dbd36f0d71fce9b00b7f991b2f38"><div class="ttname"><a href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#ad5e0dbd36f0d71fce9b00b7f991b2f38">sdi_toolBox::desktop::eventBus::Bus::mtx</a></div><div class="ttdeci">std::mutex mtx</div><div class="ttdoc">Mutex for thread-safe access to the nodes map.</div><div class="ttdef"><b>Definition</b> <a href="bus_8h_source.html#l00303">bus.h:303</a></div></div>
<div class="ttc" id="aclasssdi__toolBox_1_1desktop_1_1eventBus_1_1Bus_html_ae9c37a95472381e33190bd951e381ebe"><div class="ttname"><a href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#ae9c37a95472381e33190bd951e381ebe">sdi_toolBox::desktop::eventBus::Bus::unsubscribeFromBroadcast</a></div><div class="ttdeci">void unsubscribeFromBroadcast(INode *node)</div><div class="ttdoc">Unsubscribe a node from broadcast mode.</div><div class="ttdef"><b>Definition</b> <a href="bus_8h_source.html#l00418">bus.h:418</a></div></div>
<div class="ttc" id="aclasssdi__toolBox_1_1desktop_1_1eventBus_1_1Bus_html_af42df59cac80896d270e4bf2b350676f"><div class="ttname"><a href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#af42df59cac80896d270e4bf2b350676f">sdi_toolBox::desktop::eventBus::Bus::unsubscribeFromAll</a></div><div class="ttdeci">void unsubscribeFromAll(INode *node)</div><div class="ttdoc">Unsubscribe a node from all message types and broadcast mode.</div><div class="ttdef"><b>Definition</b> <a href="bus_8h_source.html#l00370">bus.h:370</a></div></div>
<div class="ttc" id="aclasssdi__toolBox_1_1desktop_1_1eventBus_1_1Bus_html_afc5179367040f25bcdb4e27d5682168b"><div class="ttname"><a href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#afc5179367040f25bcdb4e27d5682168b">sdi_toolBox::desktop::eventBus::Bus::operator=</a></div><div class="ttdeci">Bus &amp; operator=(const Bus &amp;obj)=delete</div><div class="ttdoc">Copy assignment operator - deleted.</div></div>
<div class="ttc" id="aclasssdi__toolBox_1_1desktop_1_1eventBus_1_1INode_html"><div class="ttname"><a href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">sdi_toolBox::desktop::eventBus::INode</a></div><div class="ttdoc">Abstract interface representing a subscriber node in the event bus system.</div><div class="ttdef"><b>Definition</b> <a href="inode_8h_source.html#l00041">inode.h:42</a></div></div>
<div class="ttc" id="aclasssdi__toolBox_1_1desktop_1_1eventBus_1_1Node_html"><div class="ttname"><a href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html">sdi_toolBox::desktop::eventBus::Node</a></div><div class="ttdoc">Concrete subscriber node in the event bus system.</div><div class="ttdef"><b>Definition</b> <a href="node_8h_source.html#l00063">node.h:64</a></div></div>
<div class="ttc" id="adefs_8h_html"><div class="ttname"><a href="defs_8h.html">defs.h</a></div></div>
<div class="ttc" id="ainode_8h_html"><div class="ttname"><a href="inode_8h.html">inode.h</a></div></div>
<div class="ttc" id="amessage_8h_html"><div class="ttname"><a href="message_8h.html">message.h</a></div></div>
<div class="ttc" id="anamespacesdi__toolBox_1_1desktop_1_1eventBus_html"><div class="ttname"><a href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html">sdi_toolBox::desktop::eventBus</a></div><div class="ttdoc">Lightweight thread-safe event bus for decoupled message passing.</div><div class="ttdef"><b>Definition</b> <a href="bus_8h_source.html#l00026">bus.h:27</a></div></div>
<div class="ttc" id="anamespacesdi__toolBox_1_1desktop_1_1eventBus_html_a9a6bed6d55e3ccf6e4b27ebfa879277c"><div class="ttname"><a href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html#a9a6bed6d55e3ccf6e4b27ebfa879277c">sdi_toolBox::desktop::eventBus::MessageTypeID</a></div><div class="ttdeci">uint64_t MessageTypeID</div><div class="ttdoc">Unique identifier for a message type.</div><div class="ttdef"><b>Definition</b> <a href="defs_8h_source.html#l00021">defs.h:21</a></div></div>
<div class="ttc" id="anamespacesdi__toolBox_1_1desktop_1_1eventBus_html_ae5ca775e8d8c664b6edef818ce1251b9"><div class="ttname"><a href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html#ae5ca775e8d8c664b6edef818ce1251b9">sdi_toolBox::desktop::eventBus::TimePoint</a></div><div class="ttdeci">std::chrono::steady_clock::time_point TimePoint</div><div class="ttdoc">Monotonic timestamp type used throughout the event bus.</div><div class="ttdef"><b>Definition</b> <a href="defs_8h_source.html#l00022">defs.h:22</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- HTML footer for doxygen 1.9.8-->
<!-- start footer part -->
<hr class="footer"/><address class="footer">
<small>
SDi toolsBox is licensed under the terms and conditions of the <a href="https://opensource.org/licenses/zlib-license.php" target="_blank">zlib/png license</a>
<br />
Copyright (c) 2026 - SD-Innovation S.A.S. - FRANCE | ver: 2.x.x - build: 2026-04-28
<br />
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen" /></a> 1.9.8
</small>
</address>
</body>

View File

@@ -0,0 +1,105 @@
<!-- HTML header for doxygen 1.9.8-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<title>SDi toolsBox</title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="custom_doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">sdi_toolBox
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',false,false,'search.php','Search');
});
/* @license-end */
</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_1635ad76f8180971a36e709fb0d71e5a.html">toolBox</a></li><li class="navelem"><a class="el" href="dir_a330ae4cda0dd4c6ab0e77aa921b4b70.html">sdi_toolBox</a></li><li class="navelem"><a class="el" href="dir_54865fdb36137c23be3687ea6e83f837.html">common</a></li><li class="navelem"><a class="el" href="dir_d0c2fb49d0db32828bce9490aff92f8c.html">utils</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#namespaces">Namespaces</a> </div>
<div class="headertitle"><div class="title">circularBuffer.h File Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="ringBuffer_8h_source.html">ringBuffer.h</a>&quot;</code><br />
</div><div class="textblock"><div class="dynheader">
Include dependency graph for circularBuffer.h:</div>
<div class="dyncontent">
<div class="center"><img src="circularBuffer_8h__incl.png" border="0" usemap="#acircularBuffer_8h" alt=""/></div>
<map name="acircularBuffer_8h" id="acircularBuffer_8h">
<area shape="rect" title=" " alt="" coords="61,5,181,31"/>
<area shape="rect" href="ringBuffer_8h.html" title=" " alt="" coords="73,79,170,104"/>
<area shape="poly" title=" " alt="" coords="124,31,124,65,119,65,119,31"/>
<area shape="rect" title=" " alt="" coords="5,152,61,177"/>
<area shape="poly" title=" " alt="" coords="109,106,60,145,57,141,106,102"/>
<area shape="rect" title=" " alt="" coords="86,152,157,177"/>
<area shape="poly" title=" " alt="" coords="124,104,124,138,119,138,119,104"/>
<area shape="rect" title=" " alt="" coords="181,152,256,177"/>
<area shape="poly" title=" " alt="" coords="139,102,193,141,190,146,135,106"/>
</map>
</div>
</div>
<p><a href="circularBuffer_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html">CircularBuffer&lt; T, CAPACITY &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fixed-size circular buffer with compile-time capacity and no-overwrite behavior. <a href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:namespacesdi__toolBox" id="r_namespacesdi__toolBox"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesdi__toolBox.html">sdi_toolBox</a></td></tr>
<tr class="memdesc:namespacesdi__toolBox"><td class="mdescLeft">&#160;</td><td class="mdescRight">Root namespace for the <a class="el" href="namespacesdi__toolBox.html" title="Root namespace for the sdi_toolBox library.">sdi_toolBox</a> library. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:namespacesdi__toolBox_1_1common" id="r_namespacesdi__toolBox_1_1common"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesdi__toolBox_1_1common.html">sdi_toolBox::common</a></td></tr>
<tr class="memdesc:namespacesdi__toolBox_1_1common"><td class="mdescLeft">&#160;</td><td class="mdescRight">Cross-platform, reusable components shared across all <a class="el" href="namespacesdi__toolBox.html" title="Root namespace for the sdi_toolBox library.">sdi_toolBox</a> modules. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:namespacesdi__toolBox_1_1common_1_1utils" id="r_namespacesdi__toolBox_1_1common_1_1utils"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesdi__toolBox_1_1common_1_1utils.html">sdi_toolBox::common::utils</a></td></tr>
<tr class="memdesc:namespacesdi__toolBox_1_1common_1_1utils"><td class="mdescLeft">&#160;</td><td class="mdescRight">General-purpose utility functions shared across all <a class="el" href="namespacesdi__toolBox.html" title="Root namespace for the sdi_toolBox library.">sdi_toolBox</a> modules. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
<!-- HTML footer for doxygen 1.9.8-->
<!-- start footer part -->
<hr class="footer"/><address class="footer">
<small>
SDi toolsBox is licensed under the terms and conditions of the <a href="https://opensource.org/licenses/zlib-license.php" target="_blank">zlib/png license</a>
<br />
Copyright (c) 2026 - SD-Innovation S.A.S. - FRANCE | ver: 2.x.x - build: 2026-04-28
<br />
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen" /></a> 1.9.8
</small>
</address>
</body>
</html>

View File

@@ -0,0 +1,11 @@
<map id="circularBuffer.h" name="circularBuffer.h">
<area shape="rect" id="Node000001" title=" " alt="" coords="61,5,181,31"/>
<area shape="rect" id="Node000002" href="$ringBuffer_8h.html" title=" " alt="" coords="73,79,170,104"/>
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="124,31,124,65,119,65,119,31"/>
<area shape="rect" id="Node000003" title=" " alt="" coords="5,152,61,177"/>
<area shape="poly" id="edge2_Node000002_Node000003" title=" " alt="" coords="109,106,60,145,57,141,106,102"/>
<area shape="rect" id="Node000004" title=" " alt="" coords="86,152,157,177"/>
<area shape="poly" id="edge3_Node000002_Node000004" title=" " alt="" coords="124,104,124,138,119,138,119,104"/>
<area shape="rect" id="Node000005" title=" " alt="" coords="181,152,256,177"/>
<area shape="poly" id="edge4_Node000002_Node000005" title=" " alt="" coords="139,102,193,141,190,146,135,106"/>
</map>

View File

@@ -0,0 +1 @@
b3a7e7800538a8e553aae8f89d98a2de

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

View File

@@ -0,0 +1,288 @@
<!-- HTML header for doxygen 1.9.8-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<title>SDi toolsBox</title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="custom_doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">sdi_toolBox
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',false,false,'search.php','Search');
});
/* @license-end */
</script>
<div id="main-nav"></div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function() { init_codefold(0); });
/* @license-end */
</script>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_1635ad76f8180971a36e709fb0d71e5a.html">toolBox</a></li><li class="navelem"><a class="el" href="dir_a330ae4cda0dd4c6ab0e77aa921b4b70.html">sdi_toolBox</a></li><li class="navelem"><a class="el" href="dir_54865fdb36137c23be3687ea6e83f837.html">common</a></li><li class="navelem"><a class="el" href="dir_d0c2fb49d0db32828bce9490aff92f8c.html">utils</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">circularBuffer.h</div></div>
</div><!--header-->
<div class="contents">
<a href="circularBuffer_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">/*</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment"> Copyright (c) 2026 - SD-Innovation S.A.S. - FRANCE</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment">*/</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span> </div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">/*</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment">ver: 2.x.x - build: 2026-04-28</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment">*/</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span> </div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment">/*</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment">The zlib License
Copyright (c) 2026 SD-Innovation S.A.S.
This software is provided as-is, without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source
distribution.
</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment">*/</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span> </div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="preprocessor">#pragma once</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span> </div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="preprocessor">#include &quot;<a class="code" href="ringBuffer_8h.html">ringBuffer.h</a>&quot;</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span> </div>
<div class="foldopen" id="foldopen00017" data-start="{" data-end="}">
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"><a class="line" href="namespacesdi__toolBox.html"> 17</a></span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespacesdi__toolBox_1_1common_1_1utils.html">sdi_toolBox::common::utils</a></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span>{</div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="comment">//--------------------------------------------------------------</span></div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span><span class="keyword">template</span>&lt;<span class="keyword">class</span> T, std::<span class="keywordtype">size_t</span> CAPACITY&gt;</div>
<div class="foldopen" id="foldopen00048" data-start="{" data-end="};">
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"><a class="line" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html"> 48</a></span><span class="keyword">class </span><a class="code hl_class" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html">CircularBuffer</a></div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span>{</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> <span class="keyword">static_assert</span>(CAPACITY &gt; 0, <span class="stringliteral">&quot;CAPACITY must be &gt; 0&quot;</span>);</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> </div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> </div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#a1e934fd7dc8ba5c9d3e59522f05c67f8">push</a>(<span class="keyword">const</span> T &amp;value);</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> </div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> </div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> std::optional&lt;T&gt; <a class="code hl_function" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#a44a53147d4b3600ec200300ea16e3707">pop</a>();</div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#a44a53147d4b3600ec200300ea16e3707">pop</a>(T &amp;value);</div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> </div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> [[nodiscard]] std::optional&lt;T&gt; <a class="code hl_function" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#a0920f451034bda88271b5f69bd324f5e">front</a>() <span class="keyword">const</span>;</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> </div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> [[nodiscard]] <span class="keywordtype">bool</span> <a class="code hl_function" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#a0920f451034bda88271b5f69bd324f5e">front</a>(T &amp;value) <span class="keyword">const</span>;</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> </div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> [[nodiscard]] std::optional&lt;T&gt; <a class="code hl_function" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#ab663c689eb6ec5369a0c6e33dfdee729">back</a>() <span class="keyword">const</span>;</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> </div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> [[nodiscard]] <span class="keywordtype">bool</span> <a class="code hl_function" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#ab663c689eb6ec5369a0c6e33dfdee729">back</a>(T &amp;value) <span class="keyword">const</span>;</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> </div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> </div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> [[nodiscard]] <span class="keywordtype">bool</span> <a class="code hl_function" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#a644718bb2fb240de962dc3c9a1fdf0dc">empty</a>() <span class="keyword">const</span>;</div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> </div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> [[nodiscard]] <span class="keywordtype">bool</span> <a class="code hl_function" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#a8abf3cf65268916fe1f1660fd9efd90a">full</a>() <span class="keyword">const</span>;</div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> </div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> [[nodiscard]] std::size_t <a class="code hl_function" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#ade1601ccf1fa3bcf050867f0852ca4e5">size</a>() <span class="keyword">const</span>;</div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> </div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> [[nodiscard]] <span class="keyword">constexpr</span> std::size_t <a class="code hl_function" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#adf1df7795354fd1fb99cb89bd54c4f93">capacity</a>() <span class="keyword">const</span>;</div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> </div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> </div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#ac8bb3912a3ce86b15842e79d0b421204">clear</a>();</div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> </div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> </div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> </div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> <a class="code hl_class" href="classsdi__toolBox_1_1common_1_1utils_1_1RingBuffer.html">RingBuffer&lt;T, CAPACITY&gt;</a> m_buffer{}; </div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> </div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span>};</div>
</div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span><span class="comment">//--------------------------------------------------------------</span></div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> </div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span><span class="comment">//--------------------------------------------------------------</span></div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span><span class="comment">/* Try to append a value to the buffer. If the buffer is full,</span></div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span><span class="comment"> * the value is discarded. Return true if the value was inserted,</span></div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span><span class="comment"> * false if the buffer was full. */</span></div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span><span class="keyword">template</span>&lt;<span class="keyword">class</span> T, std::<span class="keywordtype">size_t</span> CAPACITY&gt;</div>
<div class="foldopen" id="foldopen00178" data-start="{" data-end="}">
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"><a class="line" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#a1e934fd7dc8ba5c9d3e59522f05c67f8"> 178</a></span><span class="keywordtype">bool</span> <a class="code hl_function" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#a1e934fd7dc8ba5c9d3e59522f05c67f8">CircularBuffer&lt;T, CAPACITY&gt;::push</a>(<span class="keyword">const</span> T &amp;value)</div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span>{</div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> <span class="keywordflow">if</span> (m_buffer.full())</div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> <span class="keywordflow">return</span> m_buffer.<a class="code hl_function" href="classsdi__toolBox_1_1common_1_1utils_1_1RingBuffer.html#a1e934fd7dc8ba5c9d3e59522f05c67f8">push</a>(value);</div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span>}</div>
</div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span><span class="comment">//--------------------------------------------------------------</span></div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span><span class="comment">/* Remove and return the oldest value from the buffer. If the</span></div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span><span class="comment"> * buffer is empty, return std::nullopt */</span></div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span><span class="keyword">template</span>&lt;<span class="keyword">class</span> T, std::<span class="keywordtype">size_t</span> CAPACITY&gt;</div>
<div class="foldopen" id="foldopen00188" data-start="{" data-end="}">
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"><a class="line" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#a44a53147d4b3600ec200300ea16e3707"> 188</a></span>std::optional&lt;T&gt; <a class="code hl_function" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#a44a53147d4b3600ec200300ea16e3707">CircularBuffer&lt;T, CAPACITY&gt;::pop</a>()</div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span>{</div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> <span class="keywordflow">return</span> m_buffer.pop();</div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span>}</div>
</div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span><span class="comment">//--------------------------------------------------------------</span></div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span><span class="comment">/* Remove the oldest value from the buffer and store it in</span></div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span><span class="comment"> * &#39;value&#39;. Return true if successful, false if the buffer is empty */</span></div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span><span class="keyword">template</span>&lt;<span class="keyword">class</span> T, std::<span class="keywordtype">size_t</span> CAPACITY&gt;</div>
<div class="foldopen" id="foldopen00196" data-start="{" data-end="}">
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"><a class="line" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#a7e56f823fd199baf6badc044e6b7b7f2"> 196</a></span><span class="keywordtype">bool</span> <a class="code hl_function" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#a44a53147d4b3600ec200300ea16e3707">CircularBuffer&lt;T, CAPACITY&gt;::pop</a>(T &amp;value)</div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span>{</div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span> <span class="keywordflow">return</span> m_buffer.pop(value);</div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span>}</div>
</div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span><span class="comment">//--------------------------------------------------------------</span></div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span><span class="comment">/* Return the oldest value without removing it. If the buffer is</span></div>
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span><span class="comment"> * empty, return std::nullopt */</span></div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span><span class="keyword">template</span>&lt;<span class="keyword">class</span> T, std::<span class="keywordtype">size_t</span> CAPACITY&gt;</div>
<div class="foldopen" id="foldopen00204" data-start="{" data-end="}">
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"><a class="line" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#a0920f451034bda88271b5f69bd324f5e"> 204</a></span>std::optional&lt;T&gt; <a class="code hl_function" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#a0920f451034bda88271b5f69bd324f5e">CircularBuffer&lt;T, CAPACITY&gt;::front</a>()<span class="keyword"> const</span></div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span><span class="keyword"></span>{</div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span> <span class="keywordflow">return</span> m_buffer.front();</div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span>}</div>
</div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span><span class="comment">//--------------------------------------------------------------</span></div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span><span class="comment">/* Return the oldest value without removing it and store it in</span></div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span><span class="comment"> * &#39;value&#39;. Return true if successful, false if the buffer is empty */</span></div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span><span class="keyword">template</span>&lt;<span class="keyword">class</span> T, std::<span class="keywordtype">size_t</span> CAPACITY&gt;</div>
<div class="foldopen" id="foldopen00212" data-start="{" data-end="}">
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"><a class="line" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#a080817748fcd320c071f781b94aed283"> 212</a></span><span class="keywordtype">bool</span> <a class="code hl_function" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#a0920f451034bda88271b5f69bd324f5e">CircularBuffer&lt;T, CAPACITY&gt;::front</a>(T &amp;value)<span class="keyword"> const</span></div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span><span class="keyword"></span>{</div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span> <span class="keywordflow">return</span> m_buffer.front(value);</div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span>}</div>
</div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span><span class="comment">//--------------------------------------------------------------</span></div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span><span class="comment">/* Return the newest value without removing it. If the buffer is</span></div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span><span class="comment"> * empty, return std::nullopt */</span></div>
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span><span class="keyword">template</span>&lt;<span class="keyword">class</span> T, std::<span class="keywordtype">size_t</span> CAPACITY&gt;</div>
<div class="foldopen" id="foldopen00220" data-start="{" data-end="}">
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"><a class="line" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#ab663c689eb6ec5369a0c6e33dfdee729"> 220</a></span>std::optional&lt;T&gt; <a class="code hl_function" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#ab663c689eb6ec5369a0c6e33dfdee729">CircularBuffer&lt;T, CAPACITY&gt;::back</a>()<span class="keyword"> const</span></div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span><span class="keyword"></span>{</div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span> <span class="keywordflow">return</span> m_buffer.back();</div>
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span>}</div>
</div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span><span class="comment">//--------------------------------------------------------------</span></div>
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span><span class="comment">/* Return the newest value without removing it and store it in</span></div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span><span class="comment"> * &#39;value&#39;. Return true if successful, false if the buffer is empty */</span></div>
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"> 227</span><span class="keyword">template</span>&lt;<span class="keyword">class</span> T, std::<span class="keywordtype">size_t</span> CAPACITY&gt;</div>
<div class="foldopen" id="foldopen00228" data-start="{" data-end="}">
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"><a class="line" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#a3785129392466b941567c8b6c5f4f849"> 228</a></span><span class="keywordtype">bool</span> <a class="code hl_function" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#ab663c689eb6ec5369a0c6e33dfdee729">CircularBuffer&lt;T, CAPACITY&gt;::back</a>(T &amp;value)<span class="keyword"> const</span></div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span><span class="keyword"></span>{</div>
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span> <span class="keywordflow">return</span> m_buffer.back(value);</div>
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span>}</div>
</div>
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span><span class="comment">//--------------------------------------------------------------</span></div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span><span class="comment">/* Check if the buffer is empty */</span></div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span><span class="keyword">template</span>&lt;<span class="keyword">class</span> T, std::<span class="keywordtype">size_t</span> CAPACITY&gt;</div>
<div class="foldopen" id="foldopen00235" data-start="{" data-end="}">
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"><a class="line" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#a644718bb2fb240de962dc3c9a1fdf0dc"> 235</a></span><span class="keywordtype">bool</span> <a class="code hl_function" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#a644718bb2fb240de962dc3c9a1fdf0dc">CircularBuffer&lt;T, CAPACITY&gt;::empty</a>()<span class="keyword"> const</span></div>
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span><span class="keyword"></span>{</div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span> <span class="keywordflow">return</span> m_buffer.empty();</div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span>}</div>
</div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span><span class="comment">//--------------------------------------------------------------</span></div>
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span><span class="comment">/* Check if the buffer is full */</span></div>
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"> 241</span><span class="keyword">template</span>&lt;<span class="keyword">class</span> T, std::<span class="keywordtype">size_t</span> CAPACITY&gt;</div>
<div class="foldopen" id="foldopen00242" data-start="{" data-end="}">
<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"><a class="line" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#a8abf3cf65268916fe1f1660fd9efd90a"> 242</a></span><span class="keywordtype">bool</span> <a class="code hl_function" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#a8abf3cf65268916fe1f1660fd9efd90a">CircularBuffer&lt;T, CAPACITY&gt;::full</a>()<span class="keyword"> const</span></div>
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"> 243</span><span class="keyword"></span>{</div>
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span> <span class="keywordflow">return</span> m_buffer.full();</div>
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"> 245</span>}</div>
</div>
<div class="line"><a id="l00246" name="l00246"></a><span class="lineno"> 246</span><span class="comment">//--------------------------------------------------------------</span></div>
<div class="line"><a id="l00247" name="l00247"></a><span class="lineno"> 247</span><span class="comment">/* Get the number of elements currently in the buffer */</span></div>
<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"> 248</span><span class="keyword">template</span>&lt;<span class="keyword">class</span> T, std::<span class="keywordtype">size_t</span> CAPACITY&gt;</div>
<div class="foldopen" id="foldopen00249" data-start="{" data-end="}">
<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"><a class="line" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#ade1601ccf1fa3bcf050867f0852ca4e5"> 249</a></span>std::size_t <a class="code hl_function" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#ade1601ccf1fa3bcf050867f0852ca4e5">CircularBuffer&lt;T, CAPACITY&gt;::size</a>()<span class="keyword"> const</span></div>
<div class="line"><a id="l00250" name="l00250"></a><span class="lineno"> 250</span><span class="keyword"></span>{</div>
<div class="line"><a id="l00251" name="l00251"></a><span class="lineno"> 251</span> <span class="keywordflow">return</span> m_buffer.size();</div>
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"> 252</span>}</div>
</div>
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"> 253</span><span class="comment">//--------------------------------------------------------------</span></div>
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"> 254</span><span class="comment">/* Get the maximum capacity of the buffer */</span></div>
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span><span class="keyword">template</span>&lt;<span class="keyword">class</span> T, std::<span class="keywordtype">size_t</span> CAPACITY&gt;</div>
<div class="foldopen" id="foldopen00256" data-start="{" data-end="}">
<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"><a class="line" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#adf1df7795354fd1fb99cb89bd54c4f93"> 256</a></span>[[nodiscard]] <span class="keyword">constexpr</span> std::size_t <a class="code hl_function" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#adf1df7795354fd1fb99cb89bd54c4f93">CircularBuffer&lt;T, CAPACITY&gt;::capacity</a>()<span class="keyword"> const</span></div>
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span><span class="keyword"></span>{</div>
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span> <span class="keywordflow">return</span> CAPACITY;</div>
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"> 259</span>}</div>
</div>
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span><span class="comment">//--------------------------------------------------------------</span></div>
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span><span class="comment">/* Clear the buffer, resetting it to an empty state */</span></div>
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span><span class="keyword">template</span>&lt;<span class="keyword">class</span> T, std::<span class="keywordtype">size_t</span> CAPACITY&gt;</div>
<div class="foldopen" id="foldopen00263" data-start="{" data-end="}">
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"><a class="line" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#ac8bb3912a3ce86b15842e79d0b421204"> 263</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#ac8bb3912a3ce86b15842e79d0b421204">CircularBuffer&lt;T, CAPACITY&gt;::clear</a>()</div>
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"> 264</span>{</div>
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"> 265</span> m_buffer.clear();</div>
<div class="line"><a id="l00266" name="l00266"></a><span class="lineno"> 266</span>}</div>
</div>
<div class="line"><a id="l00267" name="l00267"></a><span class="lineno"> 267</span><span class="comment">//--------------------------------------------------------------</span></div>
<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"> 268</span>} <span class="comment">// namespace sdi_toolBox::common::utils</span></div>
</div>
<div class="ttc" id="aclasssdi__toolBox_1_1common_1_1utils_1_1CircularBuffer_html"><div class="ttname"><a href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html">sdi_toolBox::common::utils::CircularBuffer</a></div><div class="ttdoc">Fixed-size circular buffer with compile-time capacity and no-overwrite behavior.</div><div class="ttdef"><b>Definition</b> <a href="circularBuffer_8h_source.html#l00048">circularBuffer.h:49</a></div></div>
<div class="ttc" id="aclasssdi__toolBox_1_1common_1_1utils_1_1CircularBuffer_html_a0920f451034bda88271b5f69bd324f5e"><div class="ttname"><a href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#a0920f451034bda88271b5f69bd324f5e">sdi_toolBox::common::utils::CircularBuffer::front</a></div><div class="ttdeci">std::optional&lt; T &gt; front() const</div><div class="ttdoc">Return (without removing) the oldest element.</div><div class="ttdef"><b>Definition</b> <a href="circularBuffer_8h_source.html#l00204">circularBuffer.h:204</a></div></div>
<div class="ttc" id="aclasssdi__toolBox_1_1common_1_1utils_1_1CircularBuffer_html_a1e934fd7dc8ba5c9d3e59522f05c67f8"><div class="ttname"><a href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#a1e934fd7dc8ba5c9d3e59522f05c67f8">sdi_toolBox::common::utils::CircularBuffer::push</a></div><div class="ttdeci">bool push(const T &amp;value)</div><div class="ttdoc">Try to append a value to the buffer.</div><div class="ttdef"><b>Definition</b> <a href="circularBuffer_8h_source.html#l00178">circularBuffer.h:178</a></div></div>
<div class="ttc" id="aclasssdi__toolBox_1_1common_1_1utils_1_1CircularBuffer_html_a44a53147d4b3600ec200300ea16e3707"><div class="ttname"><a href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#a44a53147d4b3600ec200300ea16e3707">sdi_toolBox::common::utils::CircularBuffer::pop</a></div><div class="ttdeci">std::optional&lt; T &gt; pop()</div><div class="ttdoc">Remove and return the oldest element from the buffer.</div><div class="ttdef"><b>Definition</b> <a href="circularBuffer_8h_source.html#l00188">circularBuffer.h:188</a></div></div>
<div class="ttc" id="aclasssdi__toolBox_1_1common_1_1utils_1_1CircularBuffer_html_a644718bb2fb240de962dc3c9a1fdf0dc"><div class="ttname"><a href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#a644718bb2fb240de962dc3c9a1fdf0dc">sdi_toolBox::common::utils::CircularBuffer::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdoc">Check whether the buffer is empty.</div><div class="ttdef"><b>Definition</b> <a href="circularBuffer_8h_source.html#l00235">circularBuffer.h:235</a></div></div>
<div class="ttc" id="aclasssdi__toolBox_1_1common_1_1utils_1_1CircularBuffer_html_a8abf3cf65268916fe1f1660fd9efd90a"><div class="ttname"><a href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#a8abf3cf65268916fe1f1660fd9efd90a">sdi_toolBox::common::utils::CircularBuffer::full</a></div><div class="ttdeci">bool full() const</div><div class="ttdoc">Check whether the buffer is full.</div><div class="ttdef"><b>Definition</b> <a href="circularBuffer_8h_source.html#l00242">circularBuffer.h:242</a></div></div>
<div class="ttc" id="aclasssdi__toolBox_1_1common_1_1utils_1_1CircularBuffer_html_ab663c689eb6ec5369a0c6e33dfdee729"><div class="ttname"><a href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#ab663c689eb6ec5369a0c6e33dfdee729">sdi_toolBox::common::utils::CircularBuffer::back</a></div><div class="ttdeci">std::optional&lt; T &gt; back() const</div><div class="ttdoc">Return (without removing) the newest element.</div><div class="ttdef"><b>Definition</b> <a href="circularBuffer_8h_source.html#l00220">circularBuffer.h:220</a></div></div>
<div class="ttc" id="aclasssdi__toolBox_1_1common_1_1utils_1_1CircularBuffer_html_ac8bb3912a3ce86b15842e79d0b421204"><div class="ttname"><a href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#ac8bb3912a3ce86b15842e79d0b421204">sdi_toolBox::common::utils::CircularBuffer::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Clear the buffer and reset internal indices.</div><div class="ttdef"><b>Definition</b> <a href="circularBuffer_8h_source.html#l00263">circularBuffer.h:263</a></div></div>
<div class="ttc" id="aclasssdi__toolBox_1_1common_1_1utils_1_1CircularBuffer_html_ade1601ccf1fa3bcf050867f0852ca4e5"><div class="ttname"><a href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#ade1601ccf1fa3bcf050867f0852ca4e5">sdi_toolBox::common::utils::CircularBuffer::size</a></div><div class="ttdeci">std::size_t size() const</div><div class="ttdoc">Number of elements currently stored in the buffer.</div><div class="ttdef"><b>Definition</b> <a href="circularBuffer_8h_source.html#l00249">circularBuffer.h:249</a></div></div>
<div class="ttc" id="aclasssdi__toolBox_1_1common_1_1utils_1_1CircularBuffer_html_adf1df7795354fd1fb99cb89bd54c4f93"><div class="ttname"><a href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#adf1df7795354fd1fb99cb89bd54c4f93">sdi_toolBox::common::utils::CircularBuffer::capacity</a></div><div class="ttdeci">constexpr std::size_t capacity() const</div><div class="ttdoc">Compile-time capacity of the buffer.</div><div class="ttdef"><b>Definition</b> <a href="circularBuffer_8h_source.html#l00256">circularBuffer.h:256</a></div></div>
<div class="ttc" id="aclasssdi__toolBox_1_1common_1_1utils_1_1RingBuffer_html"><div class="ttname"><a href="classsdi__toolBox_1_1common_1_1utils_1_1RingBuffer.html">sdi_toolBox::common::utils::RingBuffer</a></div><div class="ttdoc">Fixed-size ring (circular) buffer with compile-time capacity and overwrite-on-full behavior.</div><div class="ttdef"><b>Definition</b> <a href="ringBuffer_8h_source.html#l00049">ringBuffer.h:50</a></div></div>
<div class="ttc" id="aclasssdi__toolBox_1_1common_1_1utils_1_1RingBuffer_html_a1e934fd7dc8ba5c9d3e59522f05c67f8"><div class="ttname"><a href="classsdi__toolBox_1_1common_1_1utils_1_1RingBuffer.html#a1e934fd7dc8ba5c9d3e59522f05c67f8">sdi_toolBox::common::utils::RingBuffer::push</a></div><div class="ttdeci">bool push(const T &amp;value)</div><div class="ttdoc">Append a value to the buffer.</div><div class="ttdef"><b>Definition</b> <a href="ringBuffer_8h_source.html#l00196">ringBuffer.h:196</a></div></div>
<div class="ttc" id="anamespacesdi__toolBox_1_1common_1_1utils_html"><div class="ttname"><a href="namespacesdi__toolBox_1_1common_1_1utils.html">sdi_toolBox::common::utils</a></div><div class="ttdoc">General-purpose utility functions shared across all sdi_toolBox modules.</div><div class="ttdef"><b>Definition</b> <a href="circularBuffer_8h_source.html#l00017">circularBuffer.h:18</a></div></div>
<div class="ttc" id="aringBuffer_8h_html"><div class="ttname"><a href="ringBuffer_8h.html">ringBuffer.h</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- HTML footer for doxygen 1.9.8-->
<!-- start footer part -->
<hr class="footer"/><address class="footer">
<small>
SDi toolsBox is licensed under the terms and conditions of the <a href="https://opensource.org/licenses/zlib-license.php" target="_blank">zlib/png license</a>
<br />
Copyright (c) 2026 - SD-Innovation S.A.S. - FRANCE | ver: 2.x.x - build: 2026-04-28
<br />
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen" /></a> 1.9.8
</small>
</address>
</body>

View File

@@ -0,0 +1,84 @@
<!-- HTML header for doxygen 1.9.8-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<title>SDi toolsBox</title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="custom_doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">sdi_toolBox
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',false,false,'search.php','Search');
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">Class Index</div></div>
</div><!--header-->
<div class="contents">
<div class="qindex"><a class="qindex" href="#letter_B">B</a>&#160;|&#160;<a class="qindex" href="#letter_C">C</a>&#160;|&#160;<a class="qindex" href="#letter_I">I</a>&#160;|&#160;<a class="qindex" href="#letter_M">M</a>&#160;|&#160;<a class="qindex" href="#letter_N">N</a>&#160;|&#160;<a class="qindex" href="#letter_R">R</a>&#160;|&#160;<a class="qindex" href="#letter_W">W</a></div>
<div class="classindex">
<dl class="classindex even">
<dt class="alphachar"><a id="letter_B" name="letter_B">B</a></dt>
<dd><a class="el" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html">Base64</a> (<a class="el" href="namespacesdi__toolBox_1_1desktop_1_1utils.html">sdi_toolBox::desktop::utils</a>)</dd><dd><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a> (<a class="el" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html">sdi_toolBox::desktop::eventBus</a>)</dd></dl>
<dl class="classindex odd">
<dt class="alphachar"><a id="letter_C" name="letter_C">C</a></dt>
<dd><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html">CircularBuffer</a> (<a class="el" href="namespacesdi__toolBox_1_1common_1_1utils.html">sdi_toolBox::common::utils</a>)</dd></dl>
<dl class="classindex even">
<dt class="alphachar"><a id="letter_I" name="letter_I">I</a></dt>
<dd><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a> (<a class="el" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html">sdi_toolBox::desktop::eventBus</a>)</dd></dl>
<dl class="classindex odd">
<dt class="alphachar"><a id="letter_M" name="letter_M">M</a></dt>
<dd><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html">Message</a> (<a class="el" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html">sdi_toolBox::desktop::eventBus</a>)</dd></dl>
<dl class="classindex even">
<dt class="alphachar"><a id="letter_N" name="letter_N">N</a></dt>
<dd><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html">Node</a> (<a class="el" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html">sdi_toolBox::desktop::eventBus</a>)</dd></dl>
<dl class="classindex odd">
<dt class="alphachar"><a id="letter_R" name="letter_R">R</a></dt>
<dd><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1RingBuffer.html">RingBuffer</a> (<a class="el" href="namespacesdi__toolBox_1_1common_1_1utils.html">sdi_toolBox::common::utils</a>)</dd></dl>
<dl class="classindex even">
<dt class="alphachar"><a id="letter_W" name="letter_W">W</a></dt>
<dd><a class="el" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html">Wildcard</a> (<a class="el" href="namespacesdi__toolBox_1_1desktop_1_1wxWidgets.html">sdi_toolBox::desktop::wxWidgets</a>)</dd><dd><a class="el" href="structsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard_1_1WildcardEntry.html">Wildcard::WildcardEntry</a> (<a class="el" href="namespacesdi__toolBox_1_1desktop_1_1wxWidgets.html">sdi_toolBox::desktop::wxWidgets</a>)</dd></dl>
</div>
</div><!-- contents -->
<!-- HTML footer for doxygen 1.9.8-->
<!-- start footer part -->
<hr class="footer"/><address class="footer">
<small>
SDi toolsBox is licensed under the terms and conditions of the <a href="https://opensource.org/licenses/zlib-license.php" target="_blank">zlib/png license</a>
<br />
Copyright (c) 2026 - SD-Innovation S.A.S. - FRANCE | ver: 2.x.x - build: 2026-04-28
<br />
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen" /></a> 1.9.8
</small>
</address>
</body>
</html>

View File

@@ -0,0 +1,79 @@
<!-- HTML header for doxygen 1.9.8-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<title>SDi toolsBox</title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="custom_doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">sdi_toolBox
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',false,false,'search.php','Search');
});
/* @license-end */
</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacesdi__toolBox.html">sdi_toolBox</a></li><li class="navelem"><a class="el" href="namespacesdi__toolBox_1_1common.html">common</a></li><li class="navelem"><a class="el" href="namespacesdi__toolBox_1_1common_1_1utils.html">utils</a></li><li class="navelem"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html">CircularBuffer</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">CircularBuffer&lt; T, CAPACITY &gt; Member List</div></div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html">CircularBuffer&lt; T, CAPACITY &gt;</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#ab663c689eb6ec5369a0c6e33dfdee729">back</a>() const</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html">CircularBuffer&lt; T, CAPACITY &gt;</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#a3785129392466b941567c8b6c5f4f849">back</a>(T &amp;value) const</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html">CircularBuffer&lt; T, CAPACITY &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#adf1df7795354fd1fb99cb89bd54c4f93">capacity</a>() const</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html">CircularBuffer&lt; T, CAPACITY &gt;</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#ac8bb3912a3ce86b15842e79d0b421204">clear</a>()</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html">CircularBuffer&lt; T, CAPACITY &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#a644718bb2fb240de962dc3c9a1fdf0dc">empty</a>() const</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html">CircularBuffer&lt; T, CAPACITY &gt;</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#a0920f451034bda88271b5f69bd324f5e">front</a>() const</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html">CircularBuffer&lt; T, CAPACITY &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#a080817748fcd320c071f781b94aed283">front</a>(T &amp;value) const</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html">CircularBuffer&lt; T, CAPACITY &gt;</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#a8abf3cf65268916fe1f1660fd9efd90a">full</a>() const</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html">CircularBuffer&lt; T, CAPACITY &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#a44a53147d4b3600ec200300ea16e3707">pop</a>()</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html">CircularBuffer&lt; T, CAPACITY &gt;</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#a7e56f823fd199baf6badc044e6b7b7f2">pop</a>(T &amp;value)</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html">CircularBuffer&lt; T, CAPACITY &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#a1e934fd7dc8ba5c9d3e59522f05c67f8">push</a>(const T &amp;value)</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html">CircularBuffer&lt; T, CAPACITY &gt;</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#ade1601ccf1fa3bcf050867f0852ca4e5">size</a>() const</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html">CircularBuffer&lt; T, CAPACITY &gt;</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
<!-- HTML footer for doxygen 1.9.8-->
<!-- start footer part -->
<hr class="footer"/><address class="footer">
<small>
SDi toolsBox is licensed under the terms and conditions of the <a href="https://opensource.org/licenses/zlib-license.php" target="_blank">zlib/png license</a>
<br />
Copyright (c) 2026 - SD-Innovation S.A.S. - FRANCE | ver: 2.x.x - build: 2026-04-28
<br />
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen" /></a> 1.9.8
</small>
</address>
</body>
</html>

View File

@@ -0,0 +1,463 @@
<!-- HTML header for doxygen 1.9.8-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<title>SDi toolsBox</title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="custom_doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">sdi_toolBox
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',false,false,'search.php','Search');
});
/* @license-end */
</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacesdi__toolBox.html">sdi_toolBox</a></li><li class="navelem"><a class="el" href="namespacesdi__toolBox_1_1common.html">common</a></li><li class="navelem"><a class="el" href="namespacesdi__toolBox_1_1common_1_1utils.html">utils</a></li><li class="navelem"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html">CircularBuffer</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer-members.html">List of all members</a> </div>
<div class="headertitle"><div class="title">CircularBuffer&lt; T, CAPACITY &gt; Class Template Reference</div></div>
</div><!--header-->
<div class="contents">
<p><code>#include &lt;<a class="el" href="circularBuffer_8h_source.html">circularBuffer.h</a>&gt;</code></p>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><div class="compoundTemplParams">template&lt;class T, std::size_t CAPACITY&gt;<br />
class sdi_toolBox::common::utils::CircularBuffer&lt; T, CAPACITY &gt;</div><p>Fixed-size circular buffer with compile-time capacity and no-overwrite behavior. </p>
<p>This template wraps a <a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1RingBuffer.html" title="Fixed-size ring (circular) buffer with compile-time capacity and overwrite-on-full behavior.">RingBuffer</a> and prevents new elements from being written when the buffer is full. Existing data is never overwritten; <a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#a1e934fd7dc8ba5c9d3e59522f05c67f8" title="Try to append a value to the buffer.">push()</a> simply fails and returns false when capacity is reached.</p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">T</td><td>Element type stored in the buffer. </td></tr>
<tr><td class="paramname">CAPACITY</td><td>Compile-time buffer capacity. Must be &gt; 0.</td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>The class provides both optional-returning and out-parameter overloads for pop/front/back to suit different runtime constraints. </dd></dl>
<dl class="section warning"><dt>Warning</dt><dd>Instantiating with CAPACITY == 0 is forbidden (static_assert).</dd></dl>
<div class="fragment"><div class="line"><a class="code hl_class" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html">CircularBuffer&lt;int, 8&gt;</a> cb;</div>
<div class="line"><span class="keywordflow">if</span> (cb.<a class="code hl_function" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#a1e934fd7dc8ba5c9d3e59522f05c67f8">push</a>(42))</div>
<div class="line">{</div>
<div class="line"> <span class="comment">// element was inserted</span></div>
<div class="line">}</div>
<div class="line"><span class="keywordflow">else</span></div>
<div class="line">{</div>
<div class="line"> <span class="comment">// buffer was full, element was discarded</span></div>
<div class="line">}</div>
<div class="ttc" id="aclasssdi__toolBox_1_1common_1_1utils_1_1CircularBuffer_html"><div class="ttname"><a href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html">sdi_toolBox::common::utils::CircularBuffer</a></div><div class="ttdoc">Fixed-size circular buffer with compile-time capacity and no-overwrite behavior.</div><div class="ttdef"><b>Definition</b> <a href="circularBuffer_8h_source.html#l00048">circularBuffer.h:49</a></div></div>
<div class="ttc" id="aclasssdi__toolBox_1_1common_1_1utils_1_1CircularBuffer_html_a1e934fd7dc8ba5c9d3e59522f05c67f8"><div class="ttname"><a href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#a1e934fd7dc8ba5c9d3e59522f05c67f8">sdi_toolBox::common::utils::CircularBuffer::push</a></div><div class="ttdeci">bool push(const T &amp;value)</div><div class="ttdoc">Try to append a value to the buffer.</div><div class="ttdef"><b>Definition</b> <a href="circularBuffer_8h_source.html#l00178">circularBuffer.h:178</a></div></div>
</div><!-- fragment -->
<p class="definition">Definition at line <a class="el" href="circularBuffer_8h_source.html#l00048">48</a> of file <a class="el" href="circularBuffer_8h_source.html">circularBuffer.h</a>.</p>
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Write operations</div></td></tr>
<tr class="memitem:a1e934fd7dc8ba5c9d3e59522f05c67f8" id="r_a1e934fd7dc8ba5c9d3e59522f05c67f8"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#a1e934fd7dc8ba5c9d3e59522f05c67f8">push</a> (const T &amp;value)</td></tr>
<tr class="memdesc:a1e934fd7dc8ba5c9d3e59522f05c67f8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Try to append a value to the buffer. <br /></td></tr>
<tr class="separator:a1e934fd7dc8ba5c9d3e59522f05c67f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Read operations</div></td></tr>
<tr class="memitem:a44a53147d4b3600ec200300ea16e3707" id="r_a44a53147d4b3600ec200300ea16e3707"><td class="memItemLeft" align="right" valign="top">std::optional&lt; T &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#a44a53147d4b3600ec200300ea16e3707">pop</a> ()</td></tr>
<tr class="memdesc:a44a53147d4b3600ec200300ea16e3707"><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove and return the oldest element from the buffer. <br /></td></tr>
<tr class="separator:a44a53147d4b3600ec200300ea16e3707"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7e56f823fd199baf6badc044e6b7b7f2" id="r_a7e56f823fd199baf6badc044e6b7b7f2"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#a7e56f823fd199baf6badc044e6b7b7f2">pop</a> (T &amp;value)</td></tr>
<tr class="memdesc:a7e56f823fd199baf6badc044e6b7b7f2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove the oldest element and store it in the provided reference. <br /></td></tr>
<tr class="separator:a7e56f823fd199baf6badc044e6b7b7f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0920f451034bda88271b5f69bd324f5e" id="r_a0920f451034bda88271b5f69bd324f5e"><td class="memItemLeft" align="right" valign="top">std::optional&lt; T &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#a0920f451034bda88271b5f69bd324f5e">front</a> () const</td></tr>
<tr class="memdesc:a0920f451034bda88271b5f69bd324f5e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return (without removing) the oldest element. <br /></td></tr>
<tr class="separator:a0920f451034bda88271b5f69bd324f5e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a080817748fcd320c071f781b94aed283" id="r_a080817748fcd320c071f781b94aed283"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#a080817748fcd320c071f781b94aed283">front</a> (T &amp;value) const</td></tr>
<tr class="memdesc:a080817748fcd320c071f781b94aed283"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy the oldest element into the provided reference without removing it. <br /></td></tr>
<tr class="separator:a080817748fcd320c071f781b94aed283"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab663c689eb6ec5369a0c6e33dfdee729" id="r_ab663c689eb6ec5369a0c6e33dfdee729"><td class="memItemLeft" align="right" valign="top">std::optional&lt; T &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#ab663c689eb6ec5369a0c6e33dfdee729">back</a> () const</td></tr>
<tr class="memdesc:ab663c689eb6ec5369a0c6e33dfdee729"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return (without removing) the newest element. <br /></td></tr>
<tr class="separator:ab663c689eb6ec5369a0c6e33dfdee729"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3785129392466b941567c8b6c5f4f849" id="r_a3785129392466b941567c8b6c5f4f849"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#a3785129392466b941567c8b6c5f4f849">back</a> (T &amp;value) const</td></tr>
<tr class="memdesc:a3785129392466b941567c8b6c5f4f849"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy the newest element into the provided reference without removing it. <br /></td></tr>
<tr class="separator:a3785129392466b941567c8b6c5f4f849"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">State queries</div></td></tr>
<tr class="memitem:a644718bb2fb240de962dc3c9a1fdf0dc" id="r_a644718bb2fb240de962dc3c9a1fdf0dc"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#a644718bb2fb240de962dc3c9a1fdf0dc">empty</a> () const</td></tr>
<tr class="memdesc:a644718bb2fb240de962dc3c9a1fdf0dc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check whether the buffer is empty. <br /></td></tr>
<tr class="separator:a644718bb2fb240de962dc3c9a1fdf0dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8abf3cf65268916fe1f1660fd9efd90a" id="r_a8abf3cf65268916fe1f1660fd9efd90a"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#a8abf3cf65268916fe1f1660fd9efd90a">full</a> () const</td></tr>
<tr class="memdesc:a8abf3cf65268916fe1f1660fd9efd90a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check whether the buffer is full. <br /></td></tr>
<tr class="separator:a8abf3cf65268916fe1f1660fd9efd90a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ade1601ccf1fa3bcf050867f0852ca4e5" id="r_ade1601ccf1fa3bcf050867f0852ca4e5"><td class="memItemLeft" align="right" valign="top">std::size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#ade1601ccf1fa3bcf050867f0852ca4e5">size</a> () const</td></tr>
<tr class="memdesc:ade1601ccf1fa3bcf050867f0852ca4e5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Number of elements currently stored in the buffer. <br /></td></tr>
<tr class="separator:ade1601ccf1fa3bcf050867f0852ca4e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adf1df7795354fd1fb99cb89bd54c4f93" id="r_adf1df7795354fd1fb99cb89bd54c4f93"><td class="memItemLeft" align="right" valign="top">constexpr std::size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#adf1df7795354fd1fb99cb89bd54c4f93">capacity</a> () const</td></tr>
<tr class="memdesc:adf1df7795354fd1fb99cb89bd54c4f93"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compile-time capacity of the buffer. <br /></td></tr>
<tr class="separator:adf1df7795354fd1fb99cb89bd54c4f93"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Modifiers</div></td></tr>
<tr class="memitem:ac8bb3912a3ce86b15842e79d0b421204" id="r_ac8bb3912a3ce86b15842e79d0b421204"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#ac8bb3912a3ce86b15842e79d0b421204">clear</a> ()</td></tr>
<tr class="memdesc:ac8bb3912a3ce86b15842e79d0b421204"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear the buffer and reset internal indices. <br /></td></tr>
<tr class="separator:ac8bb3912a3ce86b15842e79d0b421204"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a1e934fd7dc8ba5c9d3e59522f05c67f8" name="a1e934fd7dc8ba5c9d3e59522f05c67f8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1e934fd7dc8ba5c9d3e59522f05c67f8">&#9670;&#160;</a></span>push()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T , std::size_t CAPACITY&gt; </div>
<table class="memname">
<tr>
<td class="memname">bool push </td>
<td>(</td>
<td class="paramtype">const T &amp;&#160;</td>
<td class="paramname"><em>value</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Try to append a value to the buffer. </p>
<p>If the buffer is full, the value is discarded and no overwrite occurs. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">value</td><td>Value to append (copied).</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if the value was inserted, false if the buffer was full. </dd></dl>
<p class="definition">Definition at line <a class="el" href="circularBuffer_8h_source.html#l00178">178</a> of file <a class="el" href="circularBuffer_8h_source.html">circularBuffer.h</a>.</p>
</div>
</div>
<a id="a44a53147d4b3600ec200300ea16e3707" name="a44a53147d4b3600ec200300ea16e3707"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a44a53147d4b3600ec200300ea16e3707">&#9670;&#160;</a></span>pop() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T , std::size_t CAPACITY&gt; </div>
<table class="memname">
<tr>
<td class="memname">std::optional&lt; T &gt; pop </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Remove and return the oldest element from the buffer. </p>
<dl class="section return"><dt>Returns</dt><dd>std::optional&lt;T&gt; The oldest element if present, std::nullopt if empty. </dd></dl>
<p class="definition">Definition at line <a class="el" href="circularBuffer_8h_source.html#l00188">188</a> of file <a class="el" href="circularBuffer_8h_source.html">circularBuffer.h</a>.</p>
</div>
</div>
<a id="a7e56f823fd199baf6badc044e6b7b7f2" name="a7e56f823fd199baf6badc044e6b7b7f2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7e56f823fd199baf6badc044e6b7b7f2">&#9670;&#160;</a></span>pop() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T , std::size_t CAPACITY&gt; </div>
<table class="memname">
<tr>
<td class="memname">bool pop </td>
<td>(</td>
<td class="paramtype">T &amp;&#160;</td>
<td class="paramname"><em>value</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Remove the oldest element and store it in the provided reference. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">value</td><td>Output reference that receives the removed element.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if an element was removed, false if the buffer was empty. </dd></dl>
<p class="definition">Definition at line <a class="el" href="circularBuffer_8h_source.html#l00196">196</a> of file <a class="el" href="circularBuffer_8h_source.html">circularBuffer.h</a>.</p>
</div>
</div>
<a id="a0920f451034bda88271b5f69bd324f5e" name="a0920f451034bda88271b5f69bd324f5e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0920f451034bda88271b5f69bd324f5e">&#9670;&#160;</a></span>front() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T , std::size_t CAPACITY&gt; </div>
<table class="memname">
<tr>
<td class="memname">std::optional&lt; T &gt; front </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Return (without removing) the oldest element. </p>
<dl class="section return"><dt>Returns</dt><dd>std::optional&lt;T&gt; The oldest element if present, std::nullopt if empty. </dd></dl>
<p class="definition">Definition at line <a class="el" href="circularBuffer_8h_source.html#l00204">204</a> of file <a class="el" href="circularBuffer_8h_source.html">circularBuffer.h</a>.</p>
</div>
</div>
<a id="a080817748fcd320c071f781b94aed283" name="a080817748fcd320c071f781b94aed283"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a080817748fcd320c071f781b94aed283">&#9670;&#160;</a></span>front() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T , std::size_t CAPACITY&gt; </div>
<table class="memname">
<tr>
<td class="memname">bool front </td>
<td>(</td>
<td class="paramtype">T &amp;&#160;</td>
<td class="paramname"><em>value</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Copy the oldest element into the provided reference without removing it. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">value</td><td>Output reference that receives the element.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if the element was copied, false if the buffer is empty. </dd></dl>
<p class="definition">Definition at line <a class="el" href="circularBuffer_8h_source.html#l00212">212</a> of file <a class="el" href="circularBuffer_8h_source.html">circularBuffer.h</a>.</p>
</div>
</div>
<a id="ab663c689eb6ec5369a0c6e33dfdee729" name="ab663c689eb6ec5369a0c6e33dfdee729"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab663c689eb6ec5369a0c6e33dfdee729">&#9670;&#160;</a></span>back() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T , std::size_t CAPACITY&gt; </div>
<table class="memname">
<tr>
<td class="memname">std::optional&lt; T &gt; back </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Return (without removing) the newest element. </p>
<dl class="section return"><dt>Returns</dt><dd>std::optional&lt;T&gt; The newest element if present, std::nullopt if empty. </dd></dl>
<p class="definition">Definition at line <a class="el" href="circularBuffer_8h_source.html#l00220">220</a> of file <a class="el" href="circularBuffer_8h_source.html">circularBuffer.h</a>.</p>
</div>
</div>
<a id="a3785129392466b941567c8b6c5f4f849" name="a3785129392466b941567c8b6c5f4f849"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3785129392466b941567c8b6c5f4f849">&#9670;&#160;</a></span>back() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T , std::size_t CAPACITY&gt; </div>
<table class="memname">
<tr>
<td class="memname">bool back </td>
<td>(</td>
<td class="paramtype">T &amp;&#160;</td>
<td class="paramname"><em>value</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Copy the newest element into the provided reference without removing it. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">value</td><td>Output reference that receives the element.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if the element was copied, false if the buffer is empty. </dd></dl>
<p class="definition">Definition at line <a class="el" href="circularBuffer_8h_source.html#l00228">228</a> of file <a class="el" href="circularBuffer_8h_source.html">circularBuffer.h</a>.</p>
</div>
</div>
<a id="a644718bb2fb240de962dc3c9a1fdf0dc" name="a644718bb2fb240de962dc3c9a1fdf0dc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a644718bb2fb240de962dc3c9a1fdf0dc">&#9670;&#160;</a></span>empty()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T , std::size_t CAPACITY&gt; </div>
<table class="memname">
<tr>
<td class="memname">bool empty </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Check whether the buffer is empty. </p>
<dl class="section return"><dt>Returns</dt><dd>true if empty, false otherwise. </dd></dl>
<p class="definition">Definition at line <a class="el" href="circularBuffer_8h_source.html#l00235">235</a> of file <a class="el" href="circularBuffer_8h_source.html">circularBuffer.h</a>.</p>
</div>
</div>
<a id="a8abf3cf65268916fe1f1660fd9efd90a" name="a8abf3cf65268916fe1f1660fd9efd90a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8abf3cf65268916fe1f1660fd9efd90a">&#9670;&#160;</a></span>full()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T , std::size_t CAPACITY&gt; </div>
<table class="memname">
<tr>
<td class="memname">bool full </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Check whether the buffer is full. </p>
<dl class="section return"><dt>Returns</dt><dd>true if full, false otherwise. </dd></dl>
<p class="definition">Definition at line <a class="el" href="circularBuffer_8h_source.html#l00242">242</a> of file <a class="el" href="circularBuffer_8h_source.html">circularBuffer.h</a>.</p>
</div>
</div>
<a id="ade1601ccf1fa3bcf050867f0852ca4e5" name="ade1601ccf1fa3bcf050867f0852ca4e5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ade1601ccf1fa3bcf050867f0852ca4e5">&#9670;&#160;</a></span>size()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T , std::size_t CAPACITY&gt; </div>
<table class="memname">
<tr>
<td class="memname">std::size_t size </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Number of elements currently stored in the buffer. </p>
<dl class="section return"><dt>Returns</dt><dd>Current size (0 .. CAPACITY). </dd></dl>
<p class="definition">Definition at line <a class="el" href="circularBuffer_8h_source.html#l00249">249</a> of file <a class="el" href="circularBuffer_8h_source.html">circularBuffer.h</a>.</p>
</div>
</div>
<a id="adf1df7795354fd1fb99cb89bd54c4f93" name="adf1df7795354fd1fb99cb89bd54c4f93"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adf1df7795354fd1fb99cb89bd54c4f93">&#9670;&#160;</a></span>capacity()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T , std::size_t CAPACITY&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">constexpr std::size_t capacity </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">constexpr</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Compile-time capacity of the buffer. </p>
<dl class="section return"><dt>Returns</dt><dd>The maximum number of elements the buffer can hold. </dd></dl>
<p class="definition">Definition at line <a class="el" href="circularBuffer_8h_source.html#l00256">256</a> of file <a class="el" href="circularBuffer_8h_source.html">circularBuffer.h</a>.</p>
</div>
</div>
<a id="ac8bb3912a3ce86b15842e79d0b421204" name="ac8bb3912a3ce86b15842e79d0b421204"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac8bb3912a3ce86b15842e79d0b421204">&#9670;&#160;</a></span>clear()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T , std::size_t CAPACITY&gt; </div>
<table class="memname">
<tr>
<td class="memname">void clear </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Clear the buffer and reset internal indices. </p>
<p>After calling <a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#ac8bb3912a3ce86b15842e79d0b421204" title="Clear the buffer and reset internal indices.">clear()</a>, <a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#a644718bb2fb240de962dc3c9a1fdf0dc" title="Check whether the buffer is empty.">empty()</a> returns true and <a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1CircularBuffer.html#ade1601ccf1fa3bcf050867f0852ca4e5" title="Number of elements currently stored in the buffer.">size()</a> returns 0. </p>
<p class="definition">Definition at line <a class="el" href="circularBuffer_8h_source.html#l00263">263</a> of file <a class="el" href="circularBuffer_8h_source.html">circularBuffer.h</a>.</p>
</div>
</div>
</div><!-- contents -->
<!-- HTML footer for doxygen 1.9.8-->
<!-- start footer part -->
<hr class="footer"/><address class="footer">
<small>
SDi toolsBox is licensed under the terms and conditions of the <a href="https://opensource.org/licenses/zlib-license.php" target="_blank">zlib/png license</a>
<br />
Copyright (c) 2026 - SD-Innovation S.A.S. - FRANCE | ver: 2.x.x - build: 2026-04-28
<br />
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen" /></a> 1.9.8
</small>
</address>
</body>
</html>

View File

@@ -0,0 +1,79 @@
<!-- HTML header for doxygen 1.9.8-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<title>SDi toolsBox</title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="custom_doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">sdi_toolBox
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',false,false,'search.php','Search');
});
/* @license-end */
</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacesdi__toolBox.html">sdi_toolBox</a></li><li class="navelem"><a class="el" href="namespacesdi__toolBox_1_1common.html">common</a></li><li class="navelem"><a class="el" href="namespacesdi__toolBox_1_1common_1_1utils.html">utils</a></li><li class="navelem"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1RingBuffer.html">RingBuffer</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">RingBuffer&lt; T, CAPACITY &gt; Member List</div></div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1RingBuffer.html">RingBuffer&lt; T, CAPACITY &gt;</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1RingBuffer.html#ab663c689eb6ec5369a0c6e33dfdee729">back</a>() const</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1RingBuffer.html">RingBuffer&lt; T, CAPACITY &gt;</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1RingBuffer.html#a3785129392466b941567c8b6c5f4f849">back</a>(T &amp;value) const</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1RingBuffer.html">RingBuffer&lt; T, CAPACITY &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1RingBuffer.html#adf1df7795354fd1fb99cb89bd54c4f93">capacity</a>() const</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1RingBuffer.html">RingBuffer&lt; T, CAPACITY &gt;</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1RingBuffer.html#ac8bb3912a3ce86b15842e79d0b421204">clear</a>()</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1RingBuffer.html">RingBuffer&lt; T, CAPACITY &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1RingBuffer.html#a644718bb2fb240de962dc3c9a1fdf0dc">empty</a>() const</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1RingBuffer.html">RingBuffer&lt; T, CAPACITY &gt;</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1RingBuffer.html#a0920f451034bda88271b5f69bd324f5e">front</a>() const</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1RingBuffer.html">RingBuffer&lt; T, CAPACITY &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1RingBuffer.html#a080817748fcd320c071f781b94aed283">front</a>(T &amp;value) const</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1RingBuffer.html">RingBuffer&lt; T, CAPACITY &gt;</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1RingBuffer.html#a8abf3cf65268916fe1f1660fd9efd90a">full</a>() const</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1RingBuffer.html">RingBuffer&lt; T, CAPACITY &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1RingBuffer.html#a44a53147d4b3600ec200300ea16e3707">pop</a>()</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1RingBuffer.html">RingBuffer&lt; T, CAPACITY &gt;</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1RingBuffer.html#a7e56f823fd199baf6badc044e6b7b7f2">pop</a>(T &amp;value)</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1RingBuffer.html">RingBuffer&lt; T, CAPACITY &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1RingBuffer.html#a1e934fd7dc8ba5c9d3e59522f05c67f8">push</a>(const T &amp;value)</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1RingBuffer.html">RingBuffer&lt; T, CAPACITY &gt;</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1RingBuffer.html#ade1601ccf1fa3bcf050867f0852ca4e5">size</a>() const</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1RingBuffer.html">RingBuffer&lt; T, CAPACITY &gt;</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
<!-- HTML footer for doxygen 1.9.8-->
<!-- start footer part -->
<hr class="footer"/><address class="footer">
<small>
SDi toolsBox is licensed under the terms and conditions of the <a href="https://opensource.org/licenses/zlib-license.php" target="_blank">zlib/png license</a>
<br />
Copyright (c) 2026 - SD-Innovation S.A.S. - FRANCE | ver: 2.x.x - build: 2026-04-28
<br />
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen" /></a> 1.9.8
</small>
</address>
</body>
</html>

View File

@@ -0,0 +1,463 @@
<!-- HTML header for doxygen 1.9.8-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<title>SDi toolsBox</title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="custom_doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">sdi_toolBox
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',false,false,'search.php','Search');
});
/* @license-end */
</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacesdi__toolBox.html">sdi_toolBox</a></li><li class="navelem"><a class="el" href="namespacesdi__toolBox_1_1common.html">common</a></li><li class="navelem"><a class="el" href="namespacesdi__toolBox_1_1common_1_1utils.html">utils</a></li><li class="navelem"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1RingBuffer.html">RingBuffer</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="classsdi__toolBox_1_1common_1_1utils_1_1RingBuffer-members.html">List of all members</a> </div>
<div class="headertitle"><div class="title">RingBuffer&lt; T, CAPACITY &gt; Class Template Reference</div></div>
</div><!--header-->
<div class="contents">
<p><code>#include &lt;<a class="el" href="ringBuffer_8h_source.html">ringBuffer.h</a>&gt;</code></p>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><div class="compoundTemplParams">template&lt;class T, std::size_t CAPACITY&gt;<br />
class sdi_toolBox::common::utils::RingBuffer&lt; T, CAPACITY &gt;</div><p>Fixed-size ring (circular) buffer with compile-time capacity and overwrite-on-full behavior. </p>
<p>This template implements a simple circular buffer with a compile-time fixed capacity. When the buffer is full and a new element is pushed, the oldest element is overwritten.</p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">T</td><td>Element type stored in the buffer. </td></tr>
<tr><td class="paramname">CAPACITY</td><td>Compile-time buffer capacity. Must be &gt; 0.</td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>The class provides both optional-returning and out-parameter overloads for pop/front/back to suit different runtime constraints. </dd></dl>
<dl class="section warning"><dt>Warning</dt><dd>Instantiating with CAPACITY == 0 is forbidden (static_assert).</dd></dl>
<dl class="section user"><dt>Example:</dt><dd><div class="fragment"><div class="line"><a class="code hl_class" href="classsdi__toolBox_1_1common_1_1utils_1_1RingBuffer.html">RingBuffer&lt;int, 8&gt;</a> rb;</div>
<div class="line">rb.<a class="code hl_function" href="classsdi__toolBox_1_1common_1_1utils_1_1RingBuffer.html#a1e934fd7dc8ba5c9d3e59522f05c67f8">push</a>(1);</div>
<div class="line"><span class="keywordtype">int</span> v;</div>
<div class="line"><span class="keywordflow">if</span> (rb.<a class="code hl_function" href="classsdi__toolBox_1_1common_1_1utils_1_1RingBuffer.html#a44a53147d4b3600ec200300ea16e3707">pop</a>(v))</div>
<div class="line">{</div>
<div class="line"> ...</div>
<div class="line">}</div>
<div class="ttc" id="aclasssdi__toolBox_1_1common_1_1utils_1_1RingBuffer_html"><div class="ttname"><a href="classsdi__toolBox_1_1common_1_1utils_1_1RingBuffer.html">sdi_toolBox::common::utils::RingBuffer</a></div><div class="ttdoc">Fixed-size ring (circular) buffer with compile-time capacity and overwrite-on-full behavior.</div><div class="ttdef"><b>Definition</b> <a href="ringBuffer_8h_source.html#l00049">ringBuffer.h:50</a></div></div>
<div class="ttc" id="aclasssdi__toolBox_1_1common_1_1utils_1_1RingBuffer_html_a1e934fd7dc8ba5c9d3e59522f05c67f8"><div class="ttname"><a href="classsdi__toolBox_1_1common_1_1utils_1_1RingBuffer.html#a1e934fd7dc8ba5c9d3e59522f05c67f8">sdi_toolBox::common::utils::RingBuffer::push</a></div><div class="ttdeci">bool push(const T &amp;value)</div><div class="ttdoc">Append a value to the buffer.</div><div class="ttdef"><b>Definition</b> <a href="ringBuffer_8h_source.html#l00196">ringBuffer.h:196</a></div></div>
<div class="ttc" id="aclasssdi__toolBox_1_1common_1_1utils_1_1RingBuffer_html_a44a53147d4b3600ec200300ea16e3707"><div class="ttname"><a href="classsdi__toolBox_1_1common_1_1utils_1_1RingBuffer.html#a44a53147d4b3600ec200300ea16e3707">sdi_toolBox::common::utils::RingBuffer::pop</a></div><div class="ttdeci">std::optional&lt; T &gt; pop()</div><div class="ttdoc">Remove and return the oldest element from the buffer.</div><div class="ttdef"><b>Definition</b> <a href="ringBuffer_8h_source.html#l00216">ringBuffer.h:216</a></div></div>
</div><!-- fragment --> </dd></dl>
<p class="definition">Definition at line <a class="el" href="ringBuffer_8h_source.html#l00049">49</a> of file <a class="el" href="ringBuffer_8h_source.html">ringBuffer.h</a>.</p>
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Write operations</div></td></tr>
<tr class="memitem:a1e934fd7dc8ba5c9d3e59522f05c67f8" id="r_a1e934fd7dc8ba5c9d3e59522f05c67f8"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1RingBuffer.html#a1e934fd7dc8ba5c9d3e59522f05c67f8">push</a> (const T &amp;value)</td></tr>
<tr class="memdesc:a1e934fd7dc8ba5c9d3e59522f05c67f8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Append a value to the buffer. <br /></td></tr>
<tr class="separator:a1e934fd7dc8ba5c9d3e59522f05c67f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Read operations</div></td></tr>
<tr class="memitem:a44a53147d4b3600ec200300ea16e3707" id="r_a44a53147d4b3600ec200300ea16e3707"><td class="memItemLeft" align="right" valign="top">std::optional&lt; T &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1RingBuffer.html#a44a53147d4b3600ec200300ea16e3707">pop</a> ()</td></tr>
<tr class="memdesc:a44a53147d4b3600ec200300ea16e3707"><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove and return the oldest element from the buffer. <br /></td></tr>
<tr class="separator:a44a53147d4b3600ec200300ea16e3707"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7e56f823fd199baf6badc044e6b7b7f2" id="r_a7e56f823fd199baf6badc044e6b7b7f2"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1RingBuffer.html#a7e56f823fd199baf6badc044e6b7b7f2">pop</a> (T &amp;value)</td></tr>
<tr class="memdesc:a7e56f823fd199baf6badc044e6b7b7f2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove the oldest element and store it in the provided reference. <br /></td></tr>
<tr class="separator:a7e56f823fd199baf6badc044e6b7b7f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0920f451034bda88271b5f69bd324f5e" id="r_a0920f451034bda88271b5f69bd324f5e"><td class="memItemLeft" align="right" valign="top">std::optional&lt; T &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1RingBuffer.html#a0920f451034bda88271b5f69bd324f5e">front</a> () const</td></tr>
<tr class="memdesc:a0920f451034bda88271b5f69bd324f5e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return (without removing) the oldest element. <br /></td></tr>
<tr class="separator:a0920f451034bda88271b5f69bd324f5e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a080817748fcd320c071f781b94aed283" id="r_a080817748fcd320c071f781b94aed283"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1RingBuffer.html#a080817748fcd320c071f781b94aed283">front</a> (T &amp;value) const</td></tr>
<tr class="memdesc:a080817748fcd320c071f781b94aed283"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy the oldest element into the provided reference without removing it. <br /></td></tr>
<tr class="separator:a080817748fcd320c071f781b94aed283"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab663c689eb6ec5369a0c6e33dfdee729" id="r_ab663c689eb6ec5369a0c6e33dfdee729"><td class="memItemLeft" align="right" valign="top">std::optional&lt; T &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1RingBuffer.html#ab663c689eb6ec5369a0c6e33dfdee729">back</a> () const</td></tr>
<tr class="memdesc:ab663c689eb6ec5369a0c6e33dfdee729"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return (without removing) the newest element. <br /></td></tr>
<tr class="separator:ab663c689eb6ec5369a0c6e33dfdee729"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3785129392466b941567c8b6c5f4f849" id="r_a3785129392466b941567c8b6c5f4f849"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1RingBuffer.html#a3785129392466b941567c8b6c5f4f849">back</a> (T &amp;value) const</td></tr>
<tr class="memdesc:a3785129392466b941567c8b6c5f4f849"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy the newest element into the provided reference without removing it. <br /></td></tr>
<tr class="separator:a3785129392466b941567c8b6c5f4f849"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">State queries</div></td></tr>
<tr class="memitem:a644718bb2fb240de962dc3c9a1fdf0dc" id="r_a644718bb2fb240de962dc3c9a1fdf0dc"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1RingBuffer.html#a644718bb2fb240de962dc3c9a1fdf0dc">empty</a> () const</td></tr>
<tr class="memdesc:a644718bb2fb240de962dc3c9a1fdf0dc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check whether the buffer is empty. <br /></td></tr>
<tr class="separator:a644718bb2fb240de962dc3c9a1fdf0dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8abf3cf65268916fe1f1660fd9efd90a" id="r_a8abf3cf65268916fe1f1660fd9efd90a"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1RingBuffer.html#a8abf3cf65268916fe1f1660fd9efd90a">full</a> () const</td></tr>
<tr class="memdesc:a8abf3cf65268916fe1f1660fd9efd90a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check whether the buffer is full. <br /></td></tr>
<tr class="separator:a8abf3cf65268916fe1f1660fd9efd90a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ade1601ccf1fa3bcf050867f0852ca4e5" id="r_ade1601ccf1fa3bcf050867f0852ca4e5"><td class="memItemLeft" align="right" valign="top">std::size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1RingBuffer.html#ade1601ccf1fa3bcf050867f0852ca4e5">size</a> () const</td></tr>
<tr class="memdesc:ade1601ccf1fa3bcf050867f0852ca4e5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Number of elements currently stored in the buffer. <br /></td></tr>
<tr class="separator:ade1601ccf1fa3bcf050867f0852ca4e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adf1df7795354fd1fb99cb89bd54c4f93" id="r_adf1df7795354fd1fb99cb89bd54c4f93"><td class="memItemLeft" align="right" valign="top">constexpr std::size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1RingBuffer.html#adf1df7795354fd1fb99cb89bd54c4f93">capacity</a> () const</td></tr>
<tr class="memdesc:adf1df7795354fd1fb99cb89bd54c4f93"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compile-time capacity of the buffer. <br /></td></tr>
<tr class="separator:adf1df7795354fd1fb99cb89bd54c4f93"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Modifiers</div></td></tr>
<tr class="memitem:ac8bb3912a3ce86b15842e79d0b421204" id="r_ac8bb3912a3ce86b15842e79d0b421204"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1RingBuffer.html#ac8bb3912a3ce86b15842e79d0b421204">clear</a> ()</td></tr>
<tr class="memdesc:ac8bb3912a3ce86b15842e79d0b421204"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear the buffer and reset internal indices. <br /></td></tr>
<tr class="separator:ac8bb3912a3ce86b15842e79d0b421204"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a1e934fd7dc8ba5c9d3e59522f05c67f8" name="a1e934fd7dc8ba5c9d3e59522f05c67f8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1e934fd7dc8ba5c9d3e59522f05c67f8">&#9670;&#160;</a></span>push()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T , std::size_t CAPACITY&gt; </div>
<table class="memname">
<tr>
<td class="memname">bool push </td>
<td>(</td>
<td class="paramtype">const T &amp;&#160;</td>
<td class="paramname"><em>value</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Append a value to the buffer. </p>
<p>If the buffer is full, the oldest element is overwritten. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">value</td><td>Value to append (copied).</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if the value was added without overwriting, false if an overwrite occurred. </dd></dl>
<p class="definition">Definition at line <a class="el" href="ringBuffer_8h_source.html#l00196">196</a> of file <a class="el" href="ringBuffer_8h_source.html">ringBuffer.h</a>.</p>
</div>
</div>
<a id="a44a53147d4b3600ec200300ea16e3707" name="a44a53147d4b3600ec200300ea16e3707"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a44a53147d4b3600ec200300ea16e3707">&#9670;&#160;</a></span>pop() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T , std::size_t CAPACITY&gt; </div>
<table class="memname">
<tr>
<td class="memname">std::optional&lt; T &gt; pop </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Remove and return the oldest element from the buffer. </p>
<dl class="section return"><dt>Returns</dt><dd>std::optional&lt;T&gt; The oldest element if present, std::nullopt if empty. </dd></dl>
<p class="definition">Definition at line <a class="el" href="ringBuffer_8h_source.html#l00216">216</a> of file <a class="el" href="ringBuffer_8h_source.html">ringBuffer.h</a>.</p>
</div>
</div>
<a id="a7e56f823fd199baf6badc044e6b7b7f2" name="a7e56f823fd199baf6badc044e6b7b7f2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7e56f823fd199baf6badc044e6b7b7f2">&#9670;&#160;</a></span>pop() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T , std::size_t CAPACITY&gt; </div>
<table class="memname">
<tr>
<td class="memname">bool pop </td>
<td>(</td>
<td class="paramtype">T &amp;&#160;</td>
<td class="paramname"><em>value</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Remove the oldest element and store it in the provided reference. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">value</td><td>Output reference that receives the removed element.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if an element was removed, false if the buffer was empty. </dd></dl>
<p class="definition">Definition at line <a class="el" href="ringBuffer_8h_source.html#l00229">229</a> of file <a class="el" href="ringBuffer_8h_source.html">ringBuffer.h</a>.</p>
</div>
</div>
<a id="a0920f451034bda88271b5f69bd324f5e" name="a0920f451034bda88271b5f69bd324f5e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0920f451034bda88271b5f69bd324f5e">&#9670;&#160;</a></span>front() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T , std::size_t CAPACITY&gt; </div>
<table class="memname">
<tr>
<td class="memname">std::optional&lt; T &gt; front </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Return (without removing) the oldest element. </p>
<dl class="section return"><dt>Returns</dt><dd>std::optional&lt;T&gt; The oldest element if present, std::nullopt if empty. </dd></dl>
<p class="definition">Definition at line <a class="el" href="ringBuffer_8h_source.html#l00243">243</a> of file <a class="el" href="ringBuffer_8h_source.html">ringBuffer.h</a>.</p>
</div>
</div>
<a id="a080817748fcd320c071f781b94aed283" name="a080817748fcd320c071f781b94aed283"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a080817748fcd320c071f781b94aed283">&#9670;&#160;</a></span>front() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T , std::size_t CAPACITY&gt; </div>
<table class="memname">
<tr>
<td class="memname">bool front </td>
<td>(</td>
<td class="paramtype">T &amp;&#160;</td>
<td class="paramname"><em>value</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Copy the oldest element into the provided reference without removing it. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">value</td><td>Output reference that receives the element.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if the element was copied, false if the buffer is empty. </dd></dl>
<p class="definition">Definition at line <a class="el" href="ringBuffer_8h_source.html#l00253">253</a> of file <a class="el" href="ringBuffer_8h_source.html">ringBuffer.h</a>.</p>
</div>
</div>
<a id="ab663c689eb6ec5369a0c6e33dfdee729" name="ab663c689eb6ec5369a0c6e33dfdee729"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab663c689eb6ec5369a0c6e33dfdee729">&#9670;&#160;</a></span>back() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T , std::size_t CAPACITY&gt; </div>
<table class="memname">
<tr>
<td class="memname">std::optional&lt; T &gt; back </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Return (without removing) the newest element. </p>
<dl class="section return"><dt>Returns</dt><dd>std::optional&lt;T&gt; The newest element if present, std::nullopt if empty. </dd></dl>
<p class="definition">Definition at line <a class="el" href="ringBuffer_8h_source.html#l00264">264</a> of file <a class="el" href="ringBuffer_8h_source.html">ringBuffer.h</a>.</p>
</div>
</div>
<a id="a3785129392466b941567c8b6c5f4f849" name="a3785129392466b941567c8b6c5f4f849"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3785129392466b941567c8b6c5f4f849">&#9670;&#160;</a></span>back() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T , std::size_t CAPACITY&gt; </div>
<table class="memname">
<tr>
<td class="memname">bool back </td>
<td>(</td>
<td class="paramtype">T &amp;&#160;</td>
<td class="paramname"><em>value</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Copy the newest element into the provided reference without removing it. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">value</td><td>Output reference that receives the element.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if the element was copied, false if the buffer is empty. </dd></dl>
<p class="definition">Definition at line <a class="el" href="ringBuffer_8h_source.html#l00274">274</a> of file <a class="el" href="ringBuffer_8h_source.html">ringBuffer.h</a>.</p>
</div>
</div>
<a id="a644718bb2fb240de962dc3c9a1fdf0dc" name="a644718bb2fb240de962dc3c9a1fdf0dc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a644718bb2fb240de962dc3c9a1fdf0dc">&#9670;&#160;</a></span>empty()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T , std::size_t CAPACITY&gt; </div>
<table class="memname">
<tr>
<td class="memname">bool empty </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Check whether the buffer is empty. </p>
<dl class="section return"><dt>Returns</dt><dd>true if empty, false otherwise. </dd></dl>
<p class="definition">Definition at line <a class="el" href="ringBuffer_8h_source.html#l00285">285</a> of file <a class="el" href="ringBuffer_8h_source.html">ringBuffer.h</a>.</p>
</div>
</div>
<a id="a8abf3cf65268916fe1f1660fd9efd90a" name="a8abf3cf65268916fe1f1660fd9efd90a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8abf3cf65268916fe1f1660fd9efd90a">&#9670;&#160;</a></span>full()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T , std::size_t CAPACITY&gt; </div>
<table class="memname">
<tr>
<td class="memname">bool full </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Check whether the buffer is full. </p>
<dl class="section return"><dt>Returns</dt><dd>true if full, false otherwise. </dd></dl>
<p class="definition">Definition at line <a class="el" href="ringBuffer_8h_source.html#l00292">292</a> of file <a class="el" href="ringBuffer_8h_source.html">ringBuffer.h</a>.</p>
</div>
</div>
<a id="ade1601ccf1fa3bcf050867f0852ca4e5" name="ade1601ccf1fa3bcf050867f0852ca4e5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ade1601ccf1fa3bcf050867f0852ca4e5">&#9670;&#160;</a></span>size()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T , std::size_t CAPACITY&gt; </div>
<table class="memname">
<tr>
<td class="memname">std::size_t size </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Number of elements currently stored in the buffer. </p>
<dl class="section return"><dt>Returns</dt><dd>Current size (0 .. CAPACITY). </dd></dl>
<p class="definition">Definition at line <a class="el" href="ringBuffer_8h_source.html#l00299">299</a> of file <a class="el" href="ringBuffer_8h_source.html">ringBuffer.h</a>.</p>
</div>
</div>
<a id="adf1df7795354fd1fb99cb89bd54c4f93" name="adf1df7795354fd1fb99cb89bd54c4f93"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adf1df7795354fd1fb99cb89bd54c4f93">&#9670;&#160;</a></span>capacity()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T , std::size_t CAPACITY&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">constexpr std::size_t capacity </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">constexpr</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Compile-time capacity of the buffer. </p>
<dl class="section return"><dt>Returns</dt><dd>The maximum number of elements the buffer can hold. </dd></dl>
<p class="definition">Definition at line <a class="el" href="ringBuffer_8h_source.html#l00310">310</a> of file <a class="el" href="ringBuffer_8h_source.html">ringBuffer.h</a>.</p>
</div>
</div>
<a id="ac8bb3912a3ce86b15842e79d0b421204" name="ac8bb3912a3ce86b15842e79d0b421204"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac8bb3912a3ce86b15842e79d0b421204">&#9670;&#160;</a></span>clear()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T , std::size_t CAPACITY&gt; </div>
<table class="memname">
<tr>
<td class="memname">void clear </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Clear the buffer and reset internal indices. </p>
<p>After calling <a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1RingBuffer.html#ac8bb3912a3ce86b15842e79d0b421204" title="Clear the buffer and reset internal indices.">clear()</a>, <a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1RingBuffer.html#a644718bb2fb240de962dc3c9a1fdf0dc" title="Check whether the buffer is empty.">empty()</a> returns true and <a class="el" href="classsdi__toolBox_1_1common_1_1utils_1_1RingBuffer.html#ade1601ccf1fa3bcf050867f0852ca4e5" title="Number of elements currently stored in the buffer.">size()</a> returns 0. </p>
<p class="definition">Definition at line <a class="el" href="ringBuffer_8h_source.html#l00317">317</a> of file <a class="el" href="ringBuffer_8h_source.html">ringBuffer.h</a>.</p>
</div>
</div>
</div><!-- contents -->
<!-- HTML footer for doxygen 1.9.8-->
<!-- start footer part -->
<hr class="footer"/><address class="footer">
<small>
SDi toolsBox is licensed under the terms and conditions of the <a href="https://opensource.org/licenses/zlib-license.php" target="_blank">zlib/png license</a>
<br />
Copyright (c) 2026 - SD-Innovation S.A.S. - FRANCE | ver: 2.x.x - build: 2026-04-28
<br />
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen" /></a> 1.9.8
</small>
</address>
</body>
</html>

View File

@@ -0,0 +1,87 @@
<!-- HTML header for doxygen 1.9.8-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<title>SDi toolsBox</title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="custom_doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">sdi_toolBox
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',false,false,'search.php','Search');
});
/* @license-end */
</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacesdi__toolBox.html">sdi_toolBox</a></li><li class="navelem"><a class="el" href="namespacesdi__toolBox_1_1desktop.html">desktop</a></li><li class="navelem"><a class="el" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html">eventBus</a></li><li class="navelem"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">Bus Member List</div></div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a3c682b9a6b53418d7a147960e6dcdad1">broadcastNodeList</a></td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a29358764c7d91cfcf3447e93b43bb20f">Bus</a>()</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a472403c9840a1d19c264c55f00070a3e">Bus</a>(const Bus &amp;obj)=delete</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a422f08b55d205f02a11025e753679555">Bus</a>(Bus &amp;&amp;obj) noexcept=delete</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#ab06a20c7848eddbcc910d5b03ea98f20">clearAllSubscriptions</a>()</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a9aab57a60533a1a80a705bc569a9c589">emit</a>(Args &amp;&amp;...args)</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a8574031338c5bf7827cc0d561ed93171">isSubscribed</a>(const INode *node, MessageTypeID eventType) const</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a7b375afd6d8b416cfd37e3bfce5b8ffd">isSubscribedToBroadcast</a>(INode *node) const</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#ad5e0dbd36f0d71fce9b00b7f991b2f38">mtx</a></td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a6db9d28bd448a131448276ee03de1e6d">Node</a></td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a4bc64bd8db5527dc8af9b458a82d6a65">nodeList</a></td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#afc5179367040f25bcdb4e27d5682168b">operator=</a>(const Bus &amp;obj)=delete</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#ad0f453f147d8e394a5b66b8494564a82">operator=</a>(Bus &amp;&amp;obj) noexcept=delete</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a92c2bc8aa8bcf018ffe954a3e8e34324">post</a>(const std::shared_ptr&lt; Message &gt; &amp;message) const</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#aaed1ce9185dbc68270991a68901e1d3e">subscribe</a>(INode *node, MessageTypeID eventType)</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a309bedf4b2fb78c99de024ece1f39eb5">subscribeToBroadcast</a>(INode *node)</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a27cc2e333f174e22b360045c7aad959d">unsubscribe</a>(INode *node, MessageTypeID eventType)</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#af42df59cac80896d270e4bf2b350676f">unsubscribeFromAll</a>(INode *node)</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#ae9c37a95472381e33190bd951e381ebe">unsubscribeFromBroadcast</a>(INode *node)</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#aaf1361cfa73ea4f24a5182e4aaf7f6e3">~Bus</a>()=default</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
<!-- HTML footer for doxygen 1.9.8-->
<!-- start footer part -->
<hr class="footer"/><address class="footer">
<small>
SDi toolsBox is licensed under the terms and conditions of the <a href="https://opensource.org/licenses/zlib-license.php" target="_blank">zlib/png license</a>
<br />
Copyright (c) 2026 - SD-Innovation S.A.S. - FRANCE | ver: 2.x.x - build: 2026-04-28
<br />
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen" /></a> 1.9.8
</small>
</address>
</body>
</html>

View File

@@ -0,0 +1,879 @@
<!-- HTML header for doxygen 1.9.8-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<title>SDi toolsBox</title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="custom_doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">sdi_toolBox
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',false,false,'search.php','Search');
});
/* @license-end */
</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacesdi__toolBox.html">sdi_toolBox</a></li><li class="navelem"><a class="el" href="namespacesdi__toolBox_1_1desktop.html">desktop</a></li><li class="navelem"><a class="el" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html">eventBus</a></li><li class="navelem"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#friends">Friends</a> &#124;
<a href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus-members.html">List of all members</a> </div>
<div class="headertitle"><div class="title">Bus Class Reference<span class="mlabels"><span class="mlabel">final</span></span></div></div>
</div><!--header-->
<div class="contents">
<p><code>#include &lt;<a class="el" href="bus_8h_source.html">bus.h</a>&gt;</code></p>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Central message dispatcher for the event bus system. </p>
<p>The <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html" title="Central message dispatcher for the event bus system.">Bus</a> class is the core component of the event bus architecture. It manages a routing table that maps message type identifiers to lists of subscribed nodes, and dispatches messages to the appropriate nodes when they are emitted or posted.</p>
<p>Nodes can subscribe to specific message types or to broadcast mode, in which case they receive all messages regardless of their type.</p>
<p>The <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html" title="Central message dispatcher for the event bus system.">Bus</a> is thread-safe: all operations on the routing table are protected by an internal mutex.</p>
<dl class="section note"><dt>Note</dt><dd>The <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html" title="Central message dispatcher for the event bus system.">Bus</a> is non-copyable and non-movable. </dd>
<dd>
The <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html" title="Central message dispatcher for the event bus system.">Bus</a> does not take ownership of the nodes it manages.</dd></dl>
<dl class="section user"><dt>Example usage:</dt><dd><div class="fragment"><div class="line"><a class="code hl_class" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">sdi_toolBox::desktop::eventBus::Bus</a> bus;</div>
<div class="line"><a class="code hl_class" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html">sdi_toolBox::desktop::eventBus::Node</a> node(bus);</div>
<div class="line"> </div>
<div class="line">node.subscribe(MY_EVENT_TYPE);</div>
<div class="line">bus.<a class="code hl_function" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a9aab57a60533a1a80a705bc569a9c589">emit</a>&lt;MyMessage&gt;(arg1, arg2);</div>
<div class="line"> </div>
<div class="line"><span class="keyword">auto</span> msg = std::dynamic_pointer_cast&lt;MyMessage&gt;(node.popMessage());</div>
<div class="ttc" id="aclasssdi__toolBox_1_1desktop_1_1eventBus_1_1Bus_html"><div class="ttname"><a href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">sdi_toolBox::desktop::eventBus::Bus</a></div><div class="ttdoc">Central message dispatcher for the event bus system.</div><div class="ttdef"><b>Definition</b> <a href="bus_8h_source.html#l00062">bus.h:63</a></div></div>
<div class="ttc" id="aclasssdi__toolBox_1_1desktop_1_1eventBus_1_1Bus_html_a9aab57a60533a1a80a705bc569a9c589"><div class="ttname"><a href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a9aab57a60533a1a80a705bc569a9c589">sdi_toolBox::desktop::eventBus::Bus::emit</a></div><div class="ttdeci">bool emit(Args &amp;&amp;...args)</div><div class="ttdoc">Construct and emit a message of type T to the bus.</div><div class="ttdef"><b>Definition</b> <a href="bus_8h_source.html#l00445">bus.h:445</a></div></div>
<div class="ttc" id="aclasssdi__toolBox_1_1desktop_1_1eventBus_1_1Node_html"><div class="ttname"><a href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html">sdi_toolBox::desktop::eventBus::Node</a></div><div class="ttdoc">Concrete subscriber node in the event bus system.</div><div class="ttdef"><b>Definition</b> <a href="node_8h_source.html#l00063">node.h:64</a></div></div>
</div><!-- fragment --></dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html" title="Concrete subscriber node in the event bus system.">Node</a> </dd>
<dd>
<a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html" title="Abstract interface representing a subscriber node in the event bus system.">INode</a> </dd>
<dd>
<a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html" title="Base class for all messages dispatched through the event bus.">Message</a> </dd></dl>
<p class="definition">Definition at line <a class="el" href="bus_8h_source.html#l00062">62</a> of file <a class="el" href="bus_8h_source.html">bus.h</a>.</p>
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Construction &amp; Destruction</div></td></tr>
<tr class="memitem:a29358764c7d91cfcf3447e93b43bb20f" id="r_a29358764c7d91cfcf3447e93b43bb20f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a29358764c7d91cfcf3447e93b43bb20f">Bus</a> ()</td></tr>
<tr class="memdesc:a29358764c7d91cfcf3447e93b43bb20f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default constructor. <br /></td></tr>
<tr class="separator:a29358764c7d91cfcf3447e93b43bb20f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaf1361cfa73ea4f24a5182e4aaf7f6e3" id="r_aaf1361cfa73ea4f24a5182e4aaf7f6e3"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#aaf1361cfa73ea4f24a5182e4aaf7f6e3">~Bus</a> ()=default</td></tr>
<tr class="memdesc:aaf1361cfa73ea4f24a5182e4aaf7f6e3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default destructor. <br /></td></tr>
<tr class="separator:aaf1361cfa73ea4f24a5182e4aaf7f6e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a472403c9840a1d19c264c55f00070a3e" id="r_a472403c9840a1d19c264c55f00070a3e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a472403c9840a1d19c264c55f00070a3e">Bus</a> (const <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a> &amp;obj)=delete</td></tr>
<tr class="memdesc:a472403c9840a1d19c264c55f00070a3e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy constructor - deleted. <br /></td></tr>
<tr class="separator:a472403c9840a1d19c264c55f00070a3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a422f08b55d205f02a11025e753679555" id="r_a422f08b55d205f02a11025e753679555"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a422f08b55d205f02a11025e753679555">Bus</a> (<a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a> &amp;&amp;obj) noexcept=delete</td></tr>
<tr class="memdesc:a422f08b55d205f02a11025e753679555"><td class="mdescLeft">&#160;</td><td class="mdescRight">Move constructor - deleted. <br /></td></tr>
<tr class="separator:a422f08b55d205f02a11025e753679555"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afc5179367040f25bcdb4e27d5682168b" id="r_afc5179367040f25bcdb4e27d5682168b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#afc5179367040f25bcdb4e27d5682168b">operator=</a> (const <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a> &amp;obj)=delete</td></tr>
<tr class="memdesc:afc5179367040f25bcdb4e27d5682168b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy assignment operator - deleted. <br /></td></tr>
<tr class="separator:afc5179367040f25bcdb4e27d5682168b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad0f453f147d8e394a5b66b8494564a82" id="r_ad0f453f147d8e394a5b66b8494564a82"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#ad0f453f147d8e394a5b66b8494564a82">operator=</a> (<a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a> &amp;&amp;obj) noexcept=delete</td></tr>
<tr class="memdesc:ad0f453f147d8e394a5b66b8494564a82"><td class="mdescLeft">&#160;</td><td class="mdescRight">Move assignment operator - deleted. <br /></td></tr>
<tr class="separator:ad0f453f147d8e394a5b66b8494564a82"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Subscription Management</div></td></tr>
<tr class="memitem:ab06a20c7848eddbcc910d5b03ea98f20" id="r_ab06a20c7848eddbcc910d5b03ea98f20"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#ab06a20c7848eddbcc910d5b03ea98f20">clearAllSubscriptions</a> ()</td></tr>
<tr class="memdesc:ab06a20c7848eddbcc910d5b03ea98f20"><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove all subscriptions from the routing table. <br /></td></tr>
<tr class="separator:ab06a20c7848eddbcc910d5b03ea98f20"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaed1ce9185dbc68270991a68901e1d3e" id="r_aaed1ce9185dbc68270991a68901e1d3e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#aaed1ce9185dbc68270991a68901e1d3e">subscribe</a> (<a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a> *node, <a class="el" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html#a9a6bed6d55e3ccf6e4b27ebfa879277c">MessageTypeID</a> eventType)</td></tr>
<tr class="memdesc:aaed1ce9185dbc68270991a68901e1d3e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Subscribe a node to a specific message type. <br /></td></tr>
<tr class="separator:aaed1ce9185dbc68270991a68901e1d3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a27cc2e333f174e22b360045c7aad959d" id="r_a27cc2e333f174e22b360045c7aad959d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a27cc2e333f174e22b360045c7aad959d">unsubscribe</a> (<a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a> *node, <a class="el" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html#a9a6bed6d55e3ccf6e4b27ebfa879277c">MessageTypeID</a> eventType)</td></tr>
<tr class="memdesc:a27cc2e333f174e22b360045c7aad959d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Unsubscribe a node from a specific message type. <br /></td></tr>
<tr class="separator:a27cc2e333f174e22b360045c7aad959d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af42df59cac80896d270e4bf2b350676f" id="r_af42df59cac80896d270e4bf2b350676f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#af42df59cac80896d270e4bf2b350676f">unsubscribeFromAll</a> (<a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a> *node)</td></tr>
<tr class="memdesc:af42df59cac80896d270e4bf2b350676f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Unsubscribe a node from all message types and broadcast mode. <br /></td></tr>
<tr class="separator:af42df59cac80896d270e4bf2b350676f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8574031338c5bf7827cc0d561ed93171" id="r_a8574031338c5bf7827cc0d561ed93171"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a8574031338c5bf7827cc0d561ed93171">isSubscribed</a> (const <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a> *node, <a class="el" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html#a9a6bed6d55e3ccf6e4b27ebfa879277c">MessageTypeID</a> eventType) const</td></tr>
<tr class="memdesc:a8574031338c5bf7827cc0d561ed93171"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check whether a node is subscribed to a specific message type. <br /></td></tr>
<tr class="separator:a8574031338c5bf7827cc0d561ed93171"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Broadcast management</div></td></tr>
<tr class="memitem:a309bedf4b2fb78c99de024ece1f39eb5" id="r_a309bedf4b2fb78c99de024ece1f39eb5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a309bedf4b2fb78c99de024ece1f39eb5">subscribeToBroadcast</a> (<a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a> *node)</td></tr>
<tr class="memdesc:a309bedf4b2fb78c99de024ece1f39eb5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Subscribe a node to broadcast mode. <br /></td></tr>
<tr class="separator:a309bedf4b2fb78c99de024ece1f39eb5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae9c37a95472381e33190bd951e381ebe" id="r_ae9c37a95472381e33190bd951e381ebe"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#ae9c37a95472381e33190bd951e381ebe">unsubscribeFromBroadcast</a> (<a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a> *node)</td></tr>
<tr class="memdesc:ae9c37a95472381e33190bd951e381ebe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Unsubscribe a node from broadcast mode. <br /></td></tr>
<tr class="separator:ae9c37a95472381e33190bd951e381ebe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7b375afd6d8b416cfd37e3bfce5b8ffd" id="r_a7b375afd6d8b416cfd37e3bfce5b8ffd"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a7b375afd6d8b416cfd37e3bfce5b8ffd">isSubscribedToBroadcast</a> (<a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a> *node) const</td></tr>
<tr class="memdesc:a7b375afd6d8b416cfd37e3bfce5b8ffd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check whether a node is subscribed to broadcast mode. <br /></td></tr>
<tr class="separator:a7b375afd6d8b416cfd37e3bfce5b8ffd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Message transmission</div></td></tr>
<tr class="memitem:a9aab57a60533a1a80a705bc569a9c589" id="r_a9aab57a60533a1a80a705bc569a9c589"><td class="memTemplParams" colspan="2">template&lt;class T , class... Args&gt; </td></tr>
<tr class="memitem:a9aab57a60533a1a80a705bc569a9c589"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a9aab57a60533a1a80a705bc569a9c589">emit</a> (Args &amp;&amp;...args)</td></tr>
<tr class="memdesc:a9aab57a60533a1a80a705bc569a9c589"><td class="mdescLeft">&#160;</td><td class="mdescRight">Construct and emit a message of type <code>T</code> to the bus. <br /></td></tr>
<tr class="separator:a9aab57a60533a1a80a705bc569a9c589"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a92c2bc8aa8bcf018ffe954a3e8e34324" id="r_a92c2bc8aa8bcf018ffe954a3e8e34324"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a92c2bc8aa8bcf018ffe954a3e8e34324">post</a> (const std::shared_ptr&lt; <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html">Message</a> &gt; &amp;message) const</td></tr>
<tr class="memdesc:a92c2bc8aa8bcf018ffe954a3e8e34324"><td class="mdescLeft">&#160;</td><td class="mdescRight">Post an already constructed message to the bus. <br /></td></tr>
<tr class="separator:a92c2bc8aa8bcf018ffe954a3e8e34324"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="friends" name="friends"></a>
Friends</h2></td></tr>
<tr class="memitem:a6db9d28bd448a131448276ee03de1e6d" id="r_a6db9d28bd448a131448276ee03de1e6d"><td class="memItemLeft" align="right" valign="top">class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a6db9d28bd448a131448276ee03de1e6d">Node</a></td></tr>
<tr class="memdesc:a6db9d28bd448a131448276ee03de1e6d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allow the <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html" title="Concrete subscriber node in the event bus system.">Node</a> class to access private members. <br /></td></tr>
<tr class="separator:a6db9d28bd448a131448276ee03de1e6d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a29358764c7d91cfcf3447e93b43bb20f" name="a29358764c7d91cfcf3447e93b43bb20f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a29358764c7d91cfcf3447e93b43bb20f">&#9670;&#160;</a></span>Bus() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a> </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Default constructor. </p>
<p>Initializes the <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html" title="Central message dispatcher for the event bus system.">Bus</a> and records the construction timestamp used as the bus start reference time. </p>
<p class="definition">Definition at line <a class="el" href="bus_8h_source.html#l00312">312</a> of file <a class="el" href="bus_8h_source.html">bus.h</a>.</p>
</div>
</div>
<a id="aaf1361cfa73ea4f24a5182e4aaf7f6e3" name="aaf1361cfa73ea4f24a5182e4aaf7f6e3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaf1361cfa73ea4f24a5182e4aaf7f6e3">&#9670;&#160;</a></span>~Bus()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">~<a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a> </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">default</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Default destructor. </p>
</div>
</div>
<a id="a472403c9840a1d19c264c55f00070a3e" name="a472403c9840a1d19c264c55f00070a3e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a472403c9840a1d19c264c55f00070a3e">&#9670;&#160;</a></span>Bus() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a> </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a> &amp;&#160;</td>
<td class="paramname"><em>obj</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">delete</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Copy constructor - deleted. </p>
<p>The <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html" title="Central message dispatcher for the event bus system.">Bus</a> is non-copyable. </p>
</div>
</div>
<a id="a422f08b55d205f02a11025e753679555" name="a422f08b55d205f02a11025e753679555"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a422f08b55d205f02a11025e753679555">&#9670;&#160;</a></span>Bus() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a> &amp;&amp;&#160;</td>
<td class="paramname"><em>obj</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">delete</span><span class="mlabel">noexcept</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Move constructor - deleted. </p>
<p>The <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html" title="Central message dispatcher for the event bus system.">Bus</a> is non-movable. </p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="afc5179367040f25bcdb4e27d5682168b" name="afc5179367040f25bcdb4e27d5682168b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afc5179367040f25bcdb4e27d5682168b">&#9670;&#160;</a></span>operator=() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a> &amp; operator= </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a> &amp;&#160;</td>
<td class="paramname"><em>obj</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">delete</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Copy assignment operator - deleted. </p>
<p>The <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html" title="Central message dispatcher for the event bus system.">Bus</a> is non-copyable. </p>
</div>
</div>
<a id="ad0f453f147d8e394a5b66b8494564a82" name="ad0f453f147d8e394a5b66b8494564a82"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad0f453f147d8e394a5b66b8494564a82">&#9670;&#160;</a></span>operator=() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a> &amp; operator= </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a> &amp;&amp;&#160;</td>
<td class="paramname"><em>obj</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">delete</span><span class="mlabel">noexcept</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Move assignment operator - deleted. </p>
<p>The <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html" title="Central message dispatcher for the event bus system.">Bus</a> is non-movable. </p>
</div>
</div>
<a id="ab06a20c7848eddbcc910d5b03ea98f20" name="ab06a20c7848eddbcc910d5b03ea98f20"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab06a20c7848eddbcc910d5b03ea98f20">&#9670;&#160;</a></span>clearAllSubscriptions()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void clearAllSubscriptions </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Remove all subscriptions from the routing table. </p>
<p>Clears both the specific event subscriptions and the broadcast subscription list. After this call, no node will receive any message until it re-subscribes.</p>
<dl class="section note"><dt>Note</dt><dd>This operation is thread-safe. </dd></dl>
<p class="definition">Definition at line <a class="el" href="bus_8h_source.html#l00319">319</a> of file <a class="el" href="bus_8h_source.html">bus.h</a>.</p>
</div>
</div>
<a id="aaed1ce9185dbc68270991a68901e1d3e" name="aaed1ce9185dbc68270991a68901e1d3e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaed1ce9185dbc68270991a68901e1d3e">&#9670;&#160;</a></span>subscribe()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void subscribe </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a> *&#160;</td>
<td class="paramname"><em>node</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html#a9a6bed6d55e3ccf6e4b27ebfa879277c">MessageTypeID</a>&#160;</td>
<td class="paramname"><em>eventType</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Subscribe a node to a specific message type. </p>
<p>Registers the given node to receive messages of the specified type. If the node is already subscribed to this type, this call has no effect (no duplicates are created).</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">node</td><td>Pointer to the node to subscribe. Must not be <code>nullptr</code>. </td></tr>
<tr><td class="paramname">eventType</td><td>The message type identifier to subscribe to.</td></tr>
</table>
</dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">std::runtime_error</td><td>if <code>node</code> is <code>nullptr</code>. </td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>This operation is thread-safe. </dd></dl>
<p class="definition">Definition at line <a class="el" href="bus_8h_source.html#l00328">328</a> of file <a class="el" href="bus_8h_source.html">bus.h</a>.</p>
</div>
</div>
<a id="a27cc2e333f174e22b360045c7aad959d" name="a27cc2e333f174e22b360045c7aad959d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a27cc2e333f174e22b360045c7aad959d">&#9670;&#160;</a></span>unsubscribe()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void unsubscribe </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a> *&#160;</td>
<td class="paramname"><em>node</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html#a9a6bed6d55e3ccf6e4b27ebfa879277c">MessageTypeID</a>&#160;</td>
<td class="paramname"><em>eventType</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Unsubscribe a node from a specific message type. </p>
<p>Removes the given node from the list of subscribers for the specified message type. If the node was not subscribed to this type, this call has no effect.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">node</td><td>Pointer to the node to unsubscribe. Must not be <code>nullptr</code>. </td></tr>
<tr><td class="paramname">eventType</td><td>The message type identifier to unsubscribe from.</td></tr>
</table>
</dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">std::runtime_error</td><td>if <code>node</code> is <code>nullptr</code>. </td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>This operation is thread-safe. </dd></dl>
<p class="definition">Definition at line <a class="el" href="bus_8h_source.html#l00352">352</a> of file <a class="el" href="bus_8h_source.html">bus.h</a>.</p>
</div>
</div>
<a id="af42df59cac80896d270e4bf2b350676f" name="af42df59cac80896d270e4bf2b350676f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af42df59cac80896d270e4bf2b350676f">&#9670;&#160;</a></span>unsubscribeFromAll()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void unsubscribeFromAll </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a> *&#160;</td>
<td class="paramname"><em>node</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Unsubscribe a node from all message types and broadcast mode. </p>
<p>Removes the given node from all specific event subscription lists and from the broadcast subscription list. This is automatically called by the <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html" title="Concrete subscriber node in the event bus system.">Node</a> destructor to ensure no dangling pointers remain in the routing table.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">node</td><td>Pointer to the node to unsubscribe. Must not be <code>nullptr</code>.</td></tr>
</table>
</dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">std::runtime_error</td><td>if <code>node</code> is <code>nullptr</code>. </td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>This operation is thread-safe. </dd></dl>
<p class="definition">Definition at line <a class="el" href="bus_8h_source.html#l00370">370</a> of file <a class="el" href="bus_8h_source.html">bus.h</a>.</p>
</div>
</div>
<a id="a8574031338c5bf7827cc0d561ed93171" name="a8574031338c5bf7827cc0d561ed93171"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8574031338c5bf7827cc0d561ed93171">&#9670;&#160;</a></span>isSubscribed()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool isSubscribed </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a> *&#160;</td>
<td class="paramname"><em>node</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html#a9a6bed6d55e3ccf6e4b27ebfa879277c">MessageTypeID</a>&#160;</td>
<td class="paramname"><em>eventType</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Check whether a node is subscribed to a specific message type. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">node</td><td>Pointer to the node to check. Must not be <code>nullptr</code>. </td></tr>
<tr><td class="paramname">eventType</td><td>The message type identifier to check. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>true</code> if the node is subscribed to the given message type, <code>false</code> otherwise.</dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">std::runtime_error</td><td>if <code>node</code> is <code>nullptr</code>. </td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>This operation is thread-safe. </dd></dl>
<p class="definition">Definition at line <a class="el" href="bus_8h_source.html#l00387">387</a> of file <a class="el" href="bus_8h_source.html">bus.h</a>.</p>
</div>
</div>
<a id="a309bedf4b2fb78c99de024ece1f39eb5" name="a309bedf4b2fb78c99de024ece1f39eb5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a309bedf4b2fb78c99de024ece1f39eb5">&#9670;&#160;</a></span>subscribeToBroadcast()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void subscribeToBroadcast </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a> *&#160;</td>
<td class="paramname"><em>node</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Subscribe a node to broadcast mode. </p>
<p>A node in broadcast mode receives all messages posted to the bus, regardless of their type. A node can be subscribed to both broadcast mode and specific message types simultaneously, in which case it will receive the message twice for matching types.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">node</td><td>Pointer to the node to subscribe. Must not be <code>nullptr</code>.</td></tr>
</table>
</dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">std::runtime_error</td><td>if <code>node</code> is <code>nullptr</code>. </td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>This operation is thread-safe. </dd></dl>
<p class="definition">Definition at line <a class="el" href="bus_8h_source.html#l00405">405</a> of file <a class="el" href="bus_8h_source.html">bus.h</a>.</p>
</div>
</div>
<a id="ae9c37a95472381e33190bd951e381ebe" name="ae9c37a95472381e33190bd951e381ebe"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae9c37a95472381e33190bd951e381ebe">&#9670;&#160;</a></span>unsubscribeFromBroadcast()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void unsubscribeFromBroadcast </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a> *&#160;</td>
<td class="paramname"><em>node</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Unsubscribe a node from broadcast mode. </p>
<p>Removes the given node from the broadcast subscription list. If the node was not subscribed to broadcast mode, this call has no effect.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">node</td><td>Pointer to the node to unsubscribe. Must not be <code>nullptr</code>.</td></tr>
</table>
</dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">std::runtime_error</td><td>if <code>node</code> is <code>nullptr</code>. </td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>This operation is thread-safe. </dd></dl>
<p class="definition">Definition at line <a class="el" href="bus_8h_source.html#l00418">418</a> of file <a class="el" href="bus_8h_source.html">bus.h</a>.</p>
</div>
</div>
<a id="a7b375afd6d8b416cfd37e3bfce5b8ffd" name="a7b375afd6d8b416cfd37e3bfce5b8ffd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7b375afd6d8b416cfd37e3bfce5b8ffd">&#9670;&#160;</a></span>isSubscribedToBroadcast()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool isSubscribedToBroadcast </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a> *&#160;</td>
<td class="paramname"><em>node</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Check whether a node is subscribed to broadcast mode. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">node</td><td>Pointer to the node to check. Must not be <code>nullptr</code>. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>true</code> if the node is subscribed to broadcast mode, <code>false</code> otherwise.</dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">std::runtime_error</td><td>if <code>node</code> is <code>nullptr</code>. </td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>This operation is thread-safe. </dd></dl>
<p class="definition">Definition at line <a class="el" href="bus_8h_source.html#l00431">431</a> of file <a class="el" href="bus_8h_source.html">bus.h</a>.</p>
</div>
</div>
<a id="a9aab57a60533a1a80a705bc569a9c589" name="a9aab57a60533a1a80a705bc569a9c589"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9aab57a60533a1a80a705bc569a9c589">&#9670;&#160;</a></span>emit()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T , class... Args&gt; </div>
<table class="memname">
<tr>
<td class="memname">bool emit </td>
<td>(</td>
<td class="paramtype">Args &amp;&amp;...&#160;</td>
<td class="paramname"><em>args</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Construct and emit a message of type <code>T</code> to the bus. </p>
<p>Creates a new message of type <code>T</code> by forwarding the provided arguments to its constructor, then posts it to the bus via <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a92c2bc8aa8bcf018ffe954a3e8e34324">post()</a>.</p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">T</td><td>The message type to emit. Must be derived from <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html">Message</a>. </td></tr>
<tr><td class="paramname">Args</td><td>Constructor argument types for <code>T</code>. </td></tr>
</table>
</dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">args</td><td>Arguments forwarded to the constructor of <code>T</code>. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>true</code> if at least one subscriber received the message, <code>false</code> otherwise.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>Enforced at compile time: <code>T</code> must derive from <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html">Message</a>. </dd>
<dd>
This operation is thread-safe.</dd></dl>
<dl class="section user"><dt>Example:</dt><dd><div class="fragment"><div class="line">bus.emit&lt;MyMessage&gt;(arg1, arg2);</div>
</div><!-- fragment --> </dd></dl>
<p class="definition">Definition at line <a class="el" href="bus_8h_source.html#l00445">445</a> of file <a class="el" href="bus_8h_source.html">bus.h</a>.</p>
</div>
</div>
<a id="a92c2bc8aa8bcf018ffe954a3e8e34324" name="a92c2bc8aa8bcf018ffe954a3e8e34324"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a92c2bc8aa8bcf018ffe954a3e8e34324">&#9670;&#160;</a></span>post()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool post </td>
<td>(</td>
<td class="paramtype">const std::shared_ptr&lt; <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html">Message</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>message</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Post an already constructed message to the bus. </p>
<p>Updates the message timestamp and dispatches it to all nodes subscribed to the message type, as well as all nodes in broadcast mode.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">message</td><td>Shared pointer to the message to post. Must not be <code>nullptr</code>. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>true</code> if at least one specific subscriber received the message, <code>false</code> otherwise.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>This operation is thread-safe. </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a9aab57a60533a1a80a705bc569a9c589" title="Construct and emit a message of type T to the bus.">emit()</a> </dd></dl>
<p class="definition">Definition at line <a class="el" href="bus_8h_source.html#l00457">457</a> of file <a class="el" href="bus_8h_source.html">bus.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Friends And Related Symbol Documentation</h2>
<a id="a6db9d28bd448a131448276ee03de1e6d" name="a6db9d28bd448a131448276ee03de1e6d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6db9d28bd448a131448276ee03de1e6d">&#9670;&#160;</a></span>Node</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">friend class <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html">Node</a></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">friend</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Allow the <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html" title="Concrete subscriber node in the event bus system.">Node</a> class to access private members. </p>
<p class="definition">Definition at line <a class="el" href="bus_8h_source.html#l00064">64</a> of file <a class="el" href="bus_8h_source.html">bus.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="ad5e0dbd36f0d71fce9b00b7f991b2f38" name="ad5e0dbd36f0d71fce9b00b7f991b2f38"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad5e0dbd36f0d71fce9b00b7f991b2f38">&#9670;&#160;</a></span>mtx</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::mutex mtx</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">mutable</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Mutex for thread-safe access to the nodes map. </p>
<p class="definition">Definition at line <a class="el" href="bus_8h_source.html#l00303">303</a> of file <a class="el" href="bus_8h_source.html">bus.h</a>.</p>
</div>
</div>
<a id="a4bc64bd8db5527dc8af9b458a82d6a65" name="a4bc64bd8db5527dc8af9b458a82d6a65"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4bc64bd8db5527dc8af9b458a82d6a65">&#9670;&#160;</a></span>nodeList</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::unordered_map&lt;<a class="el" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html#a9a6bed6d55e3ccf6e4b27ebfa879277c">MessageTypeID</a>, VectorNode&gt; nodeList</td>
</tr>
</table>
</div><div class="memdoc">
<p>Map of message type IDs to lists of subscribed nodes. </p>
<p class="definition">Definition at line <a class="el" href="bus_8h_source.html#l00304">304</a> of file <a class="el" href="bus_8h_source.html">bus.h</a>.</p>
</div>
</div>
<a id="a3c682b9a6b53418d7a147960e6dcdad1" name="a3c682b9a6b53418d7a147960e6dcdad1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3c682b9a6b53418d7a147960e6dcdad1">&#9670;&#160;</a></span>broadcastNodeList</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::set&lt;<a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a> *&gt; broadcastNodeList</td>
</tr>
</table>
</div><div class="memdoc">
<p>Set of nodes subscribed to receive all messages (broadcast mode) </p>
<p class="definition">Definition at line <a class="el" href="bus_8h_source.html#l00305">305</a> of file <a class="el" href="bus_8h_source.html">bus.h</a>.</p>
</div>
</div>
</div><!-- contents -->
<!-- HTML footer for doxygen 1.9.8-->
<!-- start footer part -->
<hr class="footer"/><address class="footer">
<small>
SDi toolsBox is licensed under the terms and conditions of the <a href="https://opensource.org/licenses/zlib-license.php" target="_blank">zlib/png license</a>
<br />
Copyright (c) 2026 - SD-Innovation S.A.S. - FRANCE | ver: 2.x.x - build: 2026-04-28
<br />
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen" /></a> 1.9.8
</small>
</address>
</body>
</html>

View File

@@ -0,0 +1,75 @@
<!-- HTML header for doxygen 1.9.8-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<title>SDi toolsBox</title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="custom_doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">sdi_toolBox
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',false,false,'search.php','Search');
});
/* @license-end */
</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacesdi__toolBox.html">sdi_toolBox</a></li><li class="navelem"><a class="el" href="namespacesdi__toolBox_1_1desktop.html">desktop</a></li><li class="navelem"><a class="el" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html">eventBus</a></li><li class="navelem"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">INode Member List</div></div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html#ac8043e64bbbd7a7a2b324991e96231ef">append</a>(const std::shared_ptr&lt; Message &gt; &amp;message)=0</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a></td><td class="entry"><span class="mlabel">private</span><span class="mlabel">pure virtual</span></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html#a96d8550db89cd8c6abb7e0d3e8923eb2">Bus</a></td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html#ad2a3ec43678e1b15703f874bca9a985d">INode</a>()=default</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html#a5b3ead2689bd5eed4b3617ae6a5e4a09">INode</a>(const INode &amp;obj)=delete</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html#a48dab9422d43ec52a83947b49845e40b">INode</a>(INode &amp;&amp;obj) noexcept=delete</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html#aa663d1ba2c5db32e6e463590bae347f8">operator=</a>(const INode &amp;obj)=delete</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html#a08395ac07c088d1d64339d4c0d3b52cb">operator=</a>(INode &amp;&amp;obj) noexcept=delete</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html#a1356f0d04912be3ec8d8ce7a2b0cddd2">~INode</a>()=default</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
</table></div><!-- contents -->
<!-- HTML footer for doxygen 1.9.8-->
<!-- start footer part -->
<hr class="footer"/><address class="footer">
<small>
SDi toolsBox is licensed under the terms and conditions of the <a href="https://opensource.org/licenses/zlib-license.php" target="_blank">zlib/png license</a>
<br />
Copyright (c) 2026 - SD-Innovation S.A.S. - FRANCE | ver: 2.x.x - build: 2026-04-28
<br />
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen" /></a> 1.9.8
</small>
</address>
</body>
</html>

View File

@@ -0,0 +1,366 @@
<!-- HTML header for doxygen 1.9.8-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<title>SDi toolsBox</title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="custom_doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">sdi_toolBox
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',false,false,'search.php','Search');
});
/* @license-end */
</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacesdi__toolBox.html">sdi_toolBox</a></li><li class="navelem"><a class="el" href="namespacesdi__toolBox_1_1desktop.html">desktop</a></li><li class="navelem"><a class="el" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html">eventBus</a></li><li class="navelem"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pri-methods">Private Member Functions</a> &#124;
<a href="#friends">Friends</a> &#124;
<a href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode-members.html">List of all members</a> </div>
<div class="headertitle"><div class="title">INode Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div></div>
</div><!--header-->
<div class="contents">
<p><code>#include &lt;<a class="el" href="inode_8h_source.html">inode.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for INode:</div>
<div class="dyncontent">
<div class="center"><img src="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode__inherit__graph.png" border="0" usemap="#aINode_inherit__map" alt="Inheritance graph"/></div>
<map name="aINode_inherit__map" id="aINode_inherit__map">
<area shape="rect" title="Abstract interface representing a subscriber node in the event bus system." alt="" coords="5,5,65,31"/>
<area shape="rect" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html" title="Concrete subscriber node in the event bus system." alt="" coords="7,79,63,104"/>
<area shape="poly" title=" " alt="" coords="38,44,38,79,33,79,33,44"/>
</map>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Abstract interface representing a subscriber node in the event bus system. </p>
<p><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html" title="Abstract interface representing a subscriber node in the event bus system.">INode</a> is the base interface that all subscriber nodes must implement to participate in the event bus. It exposes a single private pure virtual method, <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html#ac8043e64bbbd7a7a2b324991e96231ef">append()</a>, which is called exclusively by the <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a> when a message is dispatched to this node.</p>
<p>The <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a> is declared as a friend class to allow it to invoke <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html#ac8043e64bbbd7a7a2b324991e96231ef">append()</a> without exposing it to the rest of the codebase, enforcing a strict encapsulation of the message delivery mechanism.</p>
<dl class="section note"><dt>Note</dt><dd><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html" title="Abstract interface representing a subscriber node in the event bus system.">INode</a> is non-copyable and non-movable. </dd>
<dd>
Direct instantiation is not possible - this class must be subclassed. The concrete implementation is provided by <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html">Node</a>.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html" title="Central message dispatcher for the event bus system.">Bus</a> </dd>
<dd>
<a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html" title="Concrete subscriber node in the event bus system.">Node</a> </dd>
<dd>
<a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html" title="Base class for all messages dispatched through the event bus.">Message</a> </dd></dl>
<p class="definition">Definition at line <a class="el" href="inode_8h_source.html#l00041">41</a> of file <a class="el" href="inode_8h_source.html">inode.h</a>.</p>
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Construction &amp; Destruction</div></td></tr>
<tr class="memitem:ad2a3ec43678e1b15703f874bca9a985d" id="r_ad2a3ec43678e1b15703f874bca9a985d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html#ad2a3ec43678e1b15703f874bca9a985d">INode</a> ()=default</td></tr>
<tr class="memdesc:ad2a3ec43678e1b15703f874bca9a985d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default constructor. <br /></td></tr>
<tr class="separator:ad2a3ec43678e1b15703f874bca9a985d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1356f0d04912be3ec8d8ce7a2b0cddd2" id="r_a1356f0d04912be3ec8d8ce7a2b0cddd2"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html#a1356f0d04912be3ec8d8ce7a2b0cddd2">~INode</a> ()=default</td></tr>
<tr class="memdesc:a1356f0d04912be3ec8d8ce7a2b0cddd2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default destructor. <br /></td></tr>
<tr class="separator:a1356f0d04912be3ec8d8ce7a2b0cddd2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5b3ead2689bd5eed4b3617ae6a5e4a09" id="r_a5b3ead2689bd5eed4b3617ae6a5e4a09"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html#a5b3ead2689bd5eed4b3617ae6a5e4a09">INode</a> (const <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a> &amp;obj)=delete</td></tr>
<tr class="memdesc:a5b3ead2689bd5eed4b3617ae6a5e4a09"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy constructor - deleted. <br /></td></tr>
<tr class="separator:a5b3ead2689bd5eed4b3617ae6a5e4a09"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a48dab9422d43ec52a83947b49845e40b" id="r_a48dab9422d43ec52a83947b49845e40b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html#a48dab9422d43ec52a83947b49845e40b">INode</a> (<a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a> &amp;&amp;obj) noexcept=delete</td></tr>
<tr class="memdesc:a48dab9422d43ec52a83947b49845e40b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Move constructor - deleted. <br /></td></tr>
<tr class="separator:a48dab9422d43ec52a83947b49845e40b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa663d1ba2c5db32e6e463590bae347f8" id="r_aa663d1ba2c5db32e6e463590bae347f8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html#aa663d1ba2c5db32e6e463590bae347f8">operator=</a> (const <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a> &amp;obj)=delete</td></tr>
<tr class="memdesc:aa663d1ba2c5db32e6e463590bae347f8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy assignment operator - deleted. <br /></td></tr>
<tr class="separator:aa663d1ba2c5db32e6e463590bae347f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a08395ac07c088d1d64339d4c0d3b52cb" id="r_a08395ac07c088d1d64339d4c0d3b52cb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html#a08395ac07c088d1d64339d4c0d3b52cb">operator=</a> (<a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a> &amp;&amp;obj) noexcept=delete</td></tr>
<tr class="memdesc:a08395ac07c088d1d64339d4c0d3b52cb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Move assignment operator - deleted. <br /></td></tr>
<tr class="separator:a08395ac07c088d1d64339d4c0d3b52cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pri-methods" name="pri-methods"></a>
Private Member Functions</h2></td></tr>
<tr class="memitem:ac8043e64bbbd7a7a2b324991e96231ef" id="r_ac8043e64bbbd7a7a2b324991e96231ef"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html#ac8043e64bbbd7a7a2b324991e96231ef">append</a> (const std::shared_ptr&lt; <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html">Message</a> &gt; &amp;message)=0</td></tr>
<tr class="memdesc:ac8043e64bbbd7a7a2b324991e96231ef"><td class="mdescLeft">&#160;</td><td class="mdescRight">Insert a message into the node's internal message queue. <br /></td></tr>
<tr class="separator:ac8043e64bbbd7a7a2b324991e96231ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="friends" name="friends"></a>
Friends</h2></td></tr>
<tr class="memitem:a96d8550db89cd8c6abb7e0d3e8923eb2" id="r_a96d8550db89cd8c6abb7e0d3e8923eb2"><td class="memItemLeft" align="right" valign="top">class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html#a96d8550db89cd8c6abb7e0d3e8923eb2">Bus</a></td></tr>
<tr class="memdesc:a96d8550db89cd8c6abb7e0d3e8923eb2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allow the <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html" title="Central message dispatcher for the event bus system.">Bus</a> class to access private members. <br /></td></tr>
<tr class="separator:a96d8550db89cd8c6abb7e0d3e8923eb2"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="ad2a3ec43678e1b15703f874bca9a985d" name="ad2a3ec43678e1b15703f874bca9a985d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad2a3ec43678e1b15703f874bca9a985d">&#9670;&#160;</a></span>INode() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a> </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">default</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Default constructor. </p>
</div>
</div>
<a id="a1356f0d04912be3ec8d8ce7a2b0cddd2" name="a1356f0d04912be3ec8d8ce7a2b0cddd2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1356f0d04912be3ec8d8ce7a2b0cddd2">&#9670;&#160;</a></span>~INode()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual ~<a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a> </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span><span class="mlabel">default</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Default destructor. </p>
</div>
</div>
<a id="a5b3ead2689bd5eed4b3617ae6a5e4a09" name="a5b3ead2689bd5eed4b3617ae6a5e4a09"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5b3ead2689bd5eed4b3617ae6a5e4a09">&#9670;&#160;</a></span>INode() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a> </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a> &amp;&#160;</td>
<td class="paramname"><em>obj</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">delete</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Copy constructor - deleted. </p>
<p><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html" title="Abstract interface representing a subscriber node in the event bus system.">INode</a> is non-copyable. </p>
</div>
</div>
<a id="a48dab9422d43ec52a83947b49845e40b" name="a48dab9422d43ec52a83947b49845e40b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a48dab9422d43ec52a83947b49845e40b">&#9670;&#160;</a></span>INode() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a> &amp;&amp;&#160;</td>
<td class="paramname"><em>obj</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">delete</span><span class="mlabel">noexcept</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Move constructor - deleted. </p>
<p><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html" title="Abstract interface representing a subscriber node in the event bus system.">INode</a> is non-movable. </p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="aa663d1ba2c5db32e6e463590bae347f8" name="aa663d1ba2c5db32e6e463590bae347f8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa663d1ba2c5db32e6e463590bae347f8">&#9670;&#160;</a></span>operator=() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a> &amp; operator= </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a> &amp;&#160;</td>
<td class="paramname"><em>obj</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">delete</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Copy assignment operator - deleted. </p>
<p><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html" title="Abstract interface representing a subscriber node in the event bus system.">INode</a> is non-copyable. </p>
</div>
</div>
<a id="a08395ac07c088d1d64339d4c0d3b52cb" name="a08395ac07c088d1d64339d4c0d3b52cb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a08395ac07c088d1d64339d4c0d3b52cb">&#9670;&#160;</a></span>operator=() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a> &amp; operator= </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a> &amp;&amp;&#160;</td>
<td class="paramname"><em>obj</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">delete</span><span class="mlabel">noexcept</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Move assignment operator - deleted. </p>
<p><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html" title="Abstract interface representing a subscriber node in the event bus system.">INode</a> is non-movable. </p>
</div>
</div>
<a id="ac8043e64bbbd7a7a2b324991e96231ef" name="ac8043e64bbbd7a7a2b324991e96231ef"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac8043e64bbbd7a7a2b324991e96231ef">&#9670;&#160;</a></span>append()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void append </td>
<td>(</td>
<td class="paramtype">const std::shared_ptr&lt; <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html">Message</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>message</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Insert a message into the node's internal message queue. </p>
<p>This method is called exclusively by the <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a> when a message matching this node's subscriptions (or a broadcast message) is dispatched. It must be implemented by all concrete subclasses to define how incoming messages are stored or processed.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">message</td><td>Shared pointer to the message being delivered.</td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>This method is intentionally private and only accessible to <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a> via the friend declaration, preventing external code from injecting messages directly into a node. </dd></dl>
<p>Implemented in <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html#afd326e91fe62057d1b3e1fc5e77f8526">Node</a>.</p>
</div>
</div>
<h2 class="groupheader">Friends And Related Symbol Documentation</h2>
<a id="a96d8550db89cd8c6abb7e0d3e8923eb2" name="a96d8550db89cd8c6abb7e0d3e8923eb2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a96d8550db89cd8c6abb7e0d3e8923eb2">&#9670;&#160;</a></span>Bus</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">friend class <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">friend</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Allow the <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html" title="Central message dispatcher for the event bus system.">Bus</a> class to access private members. </p>
<p class="definition">Definition at line <a class="el" href="inode_8h_source.html#l00043">43</a> of file <a class="el" href="inode_8h_source.html">inode.h</a>.</p>
</div>
</div>
</div><!-- contents -->
<!-- HTML footer for doxygen 1.9.8-->
<!-- start footer part -->
<hr class="footer"/><address class="footer">
<small>
SDi toolsBox is licensed under the terms and conditions of the <a href="https://opensource.org/licenses/zlib-license.php" target="_blank">zlib/png license</a>
<br />
Copyright (c) 2026 - SD-Innovation S.A.S. - FRANCE | ver: 2.x.x - build: 2026-04-28
<br />
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen" /></a> 1.9.8
</small>
</address>
</body>
</html>

View File

@@ -0,0 +1,5 @@
<map id="INode" name="INode">
<area shape="rect" id="Node000001" title="Abstract interface representing a subscriber node in the event bus system." alt="" coords="5,5,65,31"/>
<area shape="rect" id="Node000002" href="$classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html" title="Concrete subscriber node in the event bus system." alt="" coords="7,79,63,104"/>
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="38,44,38,79,33,79,33,44"/>
</map>

View File

@@ -0,0 +1 @@
7f0705834ef0a2b2429b2a409870055e

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@@ -0,0 +1,77 @@
<!-- HTML header for doxygen 1.9.8-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<title>SDi toolsBox</title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="custom_doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">sdi_toolBox
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',false,false,'search.php','Search');
});
/* @license-end */
</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacesdi__toolBox.html">sdi_toolBox</a></li><li class="navelem"><a class="el" href="namespacesdi__toolBox_1_1desktop.html">desktop</a></li><li class="navelem"><a class="el" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html">eventBus</a></li><li class="navelem"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html">Message</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">Message Member List</div></div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html">Message</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html#a96d8550db89cd8c6abb7e0d3e8923eb2">Bus</a></td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html">Message</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html#aa8b1670a081a29f03ff73fe6e8fd75dd">getMessageTypeID</a>() const</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html">Message</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html#a0724134c68e584e5bfe25f22830e07bb">getTimestamp</a>() const</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html">Message</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html#aa8be7248d1a72ecd8c04f3b074a77262">Message</a>()=delete</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html">Message</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html#a985ae29d79eda2bc249a2f9e3c0d1799">Message</a>(const Message &amp;obj)=delete</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html">Message</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html#ac1dee51597a2b5ecef4d2750ff010df0">Message</a>(Message &amp;&amp;obj) noexcept=delete</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html">Message</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html#aae6bb865d324bb9b062bf4886668a89c">Message</a>(MessageTypeID messageTypeID)</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html">Message</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html#a540c190c4e96ade4e866badaef0c6505">operator=</a>(const Message &amp;obj)=delete</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html">Message</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html#a4c54f56e7dacc9f823d63255ba12da4e">operator=</a>(Message &amp;&amp;obj) noexcept=delete</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html">Message</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html#afd5ba4e5e3792ccbdbe4e60abc535cd6">~Message</a>()=default</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html">Message</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
</table></div><!-- contents -->
<!-- HTML footer for doxygen 1.9.8-->
<!-- start footer part -->
<hr class="footer"/><address class="footer">
<small>
SDi toolsBox is licensed under the terms and conditions of the <a href="https://opensource.org/licenses/zlib-license.php" target="_blank">zlib/png license</a>
<br />
Copyright (c) 2026 - SD-Innovation S.A.S. - FRANCE | ver: 2.x.x - build: 2026-04-28
<br />
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen" /></a> 1.9.8
</small>
</address>
</body>
</html>

View File

@@ -0,0 +1,434 @@
<!-- HTML header for doxygen 1.9.8-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<title>SDi toolsBox</title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="custom_doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">sdi_toolBox
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',false,false,'search.php','Search');
});
/* @license-end */
</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacesdi__toolBox.html">sdi_toolBox</a></li><li class="navelem"><a class="el" href="namespacesdi__toolBox_1_1desktop.html">desktop</a></li><li class="navelem"><a class="el" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html">eventBus</a></li><li class="navelem"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html">Message</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#friends">Friends</a> &#124;
<a href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message-members.html">List of all members</a> </div>
<div class="headertitle"><div class="title">Message Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p><code>#include &lt;<a class="el" href="message_8h_source.html">message.h</a>&gt;</code></p>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Base class for all messages dispatched through the event bus. </p>
<p>Every message circulating in the event bus system must derive from this class. It carries a unique message type identifier (<a class="el" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html#a9a6bed6d55e3ccf6e4b27ebfa879277c">MessageTypeID</a>) used by the <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a> to route the message to the appropriate subscribers, and a timestamp that is updated when the message is posted to the bus.</p>
<dl class="section note"><dt>Note</dt><dd>The <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html" title="Base class for all messages dispatched through the event bus.">Message</a> class is non-copyable and non-movable. </dd>
<dd>
The default constructor is deleted: a <a class="el" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html#a9a6bed6d55e3ccf6e4b27ebfa879277c">MessageTypeID</a> must always be provided at construction time. </dd>
<dd>
The timestamp is set by the <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a> internally when <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a92c2bc8aa8bcf018ffe954a3e8e34324">Bus::post()</a> is called; it is not set at construction time.</dd></dl>
<dl class="section user"><dt>Example - defining a custom message:</dt><dd><div class="fragment"><div class="line"><span class="keyword">static</span> <span class="keyword">constexpr</span> <a class="code hl_typedef" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html#a9a6bed6d55e3ccf6e4b27ebfa879277c">sdi_toolBox::desktop::eventBus::MessageTypeID</a> MY_EVENT = 1;</div>
<div class="line"> </div>
<div class="line"><span class="keyword">struct </span>MyMessage : <span class="keyword">public</span> <a class="code hl_class" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html">sdi_toolBox::desktop::eventBus::Message</a></div>
<div class="line">{</div>
<div class="line"> <span class="keyword">explicit</span> MyMessage(<span class="keywordtype">int</span> value)</div>
<div class="line"> : <a class="code hl_class" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html">Message</a>(MY_EVENT)</div>
<div class="line"> , payload(value)</div>
<div class="line"> {}</div>
<div class="line"> <span class="keywordtype">int</span> payload{};</div>
<div class="line">};</div>
<div class="ttc" id="aclasssdi__toolBox_1_1desktop_1_1eventBus_1_1Message_html"><div class="ttname"><a href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html">sdi_toolBox::desktop::eventBus::Message</a></div><div class="ttdoc">Base class for all messages dispatched through the event bus.</div><div class="ttdef"><b>Definition</b> <a href="message_8h_source.html#l00053">message.h:54</a></div></div>
<div class="ttc" id="anamespacesdi__toolBox_1_1desktop_1_1eventBus_html_a9a6bed6d55e3ccf6e4b27ebfa879277c"><div class="ttname"><a href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html#a9a6bed6d55e3ccf6e4b27ebfa879277c">sdi_toolBox::desktop::eventBus::MessageTypeID</a></div><div class="ttdeci">uint64_t MessageTypeID</div><div class="ttdoc">Unique identifier for a message type.</div><div class="ttdef"><b>Definition</b> <a href="defs_8h_source.html#l00021">defs.h:21</a></div></div>
</div><!-- fragment --></dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html" title="Central message dispatcher for the event bus system.">Bus</a> </dd>
<dd>
<a class="el" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html#a9a6bed6d55e3ccf6e4b27ebfa879277c" title="Unique identifier for a message type.">MessageTypeID</a> </dd>
<dd>
<a class="el" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html#ae5ca775e8d8c664b6edef818ce1251b9" title="Monotonic timestamp type used throughout the event bus.">TimePoint</a> </dd></dl>
<p class="definition">Definition at line <a class="el" href="message_8h_source.html#l00053">53</a> of file <a class="el" href="message_8h_source.html">message.h</a>.</p>
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Construction &amp; Destruction</div></td></tr>
<tr class="memitem:aa8be7248d1a72ecd8c04f3b074a77262" id="r_aa8be7248d1a72ecd8c04f3b074a77262"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html#aa8be7248d1a72ecd8c04f3b074a77262">Message</a> ()=delete</td></tr>
<tr class="memdesc:aa8be7248d1a72ecd8c04f3b074a77262"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default constructor - deleted. <br /></td></tr>
<tr class="separator:aa8be7248d1a72ecd8c04f3b074a77262"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afd5ba4e5e3792ccbdbe4e60abc535cd6" id="r_afd5ba4e5e3792ccbdbe4e60abc535cd6"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html#afd5ba4e5e3792ccbdbe4e60abc535cd6">~Message</a> ()=default</td></tr>
<tr class="memdesc:afd5ba4e5e3792ccbdbe4e60abc535cd6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default destructor. <br /></td></tr>
<tr class="separator:afd5ba4e5e3792ccbdbe4e60abc535cd6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a985ae29d79eda2bc249a2f9e3c0d1799" id="r_a985ae29d79eda2bc249a2f9e3c0d1799"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html#a985ae29d79eda2bc249a2f9e3c0d1799">Message</a> (const <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html">Message</a> &amp;obj)=delete</td></tr>
<tr class="memdesc:a985ae29d79eda2bc249a2f9e3c0d1799"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy constructor - deleted. <br /></td></tr>
<tr class="separator:a985ae29d79eda2bc249a2f9e3c0d1799"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac1dee51597a2b5ecef4d2750ff010df0" id="r_ac1dee51597a2b5ecef4d2750ff010df0"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html#ac1dee51597a2b5ecef4d2750ff010df0">Message</a> (<a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html">Message</a> &amp;&amp;obj) noexcept=delete</td></tr>
<tr class="memdesc:ac1dee51597a2b5ecef4d2750ff010df0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Move constructor - deleted. <br /></td></tr>
<tr class="separator:ac1dee51597a2b5ecef4d2750ff010df0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a540c190c4e96ade4e866badaef0c6505" id="r_a540c190c4e96ade4e866badaef0c6505"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html">Message</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html#a540c190c4e96ade4e866badaef0c6505">operator=</a> (const <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html">Message</a> &amp;obj)=delete</td></tr>
<tr class="memdesc:a540c190c4e96ade4e866badaef0c6505"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy assignment operator - deleted. <br /></td></tr>
<tr class="separator:a540c190c4e96ade4e866badaef0c6505"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4c54f56e7dacc9f823d63255ba12da4e" id="r_a4c54f56e7dacc9f823d63255ba12da4e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html">Message</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html#a4c54f56e7dacc9f823d63255ba12da4e">operator=</a> (<a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html">Message</a> &amp;&amp;obj) noexcept=delete</td></tr>
<tr class="memdesc:a4c54f56e7dacc9f823d63255ba12da4e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Move assignment operator - deleted. <br /></td></tr>
<tr class="separator:a4c54f56e7dacc9f823d63255ba12da4e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aae6bb865d324bb9b062bf4886668a89c" id="r_aae6bb865d324bb9b062bf4886668a89c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html#aae6bb865d324bb9b062bf4886668a89c">Message</a> (<a class="el" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html#a9a6bed6d55e3ccf6e4b27ebfa879277c">MessageTypeID</a> messageTypeID)</td></tr>
<tr class="memdesc:aae6bb865d324bb9b062bf4886668a89c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Construct a message with the given type identifier. <br /></td></tr>
<tr class="separator:aae6bb865d324bb9b062bf4886668a89c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Accessors</div></td></tr>
<tr class="memitem:aa8b1670a081a29f03ff73fe6e8fd75dd" id="r_aa8b1670a081a29f03ff73fe6e8fd75dd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html#a9a6bed6d55e3ccf6e4b27ebfa879277c">MessageTypeID</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html#aa8b1670a081a29f03ff73fe6e8fd75dd">getMessageTypeID</a> () const</td></tr>
<tr class="memdesc:aa8b1670a081a29f03ff73fe6e8fd75dd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the unique type identifier of this message. <br /></td></tr>
<tr class="separator:aa8b1670a081a29f03ff73fe6e8fd75dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0724134c68e584e5bfe25f22830e07bb" id="r_a0724134c68e584e5bfe25f22830e07bb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html#ae5ca775e8d8c664b6edef818ce1251b9">TimePoint</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html#a0724134c68e584e5bfe25f22830e07bb">getTimestamp</a> () const</td></tr>
<tr class="memdesc:a0724134c68e584e5bfe25f22830e07bb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the timestamp of when this message was posted to the bus. <br /></td></tr>
<tr class="separator:a0724134c68e584e5bfe25f22830e07bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="friends" name="friends"></a>
Friends</h2></td></tr>
<tr class="memitem:a96d8550db89cd8c6abb7e0d3e8923eb2" id="r_a96d8550db89cd8c6abb7e0d3e8923eb2"><td class="memItemLeft" align="right" valign="top">class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html#a96d8550db89cd8c6abb7e0d3e8923eb2">Bus</a></td></tr>
<tr class="memdesc:a96d8550db89cd8c6abb7e0d3e8923eb2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allow the <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html" title="Central message dispatcher for the event bus system.">Bus</a> class to access private members. <br /></td></tr>
<tr class="separator:a96d8550db89cd8c6abb7e0d3e8923eb2"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="aa8be7248d1a72ecd8c04f3b074a77262" name="aa8be7248d1a72ecd8c04f3b074a77262"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa8be7248d1a72ecd8c04f3b074a77262">&#9670;&#160;</a></span>Message() <span class="overload">[1/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html">Message</a> </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">delete</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Default constructor - deleted. </p>
<p>A <a class="el" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html#a9a6bed6d55e3ccf6e4b27ebfa879277c">MessageTypeID</a> must always be provided at construction time. </p>
</div>
</div>
<a id="afd5ba4e5e3792ccbdbe4e60abc535cd6" name="afd5ba4e5e3792ccbdbe4e60abc535cd6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afd5ba4e5e3792ccbdbe4e60abc535cd6">&#9670;&#160;</a></span>~Message()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual ~<a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html">Message</a> </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span><span class="mlabel">default</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Default destructor. </p>
</div>
</div>
<a id="a985ae29d79eda2bc249a2f9e3c0d1799" name="a985ae29d79eda2bc249a2f9e3c0d1799"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a985ae29d79eda2bc249a2f9e3c0d1799">&#9670;&#160;</a></span>Message() <span class="overload">[2/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html">Message</a> </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html">Message</a> &amp;&#160;</td>
<td class="paramname"><em>obj</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">delete</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Copy constructor - deleted. </p>
<p><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html" title="Base class for all messages dispatched through the event bus.">Message</a> is non-copyable. </p>
</div>
</div>
<a id="ac1dee51597a2b5ecef4d2750ff010df0" name="ac1dee51597a2b5ecef4d2750ff010df0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac1dee51597a2b5ecef4d2750ff010df0">&#9670;&#160;</a></span>Message() <span class="overload">[3/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html">Message</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html">Message</a> &amp;&amp;&#160;</td>
<td class="paramname"><em>obj</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">delete</span><span class="mlabel">noexcept</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Move constructor - deleted. </p>
<p><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html" title="Base class for all messages dispatched through the event bus.">Message</a> is non-movable. </p>
</div>
</div>
<a id="aae6bb865d324bb9b062bf4886668a89c" name="aae6bb865d324bb9b062bf4886668a89c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aae6bb865d324bb9b062bf4886668a89c">&#9670;&#160;</a></span>Message() <span class="overload">[4/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html">Message</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html#a9a6bed6d55e3ccf6e4b27ebfa879277c">MessageTypeID</a>&#160;</td>
<td class="paramname"><em>messageTypeID</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">explicit</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Construct a message with the given type identifier. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">messageTypeID</td><td>Unique identifier representing the type of this message. Used by the <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a> to route the message to the correct subscribers. </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="message_8h_source.html#l00151">151</a> of file <a class="el" href="message_8h_source.html">message.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a540c190c4e96ade4e866badaef0c6505" name="a540c190c4e96ade4e866badaef0c6505"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a540c190c4e96ade4e866badaef0c6505">&#9670;&#160;</a></span>operator=() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html">Message</a> &amp; operator= </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html">Message</a> &amp;&#160;</td>
<td class="paramname"><em>obj</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">delete</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Copy assignment operator - deleted. </p>
<p><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html" title="Base class for all messages dispatched through the event bus.">Message</a> is non-copyable. </p>
</div>
</div>
<a id="a4c54f56e7dacc9f823d63255ba12da4e" name="a4c54f56e7dacc9f823d63255ba12da4e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4c54f56e7dacc9f823d63255ba12da4e">&#9670;&#160;</a></span>operator=() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html">Message</a> &amp; operator= </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html">Message</a> &amp;&amp;&#160;</td>
<td class="paramname"><em>obj</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">delete</span><span class="mlabel">noexcept</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Move assignment operator - deleted. </p>
<p><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html" title="Base class for all messages dispatched through the event bus.">Message</a> is non-movable. </p>
</div>
</div>
<a id="aa8b1670a081a29f03ff73fe6e8fd75dd" name="aa8b1670a081a29f03ff73fe6e8fd75dd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa8b1670a081a29f03ff73fe6e8fd75dd">&#9670;&#160;</a></span>getMessageTypeID()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html#a9a6bed6d55e3ccf6e4b27ebfa879277c">MessageTypeID</a> getMessageTypeID </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the unique type identifier of this message. </p>
<dl class="section return"><dt>Returns</dt><dd>The <a class="el" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html#a9a6bed6d55e3ccf6e4b27ebfa879277c">MessageTypeID</a> assigned at construction time. </dd></dl>
<p class="definition">Definition at line <a class="el" href="message_8h_source.html#l00157">157</a> of file <a class="el" href="message_8h_source.html">message.h</a>.</p>
</div>
</div>
<a id="a0724134c68e584e5bfe25f22830e07bb" name="a0724134c68e584e5bfe25f22830e07bb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0724134c68e584e5bfe25f22830e07bb">&#9670;&#160;</a></span>getTimestamp()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html#ae5ca775e8d8c664b6edef818ce1251b9">TimePoint</a> getTimestamp </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the timestamp of when this message was posted to the bus. </p>
<p>The timestamp is recorded by the <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a> when <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a92c2bc8aa8bcf018ffe954a3e8e34324">Bus::post()</a> is called. It is left at its default-constructed (zero) value if the message has not yet been posted.</p>
<dl class="section return"><dt>Returns</dt><dd>A <a class="el" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html#ae5ca775e8d8c664b6edef818ce1251b9">TimePoint</a> representing the moment the message was dispatched. </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a92c2bc8aa8bcf018ffe954a3e8e34324" title="Post an already constructed message to the bus.">Bus::post()</a> </dd></dl>
<p class="definition">Definition at line <a class="el" href="message_8h_source.html#l00163">163</a> of file <a class="el" href="message_8h_source.html">message.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Friends And Related Symbol Documentation</h2>
<a id="a96d8550db89cd8c6abb7e0d3e8923eb2" name="a96d8550db89cd8c6abb7e0d3e8923eb2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a96d8550db89cd8c6abb7e0d3e8923eb2">&#9670;&#160;</a></span>Bus</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">friend class <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">friend</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Allow the <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html" title="Central message dispatcher for the event bus system.">Bus</a> class to access private members. </p>
<p class="definition">Definition at line <a class="el" href="message_8h_source.html#l00055">55</a> of file <a class="el" href="message_8h_source.html">message.h</a>.</p>
</div>
</div>
</div><!-- contents -->
<!-- HTML footer for doxygen 1.9.8-->
<!-- start footer part -->
<hr class="footer"/><address class="footer">
<small>
SDi toolsBox is licensed under the terms and conditions of the <a href="https://opensource.org/licenses/zlib-license.php" target="_blank">zlib/png license</a>
<br />
Copyright (c) 2026 - SD-Innovation S.A.S. - FRANCE | ver: 2.x.x - build: 2026-04-28
<br />
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen" /></a> 1.9.8
</small>
</address>
</body>
</html>

View File

@@ -0,0 +1,91 @@
<!-- HTML header for doxygen 1.9.8-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<title>SDi toolsBox</title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="custom_doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">sdi_toolBox
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',false,false,'search.php','Search');
});
/* @license-end */
</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacesdi__toolBox.html">sdi_toolBox</a></li><li class="navelem"><a class="el" href="namespacesdi__toolBox_1_1desktop.html">desktop</a></li><li class="navelem"><a class="el" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html">eventBus</a></li><li class="navelem"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html">Node</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">Node Member List</div></div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html">Node</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html#afd326e91fe62057d1b3e1fc5e77f8526">append</a>(const std::shared_ptr&lt; Message &gt; &amp;message) override</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html">Node</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">private</span><span class="mlabel">virtual</span></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html#a9aab57a60533a1a80a705bc569a9c589">emit</a>(Args &amp;&amp;...args)</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html">Node</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html#ad3c328938178037a51a3f0be5711fa1b">getMessageCount</a>() const</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html">Node</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html#ad2a3ec43678e1b15703f874bca9a985d">INode</a>()=default</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html#a5b3ead2689bd5eed4b3617ae6a5e4a09">INode</a>(const INode &amp;obj)=delete</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html#a48dab9422d43ec52a83947b49845e40b">INode</a>(INode &amp;&amp;obj) noexcept=delete</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html#a8a28311e9640e7d150b254d83424c08c">messageQueue</a></td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html">Node</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html#ad5e0dbd36f0d71fce9b00b7f991b2f38">mtx</a></td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html">Node</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html#a9ccb487f15b9518a8cb801f14ca36804">Node</a>()=delete</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html">Node</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html#a8655b18ba4c11b25753d741a958bea87">Node</a>(const Node &amp;obj)=delete</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html">Node</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html#a3d2a90b0a72088cccae1d9bbbed3ca45">Node</a>(Node &amp;&amp;obj) noexcept=delete</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html">Node</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html#aa4d9158beb9bc615b040954434c1db90">Node</a>(Bus &amp;bus)</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html">Node</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html#a7196569c68b87dc2c0ed116d4a8603f6">operator=</a>(const Node &amp;obj)=delete</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html">Node</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html#a2eeb54ac57183c4201143fc76f5e4b1a">operator=</a>(Node &amp;&amp;obj) noexcept=delete</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html">Node</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html#aa663d1ba2c5db32e6e463590bae347f8">sdi_toolBox::desktop::eventBus::INode::operator=</a>(const INode &amp;obj)=delete</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html#a08395ac07c088d1d64339d4c0d3b52cb">sdi_toolBox::desktop::eventBus::INode::operator=</a>(INode &amp;&amp;obj) noexcept=delete</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html#a68168b63fcfb3cc18ba23ccbc2c269b7">popMessage</a>()</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html">Node</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html#a92c2bc8aa8bcf018ffe954a3e8e34324">post</a>(const std::shared_ptr&lt; Message &gt; &amp;message) const</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html">Node</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html#a43f475792aedfbbdaf623a8a9065a5c9">subscribe</a>(MessageTypeID eventType)</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html">Node</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html#a90802ca554f4e38a59d1c326468618f0">syncWaitForMessage</a>()</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html">Node</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html#aad4f2b01a3e7c46d0253be40e13f2974">unsubscribe</a>(MessageTypeID eventType)</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html">Node</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html#ade72b9b723cf5c7d43f7cc556a466f99">unsubscribeFromAll</a>()</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html">Node</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html#a1356f0d04912be3ec8d8ce7a2b0cddd2">~INode</a>()=default</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html#a6fa6bf60f34f1e3efb0e59333428c9c8">~Node</a>()</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html">Node</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
</table></div><!-- contents -->
<!-- HTML footer for doxygen 1.9.8-->
<!-- start footer part -->
<hr class="footer"/><address class="footer">
<small>
SDi toolsBox is licensed under the terms and conditions of the <a href="https://opensource.org/licenses/zlib-license.php" target="_blank">zlib/png license</a>
<br />
Copyright (c) 2026 - SD-Innovation S.A.S. - FRANCE | ver: 2.x.x - build: 2026-04-28
<br />
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen" /></a> 1.9.8
</small>
</address>
</body>
</html>

View File

@@ -0,0 +1,776 @@
<!-- HTML header for doxygen 1.9.8-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<title>SDi toolsBox</title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="custom_doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">sdi_toolBox
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',false,false,'search.php','Search');
});
/* @license-end */
</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacesdi__toolBox.html">sdi_toolBox</a></li><li class="navelem"><a class="el" href="namespacesdi__toolBox_1_1desktop.html">desktop</a></li><li class="navelem"><a class="el" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html">eventBus</a></li><li class="navelem"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html">Node</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pri-methods">Private Member Functions</a> &#124;
<a href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node-members.html">List of all members</a> </div>
<div class="headertitle"><div class="title">Node Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p><code>#include &lt;<a class="el" href="node_8h_source.html">node.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for Node:</div>
<div class="dyncontent">
<div class="center"><img src="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node__inherit__graph.png" border="0" usemap="#aNode_inherit__map" alt="Inheritance graph"/></div>
<map name="aNode_inherit__map" id="aNode_inherit__map">
<area shape="rect" title="Concrete subscriber node in the event bus system." alt="" coords="7,79,63,104"/>
<area shape="rect" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html" title="Abstract interface representing a subscriber node in the event bus system." alt="" coords="5,5,65,31"/>
<area shape="poly" title=" " alt="" coords="38,44,38,79,33,79,33,44"/>
</map>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<div class="dynheader">
Collaboration diagram for Node:</div>
<div class="dyncontent">
<div class="center"><img src="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node__coll__graph.png" border="0" usemap="#aNode_coll__map" alt="Collaboration graph"/></div>
<map name="aNode_coll__map" id="aNode_coll__map">
<area shape="rect" title="Concrete subscriber node in the event bus system." alt="" coords="7,79,63,104"/>
<area shape="rect" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html" title="Abstract interface representing a subscriber node in the event bus system." alt="" coords="5,5,65,31"/>
<area shape="poly" title=" " alt="" coords="38,44,38,79,33,79,33,44"/>
</map>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Concrete subscriber node in the event bus system. </p>
<p><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html" title="Concrete subscriber node in the event bus system.">Node</a> is the concrete implementation of <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a>. It represents a participant in the event bus that can subscribe to specific message types or to broadcast mode, emit and post messages through the bus, and consume received messages from its internal FIFO queue.</p>
<p>Each <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html" title="Concrete subscriber node in the event bus system.">Node</a> holds a reference to the <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a> it belongs to. Subscriptions and message transmissions are delegated to the bus. Incoming messages are stored in an internal thread-safe queue and can be retrieved via <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html#a68168b63fcfb3cc18ba23ccbc2c269b7">popMessage()</a>.</p>
<p>The <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html" title="Concrete subscriber node in the event bus system.">Node</a> also supports synchronous waiting: a thread can block on <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html#a90802ca554f4e38a59d1c326468618f0">syncWaitForMessage()</a> until at least one message is available in the queue.</p>
<p>On destruction, the <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html" title="Concrete subscriber node in the event bus system.">Node</a> automatically unsubscribes from all event types and broadcast mode, preventing dangling pointers in the bus routing table.</p>
<dl class="section note"><dt>Note</dt><dd><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html" title="Concrete subscriber node in the event bus system.">Node</a> is non-copyable and non-movable. </dd>
<dd>
A <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a> reference must be provided at construction time. </dd>
<dd>
The <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html" title="Concrete subscriber node in the event bus system.">Node</a> does not take ownership of the <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a>.</dd></dl>
<dl class="section user"><dt>Example usage:</dt><dd><div class="fragment"><div class="line"><a class="code hl_class" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">sdi_toolBox::desktop::eventBus::Bus</a> bus;</div>
<div class="line"><a class="code hl_class" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html">sdi_toolBox::desktop::eventBus::Node</a> node(bus);</div>
<div class="line"> </div>
<div class="line">node.subscribe(MY_EVENT_TYPE);</div>
<div class="line">node.emit&lt;MyMessage&gt;(42);</div>
<div class="line"> </div>
<div class="line">node.syncWaitForMessage();</div>
<div class="line"><span class="keyword">auto</span> msg = std::dynamic_pointer_cast&lt;MyMessage&gt;(node.popMessage());</div>
<div class="ttc" id="aclasssdi__toolBox_1_1desktop_1_1eventBus_1_1Bus_html"><div class="ttname"><a href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">sdi_toolBox::desktop::eventBus::Bus</a></div><div class="ttdoc">Central message dispatcher for the event bus system.</div><div class="ttdef"><b>Definition</b> <a href="bus_8h_source.html#l00062">bus.h:63</a></div></div>
<div class="ttc" id="aclasssdi__toolBox_1_1desktop_1_1eventBus_1_1Node_html"><div class="ttname"><a href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html">sdi_toolBox::desktop::eventBus::Node</a></div><div class="ttdoc">Concrete subscriber node in the event bus system.</div><div class="ttdef"><b>Definition</b> <a href="node_8h_source.html#l00063">node.h:64</a></div></div>
</div><!-- fragment --></dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html" title="Central message dispatcher for the event bus system.">Bus</a> </dd>
<dd>
<a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html" title="Abstract interface representing a subscriber node in the event bus system.">INode</a> </dd>
<dd>
<a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html" title="Base class for all messages dispatched through the event bus.">Message</a> </dd></dl>
<p class="definition">Definition at line <a class="el" href="node_8h_source.html#l00063">63</a> of file <a class="el" href="node_8h_source.html">node.h</a>.</p>
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Construction &amp; Destruction</div></td></tr>
<tr class="memitem:a9ccb487f15b9518a8cb801f14ca36804" id="r_a9ccb487f15b9518a8cb801f14ca36804"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html#a9ccb487f15b9518a8cb801f14ca36804">Node</a> ()=delete</td></tr>
<tr class="memdesc:a9ccb487f15b9518a8cb801f14ca36804"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default constructor - deleted. A <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a> reference must be provided. <br /></td></tr>
<tr class="separator:a9ccb487f15b9518a8cb801f14ca36804"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6fa6bf60f34f1e3efb0e59333428c9c8" id="r_a6fa6bf60f34f1e3efb0e59333428c9c8"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html#a6fa6bf60f34f1e3efb0e59333428c9c8">~Node</a> ()</td></tr>
<tr class="memdesc:a6fa6bf60f34f1e3efb0e59333428c9c8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor. <br /></td></tr>
<tr class="separator:a6fa6bf60f34f1e3efb0e59333428c9c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8655b18ba4c11b25753d741a958bea87" id="r_a8655b18ba4c11b25753d741a958bea87"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html#a8655b18ba4c11b25753d741a958bea87">Node</a> (const <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html">Node</a> &amp;obj)=delete</td></tr>
<tr class="memdesc:a8655b18ba4c11b25753d741a958bea87"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy constructor - deleted. <br /></td></tr>
<tr class="separator:a8655b18ba4c11b25753d741a958bea87"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3d2a90b0a72088cccae1d9bbbed3ca45" id="r_a3d2a90b0a72088cccae1d9bbbed3ca45"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html#a3d2a90b0a72088cccae1d9bbbed3ca45">Node</a> (<a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html">Node</a> &amp;&amp;obj) noexcept=delete</td></tr>
<tr class="memdesc:a3d2a90b0a72088cccae1d9bbbed3ca45"><td class="mdescLeft">&#160;</td><td class="mdescRight">Move constructor - deleted. <br /></td></tr>
<tr class="separator:a3d2a90b0a72088cccae1d9bbbed3ca45"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7196569c68b87dc2c0ed116d4a8603f6" id="r_a7196569c68b87dc2c0ed116d4a8603f6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html">Node</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html#a7196569c68b87dc2c0ed116d4a8603f6">operator=</a> (const <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html">Node</a> &amp;obj)=delete</td></tr>
<tr class="memdesc:a7196569c68b87dc2c0ed116d4a8603f6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy assignment operator - deleted. <br /></td></tr>
<tr class="separator:a7196569c68b87dc2c0ed116d4a8603f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2eeb54ac57183c4201143fc76f5e4b1a" id="r_a2eeb54ac57183c4201143fc76f5e4b1a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html">Node</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html#a2eeb54ac57183c4201143fc76f5e4b1a">operator=</a> (<a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html">Node</a> &amp;&amp;obj) noexcept=delete</td></tr>
<tr class="memdesc:a2eeb54ac57183c4201143fc76f5e4b1a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Move assignment operator - deleted. <br /></td></tr>
<tr class="separator:a2eeb54ac57183c4201143fc76f5e4b1a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa4d9158beb9bc615b040954434c1db90" id="r_aa4d9158beb9bc615b040954434c1db90"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html#aa4d9158beb9bc615b040954434c1db90">Node</a> (<a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a> &amp;bus)</td></tr>
<tr class="memdesc:aa4d9158beb9bc615b040954434c1db90"><td class="mdescLeft">&#160;</td><td class="mdescRight">Construct a <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html" title="Concrete subscriber node in the event bus system.">Node</a> attached to the given <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a>. <br /></td></tr>
<tr class="separator:aa4d9158beb9bc615b040954434c1db90"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Synchronization</div></td></tr>
<tr class="memitem:a90802ca554f4e38a59d1c326468618f0" id="r_a90802ca554f4e38a59d1c326468618f0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html#a90802ca554f4e38a59d1c326468618f0">syncWaitForMessage</a> ()</td></tr>
<tr class="memdesc:a90802ca554f4e38a59d1c326468618f0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Block the calling thread until a message is received. <br /></td></tr>
<tr class="separator:a90802ca554f4e38a59d1c326468618f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Subscription Management</div></td></tr>
<tr class="memitem:a43f475792aedfbbdaf623a8a9065a5c9" id="r_a43f475792aedfbbdaf623a8a9065a5c9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html#a43f475792aedfbbdaf623a8a9065a5c9">subscribe</a> (<a class="el" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html#a9a6bed6d55e3ccf6e4b27ebfa879277c">MessageTypeID</a> eventType)</td></tr>
<tr class="memdesc:a43f475792aedfbbdaf623a8a9065a5c9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Subscribe this node to a specific message type. <br /></td></tr>
<tr class="separator:a43f475792aedfbbdaf623a8a9065a5c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aad4f2b01a3e7c46d0253be40e13f2974" id="r_aad4f2b01a3e7c46d0253be40e13f2974"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html#aad4f2b01a3e7c46d0253be40e13f2974">unsubscribe</a> (<a class="el" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html#a9a6bed6d55e3ccf6e4b27ebfa879277c">MessageTypeID</a> eventType)</td></tr>
<tr class="memdesc:aad4f2b01a3e7c46d0253be40e13f2974"><td class="mdescLeft">&#160;</td><td class="mdescRight">Unsubscribe this node from a specific message type. <br /></td></tr>
<tr class="separator:aad4f2b01a3e7c46d0253be40e13f2974"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ade72b9b723cf5c7d43f7cc556a466f99" id="r_ade72b9b723cf5c7d43f7cc556a466f99"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html#ade72b9b723cf5c7d43f7cc556a466f99">unsubscribeFromAll</a> ()</td></tr>
<tr class="memdesc:ade72b9b723cf5c7d43f7cc556a466f99"><td class="mdescLeft">&#160;</td><td class="mdescRight">Unsubscribe this node from all message types and broadcast mode. <br /></td></tr>
<tr class="separator:ade72b9b723cf5c7d43f7cc556a466f99"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Message Transmission</div></td></tr>
<tr class="memitem:a9aab57a60533a1a80a705bc569a9c589" id="r_a9aab57a60533a1a80a705bc569a9c589"><td class="memTemplParams" colspan="2">template&lt;class T , class... Args&gt; </td></tr>
<tr class="memitem:a9aab57a60533a1a80a705bc569a9c589"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html#a9aab57a60533a1a80a705bc569a9c589">emit</a> (Args &amp;&amp;...args)</td></tr>
<tr class="memdesc:a9aab57a60533a1a80a705bc569a9c589"><td class="mdescLeft">&#160;</td><td class="mdescRight">Construct and emit a message of type <code>T</code> through the bus. <br /></td></tr>
<tr class="separator:a9aab57a60533a1a80a705bc569a9c589"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a92c2bc8aa8bcf018ffe954a3e8e34324" id="r_a92c2bc8aa8bcf018ffe954a3e8e34324"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html#a92c2bc8aa8bcf018ffe954a3e8e34324">post</a> (const std::shared_ptr&lt; <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html">Message</a> &gt; &amp;message) const</td></tr>
<tr class="memdesc:a92c2bc8aa8bcf018ffe954a3e8e34324"><td class="mdescLeft">&#160;</td><td class="mdescRight">Post an already constructed message through the bus. <br /></td></tr>
<tr class="separator:a92c2bc8aa8bcf018ffe954a3e8e34324"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Message queue management</div></td></tr>
<tr class="memitem:ad3c328938178037a51a3f0be5711fa1b" id="r_ad3c328938178037a51a3f0be5711fa1b"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html#ad3c328938178037a51a3f0be5711fa1b">getMessageCount</a> () const</td></tr>
<tr class="memdesc:ad3c328938178037a51a3f0be5711fa1b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the number of messages currently in the node's queue. <br /></td></tr>
<tr class="separator:ad3c328938178037a51a3f0be5711fa1b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a68168b63fcfb3cc18ba23ccbc2c269b7" id="r_a68168b63fcfb3cc18ba23ccbc2c269b7"><td class="memItemLeft" align="right" valign="top">std::shared_ptr&lt; <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html">Message</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html#a68168b63fcfb3cc18ba23ccbc2c269b7">popMessage</a> ()</td></tr>
<tr class="memdesc:a68168b63fcfb3cc18ba23ccbc2c269b7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove and return the front message from the node's queue (FIFO). <br /></td></tr>
<tr class="separator:a68168b63fcfb3cc18ba23ccbc2c269b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a></td></tr>
<tr class="memitem:ad2a3ec43678e1b15703f874bca9a985d inherit pub_methods_classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode" id="r_ad2a3ec43678e1b15703f874bca9a985d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html#ad2a3ec43678e1b15703f874bca9a985d">INode</a> ()=default</td></tr>
<tr class="memdesc:ad2a3ec43678e1b15703f874bca9a985d inherit pub_methods_classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default constructor. <br /></td></tr>
<tr class="separator:ad2a3ec43678e1b15703f874bca9a985d inherit pub_methods_classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1356f0d04912be3ec8d8ce7a2b0cddd2 inherit pub_methods_classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode" id="r_a1356f0d04912be3ec8d8ce7a2b0cddd2"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html#a1356f0d04912be3ec8d8ce7a2b0cddd2">~INode</a> ()=default</td></tr>
<tr class="memdesc:a1356f0d04912be3ec8d8ce7a2b0cddd2 inherit pub_methods_classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default destructor. <br /></td></tr>
<tr class="separator:a1356f0d04912be3ec8d8ce7a2b0cddd2 inherit pub_methods_classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5b3ead2689bd5eed4b3617ae6a5e4a09 inherit pub_methods_classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode" id="r_a5b3ead2689bd5eed4b3617ae6a5e4a09"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html#a5b3ead2689bd5eed4b3617ae6a5e4a09">INode</a> (const <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a> &amp;obj)=delete</td></tr>
<tr class="memdesc:a5b3ead2689bd5eed4b3617ae6a5e4a09 inherit pub_methods_classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy constructor - deleted. <br /></td></tr>
<tr class="separator:a5b3ead2689bd5eed4b3617ae6a5e4a09 inherit pub_methods_classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a48dab9422d43ec52a83947b49845e40b inherit pub_methods_classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode" id="r_a48dab9422d43ec52a83947b49845e40b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html#a48dab9422d43ec52a83947b49845e40b">INode</a> (<a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a> &amp;&amp;obj) noexcept=delete</td></tr>
<tr class="memdesc:a48dab9422d43ec52a83947b49845e40b inherit pub_methods_classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode"><td class="mdescLeft">&#160;</td><td class="mdescRight">Move constructor - deleted. <br /></td></tr>
<tr class="separator:a48dab9422d43ec52a83947b49845e40b inherit pub_methods_classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa663d1ba2c5db32e6e463590bae347f8 inherit pub_methods_classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode" id="r_aa663d1ba2c5db32e6e463590bae347f8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html#aa663d1ba2c5db32e6e463590bae347f8">operator=</a> (const <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a> &amp;obj)=delete</td></tr>
<tr class="memdesc:aa663d1ba2c5db32e6e463590bae347f8 inherit pub_methods_classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy assignment operator - deleted. <br /></td></tr>
<tr class="separator:aa663d1ba2c5db32e6e463590bae347f8 inherit pub_methods_classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a08395ac07c088d1d64339d4c0d3b52cb inherit pub_methods_classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode" id="r_a08395ac07c088d1d64339d4c0d3b52cb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html#a08395ac07c088d1d64339d4c0d3b52cb">operator=</a> (<a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html">INode</a> &amp;&amp;obj) noexcept=delete</td></tr>
<tr class="memdesc:a08395ac07c088d1d64339d4c0d3b52cb inherit pub_methods_classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode"><td class="mdescLeft">&#160;</td><td class="mdescRight">Move assignment operator - deleted. <br /></td></tr>
<tr class="separator:a08395ac07c088d1d64339d4c0d3b52cb inherit pub_methods_classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pri-methods" name="pri-methods"></a>
Private Member Functions</h2></td></tr>
<tr class="memitem:afd326e91fe62057d1b3e1fc5e77f8526" id="r_afd326e91fe62057d1b3e1fc5e77f8526"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html#afd326e91fe62057d1b3e1fc5e77f8526">append</a> (const std::shared_ptr&lt; <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html">Message</a> &gt; &amp;message) override</td></tr>
<tr class="memdesc:afd326e91fe62057d1b3e1fc5e77f8526"><td class="mdescLeft">&#160;</td><td class="mdescRight">Append a message to the node's internal queue. <br /></td></tr>
<tr class="separator:afd326e91fe62057d1b3e1fc5e77f8526"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a9ccb487f15b9518a8cb801f14ca36804" name="a9ccb487f15b9518a8cb801f14ca36804"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9ccb487f15b9518a8cb801f14ca36804">&#9670;&#160;</a></span>Node() <span class="overload">[1/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html">Node</a> </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">delete</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Default constructor - deleted. A <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a> reference must be provided. </p>
</div>
</div>
<a id="a6fa6bf60f34f1e3efb0e59333428c9c8" name="a6fa6bf60f34f1e3efb0e59333428c9c8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6fa6bf60f34f1e3efb0e59333428c9c8">&#9670;&#160;</a></span>~Node()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">~<a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html">Node</a> </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Destructor. </p>
<p>Automatically unsubscribes the node from all specific event types and broadcast mode via <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html#ade72b9b723cf5c7d43f7cc556a466f99">unsubscribeFromAll()</a>, preventing dangling pointers in the bus routing table. Also notifies any thread blocked in <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html#a90802ca554f4e38a59d1c326468618f0">syncWaitForMessage()</a> to unblock it gracefully. </p>
<p class="definition">Definition at line <a class="el" href="node_8h_source.html#l00276">276</a> of file <a class="el" href="node_8h_source.html">node.h</a>.</p>
</div>
</div>
<a id="a8655b18ba4c11b25753d741a958bea87" name="a8655b18ba4c11b25753d741a958bea87"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8655b18ba4c11b25753d741a958bea87">&#9670;&#160;</a></span>Node() <span class="overload">[2/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html">Node</a> </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html">Node</a> &amp;&#160;</td>
<td class="paramname"><em>obj</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">delete</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Copy constructor - deleted. </p>
<p><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html" title="Concrete subscriber node in the event bus system.">Node</a> is non-copyable. </p>
</div>
</div>
<a id="a3d2a90b0a72088cccae1d9bbbed3ca45" name="a3d2a90b0a72088cccae1d9bbbed3ca45"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3d2a90b0a72088cccae1d9bbbed3ca45">&#9670;&#160;</a></span>Node() <span class="overload">[3/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html">Node</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html">Node</a> &amp;&amp;&#160;</td>
<td class="paramname"><em>obj</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">delete</span><span class="mlabel">noexcept</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Move constructor - deleted. </p>
<p><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html" title="Concrete subscriber node in the event bus system.">Node</a> is non-movable. </p>
</div>
</div>
<a id="aa4d9158beb9bc615b040954434c1db90" name="aa4d9158beb9bc615b040954434c1db90"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa4d9158beb9bc615b040954434c1db90">&#9670;&#160;</a></span>Node() <span class="overload">[4/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html">Node</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a> &amp;&#160;</td>
<td class="paramname"><em>bus</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">explicit</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Construct a <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html" title="Concrete subscriber node in the event bus system.">Node</a> attached to the given <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a>. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">bus</td><td>Reference to the <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a> this node belongs to. The bus must outlive the node. </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="node_8h_source.html#l00269">269</a> of file <a class="el" href="node_8h_source.html">node.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a7196569c68b87dc2c0ed116d4a8603f6" name="a7196569c68b87dc2c0ed116d4a8603f6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7196569c68b87dc2c0ed116d4a8603f6">&#9670;&#160;</a></span>operator=() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html">Node</a> &amp; operator= </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html">Node</a> &amp;&#160;</td>
<td class="paramname"><em>obj</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">delete</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Copy assignment operator - deleted. </p>
<p><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html" title="Concrete subscriber node in the event bus system.">Node</a> is non-copyable. </p>
</div>
</div>
<a id="a2eeb54ac57183c4201143fc76f5e4b1a" name="a2eeb54ac57183c4201143fc76f5e4b1a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2eeb54ac57183c4201143fc76f5e4b1a">&#9670;&#160;</a></span>operator=() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html">Node</a> &amp; operator= </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html">Node</a> &amp;&amp;&#160;</td>
<td class="paramname"><em>obj</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">delete</span><span class="mlabel">noexcept</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Move assignment operator - deleted. </p>
<p><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html" title="Concrete subscriber node in the event bus system.">Node</a> is non-movable. </p>
</div>
</div>
<a id="a90802ca554f4e38a59d1c326468618f0" name="a90802ca554f4e38a59d1c326468618f0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a90802ca554f4e38a59d1c326468618f0">&#9670;&#160;</a></span>syncWaitForMessage()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void syncWaitForMessage </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Block the calling thread until a message is received. </p>
<p>Suspends the calling thread using an atomic wait until at least one message has been appended to the node's internal queue by the <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a>. This method is intended for synchronous event-driven patterns where a thread should idle until work is available.</p>
<dl class="section note"><dt>Note</dt><dd>Returns immediately if a message is already pending in the queue at the time of the call. </dd>
<dd>
If the <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html" title="Concrete subscriber node in the event bus system.">Node</a> is destroyed while a thread is blocked here, the destructor triggers a notification to unblock the waiting thread gracefully. </dd></dl>
<dl class="section warning"><dt>Warning</dt><dd>The caller is responsible for checking the queue after this call returns, as the notification may also be triggered by the destructor with an empty queue. </dd></dl>
<p class="definition">Definition at line <a class="el" href="node_8h_source.html#l00286">286</a> of file <a class="el" href="node_8h_source.html">node.h</a>.</p>
</div>
</div>
<a id="a43f475792aedfbbdaf623a8a9065a5c9" name="a43f475792aedfbbdaf623a8a9065a5c9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a43f475792aedfbbdaf623a8a9065a5c9">&#9670;&#160;</a></span>subscribe()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void subscribe </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html#a9a6bed6d55e3ccf6e4b27ebfa879277c">MessageTypeID</a>&#160;</td>
<td class="paramname"><em>eventType</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Subscribe this node to a specific message type. </p>
<p>Delegates to <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#aaed1ce9185dbc68270991a68901e1d3e">Bus::subscribe()</a>. The node will receive all messages of the given type posted to the bus. Duplicate subscriptions are ignored.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">eventType</td><td>The message type identifier to subscribe to. </td></tr>
</table>
</dd>
</dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#aaed1ce9185dbc68270991a68901e1d3e" title="Subscribe a node to a specific message type.">Bus::subscribe()</a> </dd></dl>
<p class="definition">Definition at line <a class="el" href="node_8h_source.html#l00295">295</a> of file <a class="el" href="node_8h_source.html">node.h</a>.</p>
</div>
</div>
<a id="aad4f2b01a3e7c46d0253be40e13f2974" name="aad4f2b01a3e7c46d0253be40e13f2974"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aad4f2b01a3e7c46d0253be40e13f2974">&#9670;&#160;</a></span>unsubscribe()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void unsubscribe </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html#a9a6bed6d55e3ccf6e4b27ebfa879277c">MessageTypeID</a>&#160;</td>
<td class="paramname"><em>eventType</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Unsubscribe this node from a specific message type. </p>
<p>Delegates to <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a27cc2e333f174e22b360045c7aad959d">Bus::unsubscribe()</a>. If the node was not subscribed to the given type, this call has no effect.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">eventType</td><td>The message type identifier to unsubscribe from. </td></tr>
</table>
</dd>
</dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a27cc2e333f174e22b360045c7aad959d" title="Unsubscribe a node from a specific message type.">Bus::unsubscribe()</a> </dd></dl>
<p class="definition">Definition at line <a class="el" href="node_8h_source.html#l00301">301</a> of file <a class="el" href="node_8h_source.html">node.h</a>.</p>
</div>
</div>
<a id="ade72b9b723cf5c7d43f7cc556a466f99" name="ade72b9b723cf5c7d43f7cc556a466f99"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ade72b9b723cf5c7d43f7cc556a466f99">&#9670;&#160;</a></span>unsubscribeFromAll()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void unsubscribeFromAll </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Unsubscribe this node from all message types and broadcast mode. </p>
<p>Delegates to <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#af42df59cac80896d270e4bf2b350676f">Bus::unsubscribeFromAll()</a>. After this call, the node will no longer receive any messages until it re-subscribes.</p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#af42df59cac80896d270e4bf2b350676f" title="Unsubscribe a node from all message types and broadcast mode.">Bus::unsubscribeFromAll()</a> </dd></dl>
<p class="definition">Definition at line <a class="el" href="node_8h_source.html#l00307">307</a> of file <a class="el" href="node_8h_source.html">node.h</a>.</p>
</div>
</div>
<a id="a9aab57a60533a1a80a705bc569a9c589" name="a9aab57a60533a1a80a705bc569a9c589"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9aab57a60533a1a80a705bc569a9c589">&#9670;&#160;</a></span>emit()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T , class... Args&gt; </div>
<table class="memname">
<tr>
<td class="memname">bool emit </td>
<td>(</td>
<td class="paramtype">Args &amp;&amp;...&#160;</td>
<td class="paramname"><em>args</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Construct and emit a message of type <code>T</code> through the bus. </p>
<p>Forwards the call to <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a9aab57a60533a1a80a705bc569a9c589">Bus::emit()</a>. Creates a new message of type <code>T</code> using the provided arguments and posts it to the bus.</p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">T</td><td>The message type to emit. Must be derived from <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html">Message</a>. </td></tr>
<tr><td class="paramname">Args</td><td>Constructor argument types for <code>T</code>. </td></tr>
</table>
</dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">args</td><td>Arguments forwarded to the constructor of <code>T</code>. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>true</code> if at least one subscriber received the message, <code>false</code> otherwise.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a9aab57a60533a1a80a705bc569a9c589" title="Construct and emit a message of type T to the bus.">Bus::emit()</a> </dd></dl>
<p class="definition">Definition at line <a class="el" href="node_8h_source.html#l00314">314</a> of file <a class="el" href="node_8h_source.html">node.h</a>.</p>
</div>
</div>
<a id="a92c2bc8aa8bcf018ffe954a3e8e34324" name="a92c2bc8aa8bcf018ffe954a3e8e34324"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a92c2bc8aa8bcf018ffe954a3e8e34324">&#9670;&#160;</a></span>post()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool post </td>
<td>(</td>
<td class="paramtype">const std::shared_ptr&lt; <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html">Message</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>message</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Post an already constructed message through the bus. </p>
<p>Forwards the call to <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a92c2bc8aa8bcf018ffe954a3e8e34324">Bus::post()</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">message</td><td>Shared pointer to the message to post. Must not be <code>nullptr</code>. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>true</code> if at least one subscriber received the message, <code>false</code> otherwise.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html#a92c2bc8aa8bcf018ffe954a3e8e34324" title="Post an already constructed message to the bus.">Bus::post()</a> </dd></dl>
<p class="definition">Definition at line <a class="el" href="node_8h_source.html#l00320">320</a> of file <a class="el" href="node_8h_source.html">node.h</a>.</p>
</div>
</div>
<a id="ad3c328938178037a51a3f0be5711fa1b" name="ad3c328938178037a51a3f0be5711fa1b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad3c328938178037a51a3f0be5711fa1b">&#9670;&#160;</a></span>getMessageCount()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">size_t getMessageCount </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the number of messages currently in the node's queue. </p>
<dl class="section return"><dt>Returns</dt><dd>The number of pending messages waiting to be consumed. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>This operation is thread-safe. </dd></dl>
<p class="definition">Definition at line <a class="el" href="node_8h_source.html#l00326">326</a> of file <a class="el" href="node_8h_source.html">node.h</a>.</p>
</div>
</div>
<a id="a68168b63fcfb3cc18ba23ccbc2c269b7" name="a68168b63fcfb3cc18ba23ccbc2c269b7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a68168b63fcfb3cc18ba23ccbc2c269b7">&#9670;&#160;</a></span>popMessage()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::shared_ptr&lt; <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html">Message</a> &gt; popMessage </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Remove and return the front message from the node's queue (FIFO). </p>
<p>Retrieves the oldest message in the queue and removes it. If the queue is empty, returns <code>nullptr</code>.</p>
<dl class="section return"><dt>Returns</dt><dd>A shared pointer to the front <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html">Message</a>, or <code>nullptr</code> if the queue is empty. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>This operation is thread-safe. </dd></dl>
<p class="definition">Definition at line <a class="el" href="node_8h_source.html#l00334">334</a> of file <a class="el" href="node_8h_source.html">node.h</a>.</p>
</div>
</div>
<a id="afd326e91fe62057d1b3e1fc5e77f8526" name="afd326e91fe62057d1b3e1fc5e77f8526"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afd326e91fe62057d1b3e1fc5e77f8526">&#9670;&#160;</a></span>append()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void append </td>
<td>(</td>
<td class="paramtype">const std::shared_ptr&lt; <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html">Message</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>message</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">override</span><span class="mlabel">private</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Append a message to the node's internal queue. </p>
<p>Called exclusively by <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Bus.html">Bus</a> when dispatching a message to this node. Pushes the message onto the queue and notifies any thread waiting in <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Node.html#a90802ca554f4e38a59d1c326468618f0">syncWaitForMessage()</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">message</td><td>Shared pointer to the message being delivered. </td></tr>
</table>
</dd>
</dl>
<p>Implements <a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html#ac8043e64bbbd7a7a2b324991e96231ef">INode</a>.</p>
<p class="definition">Definition at line <a class="el" href="node_8h_source.html#l00348">348</a> of file <a class="el" href="node_8h_source.html">node.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="ad5e0dbd36f0d71fce9b00b7f991b2f38" name="ad5e0dbd36f0d71fce9b00b7f991b2f38"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad5e0dbd36f0d71fce9b00b7f991b2f38">&#9670;&#160;</a></span>mtx</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::mutex mtx</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">mutable</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Mutex for thread-safe access to the message queue. </p>
<p class="definition">Definition at line <a class="el" href="node_8h_source.html#l00262">262</a> of file <a class="el" href="node_8h_source.html">node.h</a>.</p>
</div>
</div>
<a id="a8a28311e9640e7d150b254d83424c08c" name="a8a28311e9640e7d150b254d83424c08c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8a28311e9640e7d150b254d83424c08c">&#9670;&#160;</a></span>messageQueue</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::queue&lt;std::shared_ptr&lt;<a class="el" href="classsdi__toolBox_1_1desktop_1_1eventBus_1_1Message.html">Message</a>&gt; &gt; messageQueue</td>
</tr>
</table>
</div><div class="memdoc">
<p>Queue of messages received by the node. </p>
<p class="definition">Definition at line <a class="el" href="node_8h_source.html#l00263">263</a> of file <a class="el" href="node_8h_source.html">node.h</a>.</p>
</div>
</div>
</div><!-- contents -->
<!-- HTML footer for doxygen 1.9.8-->
<!-- start footer part -->
<hr class="footer"/><address class="footer">
<small>
SDi toolsBox is licensed under the terms and conditions of the <a href="https://opensource.org/licenses/zlib-license.php" target="_blank">zlib/png license</a>
<br />
Copyright (c) 2026 - SD-Innovation S.A.S. - FRANCE | ver: 2.x.x - build: 2026-04-28
<br />
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen" /></a> 1.9.8
</small>
</address>
</body>
</html>

View File

@@ -0,0 +1,5 @@
<map id="Node" name="Node">
<area shape="rect" id="Node000001" title="Concrete subscriber node in the event bus system." alt="" coords="7,79,63,104"/>
<area shape="rect" id="Node000002" href="$classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html" title="Abstract interface representing a subscriber node in the event bus system." alt="" coords="5,5,65,31"/>
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="38,44,38,79,33,79,33,44"/>
</map>

View File

@@ -0,0 +1 @@
d102b35af681a3ee2ef2dfc1fbea4baa

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@@ -0,0 +1,5 @@
<map id="Node" name="Node">
<area shape="rect" id="Node000001" title="Concrete subscriber node in the event bus system." alt="" coords="7,79,63,104"/>
<area shape="rect" id="Node000002" href="$classsdi__toolBox_1_1desktop_1_1eventBus_1_1INode.html" title="Abstract interface representing a subscriber node in the event bus system." alt="" coords="5,5,65,31"/>
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="38,44,38,79,33,79,33,44"/>
</map>

View File

@@ -0,0 +1 @@
d102b35af681a3ee2ef2dfc1fbea4baa

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@@ -0,0 +1,72 @@
<!-- HTML header for doxygen 1.9.8-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<title>SDi toolsBox</title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="custom_doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">sdi_toolBox
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',false,false,'search.php','Search');
});
/* @license-end */
</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacesdi__toolBox.html">sdi_toolBox</a></li><li class="navelem"><a class="el" href="namespacesdi__toolBox_1_1desktop.html">desktop</a></li><li class="navelem"><a class="el" href="namespacesdi__toolBox_1_1desktop_1_1utils.html">utils</a></li><li class="navelem"><a class="el" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html">Base64</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">Base64 Member List</div></div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html">Base64</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html#a2e146328e4ebf4dfbb018ec1609ffb0d">Base64</a>()=delete</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html">Base64</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html#a935d1f391f3f2f7225e8afb6e2d8b7c4">decode</a>(std::string_view input)</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html">Base64</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html#a9f119bd9a4f05b462ee53198bd7db5f6">decode_to_string</a>(std::string_view input)</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html">Base64</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html#aa3aa7a6ab01dfcb27b4b54248288d863">encode</a>(std::span&lt; const std::uint8_t &gt; data)</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html">Base64</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html#a1894a56a676ed98e17066c4d185593b4">encode</a>(std::string_view text)</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html">Base64</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
</table></div><!-- contents -->
<!-- HTML footer for doxygen 1.9.8-->
<!-- start footer part -->
<hr class="footer"/><address class="footer">
<small>
SDi toolsBox is licensed under the terms and conditions of the <a href="https://opensource.org/licenses/zlib-license.php" target="_blank">zlib/png license</a>
<br />
Copyright (c) 2026 - SD-Innovation S.A.S. - FRANCE | ver: 2.x.x - build: 2026-04-28
<br />
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen" /></a> 1.9.8
</small>
</address>
</body>
</html>

View File

@@ -0,0 +1,289 @@
<!-- HTML header for doxygen 1.9.8-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<title>SDi toolsBox</title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="custom_doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">sdi_toolBox
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',false,false,'search.php','Search');
});
/* @license-end */
</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacesdi__toolBox.html">sdi_toolBox</a></li><li class="navelem"><a class="el" href="namespacesdi__toolBox_1_1desktop.html">desktop</a></li><li class="navelem"><a class="el" href="namespacesdi__toolBox_1_1desktop_1_1utils.html">utils</a></li><li class="navelem"><a class="el" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html">Base64</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64-members.html">List of all members</a> </div>
<div class="headertitle"><div class="title">Base64 Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p><code>#include &lt;<a class="el" href="base64_8h_source.html">base64.h</a>&gt;</code></p>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Utility class providing <a class="el" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html" title="Utility class providing Base64 encoding and decoding functionality.">Base64</a> encoding and decoding functionality. </p>
<p>This class implements the <a class="el" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html" title="Utility class providing Base64 encoding and decoding functionality.">Base64</a> encoding scheme as defined in RFC 4648. All methods are static and the class is not meant to be instantiated. Padding is handled via the '=' character.</p>
<dl class="section note"><dt>Note</dt><dd>The standard <a class="el" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html" title="Utility class providing Base64 encoding and decoding functionality.">Base64</a> alphabet is used ('A-Z', 'a-z', '0-9', '+', '/').</dd></dl>
<dl class="section user"><dt>Example - Encoding binary data:</dt><dd><div class="fragment"><div class="line">std::vector&lt;std::uint8_t&gt; data = { 0x48, 0x65, 0x6C, 0x6C, 0x6F };</div>
<div class="line">std::string encoded = <a class="code hl_function" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html#aa3aa7a6ab01dfcb27b4b54248288d863">Base64::encode</a>(data);</div>
<div class="line"><span class="comment">// encoded == &quot;SGVsbG8=&quot;</span></div>
<div class="ttc" id="aclasssdi__toolBox_1_1desktop_1_1utils_1_1Base64_html_aa3aa7a6ab01dfcb27b4b54248288d863"><div class="ttname"><a href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html#aa3aa7a6ab01dfcb27b4b54248288d863">sdi_toolBox::desktop::utils::Base64::encode</a></div><div class="ttdeci">static std::string encode(std::span&lt; const std::uint8_t &gt; data)</div><div class="ttdoc">Encodes binary data into a Base64 string.</div><div class="ttdef"><b>Definition</b> <a href="base64_8h_source.html#l00134">base64.h:134</a></div></div>
</div><!-- fragment --></dd></dl>
<dl class="section user"><dt>Example - Encoding a string:</dt><dd><div class="fragment"><div class="line">std::string encoded = <a class="code hl_function" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html#aa3aa7a6ab01dfcb27b4b54248288d863">Base64::encode</a>(<span class="stringliteral">&quot;Hello, World!&quot;</span>);</div>
<div class="line"><span class="comment">// encoded == &quot;SGVsbG8sIFdvcmxkIQ==&quot;</span></div>
</div><!-- fragment --></dd></dl>
<dl class="section user"><dt>Example - Decoding:</dt><dd><div class="fragment"><div class="line"><span class="keyword">auto</span> result = <a class="code hl_function" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html#a9f119bd9a4f05b462ee53198bd7db5f6">Base64::decode_to_string</a>(<span class="stringliteral">&quot;SGVsbG8sIFdvcmxkIQ==&quot;</span>);</div>
<div class="line"><span class="keywordflow">if</span> (result)</div>
<div class="line"> std::cout &lt;&lt; *result; <span class="comment">// prints: Hello, World!</span></div>
<div class="ttc" id="aclasssdi__toolBox_1_1desktop_1_1utils_1_1Base64_html_a9f119bd9a4f05b462ee53198bd7db5f6"><div class="ttname"><a href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html#a9f119bd9a4f05b462ee53198bd7db5f6">sdi_toolBox::desktop::utils::Base64::decode_to_string</a></div><div class="ttdeci">static std::optional&lt; std::string &gt; decode_to_string(std::string_view input)</div><div class="ttdoc">Decodes a Base64 string into a text string.</div><div class="ttdef"><b>Definition</b> <a href="base64_8h_source.html#l00216">base64.h:216</a></div></div>
</div><!-- fragment --> </dd></dl>
<p class="definition">Definition at line <a class="el" href="base64_8h_source.html#l00052">52</a> of file <a class="el" href="base64_8h_source.html">base64.h</a>.</p>
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a2e146328e4ebf4dfbb018ec1609ffb0d" id="r_a2e146328e4ebf4dfbb018ec1609ffb0d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html#a2e146328e4ebf4dfbb018ec1609ffb0d">Base64</a> ()=delete</td></tr>
<tr class="memdesc:a2e146328e4ebf4dfbb018ec1609ffb0d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deleted default constructor - this class is not meant to be instantiated. <br /></td></tr>
<tr class="separator:a2e146328e4ebf4dfbb018ec1609ffb0d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-static-methods" name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Encoding</div></td></tr>
<tr class="memitem:aa3aa7a6ab01dfcb27b4b54248288d863" id="r_aa3aa7a6ab01dfcb27b4b54248288d863"><td class="memItemLeft" align="right" valign="top">static std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html#aa3aa7a6ab01dfcb27b4b54248288d863">encode</a> (std::span&lt; const std::uint8_t &gt; data)</td></tr>
<tr class="memdesc:aa3aa7a6ab01dfcb27b4b54248288d863"><td class="mdescLeft">&#160;</td><td class="mdescRight">Encodes binary data into a <a class="el" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html" title="Utility class providing Base64 encoding and decoding functionality.">Base64</a> string. <br /></td></tr>
<tr class="separator:aa3aa7a6ab01dfcb27b4b54248288d863"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1894a56a676ed98e17066c4d185593b4" id="r_a1894a56a676ed98e17066c4d185593b4"><td class="memItemLeft" align="right" valign="top">static std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html#a1894a56a676ed98e17066c4d185593b4">encode</a> (std::string_view text)</td></tr>
<tr class="memdesc:a1894a56a676ed98e17066c4d185593b4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Encodes a text string into a <a class="el" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html" title="Utility class providing Base64 encoding and decoding functionality.">Base64</a> string. <br /></td></tr>
<tr class="separator:a1894a56a676ed98e17066c4d185593b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Decoding</div></td></tr>
<tr class="memitem:a935d1f391f3f2f7225e8afb6e2d8b7c4" id="r_a935d1f391f3f2f7225e8afb6e2d8b7c4"><td class="memItemLeft" align="right" valign="top">static std::optional&lt; std::vector&lt; std::uint8_t &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html#a935d1f391f3f2f7225e8afb6e2d8b7c4">decode</a> (std::string_view input)</td></tr>
<tr class="memdesc:a935d1f391f3f2f7225e8afb6e2d8b7c4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Decodes a <a class="el" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html" title="Utility class providing Base64 encoding and decoding functionality.">Base64</a> string into raw binary data. <br /></td></tr>
<tr class="separator:a935d1f391f3f2f7225e8afb6e2d8b7c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9f119bd9a4f05b462ee53198bd7db5f6" id="r_a9f119bd9a4f05b462ee53198bd7db5f6"><td class="memItemLeft" align="right" valign="top">static std::optional&lt; std::string &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html#a9f119bd9a4f05b462ee53198bd7db5f6">decode_to_string</a> (std::string_view input)</td></tr>
<tr class="memdesc:a9f119bd9a4f05b462ee53198bd7db5f6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Decodes a <a class="el" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html" title="Utility class providing Base64 encoding and decoding functionality.">Base64</a> string into a text string. <br /></td></tr>
<tr class="separator:a9f119bd9a4f05b462ee53198bd7db5f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a2e146328e4ebf4dfbb018ec1609ffb0d" name="a2e146328e4ebf4dfbb018ec1609ffb0d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2e146328e4ebf4dfbb018ec1609ffb0d">&#9670;&#160;</a></span>Base64()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html">Base64</a> </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">delete</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Deleted default constructor - this class is not meant to be instantiated. </p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="aa3aa7a6ab01dfcb27b4b54248288d863" name="aa3aa7a6ab01dfcb27b4b54248288d863"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa3aa7a6ab01dfcb27b4b54248288d863">&#9670;&#160;</a></span>encode() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::string encode </td>
<td>(</td>
<td class="paramtype">std::span&lt; const std::uint8_t &gt;&#160;</td>
<td class="paramname"><em>data</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Encodes binary data into a <a class="el" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html" title="Utility class providing Base64 encoding and decoding functionality.">Base64</a> string. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">data</td><td>A span of bytes to encode. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A Base64-encoded string, padded with &lsquo;&rsquo;='` characters if necessary. </dd></dl>
<p class="definition">Definition at line <a class="el" href="base64_8h_source.html#l00134">134</a> of file <a class="el" href="base64_8h_source.html">base64.h</a>.</p>
</div>
</div>
<a id="a1894a56a676ed98e17066c4d185593b4" name="a1894a56a676ed98e17066c4d185593b4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1894a56a676ed98e17066c4d185593b4">&#9670;&#160;</a></span>encode() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::string encode </td>
<td>(</td>
<td class="paramtype">std::string_view&#160;</td>
<td class="paramname"><em>text</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Encodes a text string into a <a class="el" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html" title="Utility class providing Base64 encoding and decoding functionality.">Base64</a> string. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">text</td><td>The input string to encode. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A Base64-encoded string, padded with &lsquo;&rsquo;='` characters if necessary. </dd></dl>
<p class="definition">Definition at line <a class="el" href="base64_8h_source.html#l00157">157</a> of file <a class="el" href="base64_8h_source.html">base64.h</a>.</p>
</div>
</div>
<a id="a935d1f391f3f2f7225e8afb6e2d8b7c4" name="a935d1f391f3f2f7225e8afb6e2d8b7c4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a935d1f391f3f2f7225e8afb6e2d8b7c4">&#9670;&#160;</a></span>decode()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::optional&lt; std::vector&lt; std::uint8_t &gt; &gt; decode </td>
<td>(</td>
<td class="paramtype">std::string_view&#160;</td>
<td class="paramname"><em>input</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Decodes a <a class="el" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html" title="Utility class providing Base64 encoding and decoding functionality.">Base64</a> string into raw binary data. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">input</td><td>The Base64-encoded string to decode. Must have a length that is a multiple of 4. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A vector of decoded bytes, or <code>std::nullopt</code> if the input is not a valid <a class="el" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html" title="Utility class providing Base64 encoding and decoding functionality.">Base64</a> string. </dd></dl>
<p class="definition">Definition at line <a class="el" href="base64_8h_source.html#l00163">163</a> of file <a class="el" href="base64_8h_source.html">base64.h</a>.</p>
</div>
</div>
<a id="a9f119bd9a4f05b462ee53198bd7db5f6" name="a9f119bd9a4f05b462ee53198bd7db5f6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9f119bd9a4f05b462ee53198bd7db5f6">&#9670;&#160;</a></span>decode_to_string()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::optional&lt; std::string &gt; decode_to_string </td>
<td>(</td>
<td class="paramtype">std::string_view&#160;</td>
<td class="paramname"><em>input</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Decodes a <a class="el" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html" title="Utility class providing Base64 encoding and decoding functionality.">Base64</a> string into a text string. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">input</td><td>The Base64-encoded string to decode. Must have a length that is a multiple of 4. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The decoded string, or <code>std::nullopt</code> if the input is not a valid <a class="el" href="classsdi__toolBox_1_1desktop_1_1utils_1_1Base64.html" title="Utility class providing Base64 encoding and decoding functionality.">Base64</a> string. </dd></dl>
<p class="definition">Definition at line <a class="el" href="base64_8h_source.html#l00216">216</a> of file <a class="el" href="base64_8h_source.html">base64.h</a>.</p>
</div>
</div>
</div><!-- contents -->
<!-- HTML footer for doxygen 1.9.8-->
<!-- start footer part -->
<hr class="footer"/><address class="footer">
<small>
SDi toolsBox is licensed under the terms and conditions of the <a href="https://opensource.org/licenses/zlib-license.php" target="_blank">zlib/png license</a>
<br />
Copyright (c) 2026 - SD-Innovation S.A.S. - FRANCE | ver: 2.x.x - build: 2026-04-28
<br />
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen" /></a> 1.9.8
</small>
</address>
</body>
</html>

View File

@@ -0,0 +1,77 @@
<!-- HTML header for doxygen 1.9.8-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<title>SDi toolsBox</title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="custom_doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">sdi_toolBox
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',false,false,'search.php','Search');
});
/* @license-end */
</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacesdi__toolBox.html">sdi_toolBox</a></li><li class="navelem"><a class="el" href="namespacesdi__toolBox_1_1desktop.html">desktop</a></li><li class="navelem"><a class="el" href="namespacesdi__toolBox_1_1desktop_1_1wxWidgets.html">wxWidgets</a></li><li class="navelem"><a class="el" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html">Wildcard</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">Wildcard Member List</div></div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html">Wildcard</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html#a072755bee03ec03ef9e542a058ac4ca3">addEntry</a>(const wxString &amp;description, const wxString &amp;pattern)</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html">Wildcard</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html#ac8bb3912a3ce86b15842e79d0b421204">clear</a>()</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html">Wildcard</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html#a2c29d68bfb53600207da6af46c90c82a">getWildcards</a>(bool addAllFiles=false) const</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html">Wildcard</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html#abbb6bb56ce0b9d52de0365a318a3e682">m_wildcards</a></td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html">Wildcard</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html#ae15592f0551f16f02b593d95941327b6">operator=</a>(const Wildcard &amp;other)=default</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html">Wildcard</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html#a171fd4c329a983725c2bcd89e0f07bde">operator=</a>(Wildcard &amp;&amp;other) noexcept=default</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html">Wildcard</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html#ae351800021f91f3165de7674a6fc1d9b">Wildcard</a>()=default</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html">Wildcard</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html#aef29ec50b83a907dc70f52a78acfb934">Wildcard</a>(const Wildcard &amp;other)=default</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html">Wildcard</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html#a8c524018c874ebee5d01064814895ae3">Wildcard</a>(Wildcard &amp;&amp;other) noexcept=default</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html">Wildcard</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html#a6ec87a913e4e88f7924f1446c52fb1e2">~Wildcard</a>()=default</td><td class="entry"><a class="el" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html">Wildcard</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
</table></div><!-- contents -->
<!-- HTML footer for doxygen 1.9.8-->
<!-- start footer part -->
<hr class="footer"/><address class="footer">
<small>
SDi toolsBox is licensed under the terms and conditions of the <a href="https://opensource.org/licenses/zlib-license.php" target="_blank">zlib/png license</a>
<br />
Copyright (c) 2026 - SD-Innovation S.A.S. - FRANCE | ver: 2.x.x - build: 2026-04-28
<br />
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen" /></a> 1.9.8
</small>
</address>
</body>
</html>

View File

@@ -0,0 +1,460 @@
<!-- HTML header for doxygen 1.9.8-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<title>SDi toolsBox</title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="custom_doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">sdi_toolBox
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',false,false,'search.php','Search');
});
/* @license-end */
</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacesdi__toolBox.html">sdi_toolBox</a></li><li class="navelem"><a class="el" href="namespacesdi__toolBox_1_1desktop.html">desktop</a></li><li class="navelem"><a class="el" href="namespacesdi__toolBox_1_1desktop_1_1wxWidgets.html">wxWidgets</a></li><li class="navelem"><a class="el" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html">Wildcard</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> &#124;
<a href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard-members.html">List of all members</a> </div>
<div class="headertitle"><div class="title">Wildcard Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p><code>#include &lt;<a class="el" href="wildcard_8h_source.html">wildcard.h</a>&gt;</code></p>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Manages a list of file wildcard entries for use in <a class="el" href="namespacesdi__toolBox_1_1desktop_1_1wxWidgets.html" title="Namespace containing desktop UI utilities built on top of the wxWidgets framework.">wxWidgets</a> file dialogs. </p>
<p>The <a class="el" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html" title="Manages a list of file wildcard entries for use in wxWidgets file dialogs.">Wildcard</a> class provides a convenient way to build and format wildcard filter strings compatible with <a class="el" href="namespacesdi__toolBox_1_1desktop_1_1wxWidgets.html" title="Namespace containing desktop UI utilities built on top of the wxWidgets framework.">wxWidgets</a> file dialogs (e.g., <code>wxFileDialog</code>).</p>
<p>Each entry consists of a human-readable description and a file pattern (e.g., <code>*.txt</code>). The formatted string follows the <a class="el" href="namespacesdi__toolBox_1_1desktop_1_1wxWidgets.html" title="Namespace containing desktop UI utilities built on top of the wxWidgets framework.">wxWidgets</a> wildcard format: </p><div class="fragment"><div class="line"><span class="stringliteral">&quot;Description (*.ext)|*.ext|Other (*.other)|*.other&quot;</span></div>
</div><!-- fragment --><dl class="section user"><dt>Example</dt><dd><div class="fragment"><div class="line"><a class="code hl_class" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html">sdi_toolBox::desktop::wxWidgets::Wildcard</a> wc;</div>
<div class="line">wc.<a class="code hl_function" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html#a072755bee03ec03ef9e542a058ac4ca3">addEntry</a>(<span class="stringliteral">&quot;Text files&quot;</span>, <span class="stringliteral">&quot;*.txt&quot;</span>);</div>
<div class="line">wc.<a class="code hl_function" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html#a072755bee03ec03ef9e542a058ac4ca3">addEntry</a>(<span class="stringliteral">&quot;CSV files&quot;</span>, <span class="stringliteral">&quot;*.csv&quot;</span>);</div>
<div class="line">wxString filter = wc.<a class="code hl_function" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html#a2c29d68bfb53600207da6af46c90c82a">getWildcards</a>(<span class="keyword">true</span>); <span class="comment">// includes &quot;All files (*.*)|*.*&quot;</span></div>
<div class="line">wxFileDialog dlg(<span class="keyword">this</span>, <span class="stringliteral">&quot;Open file&quot;</span>, <span class="stringliteral">&quot;&quot;</span>, <span class="stringliteral">&quot;&quot;</span>, filter, wxFD_OPEN);</div>
<div class="ttc" id="aclasssdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard_html"><div class="ttname"><a href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html">sdi_toolBox::desktop::wxWidgets::Wildcard</a></div><div class="ttdoc">Manages a list of file wildcard entries for use in wxWidgets file dialogs.</div><div class="ttdef"><b>Definition</b> <a href="wildcard_8h_source.html#l00042">wildcard.h:43</a></div></div>
<div class="ttc" id="aclasssdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard_html_a072755bee03ec03ef9e542a058ac4ca3"><div class="ttname"><a href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html#a072755bee03ec03ef9e542a058ac4ca3">sdi_toolBox::desktop::wxWidgets::Wildcard::addEntry</a></div><div class="ttdeci">void addEntry(const wxString &amp;description, const wxString &amp;pattern)</div><div class="ttdoc">Adds a new wildcard filter entry.</div><div class="ttdef"><b>Definition</b> <a href="wildcard_8h_source.html#l00122">wildcard.h:122</a></div></div>
<div class="ttc" id="aclasssdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard_html_a2c29d68bfb53600207da6af46c90c82a"><div class="ttname"><a href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html#a2c29d68bfb53600207da6af46c90c82a">sdi_toolBox::desktop::wxWidgets::Wildcard::getWildcards</a></div><div class="ttdeci">wxString getWildcards(bool addAllFiles=false) const</div><div class="ttdoc">Builds and returns the formatted wildcard string for use in wxWidgets file dialogs.</div><div class="ttdef"><b>Definition</b> <a href="wildcard_8h_source.html#l00128">wildcard.h:128</a></div></div>
</div><!-- fragment --> </dd></dl>
<p class="definition">Definition at line <a class="el" href="wildcard_8h_source.html#l00042">42</a> of file <a class="el" href="wildcard_8h_source.html">wildcard.h</a>.</p>
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard_1_1WildcardEntry.html">WildcardEntry</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Represents a single wildcard filter entry. <a href="structsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard_1_1WildcardEntry.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:ae351800021f91f3165de7674a6fc1d9b" id="r_ae351800021f91f3165de7674a6fc1d9b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html#ae351800021f91f3165de7674a6fc1d9b">Wildcard</a> ()=default</td></tr>
<tr class="memdesc:ae351800021f91f3165de7674a6fc1d9b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default constructor. <br /></td></tr>
<tr class="separator:ae351800021f91f3165de7674a6fc1d9b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6ec87a913e4e88f7924f1446c52fb1e2" id="r_a6ec87a913e4e88f7924f1446c52fb1e2"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html#a6ec87a913e4e88f7924f1446c52fb1e2">~Wildcard</a> ()=default</td></tr>
<tr class="memdesc:a6ec87a913e4e88f7924f1446c52fb1e2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default destructor. <br /></td></tr>
<tr class="separator:a6ec87a913e4e88f7924f1446c52fb1e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aef29ec50b83a907dc70f52a78acfb934" id="r_aef29ec50b83a907dc70f52a78acfb934"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html#aef29ec50b83a907dc70f52a78acfb934">Wildcard</a> (const <a class="el" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html">Wildcard</a> &amp;other)=default</td></tr>
<tr class="memdesc:aef29ec50b83a907dc70f52a78acfb934"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy constructor. <br /></td></tr>
<tr class="separator:aef29ec50b83a907dc70f52a78acfb934"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8c524018c874ebee5d01064814895ae3" id="r_a8c524018c874ebee5d01064814895ae3"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html#a8c524018c874ebee5d01064814895ae3">Wildcard</a> (<a class="el" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html">Wildcard</a> &amp;&amp;other) noexcept=default</td></tr>
<tr class="memdesc:a8c524018c874ebee5d01064814895ae3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Move constructor. <br /></td></tr>
<tr class="separator:a8c524018c874ebee5d01064814895ae3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae15592f0551f16f02b593d95941327b6" id="r_ae15592f0551f16f02b593d95941327b6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html">Wildcard</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html#ae15592f0551f16f02b593d95941327b6">operator=</a> (const <a class="el" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html">Wildcard</a> &amp;other)=default</td></tr>
<tr class="memdesc:ae15592f0551f16f02b593d95941327b6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy assignment operator. <br /></td></tr>
<tr class="separator:ae15592f0551f16f02b593d95941327b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a171fd4c329a983725c2bcd89e0f07bde" id="r_a171fd4c329a983725c2bcd89e0f07bde"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html">Wildcard</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html#a171fd4c329a983725c2bcd89e0f07bde">operator=</a> (<a class="el" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html">Wildcard</a> &amp;&amp;other) noexcept=default</td></tr>
<tr class="memdesc:a171fd4c329a983725c2bcd89e0f07bde"><td class="mdescLeft">&#160;</td><td class="mdescRight">Move assignment operator. <br /></td></tr>
<tr class="separator:a171fd4c329a983725c2bcd89e0f07bde"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac8bb3912a3ce86b15842e79d0b421204" id="r_ac8bb3912a3ce86b15842e79d0b421204"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html#ac8bb3912a3ce86b15842e79d0b421204">clear</a> ()</td></tr>
<tr class="memdesc:ac8bb3912a3ce86b15842e79d0b421204"><td class="mdescLeft">&#160;</td><td class="mdescRight">Removes all wildcard entries. <br /></td></tr>
<tr class="separator:ac8bb3912a3ce86b15842e79d0b421204"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a072755bee03ec03ef9e542a058ac4ca3" id="r_a072755bee03ec03ef9e542a058ac4ca3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html#a072755bee03ec03ef9e542a058ac4ca3">addEntry</a> (const wxString &amp;description, const wxString &amp;pattern)</td></tr>
<tr class="memdesc:a072755bee03ec03ef9e542a058ac4ca3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds a new wildcard filter entry. <br /></td></tr>
<tr class="separator:a072755bee03ec03ef9e542a058ac4ca3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2c29d68bfb53600207da6af46c90c82a" id="r_a2c29d68bfb53600207da6af46c90c82a"><td class="memItemLeft" align="right" valign="top">wxString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html#a2c29d68bfb53600207da6af46c90c82a">getWildcards</a> (bool addAllFiles=false) const</td></tr>
<tr class="memdesc:a2c29d68bfb53600207da6af46c90c82a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Builds and returns the formatted wildcard string for use in <a class="el" href="namespacesdi__toolBox_1_1desktop_1_1wxWidgets.html" title="Namespace containing desktop UI utilities built on top of the wxWidgets framework.">wxWidgets</a> file dialogs. <br /></td></tr>
<tr class="separator:a2c29d68bfb53600207da6af46c90c82a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-attribs" name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:abbb6bb56ce0b9d52de0365a318a3e682" id="r_abbb6bb56ce0b9d52de0365a318a3e682"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="structsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard_1_1WildcardEntry.html">WildcardEntry</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html#abbb6bb56ce0b9d52de0365a318a3e682">m_wildcards</a></td></tr>
<tr class="separator:abbb6bb56ce0b9d52de0365a318a3e682"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="ae351800021f91f3165de7674a6fc1d9b" name="ae351800021f91f3165de7674a6fc1d9b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae351800021f91f3165de7674a6fc1d9b">&#9670;&#160;</a></span>Wildcard() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html">Wildcard</a> </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">default</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Default constructor. </p>
</div>
</div>
<a id="a6ec87a913e4e88f7924f1446c52fb1e2" name="a6ec87a913e4e88f7924f1446c52fb1e2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6ec87a913e4e88f7924f1446c52fb1e2">&#9670;&#160;</a></span>~Wildcard()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual ~<a class="el" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html">Wildcard</a> </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span><span class="mlabel">default</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Default destructor. </p>
</div>
</div>
<a id="aef29ec50b83a907dc70f52a78acfb934" name="aef29ec50b83a907dc70f52a78acfb934"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aef29ec50b83a907dc70f52a78acfb934">&#9670;&#160;</a></span>Wildcard() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html">Wildcard</a> </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html">Wildcard</a> &amp;&#160;</td>
<td class="paramname"><em>other</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">default</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Copy constructor. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">other</td><td>The <a class="el" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html" title="Manages a list of file wildcard entries for use in wxWidgets file dialogs.">Wildcard</a> instance to copy from. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a8c524018c874ebee5d01064814895ae3" name="a8c524018c874ebee5d01064814895ae3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8c524018c874ebee5d01064814895ae3">&#9670;&#160;</a></span>Wildcard() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html">Wildcard</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html">Wildcard</a> &amp;&amp;&#160;</td>
<td class="paramname"><em>other</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">default</span><span class="mlabel">noexcept</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Move constructor. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">other</td><td>The <a class="el" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html" title="Manages a list of file wildcard entries for use in wxWidgets file dialogs.">Wildcard</a> instance to move from. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="ae15592f0551f16f02b593d95941327b6" name="ae15592f0551f16f02b593d95941327b6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae15592f0551f16f02b593d95941327b6">&#9670;&#160;</a></span>operator=() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html">Wildcard</a> &amp; operator= </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html">Wildcard</a> &amp;&#160;</td>
<td class="paramname"><em>other</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">default</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Copy assignment operator. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">other</td><td>The <a class="el" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html" title="Manages a list of file wildcard entries for use in wxWidgets file dialogs.">Wildcard</a> instance to copy from. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Reference to this instance. </dd></dl>
</div>
</div>
<a id="a171fd4c329a983725c2bcd89e0f07bde" name="a171fd4c329a983725c2bcd89e0f07bde"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a171fd4c329a983725c2bcd89e0f07bde">&#9670;&#160;</a></span>operator=() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html">Wildcard</a> &amp; operator= </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html">Wildcard</a> &amp;&amp;&#160;</td>
<td class="paramname"><em>other</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">default</span><span class="mlabel">noexcept</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Move assignment operator. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">other</td><td>The <a class="el" href="classsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard.html" title="Manages a list of file wildcard entries for use in wxWidgets file dialogs.">Wildcard</a> instance to move from. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Reference to this instance. </dd></dl>
</div>
</div>
<a id="ac8bb3912a3ce86b15842e79d0b421204" name="ac8bb3912a3ce86b15842e79d0b421204"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac8bb3912a3ce86b15842e79d0b421204">&#9670;&#160;</a></span>clear()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void clear </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Removes all wildcard entries. </p>
<p class="definition">Definition at line <a class="el" href="wildcard_8h_source.html#l00116">116</a> of file <a class="el" href="wildcard_8h_source.html">wildcard.h</a>.</p>
</div>
</div>
<a id="a072755bee03ec03ef9e542a058ac4ca3" name="a072755bee03ec03ef9e542a058ac4ca3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a072755bee03ec03ef9e542a058ac4ca3">&#9670;&#160;</a></span>addEntry()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void addEntry </td>
<td>(</td>
<td class="paramtype">const wxString &amp;&#160;</td>
<td class="paramname"><em>description</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const wxString &amp;&#160;</td>
<td class="paramname"><em>pattern</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Adds a new wildcard filter entry. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">description</td><td>Human-readable description of the file type (e.g., "Text files"). </td></tr>
<tr><td class="paramname">pattern</td><td>File pattern used for filtering (e.g., "*.txt"). </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="wildcard_8h_source.html#l00122">122</a> of file <a class="el" href="wildcard_8h_source.html">wildcard.h</a>.</p>
</div>
</div>
<a id="a2c29d68bfb53600207da6af46c90c82a" name="a2c29d68bfb53600207da6af46c90c82a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2c29d68bfb53600207da6af46c90c82a">&#9670;&#160;</a></span>getWildcards()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">wxString getWildcards </td>
<td>(</td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>addAllFiles</em> = <code>false</code></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Builds and returns the formatted wildcard string for use in <a class="el" href="namespacesdi__toolBox_1_1desktop_1_1wxWidgets.html" title="Namespace containing desktop UI utilities built on top of the wxWidgets framework.">wxWidgets</a> file dialogs. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">addAllFiles</td><td>If <code>true</code>, appends an "All files (*.*)|*.*" entry at the end. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A formatted wildcard string compatible with <a class="el" href="namespacesdi__toolBox_1_1desktop_1_1wxWidgets.html" title="Namespace containing desktop UI utilities built on top of the wxWidgets framework.">wxWidgets</a> file dialog filters. </dd></dl>
<p class="definition">Definition at line <a class="el" href="wildcard_8h_source.html#l00128">128</a> of file <a class="el" href="wildcard_8h_source.html">wildcard.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="abbb6bb56ce0b9d52de0365a318a3e682" name="abbb6bb56ce0b9d52de0365a318a3e682"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abbb6bb56ce0b9d52de0365a318a3e682">&#9670;&#160;</a></span>m_wildcards</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::vector&lt;<a class="el" href="structsdi__toolBox_1_1desktop_1_1wxWidgets_1_1Wildcard_1_1WildcardEntry.html">WildcardEntry</a>&gt; m_wildcards</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="wildcard_8h_source.html#l00112">112</a> of file <a class="el" href="wildcard_8h_source.html">wildcard.h</a>.</p>
</div>
</div>
</div><!-- contents -->
<!-- HTML footer for doxygen 1.9.8-->
<!-- start footer part -->
<hr class="footer"/><address class="footer">
<small>
SDi toolsBox is licensed under the terms and conditions of the <a href="https://opensource.org/licenses/zlib-license.php" target="_blank">zlib/png license</a>
<br />
Copyright (c) 2026 - SD-Innovation S.A.S. - FRANCE | ver: 2.x.x - build: 2026-04-28
<br />
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen" /></a> 1.9.8
</small>
</address>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 B

View File

@@ -0,0 +1,425 @@
<!-- HTML header for doxygen 1.9.8-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<title>SDi toolsBox</title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="custom_doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">sdi_toolBox
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',false,false,'search.php','Search');
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div><div class="header">
<div class="headertitle"><div class="title">Template cmake</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><div class="fragment"><div class="line">cmake_minimum_required (VERSION 3.23)</div>
<div class="line"> </div>
<div class="line">#--- v1.0.0 ---</div>
<div class="line">#------------------------------------------------</div>
<div class="line">#--- Setup compiler settings ---</div>
<div class="line">#------------------------------------------------</div>
<div class="line"># Set C language standard</div>
<div class="line">set(CMAKE_C_STANDARD 17)</div>
<div class="line">set(CMAKE_C_STANDARD_REQUIRED ON)</div>
<div class="line">set(CMAKE_C_EXTENSIONS OFF) # Only standard features, no compiler-specific extensions</div>
<div class="line"> </div>
<div class="line"># Set C++ language standard</div>
<div class="line">set(CMAKE_CXX_STANDARD 23)</div>
<div class="line">set(CMAKE_CXX_STANDARD_REQUIRED ON)</div>
<div class="line">set(CMAKE_CXX_EXTENSIONS OFF) # Only standard features, no compiler-specific extensions</div>
<div class="line"> </div>
<div class="line"># Options</div>
<div class="line">option(APP_WIN32 &quot;Build app as a Windows GUI application&quot; OFF)</div>
<div class="line"> </div>
<div class="line"># Set compiler flags based on build type</div>
<div class="line">set(GENERAL_C_FLAGS</div>
<div class="line"> /MP # Enable multi-processor compilation</div>
<div class="line">)</div>
<div class="line">set(GENERAL_CXX_FLAGS</div>
<div class="line"> /MP # Enable multi-processor compilation</div>
<div class="line"> /EHsc # Enable C++ exception handling</div>
<div class="line">)</div>
<div class="line"> </div>
<div class="line">set(DEBUG_C_FLAGS</div>
<div class="line"> /Od # Disable optimization for debugging</div>
<div class="line"> /Zi # Generate complete debugging information</div>
<div class="line"> /RTC1 # Enable runtime error checks</div>
<div class="line"> /Ob0 # Disable inline expansion</div>
<div class="line"> /W3 # Enable standard warnings</div>
<div class="line"># /W4 # Enable high-level warnings</div>
<div class="line">)</div>
<div class="line">set(DEBUG_CXX_FLAGS</div>
<div class="line"> /Od # Disable optimization for debugging</div>
<div class="line"> /Zi # Generate complete debugging information</div>
<div class="line"> /RTC1 # Enable runtime error checks</div>
<div class="line"> /Ob0 # Disable inline expansion</div>
<div class="line"> /W3 # Enable standard warnings</div>
<div class="line"># /W4 # Enable high-level warnings</div>
<div class="line">)</div>
<div class="line"> </div>
<div class="line">set(RELEASE_C_FLAGS</div>
<div class="line"> /O2 # Optimize for speed</div>
<div class="line"> /Ot # Favor fast code</div>
<div class="line"> /Oi # Generate intrinsic functions</div>
<div class="line"> /GL # Enable whole program optimization</div>
<div class="line"> /Ob2 # Enable inline expansion</div>
<div class="line"> /W3 # Enable standard warnings</div>
<div class="line"># /W4 # Enable high-level warnings</div>
<div class="line">)</div>
<div class="line">set(RELEASE_CXX_FLAGS</div>
<div class="line"> /O2 # Optimize for speed</div>
<div class="line"> /Ot # Favor fast code</div>
<div class="line"> /Oi # Generate intrinsic functions</div>
<div class="line"> /GL # Enable whole program optimization</div>
<div class="line"> /Ob2 # Enable inline expansion</div>
<div class="line"> /W3 # Enable standard warnings</div>
<div class="line"># /W4 # Enable high-level warnings</div>
<div class="line">)</div>
<div class="line"> </div>
<div class="line"> </div>
<div class="line">#------------------------------------------------</div>
<div class="line">#--- Project configuration ---</div>
<div class="line">#------------------------------------------------</div>
<div class="line"># Define the project settings</div>
<div class="line">project(&quot;projectName&quot;)</div>
<div class="line"> </div>
<div class="line"># Source directory</div>
<div class="line">set(SRC_DIR</div>
<div class="line"> &quot;src&quot;</div>
<div class="line">)</div>
<div class="line"> </div>
<div class="line"># Resource files (add resource files here if needed)</div>
<div class="line">set(RESOURCE_FILES </div>
<div class="line"># &quot;src/file.rc&quot;</div>
<div class="line">)</div>
<div class="line"> </div>
<div class="line">#------------------------------------------------</div>
<div class="line">#--- Sanity checks ---</div>
<div class="line">#------------------------------------------------</div>
<div class="line"># Ensure build type is set (Debug, Release, etc.)</div>
<div class="line">if(NOT CMAKE_BUILD_TYPE)</div>
<div class="line"> message(FATAL_ERROR &quot;CMAKE_BUILD_TYPE must be set&quot;)</div>
<div class="line">endif()</div>
<div class="line"> </div>
<div class="line"># Ensure DEV_LIB environment variable is defined (used for external libraries)</div>
<div class="line">if(NOT DEFINED ENV{DEV_LIB})</div>
<div class="line"> message(FATAL_ERROR &quot;DEV_LIB environment variable must be defined&quot;)</div>
<div class="line">endif() </div>
<div class="line">set(DEV_LIB $ENV{DEV_LIB})</div>
<div class="line"> </div>
<div class="line"> </div>
<div class="line">#------------------------------------------------</div>
<div class="line">#--- Include directories ---</div>
<div class="line">#------------------------------------------------</div>
<div class="line"># General include directories (add your common include paths here)</div>
<div class="line">set(GENERAL_INCLUDE_DIRS</div>
<div class="line"> &quot;src&quot;</div>
<div class="line"> &quot;sdi_toolBox_1.0.x/toolBox&quot;</div>
<div class="line"> &quot;${DEV_LIB}/boost_1_87_0&quot;</div>
<div class="line"> &quot;${DEV_LIB}/wxWidgets-3.2.8/include/msvc&quot;</div>
<div class="line"> &quot;${DEV_LIB}/wxWidgets-3.2.8/include&quot;</div>
<div class="line"> &quot;${DEV_LIB}/openssl-3.5.0/include&quot;</div>
<div class="line">)</div>
<div class="line"> </div>
<div class="line"># Additional include directories for Debug configuration</div>
<div class="line">set(DEBUG_INCLUDE_DIRS</div>
<div class="line"> # &quot;path/to/debug/include&quot;</div>
<div class="line">)</div>
<div class="line"> </div>
<div class="line"># Additional include directories for Release configuration</div>
<div class="line">set(RELEASE_INCLUDE_DIRS</div>
<div class="line"> # &quot;path/to/debug/include&quot;</div>
<div class="line">)</div>
<div class="line"> </div>
<div class="line"> </div>
<div class="line">#------------------------------------------------</div>
<div class="line">#--- Library directories ---</div>
<div class="line">#------------------------------------------------</div>
<div class="line"># General library directories (add your common library paths here)</div>
<div class="line">set(GENERAL_LIBRARY_DIRS</div>
<div class="line"> ${CMAKE_BINARY_DIR}</div>
<div class="line"> &quot;${DEV_LIB}/boost_1_87_0/stage/lib&quot;</div>
<div class="line"> &quot;${DEV_LIB}/wxWidgets-3.2.8/lib/vc_x64_lib&quot;</div>
<div class="line"> &quot;${DEV_LIB}/openssl-3.5.0/lib&quot;</div>
<div class="line">)</div>
<div class="line"> </div>
<div class="line"># Additional library directories for Debug configuration</div>
<div class="line">set(DEBUG_LIBRARY_DIRS</div>
<div class="line"> # &quot;path/to/debug/lib&quot;</div>
<div class="line">)</div>
<div class="line"> </div>
<div class="line"># Additional library directories for Release configuration</div>
<div class="line">set(RELEASE_LIBRARY_DIRS</div>
<div class="line"> # &quot;path/to/debug/lib&quot;</div>
<div class="line">)</div>
<div class="line"> </div>
<div class="line"> </div>
<div class="line">#------------------------------------------------</div>
<div class="line">#--- Preprocessor definitions ---</div>
<div class="line">#------------------------------------------------</div>
<div class="line"># General preprocessor definitions (add your common defines here)</div>
<div class="line">set(GENERAL_PREPROCESSOR_DEFINITIONS</div>
<div class="line"> &quot;_CRT_SECURE_NO_DEPRECATE&quot;</div>
<div class="line"> &quot;_CRT_NONSTDC_NO_DEPRECATE&quot;</div>
<div class="line"> &quot;_UNICODE&quot;</div>
<div class="line"> &quot;_WINDOWS&quot;</div>
<div class="line"> &quot;NOMINMAX&quot;</div>
<div class="line"> &quot;UNICODE&quot;</div>
<div class="line"> &quot;WIN32&quot;</div>
<div class="line"> &quot;WIN32_LEAN_AND_MEAN&quot;</div>
<div class="line">)</div>
<div class="line"> </div>
<div class="line"># Additional preprocessor definitions for Debug configuration</div>
<div class="line">set(DEBUG_PREPROCESSOR_DEFINITIONS</div>
<div class="line"> &quot;_DEBUG&quot;</div>
<div class="line"> &quot;DEBUG&quot;</div>
<div class="line"> &quot;WXDEBUG&quot;</div>
<div class="line">)</div>
<div class="line"> </div>
<div class="line"># Additional preprocessor definitions for Release configuration</div>
<div class="line">set(RELEASE_PREPROCESSOR_DEFINITIONS</div>
<div class="line"> &quot;NDEBUG&quot;</div>
<div class="line">)</div>
<div class="line"> </div>
<div class="line"> </div>
<div class="line">#------------------------------------------------</div>
<div class="line">#--- Libraries and DLLs ---</div>
<div class="line">#------------------------------------------------</div>
<div class="line"># General libraries to link (add your common libraries here)</div>
<div class="line">set(GENERAL_LIB</div>
<div class="line"># &quot;libssl.lib&quot;</div>
<div class="line">)</div>
<div class="line"> </div>
<div class="line"># Additional libraries for Debug configuration</div>
<div class="line">set(DEBUG_LIB</div>
<div class="line"> # &quot;libDebug.lib&quot;</div>
<div class="line">)</div>
<div class="line"> </div>
<div class="line"># Additional libraries for Release configuration</div>
<div class="line">set(RELEASE_LIB</div>
<div class="line"> # &quot;libRelease.lib&quot;</div>
<div class="line">)</div>
<div class="line"> </div>
<div class="line"># General DLLs to copy after build (add your common DLLs here)</div>
<div class="line">set(GENERAL_BIN</div>
<div class="line"> # &quot;path/to/dll&quot;</div>
<div class="line">)</div>
<div class="line"> </div>
<div class="line"># Additional DLLs for Debug configuration</div>
<div class="line">set(DEBUG_BIN</div>
<div class="line"> # &quot;path/to/debug/dll&quot;</div>
<div class="line">)</div>
<div class="line"> </div>
<div class="line"># Additional DLLs for Release configuration</div>
<div class="line">set(RELEASE_BIN</div>
<div class="line"> # &quot;path/to/release/dll&quot;</div>
<div class="line">)</div>
<div class="line"> </div>
<div class="line"> </div>
<div class="line">#------------------------------------------------</div>
<div class="line">#--- MSVC Debug Information Format Policy ---</div>
<div class="line">#------------------------------------------------</div>
<div class="line"># Ensure CMake policy CMP0141 is set to NEW to control the MSVC debug information format.</div>
<div class="line"># This sets CMAKE_MSVC_DEBUG_INFORMATION_FORMAT to &quot;EditAndContinue&quot; for Debug and RelWithDebInfo configurations,</div>
<div class="line"># and to &quot;ProgramDatabase&quot; for other configurations, but only when using the MSVC compiler.</div>
<div class="line">if (POLICY CMP0141)</div>
<div class="line"> cmake_policy(SET CMP0141 NEW)</div>
<div class="line"> set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT &quot;$&lt;IF:$&lt;AND:$&lt;C_COMPILER_ID:MSVC&gt;,$&lt;CXX_COMPILER_ID:MSVC&gt;&gt;,$&lt;$&lt;CONFIG:Debug,RelWithDebInfo&gt;:EditAndContinue&gt;,$&lt;$&lt;CONFIG:Debug,RelWithDebInfo&gt;:ProgramDatabase&gt;&gt;&quot;)</div>
<div class="line">endif()</div>
<div class="line"> </div>
<div class="line"> </div>
<div class="line">#------------------------------------------------</div>
<div class="line">#--- Source files gathering ---</div>
<div class="line">#------------------------------------------------</div>
<div class="line"># Collect all C and C++ source files recursively</div>
<div class="line">file(GLOB_RECURSE SOURCES_C &quot;${SRC_DIR}/*.c&quot;)</div>
<div class="line">file(GLOB_RECURSE SOURCES_CPP &quot;${SRC_DIR}/*.cpp&quot;)</div>
<div class="line"> </div>
<div class="line"> </div>
<div class="line">#------------------------------------------------</div>
<div class="line">#--- Target definition ---</div>
<div class="line">#------------------------------------------------</div>
<div class="line"># Define the main executable target</div>
<div class="line">if(APP_WIN32)</div>
<div class="line"> add_executable(${PROJECT_NAME} WIN32</div>
<div class="line"> ${SOURCES_C}</div>
<div class="line"> ${SOURCES_CPP}</div>
<div class="line"> ${RESOURCE_FILES}</div>
<div class="line"> )</div>
<div class="line">else()</div>
<div class="line"> add_executable(${PROJECT_NAME}</div>
<div class="line"> ${SOURCES_C}</div>
<div class="line"> ${SOURCES_CPP}</div>
<div class="line"> ${RESOURCE_FILES}</div>
<div class="line"> )</div>
<div class="line">endif()</div>
<div class="line"> </div>
<div class="line"> </div>
<div class="line">#------------------------------------------------</div>
<div class="line">#--- Target properties setup ---</div>
<div class="line">#------------------------------------------------</div>
<div class="line"># Setup include directories</div>
<div class="line">target_include_directories(${PROJECT_NAME} PRIVATE</div>
<div class="line"> ${GENERAL_INCLUDE_DIRS}</div>
<div class="line"> $&lt;$&lt;CONFIG:Debug&gt;:${DEBUG_INCLUDE_DIRS}&gt;</div>
<div class="line"> $&lt;$&lt;CONFIG:Release&gt;:${RELEASE_INCLUDE_DIRS}&gt;</div>
<div class="line">)</div>
<div class="line"> </div>
<div class="line"># Setup library directories</div>
<div class="line">target_link_directories(${PROJECT_NAME} PRIVATE</div>
<div class="line"> ${GENERAL_LIBRARY_DIRS}</div>
<div class="line"> $&lt;$&lt;CONFIG:Debug&gt;:${DEBUG_LIBRARY_DIRS}&gt;</div>
<div class="line"> $&lt;$&lt;CONFIG:Release&gt;:${RELEASE_LIBRARY_DIRS}&gt;</div>
<div class="line">)</div>
<div class="line"> </div>
<div class="line"># Setup preprocessor definitions</div>
<div class="line">target_compile_definitions(${PROJECT_NAME} PRIVATE</div>
<div class="line"> ${GENERAL_PREPROCESSOR_DEFINITIONS}</div>
<div class="line"> $&lt;$&lt;CONFIG:Debug&gt;:${DEBUG_PREPROCESSOR_DEFINITIONS}&gt;</div>
<div class="line"> $&lt;$&lt;CONFIG:Release&gt;:${RELEASE_PREPROCESSOR_DEFINITIONS}&gt;</div>
<div class="line">)</div>
<div class="line"> </div>
<div class="line"># Setup linked libraries</div>
<div class="line">target_link_libraries(${PROJECT_NAME} PRIVATE</div>
<div class="line"> ${GENERAL_LIB}</div>
<div class="line"> $&lt;$&lt;CONFIG:Debug&gt;:${DEBUG_LIB}&gt;</div>
<div class="line"> $&lt;$&lt;CONFIG:Release&gt;:${RELEASE_LIB}&gt;</div>
<div class="line">)</div>
<div class="line"> </div>
<div class="line"># Setup compiler options</div>
<div class="line">set(PROJET_C_FLAGS</div>
<div class="line"> ${GENERAL_C_FLAGS}</div>
<div class="line"> $&lt;$&lt;CONFIG:Debug&gt;:${DEBUG_C_FLAGS}&gt;</div>
<div class="line"> $&lt;$&lt;CONFIG:Release&gt;:${RELEASE_C_FLAGS}&gt;</div>
<div class="line">)</div>
<div class="line">set(PROJET_CXX_FLAGS</div>
<div class="line"> ${GENERAL_CXX_FLAGS}</div>
<div class="line"> $&lt;$&lt;CONFIG:Debug&gt;:${DEBUG_CXX_FLAGS}&gt;</div>
<div class="line"> $&lt;$&lt;CONFIG:Release&gt;:${RELEASE_CXX_FLAGS}&gt;</div>
<div class="line">)</div>
<div class="line"> </div>
<div class="line">target_compile_options(${PROJECT_NAME} PRIVATE</div>
<div class="line"> $&lt;$&lt;COMPILE_LANGUAGE:C&gt;:${PROJET_C_FLAGS}&gt; # Apply to C files</div>
<div class="line"> $&lt;$&lt;COMPILE_LANGUAGE:CXX&gt;:${PROJET_CXX_FLAGS}&gt; # Apply to C++ files</div>
<div class="line">)</div>
<div class="line"> </div>
<div class="line"> </div>
<div class="line"># Setup compiler and linker options (MSVC specific)</div>
<div class="line">if(MSVC)</div>
<div class="line"> target_link_options(${PROJECT_NAME} PRIVATE &quot;/ignore:4099&quot; /PROFILE)</div>
<div class="line">endif()</div>
<div class="line"> </div>
<div class="line"> </div>
<div class="line">#------------------------------------------------</div>
<div class="line">#--- Post-build: Copy DLLs ---</div>
<div class="line">#------------------------------------------------</div>
<div class="line"># Copy DLLs to the output directory after build</div>
<div class="line">if(GENERAL_BIN OR DEBUG_BIN OR RELEASE_BIN)</div>
<div class="line"> add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD</div>
<div class="line"> COMMAND ${CMAKE_COMMAND} -E copy_if_different</div>
<div class="line"> ${GENERAL_BIN}</div>
<div class="line"> $&lt;$&lt;CONFIG:Debug&gt;:${DEBUG_BIN}&gt;</div>
<div class="line"> $&lt;$&lt;CONFIG:Release&gt;:${RELEASE_BIN}&gt;</div>
<div class="line"> ${CMAKE_BINARY_DIR}</div>
<div class="line"> )</div>
<div class="line">endif()</div>
<div class="line"> </div>
<div class="line"> </div>
<div class="line">#------------------------------------------------</div>
<div class="line">#--- Project compilation log ---</div>
<div class="line">#------------------------------------------------</div>
<div class="line"># Print project and environment information for diagnostics</div>
<div class="line">message(STATUS &quot;-------------------------------------------------------&quot;)</div>
<div class="line">message(STATUS &quot;┏(-_-)┛┗(-_-)┓┗(-_-)┛┏(-_-)┓┏(-_-)┓┗(-_-)┛┏(-_-)┛┗(-_-)┓&quot;)</div>
<div class="line">message(STATUS &quot;-------------------------------------------------------&quot;)</div>
<div class="line">message(STATUS &quot;--- Platform Information ------------------------------&quot;)</div>
<div class="line">message(STATUS &quot;System Name: ${CMAKE_SYSTEM_NAME}&quot;)</div>
<div class="line">message(STATUS &quot;Processor: ${CMAKE_SYSTEM_PROCESSOR}&quot;)</div>
<div class="line">message(STATUS &quot;CMake Generator: ${CMAKE_GENERATOR}&quot;)</div>
<div class="line">message(STATUS &quot;-------------------------------------------------------&quot;)</div>
<div class="line">message(STATUS &quot;--- Compiler/Language Settings ------------------------&quot;)</div>
<div class="line">message(STATUS &quot;Build Type: ${CMAKE_BUILD_TYPE}&quot;)</div>
<div class="line">message(STATUS &quot;C Standard: ${CMAKE_C_STANDARD}&quot;)</div>
<div class="line">message(STATUS &quot;C Compiler ID: ${CMAKE_C_COMPILER_ID}&quot;)</div>
<div class="line">message(STATUS &quot;C Compiler Version: ${CMAKE_C_COMPILER_VERSION}&quot;)</div>
<div class="line">message(STATUS &quot;C Common Compiler Flags: ${GENERAL_C_FLAGS}&quot;)</div>
<div class="line">message(STATUS &quot;C Debug Compiler Flags: ${DEBUG_C_FLAGS}&quot;)</div>
<div class="line">message(STATUS &quot;C Release Compiler Flags: ${RELEASE_C_FLAGS}&quot;)</div>
<div class="line">message(STATUS &quot;C++ Standard: ${CMAKE_CXX_STANDARD}&quot;)</div>
<div class="line">message(STATUS &quot;C++ Compiler ID: ${CMAKE_CXX_COMPILER_ID}&quot;)</div>
<div class="line">message(STATUS &quot;C++ Compiler Version: ${CMAKE_CXX_COMPILER_VERSION}&quot;)</div>
<div class="line">message(STATUS &quot;C++ Common Compiler Flags: ${GENERAL_CXX_FLAGS}&quot;)</div>
<div class="line">message(STATUS &quot;C++ Debug Compiler Flags: ${DEBUG_CXX_FLAGS}&quot;)</div>
<div class="line">message(STATUS &quot;C++ Release Compiler Flags: ${RELEASE_CXX_FLAGS}&quot;)</div>
<div class="line">message(STATUS &quot;Common Linker Flags: ${CMAKE_EXE_LINKER_FLAGS}&quot;)</div>
<div class="line">message(STATUS &quot;Debug Linker Flags: ${CMAKE_EXE_LINKER_FLAGS_DEBUG}&quot;)</div>
<div class="line">message(STATUS &quot;Release Linker Flags: ${CMAKE_EXE_LINKER_FLAGS_RELEASE}&quot;)</div>
<div class="line">message(STATUS &quot;-------------------------------------------------------&quot;)</div>
<div class="line">message(STATUS &quot;--- Path Information ----------------------------------&quot;)</div>
<div class="line">message(STATUS &quot;Source Dir: ${CMAKE_CURRENT_SOURCE_DIR}&quot;)</div>
<div class="line">message(STATUS &quot;Binary Dir: ${CMAKE_CURRENT_BINARY_DIR}&quot;)</div>
<div class="line">if(MSVC)</div>
<div class="line"> message(STATUS &quot;-------------------------------------------------------&quot;)</div>
<div class="line"> message(STATUS &quot;--- Microsoft Visual C++ (MSVC) Information -----------&quot;)</div>
<div class="line"> # Check the major compiler version</div>
<div class="line"> if(MSVC_VERSION GREATER_EQUAL 1950)</div>
<div class="line"> message(STATUS &quot;MSVC Compiler Version: ${MSVC_VERSION} (Visual Studio 2026 or newer)&quot;)</div>
<div class="line"> elseif(MSVC_VERSION GREATER_EQUAL 1930)</div>
<div class="line"> message(STATUS &quot;MSVC Compiler Version: ${MSVC_VERSION} (Visual Studio 2022)&quot;)</div>
<div class="line"> endif()</div>
<div class="line">message(STATUS &quot;MSVC Toolset Version: ${MSVC_TOOLSET_VERSION}&quot;)</div>
<div class="line">endif()</div>
<div class="line">message(STATUS &quot;-------------------------------------------------------&quot;)</div>
<div class="line">message(STATUS &quot;--- Project Information -------------------------------&quot;)</div>
<div class="line">message(STATUS &quot;Project Name: ${PROJECT_NAME}&quot;)</div>
<div class="line">message(STATUS &quot;Preset Name: ${PRESET_NAME}&quot;)</div>
<div class="line">message(STATUS &quot;-------------------------------------------------------&quot;)</div>
<div class="line">message(STATUS &quot;┏(-_-)┛┗(-_-)┓┗(-_-)┛┏(-_-)┓┏(-_-)┓┗(-_-)┛┏(-_-)┛┗(-_-)┓&quot;)</div>
<div class="line">message(STATUS &quot;-------------------------------------------------------&quot;)</div>
</div><!-- fragment --> </div></div><!-- contents -->
</div><!-- PageDoc -->
<!-- HTML footer for doxygen 1.9.8-->
<!-- start footer part -->
<hr class="footer"/><address class="footer">
<small>
SDi toolsBox is licensed under the terms and conditions of the <a href="https://opensource.org/licenses/zlib-license.php" target="_blank">zlib/png license</a>
<br />
Copyright (c) 2026 - SD-Innovation S.A.S. - FRANCE | ver: 2.x.x - build: 2026-04-28
<br />
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen" /></a> 1.9.8
</small>
</address>
</body>
</html>

View File

@@ -0,0 +1,60 @@
<!-- HTML header for doxygen 1.9.8-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<title>SDi toolsBox</title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="custom_doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">sdi_toolBox
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',false,false,'search.php','Search');
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">cmakefile.md File Reference</div></div>
</div><!--header-->
<div class="contents">
</div><!-- contents -->
<!-- HTML footer for doxygen 1.9.8-->
<!-- start footer part -->
<hr class="footer"/><address class="footer">
<small>
SDi toolsBox is licensed under the terms and conditions of the <a href="https://opensource.org/licenses/zlib-license.php" target="_blank">zlib/png license</a>
<br />
Copyright (c) 2026 - SD-Innovation S.A.S. - FRANCE | ver: 2.x.x - build: 2026-04-28
<br />
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen" /></a> 1.9.8
</small>
</address>
</body>
</html>

View File

@@ -0,0 +1,60 @@
<!-- HTML header for doxygen 1.9.8-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<title>SDi toolsBox</title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="custom_doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">sdi_toolBox
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',false,false,'search.php','Search');
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">codingRules.md File Reference</div></div>
</div><!--header-->
<div class="contents">
</div><!-- contents -->
<!-- HTML footer for doxygen 1.9.8-->
<!-- start footer part -->
<hr class="footer"/><address class="footer">
<small>
SDi toolsBox is licensed under the terms and conditions of the <a href="https://opensource.org/licenses/zlib-license.php" target="_blank">zlib/png license</a>
<br />
Copyright (c) 2026 - SD-Innovation S.A.S. - FRANCE | ver: 2.x.x - build: 2026-04-28
<br />
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen" /></a> 1.9.8
</small>
</address>
</body>
</html>

View File

@@ -0,0 +1,328 @@
<!-- HTML header for doxygen 1.9.8-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<title>SDi toolsBox</title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="custom_doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">sdi_toolBox
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',false,false,'search.php','Search');
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div><div class="header">
<div class="headertitle"><div class="title">Coding rules</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><h1>Naming Conventions</h1>
<ul>
<li><b>Classes/Structs</b>: PascalCase (<em>MotorController</em>, <em>SensorData</em>)</li>
<li><b>Functions/Methods</b>: camelCase (<em>readSensor</em>, <em>calculateSpeed</em>)</li>
<li><b>Variables</b>: camelCase (<em>sensorValue</em>, <em>maxSpeed</em>)</li>
<li><b>Constants</b>: UPPER_SNAKE_CASE (<em>MAX_BUFFER_SIZE</em>, <em>DEFAULT_TIMEOUT</em>)</li>
<li><b>Macros</b>: UPPER_SNAKE_CASE (<em>ENABLE_DEBUG</em>, <em>PIN_LED</em>)</li>
<li><b>Namespaces</b>: lowercase (<em>sensors</em>, <em>communication</em>)</li>
<li><b>Private members</b>: prefix with m_ (<em>m_temperature</em>, <em>m_isActive</em>)</li>
<li><b>Pointers</b>: prefix with p or suffix with Ptr (<em>pBuffer</em>, <em>dataPtr</em>)</li>
<li><b>Enums</b>: PascalCase for type, UPPER_SNAKE_CASE for values <div class="fragment"><div class="line"><span class="keyword">enum class</span> State { IDLE, RUNNING, ERROR };</div>
</div><!-- fragment --></li>
</ul>
<h1>File Organization</h1>
<ul>
<li><b>Headers</b>: *.h* extension</li>
<li><b>Source</b>: *.cpp* or *.c* extension</li>
<li><b>One class per file</b> (except nested/helper classes)</li>
<li><b>File naming</b>: match class name (MotorController.h, MotorController.cpp)</li>
<li><b>Header guards</b>: use <code>#pragma once</code></li>
</ul>
<h1>Header Files</h1>
<ul>
<li><b>Include order</b>:<ul>
<li><em>Corresponding header</em> (in .cpp)</li>
<li><em>Project headers</em> <code>#include "file.h"</code></li>
<li><em>System headers</em> <code>#include &lt;file.h&gt;</code></li>
</ul>
</li>
<li><b>Forward declarations</b>: use when possible to reduce dependencies</li>
<li><b>Minimize includes</b>: only include what you use</li>
<li><b>Separate interface from implementation</b></li>
</ul>
<h1>Code Formatting</h1>
<ul>
<li><b>Indentation</b>: 2 spaces (<em>no tabs</em>)</li>
<li><b>Braces</b>: Allman style (be consistent) <div class="fragment"><div class="line"><span class="comment">// Allman</span></div>
<div class="line"><span class="keywordflow">if</span> (condition)</div>
<div class="line">{</div>
<div class="line"> doSomething();</div>
<div class="line">}</div>
</div><!-- fragment --></li>
<li><b>Line length</b>: 80-120 characters maximum</li>
<li><b>Spaces</b>: around operators (<code>a + b</code>, not <code>a+b</code>)</li>
<li><b>Pointer/reference</b>: attach to variable (<code>int *ptr</code>, not <code>int* ptr</code>)</li>
</ul>
<h1>Memory Management</h1>
<h2>PC</h2>
<ul>
<li><b>Prefer RAII</b>: Resource Acquisition Is Initialization</li>
<li><b>Smart pointers</b>: use <code>std::unique_ptr</code>, <code>std::shared_ptr</code> or <code>std::weak_ptr</code></li>
<li><b>Avoid raw new/delete</b>: use smart pointers or containers</li>
<li><b>No memory leaks</b>: every allocation must have deallocation</li>
</ul>
<h2>Microcontroller</h2>
<ul>
<li><b>Minimize dynamic allocation</b>: prefer stack or static allocation</li>
<li><b>No new/delete in ISRs</b>: Interrupt Service Routines</li>
<li><b>Pre-allocate buffers</b>: avoid runtime allocation</li>
<li><b>Static memory pools</b>: if dynamic allocation needed</li>
<li><b>Check heap fragmentation</b>: monitor free heap regularly</li>
</ul>
<h1>Functions</h1>
<ul>
<li><b>Single Responsibility</b>: one function, one task</li>
<li><b>Function length</b>: maximum 50 lines (20-30 preferred)</li>
<li><b>Parameters</b>: maximum 4-5 parameters (use structs if more)</li>
<li><b>Pass by reference</b>: for non-primitive types (const Type&amp;)</li>
<li><b>Return values</b>: prefer return over out-parameters</li>
<li><b>Const correctness</b>: mark const wherever applicable</li>
</ul>
<h1>Classes</h1>
<ul>
<li><b>Rule of Five</b>: define or delete copy/move constructors and assignment</li>
<li><b>Virtual destructors</b>: for base classes with virtual methods</li>
<li><b>Explicit constructors</b>: use explicit for single-argument constructors <div class="fragment"><div class="line"><span class="keyword">class </span>MyClass</div>
<div class="line">{</div>
<div class="line"> MyClass() = <span class="keywordflow">default</span>; <span class="comment">// Default constructor</span></div>
<div class="line"> <span class="keyword">virtual</span> ~MyClass() = <span class="keywordflow">default</span>; <span class="comment">// Default destructor</span></div>
<div class="line"> MyClass(<span class="keyword">const</span> MyClass &amp;other) = <span class="keyword">delete</span>; <span class="comment">// Copy constructor</span></div>
<div class="line"> MyClass(MyClass &amp;&amp;other) <span class="keyword">noexcept</span> = <span class="keyword">delete</span>; <span class="comment">// Move constructor</span></div>
<div class="line"> MyClass &amp;operator=(<span class="keyword">const</span> MyClass &amp;other) = <span class="keyword">delete</span>; <span class="comment">// Copy assignment</span></div>
<div class="line"> MyClass &amp;operator=(MyClass &amp;&amp;other) <span class="keyword">noexcept</span> = <span class="keyword">delete</span>; <span class="comment">// Move assignment</span></div>
<div class="line"> </div>
<div class="line"> <span class="keyword">explicit</span> MyClass(<span class="keywordtype">int</span> val); <span class="comment">// Constructor</span></div>
<div class="line">}</div>
</div><!-- fragment --></li>
</ul>
<h1>Modern C++ Features (PC)</h1>
<ul>
<li><b>Use auto</b>: when type is obvious</li>
<li><b>Range-based loops</b>: <code>for (const auto&amp; item : container)</code></li>
<li><b>nullptr</b>: instead of NULL or 0</li>
<li><b>constexpr</b>: for compile-time constants</li>
<li><b>Lambda functions</b>: for short callbacks</li>
<li><b>Move semantics</b>: implement when appropriate</li>
<li><b>std::array</b>: instead of C-style arrays</li>
<li><b>enum class</b>: instead of plain enums</li>
<li><b>Use C++ structured bingings</b> <div class="fragment"><div class="line">std::map&lt;std::string, int&gt; ages = {{<span class="stringliteral">&quot;Alice&quot;</span>, 30}, {<span class="stringliteral">&quot;Bob&quot;</span>, 25}};</div>
<div class="line"> </div>
<div class="line"><span class="comment">// Before C++17</span></div>
<div class="line"><span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; pair : ages) {</div>
<div class="line"> Serial.println(pair.first); <span class="comment">// key</span></div>
<div class="line"> Serial.println(pair.second); <span class="comment">// value</span></div>
<div class="line">}</div>
<div class="line"> </div>
<div class="line"><span class="comment">// C++17: structured bindings</span></div>
<div class="line"><span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; [name, age] : ages) {</div>
<div class="line"> Serial.println(name);</div>
<div class="line"> Serial.println(age);</div>
<div class="line">}</div>
<div class="line"> </div>
<div class="line"><span class="comment">// With arrays</span></div>
<div class="line"><span class="keywordtype">int</span> arr[][2] = {{1, 2}, {3, 4}, {5, 6}};</div>
<div class="line"><span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; [a, b] : arr) {</div>
<div class="line"> cout &lt;&lt; a &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; b &lt;&lt; endl;</div>
<div class="line">}</div>
<div class="line"> </div>
<div class="line"><span class="comment">// With tuples</span></div>
<div class="line">std::vector&lt;std::tuple&lt;int, float, std::string&gt;&gt; data;</div>
<div class="line"><span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; [<span class="keywordtype">id</span>, value, name] : data) {</div>
<div class="line"> <span class="comment">// Use id, value, name directly</span></div>
<div class="line">}</div>
</div><!-- fragment --></li>
<li>User <b>C++ Attributes</b> <div class="fragment"><div class="line"><span class="comment">// [[nodiscard]] - Warn if return value ignored (C++17)</span></div>
<div class="line">[[nodiscard]] <span class="keywordtype">int</span> calculateSum(<span class="keywordtype">int</span> a, <span class="keywordtype">int</span> b);</div>
<div class="line">calculateSum(3, 4); <span class="comment">// Warning: result unused</span></div>
<div class="line"> </div>
<div class="line"><span class="comment">// [[maybe_unused]] - Suppress unused warnings</span></div>
<div class="line"><span class="keywordtype">void</span> debug([[maybe_unused]] <span class="keywordtype">int</span> value);</div>
<div class="line"> </div>
<div class="line"><span class="comment">// [[fallthrough]] - Intentional switch fallthrough (C++17)</span></div>
<div class="line"><span class="keywordflow">switch</span> (value) {</div>
<div class="line"> <span class="keywordflow">case</span> 1:</div>
<div class="line"> doSomething();</div>
<div class="line"> [[fallthrough]];</div>
<div class="line"> <span class="keywordflow">case</span> 2:</div>
<div class="line"> doSomethingElse();</div>
<div class="line"> <span class="keywordflow">break</span>;</div>
<div class="line">}</div>
<div class="line"> </div>
<div class="line"><span class="comment">// [[deprecated]] - Mark as deprecated</span></div>
<div class="line">[[deprecated(<span class="stringliteral">&quot;Use newFunction() instead&quot;</span>)]]</div>
<div class="line"><span class="keywordtype">void</span> oldFunction();</div>
<div class="line"> </div>
<div class="line"><span class="comment">// [[likely]] / [[unlikely]] - Branch prediction hints (C++20)</span></div>
<div class="line"><span class="keywordflow">if</span> (condition) [[likely]] {</div>
<div class="line"> <span class="comment">// Most common path</span></div>
<div class="line">} <span class="keywordflow">else</span> {</div>
<div class="line"> <span class="comment">// Rare path</span></div>
<div class="line">}</div>
</div><!-- fragment --></li>
</ul>
<h1>Embedded / Microcontroller Specific</h1>
<ul>
<li><b>Avoid exceptions</b>: often disabled on MCUs (use error codes)</li>
<li><b>Avoid RTTI</b>: disable Runtime Type Information (<b>-fno-rtti</b>)</li>
<li><b>Minimize STL</b>: use selectively (<em>some implementations are heavy</em>)</li>
<li><b>Volatile keyword</b>: for hardware registers and ISR-shared variables</li>
<li><b>ISR constraints</b>:<ul>
<li><em>Keep ISRs short</em> (&lt; 10 microseconds if possible)</li>
<li><em>No blocking operations</em></li>
<li><em>Avoid dynamic memory allocation</em></li>
<li><em>Minimize shared variable access</em></li>
</ul>
</li>
<li><b>Optimization pragmas</b>: use carefully</li>
<li><b>Inline functions</b>: for time-critical code</li>
<li><em>Bit manipulation</em>: use for register operations <div class="fragment"><div class="line">PORTB |= (1 &lt;&lt; PB5); <span class="comment">// Set bit</span></div>
<div class="line">PORTB &amp;= ~(1 &lt;&lt; PB5); <span class="comment">// Clear bit</span></div>
</div><!-- fragment --></li>
</ul>
<h1>Constants and Macros</h1>
<ul>
<li><b>Prefer const/constexpr</b> over define</li>
<li><b>Macros</b>: use UPPERCASE and parentheses <div class="fragment"><div class="line"><span class="preprocessor">#define MAX(a, b) ((a) &gt; (b) ? (a) : (b))</span></div>
</div><!-- fragment --></li>
<li><b>Configuration constants</b>: group in header <div class="fragment"><div class="line"><span class="keyword">namespace </span>Config</div>
<div class="line">{</div>
<div class="line"> <span class="keyword">constexpr</span> uint32_t BAUD_RATE = 115200;</div>
<div class="line"> <span class="keyword">constexpr</span> uint8_t BUFFER_SIZE = 64;</div>
<div class="line">}</div>
</div><!-- fragment --></li>
</ul>
<h1>Error Handling</h1>
<h2>PC</h2>
<ul>
<li><b>Exceptions</b>: for exceptional conditions</li>
<li><b>Error codes</b>: for expected failures</li>
<li><b>RAII</b>: for resource cleanup</li>
</ul>
<h2>Microcontroller</h2>
<ul>
<li><b>Return codes</b>: primary error handling method</li>
<li><b>Error enums</b>: define clear error types <div class="fragment"><div class="line"><span class="keyword">enum class</span> ErrorCode { OK, TIMEOUT, INVALID_PARAM, HW_ERROR };</div>
</div><!-- fragment --></li>
<li><b>Assert macros</b>: for development/debugging</li>
<li><b>Watchdog timer</b>: implement for fault recovery</li>
</ul>
<h1>Comments and Documentation</h1>
<ul>
<li><b>Doxygen format</b>: <em>for API documentation</em></li>
<li><b>Self-documenting code</b>: prefer clear names over comments</li>
<li><b>TODO/FIXME</b>: mark incomplete or problematic code</li>
<li><b>Explain "why"</b>: not "what" (code shows what)</li>
<li><b>Update comments</b>: keep in sync with code</li>
</ul>
<h1>Code Quality</h1>
<ul>
<li><b>No magic numbers</b>: use named constants <div class="fragment"><div class="line"><span class="keyword">constexpr</span> <span class="keywordtype">int</span> MAX_RETRIES = 3;</div>
<div class="line"><span class="keywordflow">if</span> (retries &gt; MAX_RETRIES)</div>
<div class="line">{</div>
<div class="line"> <span class="comment">/* ... */</span></div>
<div class="line">}</div>
</div><!-- fragment --></li>
<li><b>Avoid global variables</b>: use singletons or dependency injection</li>
<li><b>Initialize variables</b>: always initialize at declaration</li>
<li><b>Avoid deep nesting</b>: maximum 3-4 levels</li>
<li><b>Guard clauses</b>: early return for error conditions <div class="fragment"><div class="line"><span class="keywordflow">if</span> (!isValid)</div>
<div class="line"> <span class="keywordflow">return</span> ERROR_INVALID;</div>
<div class="line"><span class="comment">// main logic here</span></div>
</div><!-- fragment --></li>
</ul>
<h1>Concurrency (where applicable)</h1>
<ul>
<li><b>Atomic operations</b>: for shared variables</li>
<li><b>Mutexes</b>: protect critical sections (PC)</li>
<li><b>Disable interrupts</b>: for critical sections (MCU)</li>
<li><b>Volatile</b>: for interrupt-shared variables</li>
<li><b>Lock-free algorithms</b>: when possible on MCU</li>
</ul>
<h1>Performance</h1>
<ul>
<li><b>Avoid floating-point</b>: on MCUs without FPU</li>
<li><b>Fixed-point arithmetic</b>: for fractional values on MCU</li>
<li><b>Lookup tables</b>: for complex calculations</li>
<li><b>Inline critical functions</b>: use inline keyword</li>
<li><b>Profile before optimizing</b>: measure, don't guess</li>
<li><b>Compiler optimization flags</b>: -O2, -O3 (test thoroughly)</li>
</ul>
<h1>Testing</h1>
<ul>
<li><b>Unit tests</b>: for all public interfaces</li>
<li><b>Mock hardware</b>: for embedded testing</li>
<li><b>Test on target</b>: always test on actual hardware</li>
<li><b>Boundary conditions</b>: test edge cases</li>
<li><b>Code coverage</b>: aim for &gt;80%</li>
</ul>
<h1>Version Control</h1>
<ul>
<li><b>Meaningful commits</b>: descriptive commit messages</li>
<li><b>Feature branches</b>: for new features</li>
<li><b>Code review</b>: before merging</li>
<li><b>Avoid generated files</b>: in repository (.gitignore)</li>
</ul>
<h1>Build System</h1>
<ul>
<li><b>CMake</b>: as soon as possible</li>
<li><b>Compiler warnings</b>: enable all (<em>-Wall -Wextra -Wpedantic</em>)</li>
<li><b>Treat warnings as errors</b>: -Werror</li>
<li><b>Debug/Release configs</b>: separate configurations</li>
</ul>
<hr />
<h1>&mdash; </h1>
<h1>Lexicon</h1>
<p><b>RTTI</b> (<em>Run-time type information</em>): <b>run-time type information</b> is a feature that exposes information about an object's data type at runtime. RTTI can be used to do safe typecasts using the <code>dynamic_cast&lt;&gt;</code> operator, and to manipulate type information at runtime using the <code>typeid</code> operator and <code>std::type_info</code> class.</p>
<p><b>RAII</b> (<em>Resource acquisition is initialization</em>): <b>Resource acquisition is initialization</b> is a programming idiom used in several object-oriented, statically typed programming languages to describe a particular language behavior. <b>Resource acquisition</b> (<em>allocation</em>) is done during object creation by the constructor, while resource deallocation (<em>release</em>) is done during object destruction by the destructor. In other words, resource acquisition must succeed for initialization to succeed. The resource is guaranteed to be held between the end of initialization and the starts of finalization, and only as long as the object is active. Thus, if there are no object leaks, there are no resource leaks. </p>
</div></div><!-- contents -->
</div><!-- PageDoc -->
<!-- HTML footer for doxygen 1.9.8-->
<!-- start footer part -->
<hr class="footer"/><address class="footer">
<small>
SDi toolsBox is licensed under the terms and conditions of the <a href="https://opensource.org/licenses/zlib-license.php" target="_blank">zlib/png license</a>
<br />
Copyright (c) 2026 - SD-Innovation S.A.S. - FRANCE | ver: 2.x.x - build: 2026-04-28
<br />
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen" /></a> 1.9.8
</small>
</address>
</body>
</html>

View File

@@ -0,0 +1,115 @@
/* ============================================================
SDi toolBox — Custom Doxygen CSS (overrides only)
Couleurs SDi (bleu/vert) + image de fond
============================================================ */
/* ── Variables SDi ─────────────────────────────────────────── */
:root {
--sdi-blue-dark: #1e3582;
--sdi-blue-light: #41a8db;
--sdi-green: #577E25;
--sdi-green-dark: #3d5a1a;
--border-light: #d0dcc0;
--border-mid: #a8b8d9;
--radius: 6px;
}
/* ── Injection dans les variables Doxygen ───────────────────── */
html {
--page-link-color: var(--sdi-green);
--page-visited-link-color: var(--sdi-green-dark);
--header-separator-color: var(--sdi-blue-light);
--group-header-separator-color: var(--sdi-blue-light);
--group-header-color: var(--sdi-blue-dark);
--footer-foreground-color: var(--sdi-blue-dark);
--title-separator-color: var(--sdi-blue-dark);
--separator-color: var(--sdi-blue-dark);
--directory-separator-color: var(--sdi-blue-light);
--blockquote-border-color: var(--sdi-blue-light);
--citation-label-color: var(--sdi-blue-dark);
--memdecl-separator-color: var(--border-light);
--memdecl-template-color: var(--sdi-blue-light);
--memdef-border-color: var(--border-mid);
--memdef-proto-text-color: var(--sdi-blue-dark);
--memdef-template-color: var(--sdi-blue-light);
--table-cell-border-color: var(--sdi-blue-dark);
--table-header-background-color: var(--sdi-blue-dark);
--label-background-color: var(--sdi-blue-dark);
--label-left-top-border-color: var(--sdi-blue-dark);
--label-right-bottom-border-color: var(--sdi-blue-light);
--nav-foreground-color: var(--sdi-blue-dark);
--nav-text-normal-color: var(--sdi-blue-dark);
--nav-menu-button-color: var(--sdi-blue-dark);
--nav-arrow-color: var(--sdi-blue-light);
--nav-arrow-selected-color: var(--sdi-blue-light);
--nav-breadcrumb-border-color: var(--sdi-blue-light);
--icon-background-color: var(--sdi-blue-dark);
}
/* ── Image de fond ──────────────────────────────────────────── */
body {
background-image: url(background.png);
background-repeat: no-repeat;
background-attachment: fixed;
background-position: center;
background-size: cover;
}
/* ── Navigation (tabs) — gradient SDi ──────────────────────── */
/* Les tabs Doxygen utilisent des images PNG ; on les remplace */
/* par un dégradé CSS pour coller à la charte SDi. */
.tabs, .tabs2, .tabs3 {
background-image: linear-gradient(135deg, var(--sdi-blue-dark) 0%, var(--sdi-blue-light) 100%);
border-bottom: 3px solid var(--sdi-blue-dark);
}
#navrow1 .tablist a,
#navrow2 .tablist a,
#navrow3 .tablist a {
background-image: none;
color: #fff;
text-shadow: 0 1px 2px rgba(0,0,0,0.3);
}
#navrow1 .tablist a:hover,
#navrow2 .tablist a:hover,
#navrow3 .tablist a:hover {
background-image: none;
background-color: rgba(255,255,255,0.20);
color: #fff;
}
.tablist li.current a {
background-image: none;
background-color: rgba(255,255,255,0.25);
color: #fff !important;
border-bottom: 3px solid #fff;
}
/* ── Titres de groupe (@name) ───────────────────────────────── */
/* Doxygen colore le texte via --group-header-color mais */
/* n'applique pas de fond ; on ajoute le gradient SDi. */
div.groupHeader,
h1.groupheader {
color: #fff;
background: linear-gradient(90deg, var(--sdi-blue-dark), var(--sdi-blue-light));
border-radius: var(--radius);
margin-left: 0;
padding-left: 15px;
}
/* ── Largeur max du contenu ─────────────────────────────────── */
div.header,
div.contents {
max-width: 980px;
margin-left: auto;
margin-right: auto;
}
/* ── Bordure gauche des blocs de code ───────────────────────── */
pre.fragment,
div.fragment {
border-left: 4px solid var(--sdi-green);
margin-left: -7px;
padding: 5px;
}

View File

@@ -0,0 +1,124 @@
<!-- HTML header for doxygen 1.9.8-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<title>SDi toolsBox</title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="custom_doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">sdi_toolBox
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',false,false,'search.php','Search');
});
/* @license-end */
</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_1635ad76f8180971a36e709fb0d71e5a.html">toolBox</a></li><li class="navelem"><a class="el" href="dir_a330ae4cda0dd4c6ab0e77aa921b4b70.html">sdi_toolBox</a></li><li class="navelem"><a class="el" href="dir_089392a25720db55834b493c7f458d0d.html">desktop</a></li><li class="navelem"><a class="el" href="dir_03a79da52393399f003ece50c2786062.html">eventBus</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#namespaces">Namespaces</a> &#124;
<a href="#typedef-members">Typedefs</a> </div>
<div class="headertitle"><div class="title">defs.h File Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;chrono&gt;</code><br />
<code>#include &lt;cstdint&gt;</code><br />
</div><div class="textblock"><div class="dynheader">
Include dependency graph for defs.h:</div>
<div class="dyncontent">
<div class="center"><img src="defs_8h__incl.png" border="0" usemap="#adefs_8h" alt=""/></div>
<map name="adefs_8h" id="adefs_8h">
<area shape="rect" title=" " alt="" coords="53,5,115,31"/>
<area shape="rect" title=" " alt="" coords="5,79,72,104"/>
<area shape="poly" title=" " alt="" coords="79,32,56,69,51,66,74,30"/>
<area shape="rect" title=" " alt="" coords="96,79,163,104"/>
<area shape="poly" title=" " alt="" coords="94,30,117,66,112,69,89,32"/>
</map>
</div>
</div><div class="textblock"><div class="dynheader">
This graph shows which files directly or indirectly include this file:</div>
<div class="dyncontent">
<div class="center"><img src="defs_8h__dep__incl.png" border="0" usemap="#adefs_8hdep" alt=""/></div>
<map name="adefs_8hdep" id="adefs_8hdep">
<area shape="rect" title=" " alt="" coords="5,5,68,31"/>
<area shape="rect" href="bus_8h.html" title=" " alt="" coords="20,225,77,251"/>
<area shape="poly" title=" " alt="" coords="31,44,23,79,23,121,29,162,47,224,42,226,23,163,17,121,18,78,26,43"/>
<area shape="rect" href="message_8h.html" title=" " alt="" coords="33,79,126,104"/>
<area shape="poly" title=" " alt="" coords="53,41,75,77,70,80,48,44"/>
<area shape="rect" href="node_8h.html" title=" " alt="" coords="49,299,115,324"/>
<area shape="poly" title=" " alt="" coords="62,262,79,297,74,300,58,264"/>
<area shape="poly" title=" " alt="" coords="77,118,54,226,49,225,71,117"/>
<area shape="rect" href="inode_8h.html" title=" " alt="" coords="84,152,155,177"/>
<area shape="poly" title=" " alt="" coords="95,115,115,151,111,153,90,118"/>
<area shape="poly" title=" " alt="" coords="100,189,62,227,58,223,96,185"/>
<area shape="poly" title=" " alt="" coords="115,192,88,299,82,298,110,190"/>
</map>
</div>
</div>
<p><a href="defs_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:namespacesdi__toolBox" id="r_namespacesdi__toolBox"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesdi__toolBox.html">sdi_toolBox</a></td></tr>
<tr class="memdesc:namespacesdi__toolBox"><td class="mdescLeft">&#160;</td><td class="mdescRight">Root namespace for the <a class="el" href="namespacesdi__toolBox.html" title="Root namespace for the sdi_toolBox library.">sdi_toolBox</a> library. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:namespacesdi__toolBox_1_1desktop" id="r_namespacesdi__toolBox_1_1desktop"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesdi__toolBox_1_1desktop.html">sdi_toolBox::desktop</a></td></tr>
<tr class="memdesc:namespacesdi__toolBox_1_1desktop"><td class="mdescLeft">&#160;</td><td class="mdescRight">Desktop-specific components of the <a class="el" href="namespacesdi__toolBox.html" title="Root namespace for the sdi_toolBox library.">sdi_toolBox</a> library. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:namespacesdi__toolBox_1_1desktop_1_1eventBus" id="r_namespacesdi__toolBox_1_1desktop_1_1eventBus"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html">sdi_toolBox::desktop::eventBus</a></td></tr>
<tr class="memdesc:namespacesdi__toolBox_1_1desktop_1_1eventBus"><td class="mdescLeft">&#160;</td><td class="mdescRight">Lightweight thread-safe event bus for decoupled message passing. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="typedef-members" name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:a9a6bed6d55e3ccf6e4b27ebfa879277c" id="r_a9a6bed6d55e3ccf6e4b27ebfa879277c"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html#a9a6bed6d55e3ccf6e4b27ebfa879277c">MessageTypeID</a> = uint64_t</td></tr>
<tr class="memdesc:a9a6bed6d55e3ccf6e4b27ebfa879277c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Unique identifier for a message type. <br /></td></tr>
<tr class="separator:a9a6bed6d55e3ccf6e4b27ebfa879277c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae5ca775e8d8c664b6edef818ce1251b9" id="r_ae5ca775e8d8c664b6edef818ce1251b9"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html#ae5ca775e8d8c664b6edef818ce1251b9">TimePoint</a> = std::chrono::steady_clock::time_point</td></tr>
<tr class="memdesc:ae5ca775e8d8c664b6edef818ce1251b9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Monotonic timestamp type used throughout the event bus. <br /></td></tr>
<tr class="separator:ae5ca775e8d8c664b6edef818ce1251b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
<!-- HTML footer for doxygen 1.9.8-->
<!-- start footer part -->
<hr class="footer"/><address class="footer">
<small>
SDi toolsBox is licensed under the terms and conditions of the <a href="https://opensource.org/licenses/zlib-license.php" target="_blank">zlib/png license</a>
<br />
Copyright (c) 2026 - SD-Innovation S.A.S. - FRANCE | ver: 2.x.x - build: 2026-04-28
<br />
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen" /></a> 1.9.8
</small>
</address>
</body>
</html>

View File

@@ -0,0 +1,14 @@
<map id="defs.h" name="defs.h">
<area shape="rect" id="Node000001" title=" " alt="" coords="5,5,68,31"/>
<area shape="rect" id="Node000002" href="$bus_8h.html" title=" " alt="" coords="20,225,77,251"/>
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="31,44,23,79,23,121,29,162,47,224,42,226,23,163,17,121,18,78,26,43"/>
<area shape="rect" id="Node000004" href="$message_8h.html" title=" " alt="" coords="33,79,126,104"/>
<area shape="poly" id="edge3_Node000001_Node000004" title=" " alt="" coords="53,41,75,77,70,80,48,44"/>
<area shape="rect" id="Node000003" href="$node_8h.html" title=" " alt="" coords="49,299,115,324"/>
<area shape="poly" id="edge2_Node000002_Node000003" title=" " alt="" coords="62,262,79,297,74,300,58,264"/>
<area shape="poly" id="edge4_Node000004_Node000002" title=" " alt="" coords="77,118,54,226,49,225,71,117"/>
<area shape="rect" id="Node000005" href="$inode_8h.html" title=" " alt="" coords="84,152,155,177"/>
<area shape="poly" id="edge5_Node000004_Node000005" title=" " alt="" coords="95,115,115,151,111,153,90,118"/>
<area shape="poly" id="edge6_Node000005_Node000002" title=" " alt="" coords="100,189,62,227,58,223,96,185"/>
<area shape="poly" id="edge7_Node000005_Node000003" title=" " alt="" coords="115,192,88,299,82,298,110,190"/>
</map>

View File

@@ -0,0 +1 @@
f3cefb8303aa7e5b8a821ccedaec11d9

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View File

@@ -0,0 +1,7 @@
<map id="defs.h" name="defs.h">
<area shape="rect" id="Node000001" title=" " alt="" coords="53,5,115,31"/>
<area shape="rect" id="Node000002" title=" " alt="" coords="5,79,72,104"/>
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="79,32,56,69,51,66,74,30"/>
<area shape="rect" id="Node000003" title=" " alt="" coords="96,79,163,104"/>
<area shape="poly" id="edge2_Node000001_Node000003" title=" " alt="" coords="94,30,117,66,112,69,89,32"/>
</map>

View File

@@ -0,0 +1 @@
9d07c362da06da63e47dd7b89e3c38f7

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

View File

@@ -0,0 +1,117 @@
<!-- HTML header for doxygen 1.9.8-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<title>SDi toolsBox</title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="custom_doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">sdi_toolBox
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',false,false,'search.php','Search');
});
/* @license-end */
</script>
<div id="main-nav"></div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function() { init_codefold(0); });
/* @license-end */
</script>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_1635ad76f8180971a36e709fb0d71e5a.html">toolBox</a></li><li class="navelem"><a class="el" href="dir_a330ae4cda0dd4c6ab0e77aa921b4b70.html">sdi_toolBox</a></li><li class="navelem"><a class="el" href="dir_089392a25720db55834b493c7f458d0d.html">desktop</a></li><li class="navelem"><a class="el" href="dir_03a79da52393399f003ece50c2786062.html">eventBus</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">defs.h</div></div>
</div><!--header-->
<div class="contents">
<a href="defs_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">/*</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment"> Copyright (c) 2026 - SD-Innovation S.A.S. - FRANCE</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment">*/</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span> </div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">/*</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment">ver: 2.x.x - build: 2026-04-28</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment">*/</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span> </div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment">/*</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment">The zlib License
Copyright (c) 2026 SD-Innovation S.A.S.
This software is provided as-is, without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source
distribution.
</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment">*/</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span> </div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="preprocessor">#pragma once</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span> </div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="preprocessor">#include &lt;chrono&gt;</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="preprocessor">#include &lt;cstdint&gt;</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span> </div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment">//--------------------------------------------------------------</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html">sdi_toolBox::desktop::eventBus</a></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span>{</div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"><a class="line" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html#a9a6bed6d55e3ccf6e4b27ebfa879277c"> 21</a></span><span class="keyword">using </span><a class="code hl_typedef" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html#a9a6bed6d55e3ccf6e4b27ebfa879277c">MessageTypeID</a> = uint64_t; </div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"><a class="line" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html#ae5ca775e8d8c664b6edef818ce1251b9"> 22</a></span><span class="keyword">using </span><a class="code hl_typedef" href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html#ae5ca775e8d8c664b6edef818ce1251b9">TimePoint</a> = std::chrono::steady_clock::time_point; </div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment">//--------------------------------------------------------------</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span>} <span class="comment">// namespace sdi_toolBox::desktop::eventBus</span></div>
<div class="ttc" id="anamespacesdi__toolBox_1_1desktop_1_1eventBus_html"><div class="ttname"><a href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html">sdi_toolBox::desktop::eventBus</a></div><div class="ttdoc">Lightweight thread-safe event bus for decoupled message passing.</div><div class="ttdef"><b>Definition</b> <a href="bus_8h_source.html#l00026">bus.h:27</a></div></div>
<div class="ttc" id="anamespacesdi__toolBox_1_1desktop_1_1eventBus_html_a9a6bed6d55e3ccf6e4b27ebfa879277c"><div class="ttname"><a href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html#a9a6bed6d55e3ccf6e4b27ebfa879277c">sdi_toolBox::desktop::eventBus::MessageTypeID</a></div><div class="ttdeci">uint64_t MessageTypeID</div><div class="ttdoc">Unique identifier for a message type.</div><div class="ttdef"><b>Definition</b> <a href="defs_8h_source.html#l00021">defs.h:21</a></div></div>
<div class="ttc" id="anamespacesdi__toolBox_1_1desktop_1_1eventBus_html_ae5ca775e8d8c664b6edef818ce1251b9"><div class="ttname"><a href="namespacesdi__toolBox_1_1desktop_1_1eventBus.html#ae5ca775e8d8c664b6edef818ce1251b9">sdi_toolBox::desktop::eventBus::TimePoint</a></div><div class="ttdeci">std::chrono::steady_clock::time_point TimePoint</div><div class="ttdoc">Monotonic timestamp type used throughout the event bus.</div><div class="ttdef"><b>Definition</b> <a href="defs_8h_source.html#l00022">defs.h:22</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- HTML footer for doxygen 1.9.8-->
<!-- start footer part -->
<hr class="footer"/><address class="footer">
<small>
SDi toolsBox is licensed under the terms and conditions of the <a href="https://opensource.org/licenses/zlib-license.php" target="_blank">zlib/png license</a>
<br />
Copyright (c) 2026 - SD-Innovation S.A.S. - FRANCE | ver: 2.x.x - build: 2026-04-28
<br />
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen" /></a> 1.9.8
</small>
</address>
</body>

View File

@@ -0,0 +1,64 @@
<!-- HTML header for doxygen 1.9.8-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<title>SDi toolsBox</title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="custom_doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">sdi_toolBox
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',false,false,'search.php','Search');
});
/* @license-end */
</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_027a83007f8d67ce7df36185e958bafc.html">docs_pages</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">docs_pages Directory Reference</div></div>
</div><!--header-->
<div class="contents">
</div><!-- contents -->
<!-- HTML footer for doxygen 1.9.8-->
<!-- start footer part -->
<hr class="footer"/><address class="footer">
<small>
SDi toolsBox is licensed under the terms and conditions of the <a href="https://opensource.org/licenses/zlib-license.php" target="_blank">zlib/png license</a>
<br />
Copyright (c) 2026 - SD-Innovation S.A.S. - FRANCE | ver: 2.x.x - build: 2026-04-28
<br />
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen" /></a> 1.9.8
</small>
</address>
</body>
</html>

View File

@@ -0,0 +1,87 @@
<!-- HTML header for doxygen 1.9.8-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<title>SDi toolsBox</title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="custom_doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">sdi_toolBox
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',false,false,'search.php','Search');
});
/* @license-end */
</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_1635ad76f8180971a36e709fb0d71e5a.html">toolBox</a></li><li class="navelem"><a class="el" href="dir_a330ae4cda0dd4c6ab0e77aa921b4b70.html">sdi_toolBox</a></li><li class="navelem"><a class="el" href="dir_089392a25720db55834b493c7f458d0d.html">desktop</a></li><li class="navelem"><a class="el" href="dir_03a79da52393399f003ece50c2786062.html">eventBus</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">eventBus Directory Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="dynheader">
Directory dependency graph for eventBus:</div>
<div class="dyncontent">
<div class="center"><img src="dir_03a79da52393399f003ece50c2786062_dep.png" border="0" usemap="#adir__03a79da52393399f003ece50c2786062__dep" alt="eventBus"/></div>
<map name="adir__03a79da52393399f003ece50c2786062__dep" id="adir__03a79da52393399f003ece50c2786062__dep">
<area shape="rect" href="dir_03a79da52393399f003ece50c2786062.html" title="eventBus" alt="" coords="27,52,109,77"/>
<area shape="rect" href="dir_089392a25720db55834b493c7f458d0d.html" title="desktop" alt="" coords="16,16,120,88"/>
</map>
</div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="files" name="files"></a>
Files</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><a href="bus_8h_source.html"><span class="icondoc"></span></a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="bus_8h.html">bus.h</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><a href="defs_8h_source.html"><span class="icondoc"></span></a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="defs_8h.html">defs.h</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><a href="inode_8h_source.html"><span class="icondoc"></span></a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="inode_8h.html">inode.h</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><a href="message_8h_source.html"><span class="icondoc"></span></a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="message_8h.html">message.h</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><a href="node_8h_source.html"><span class="icondoc"></span></a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="node_8h.html">node.h</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
<!-- HTML footer for doxygen 1.9.8-->
<!-- start footer part -->
<hr class="footer"/><address class="footer">
<small>
SDi toolsBox is licensed under the terms and conditions of the <a href="https://opensource.org/licenses/zlib-license.php" target="_blank">zlib/png license</a>
<br />
Copyright (c) 2026 - SD-Innovation S.A.S. - FRANCE | ver: 2.x.x - build: 2026-04-28
<br />
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen" /></a> 1.9.8
</small>
</address>
</body>
</html>

View File

@@ -0,0 +1,4 @@
<map id="eventBus" name="eventBus">
<area shape="rect" id="node1" href="dir_03a79da52393399f003ece50c2786062.html" title="eventBus" alt="" coords="27,52,109,77"/>
<area shape="rect" id="clust1" href="dir_089392a25720db55834b493c7f458d0d.html" title="desktop" alt="" coords="16,16,120,88"/>
</map>

View File

@@ -0,0 +1 @@
888b28c1ccbcd7ab6b53aa4686cb8c7b

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@@ -0,0 +1,86 @@
<!-- HTML header for doxygen 1.9.8-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<title>SDi toolsBox</title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="custom_doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">sdi_toolBox
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',false,false,'search.php','Search');
});
/* @license-end */
</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_1635ad76f8180971a36e709fb0d71e5a.html">toolBox</a></li><li class="navelem"><a class="el" href="dir_a330ae4cda0dd4c6ab0e77aa921b4b70.html">sdi_toolBox</a></li><li class="navelem"><a class="el" href="dir_089392a25720db55834b493c7f458d0d.html">desktop</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">desktop Directory Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="dynheader">
Directory dependency graph for desktop:</div>
<div class="dyncontent">
<div class="center"><img src="dir_089392a25720db55834b493c7f458d0d_dep.png" border="0" usemap="#adir__089392a25720db55834b493c7f458d0d__dep" alt="desktop"/></div>
<map name="adir__089392a25720db55834b493c7f458d0d__dep" id="adir__089392a25720db55834b493c7f458d0d__dep">
<area shape="rect" href="dir_03a79da52393399f003ece50c2786062.html" title="eventBus" alt="" coords="232,63,315,88"/>
<area shape="rect" href="dir_11c5793896b93cca99bb38bbe3ee2a48.html" title="utils" alt="" coords="157,63,208,88"/>
<area shape="rect" href="dir_3c7d1643a6ee0c51157271b4fffa9825.html" title="wxWidgets" alt="" coords="38,63,133,88"/>
<area shape="rect" href="dir_089392a25720db55834b493c7f458d0d.html" alt="" coords="27,52,424,99"/>
<area shape="rect" href="dir_a330ae4cda0dd4c6ab0e77aa921b4b70.html" title="sdi_toolBox" alt="" coords="16,16,435,109"/>
</map>
</div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="subdirs" name="subdirs"></a>
Directories</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><span class="iconfclosed"></span>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_03a79da52393399f003ece50c2786062.html">eventBus</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><span class="iconfclosed"></span>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_11c5793896b93cca99bb38bbe3ee2a48.html">utils</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><span class="iconfclosed"></span>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_3c7d1643a6ee0c51157271b4fffa9825.html">wxWidgets</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
<!-- HTML footer for doxygen 1.9.8-->
<!-- start footer part -->
<hr class="footer"/><address class="footer">
<small>
SDi toolsBox is licensed under the terms and conditions of the <a href="https://opensource.org/licenses/zlib-license.php" target="_blank">zlib/png license</a>
<br />
Copyright (c) 2026 - SD-Innovation S.A.S. - FRANCE | ver: 2.x.x - build: 2026-04-28
<br />
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen" /></a> 1.9.8
</small>
</address>
</body>
</html>

View File

@@ -0,0 +1,7 @@
<map id="desktop" name="desktop">
<area shape="rect" id="node2" href="dir_03a79da52393399f003ece50c2786062.html" title="eventBus" alt="" coords="232,63,315,88"/>
<area shape="rect" id="node3" href="dir_11c5793896b93cca99bb38bbe3ee2a48.html" title="utils" alt="" coords="157,63,208,88"/>
<area shape="rect" id="node4" href="dir_3c7d1643a6ee0c51157271b4fffa9825.html" title="wxWidgets" alt="" coords="38,63,133,88"/>
<area shape="rect" id="clust2" href="dir_089392a25720db55834b493c7f458d0d.html" alt="" coords="27,52,424,99"/>
<area shape="rect" id="clust1" href="dir_a330ae4cda0dd4c6ab0e77aa921b4b70.html" title="sdi_toolBox" alt="" coords="16,16,435,109"/>
</map>

View File

@@ -0,0 +1 @@
2dd23892eb53f4a802bc7937539d4e1f

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

View File

@@ -0,0 +1,81 @@
<!-- HTML header for doxygen 1.9.8-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<title>SDi toolsBox</title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="custom_doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">sdi_toolBox
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',false,false,'search.php','Search');
});
/* @license-end */
</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_1635ad76f8180971a36e709fb0d71e5a.html">toolBox</a></li><li class="navelem"><a class="el" href="dir_a330ae4cda0dd4c6ab0e77aa921b4b70.html">sdi_toolBox</a></li><li class="navelem"><a class="el" href="dir_089392a25720db55834b493c7f458d0d.html">desktop</a></li><li class="navelem"><a class="el" href="dir_11c5793896b93cca99bb38bbe3ee2a48.html">utils</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">utils Directory Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="dynheader">
Directory dependency graph for utils:</div>
<div class="dyncontent">
<div class="center"><img src="dir_11c5793896b93cca99bb38bbe3ee2a48_dep.png" border="0" usemap="#adir__11c5793896b93cca99bb38bbe3ee2a48__dep" alt="utils"/></div>
<map name="adir__11c5793896b93cca99bb38bbe3ee2a48__dep" id="adir__11c5793896b93cca99bb38bbe3ee2a48__dep">
<area shape="rect" href="dir_11c5793896b93cca99bb38bbe3ee2a48.html" title="utils" alt="" coords="28,52,79,77"/>
<area shape="rect" href="dir_089392a25720db55834b493c7f458d0d.html" title="desktop" alt="" coords="16,16,91,88"/>
</map>
</div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="files" name="files"></a>
Files</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><a href="base64_8h_source.html"><span class="icondoc"></span></a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="base64_8h.html">base64.h</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><a href="uuid_8h_source.html"><span class="icondoc"></span></a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="uuid_8h.html">uuid.h</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
<!-- HTML footer for doxygen 1.9.8-->
<!-- start footer part -->
<hr class="footer"/><address class="footer">
<small>
SDi toolsBox is licensed under the terms and conditions of the <a href="https://opensource.org/licenses/zlib-license.php" target="_blank">zlib/png license</a>
<br />
Copyright (c) 2026 - SD-Innovation S.A.S. - FRANCE | ver: 2.x.x - build: 2026-04-28
<br />
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen" /></a> 1.9.8
</small>
</address>
</body>
</html>

View File

@@ -0,0 +1,4 @@
<map id="utils" name="utils">
<area shape="rect" id="node1" href="dir_11c5793896b93cca99bb38bbe3ee2a48.html" title="utils" alt="" coords="28,52,79,77"/>
<area shape="rect" id="clust1" href="dir_089392a25720db55834b493c7f458d0d.html" title="desktop" alt="" coords="16,16,91,88"/>
</map>

View File

@@ -0,0 +1 @@
805666e8b2eadc9e7cc3d3b9014fbca1

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -0,0 +1,70 @@
<!-- HTML header for doxygen 1.9.8-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<title>SDi toolsBox</title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="custom_doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">sdi_toolBox
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',false,false,'search.php','Search');
});
/* @license-end */
</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_1635ad76f8180971a36e709fb0d71e5a.html">toolBox</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">toolBox Directory Reference</div></div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="subdirs" name="subdirs"></a>
Directories</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><span class="iconfclosed"></span>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_a330ae4cda0dd4c6ab0e77aa921b4b70.html">sdi_toolBox</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
<!-- HTML footer for doxygen 1.9.8-->
<!-- start footer part -->
<hr class="footer"/><address class="footer">
<small>
SDi toolsBox is licensed under the terms and conditions of the <a href="https://opensource.org/licenses/zlib-license.php" target="_blank">zlib/png license</a>
<br />
Copyright (c) 2026 - SD-Innovation S.A.S. - FRANCE | ver: 2.x.x - build: 2026-04-28
<br />
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen" /></a> 1.9.8
</small>
</address>
</body>
</html>

View File

@@ -0,0 +1,79 @@
<!-- HTML header for doxygen 1.9.8-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<title>SDi toolsBox</title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="custom_doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">sdi_toolBox
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',false,false,'search.php','Search');
});
/* @license-end */
</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_1635ad76f8180971a36e709fb0d71e5a.html">toolBox</a></li><li class="navelem"><a class="el" href="dir_a330ae4cda0dd4c6ab0e77aa921b4b70.html">sdi_toolBox</a></li><li class="navelem"><a class="el" href="dir_089392a25720db55834b493c7f458d0d.html">desktop</a></li><li class="navelem"><a class="el" href="dir_3c7d1643a6ee0c51157271b4fffa9825.html">wxWidgets</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">wxWidgets Directory Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="dynheader">
Directory dependency graph for wxWidgets:</div>
<div class="dyncontent">
<div class="center"><img src="dir_3c7d1643a6ee0c51157271b4fffa9825_dep.png" border="0" usemap="#adir__3c7d1643a6ee0c51157271b4fffa9825__dep" alt="wxWidgets"/></div>
<map name="adir__3c7d1643a6ee0c51157271b4fffa9825__dep" id="adir__3c7d1643a6ee0c51157271b4fffa9825__dep">
<area shape="rect" href="dir_3c7d1643a6ee0c51157271b4fffa9825.html" title="wxWidgets" alt="" coords="27,52,122,77"/>
<area shape="rect" href="dir_089392a25720db55834b493c7f458d0d.html" title="desktop" alt="" coords="16,16,133,88"/>
</map>
</div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="files" name="files"></a>
Files</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><a href="wildcard_8h_source.html"><span class="icondoc"></span></a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="wildcard_8h.html">wildcard.h</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
<!-- HTML footer for doxygen 1.9.8-->
<!-- start footer part -->
<hr class="footer"/><address class="footer">
<small>
SDi toolsBox is licensed under the terms and conditions of the <a href="https://opensource.org/licenses/zlib-license.php" target="_blank">zlib/png license</a>
<br />
Copyright (c) 2026 - SD-Innovation S.A.S. - FRANCE | ver: 2.x.x - build: 2026-04-28
<br />
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen" /></a> 1.9.8
</small>
</address>
</body>
</html>

View File

@@ -0,0 +1,4 @@
<map id="wxWidgets" name="wxWidgets">
<area shape="rect" id="node1" href="dir_3c7d1643a6ee0c51157271b4fffa9825.html" title="wxWidgets" alt="" coords="27,52,122,77"/>
<area shape="rect" id="clust1" href="dir_089392a25720db55834b493c7f458d0d.html" title="desktop" alt="" coords="16,16,133,88"/>
</map>

View File

@@ -0,0 +1 @@
1f1a9d8c80bc9cb8f7373695096fc629

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@@ -0,0 +1,80 @@
<!-- HTML header for doxygen 1.9.8-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<title>SDi toolsBox</title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="custom_doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">sdi_toolBox
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',false,false,'search.php','Search');
});
/* @license-end */
</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_1635ad76f8180971a36e709fb0d71e5a.html">toolBox</a></li><li class="navelem"><a class="el" href="dir_a330ae4cda0dd4c6ab0e77aa921b4b70.html">sdi_toolBox</a></li><li class="navelem"><a class="el" href="dir_54865fdb36137c23be3687ea6e83f837.html">common</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">common Directory Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="dynheader">
Directory dependency graph for common:</div>
<div class="dyncontent">
<div class="center"><img src="dir_54865fdb36137c23be3687ea6e83f837_dep.png" border="0" usemap="#adir__54865fdb36137c23be3687ea6e83f837__dep" alt="common"/></div>
<map name="adir__54865fdb36137c23be3687ea6e83f837__dep" id="adir__54865fdb36137c23be3687ea6e83f837__dep">
<area shape="rect" href="dir_d0c2fb49d0db32828bce9490aff92f8c.html" title="utils" alt="" coords="37,63,88,88"/>
<area shape="rect" href="dir_54865fdb36137c23be3687ea6e83f837.html" alt="" coords="27,52,203,99"/>
<area shape="rect" href="dir_a330ae4cda0dd4c6ab0e77aa921b4b70.html" title="sdi_toolBox" alt="" coords="16,16,213,109"/>
</map>
</div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="subdirs" name="subdirs"></a>
Directories</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><span class="iconfclosed"></span>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_d0c2fb49d0db32828bce9490aff92f8c.html">utils</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
<!-- HTML footer for doxygen 1.9.8-->
<!-- start footer part -->
<hr class="footer"/><address class="footer">
<small>
SDi toolsBox is licensed under the terms and conditions of the <a href="https://opensource.org/licenses/zlib-license.php" target="_blank">zlib/png license</a>
<br />
Copyright (c) 2026 - SD-Innovation S.A.S. - FRANCE | ver: 2.x.x - build: 2026-04-28
<br />
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen" /></a> 1.9.8
</small>
</address>
</body>
</html>

View File

@@ -0,0 +1,5 @@
<map id="common" name="common">
<area shape="rect" id="node2" href="dir_d0c2fb49d0db32828bce9490aff92f8c.html" title="utils" alt="" coords="37,63,88,88"/>
<area shape="rect" id="clust2" href="dir_54865fdb36137c23be3687ea6e83f837.html" alt="" coords="27,52,203,99"/>
<area shape="rect" id="clust1" href="dir_a330ae4cda0dd4c6ab0e77aa921b4b70.html" title="sdi_toolBox" alt="" coords="16,16,213,109"/>
</map>

View File

@@ -0,0 +1 @@
c43e70c74003d9e8562c4c4ebb208e25

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

View File

@@ -0,0 +1,88 @@
<!-- HTML header for doxygen 1.9.8-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<title>SDi toolsBox</title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="custom_doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">sdi_toolBox
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',false,false,'search.php','Search');
});
/* @license-end */
</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_1635ad76f8180971a36e709fb0d71e5a.html">toolBox</a></li><li class="navelem"><a class="el" href="dir_a330ae4cda0dd4c6ab0e77aa921b4b70.html">sdi_toolBox</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">sdi_toolBox Directory Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="dynheader">
Directory dependency graph for sdi_toolBox:</div>
<div class="dyncontent">
<div class="center"><img src="dir_a330ae4cda0dd4c6ab0e77aa921b4b70_dep.png" border="0" usemap="#adir__a330ae4cda0dd4c6ab0e77aa921b4b70__dep" alt="sdi_toolBox"/></div>
<map name="adir__a330ae4cda0dd4c6ab0e77aa921b4b70__dep" id="adir__a330ae4cda0dd4c6ab0e77aa921b4b70__dep">
<area shape="rect" href="dir_54865fdb36137c23be3687ea6e83f837.html" title="common" alt="" coords="137,63,215,88"/>
<area shape="rect" href="dir_089392a25720db55834b493c7f458d0d.html" title="desktop" alt="" coords="37,63,112,88"/>
<area shape="rect" href="dir_a330ae4cda0dd4c6ab0e77aa921b4b70.html" alt="" coords="27,52,349,99"/>
<area shape="rect" href="dir_1635ad76f8180971a36e709fb0d71e5a.html" title="toolBox" alt="" coords="16,16,360,109"/>
</map>
</div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="subdirs" name="subdirs"></a>
Directories</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><span class="iconfclosed"></span>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_54865fdb36137c23be3687ea6e83f837.html">common</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><span class="iconfclosed"></span>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_089392a25720db55834b493c7f458d0d.html">desktop</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="files" name="files"></a>
Files</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><a href="namespace__doc_8h_source.html"><span class="icondoc"></span></a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespace__doc_8h.html">namespace_doc.h</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
<!-- HTML footer for doxygen 1.9.8-->
<!-- start footer part -->
<hr class="footer"/><address class="footer">
<small>
SDi toolsBox is licensed under the terms and conditions of the <a href="https://opensource.org/licenses/zlib-license.php" target="_blank">zlib/png license</a>
<br />
Copyright (c) 2026 - SD-Innovation S.A.S. - FRANCE | ver: 2.x.x - build: 2026-04-28
<br />
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen" /></a> 1.9.8
</small>
</address>
</body>
</html>

View File

@@ -0,0 +1,6 @@
<map id="sdi_toolBox" name="sdi_toolBox">
<area shape="rect" id="node2" href="dir_54865fdb36137c23be3687ea6e83f837.html" title="common" alt="" coords="137,63,215,88"/>
<area shape="rect" id="node3" href="dir_089392a25720db55834b493c7f458d0d.html" title="desktop" alt="" coords="37,63,112,88"/>
<area shape="rect" id="clust2" href="dir_a330ae4cda0dd4c6ab0e77aa921b4b70.html" alt="" coords="27,52,349,99"/>
<area shape="rect" id="clust1" href="dir_1635ad76f8180971a36e709fb0d71e5a.html" title="toolBox" alt="" coords="16,16,360,109"/>
</map>

View File

@@ -0,0 +1 @@
afe722c2e7627d3735c13e7b21f59f82

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

View File

@@ -0,0 +1,83 @@
<!-- HTML header for doxygen 1.9.8-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<title>SDi toolsBox</title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="custom_doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">sdi_toolBox
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',false,false,'search.php','Search');
});
/* @license-end */
</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_1635ad76f8180971a36e709fb0d71e5a.html">toolBox</a></li><li class="navelem"><a class="el" href="dir_a330ae4cda0dd4c6ab0e77aa921b4b70.html">sdi_toolBox</a></li><li class="navelem"><a class="el" href="dir_54865fdb36137c23be3687ea6e83f837.html">common</a></li><li class="navelem"><a class="el" href="dir_d0c2fb49d0db32828bce9490aff92f8c.html">utils</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">utils Directory Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="dynheader">
Directory dependency graph for utils:</div>
<div class="dyncontent">
<div class="center"><img src="dir_d0c2fb49d0db32828bce9490aff92f8c_dep.png" border="0" usemap="#adir__d0c2fb49d0db32828bce9490aff92f8c__dep" alt="utils"/></div>
<map name="adir__d0c2fb49d0db32828bce9490aff92f8c__dep" id="adir__d0c2fb49d0db32828bce9490aff92f8c__dep">
<area shape="rect" href="dir_d0c2fb49d0db32828bce9490aff92f8c.html" title="utils" alt="" coords="29,52,80,77"/>
<area shape="rect" href="dir_54865fdb36137c23be3687ea6e83f837.html" title="common" alt="" coords="16,16,95,88"/>
</map>
</div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="files" name="files"></a>
Files</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><a href="circularBuffer_8h_source.html"><span class="icondoc"></span></a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="circularBuffer_8h.html">circularBuffer.h</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><a href="hash_8h_source.html"><span class="icondoc"></span></a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="hash_8h.html">hash.h</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><a href="ringBuffer_8h_source.html"><span class="icondoc"></span></a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ringBuffer_8h.html">ringBuffer.h</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
<!-- HTML footer for doxygen 1.9.8-->
<!-- start footer part -->
<hr class="footer"/><address class="footer">
<small>
SDi toolsBox is licensed under the terms and conditions of the <a href="https://opensource.org/licenses/zlib-license.php" target="_blank">zlib/png license</a>
<br />
Copyright (c) 2026 - SD-Innovation S.A.S. - FRANCE | ver: 2.x.x - build: 2026-04-28
<br />
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen" /></a> 1.9.8
</small>
</address>
</body>
</html>

View File

@@ -0,0 +1,4 @@
<map id="utils" name="utils">
<area shape="rect" id="node1" href="dir_d0c2fb49d0db32828bce9490aff92f8c.html" title="utils" alt="" coords="29,52,80,77"/>
<area shape="rect" id="clust1" href="dir_54865fdb36137c23be3687ea6e83f837.html" title="common" alt="" coords="16,16,95,88"/>
</map>

View File

@@ -0,0 +1 @@
d2d67fb290de36943befe2260094f9d1

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" width="16" height="24" viewBox="0 0 80 60" id="doc" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve">
<g style="fill:#4665A2">
<path d="m 14,-1.1445312 c -2.824372,0 -5.1445313,2.320159 -5.1445312,5.1445312 v 72 c 0,2.824372 2.3201592,5.144531 5.1445312,5.144531 h 52 c 2.824372,0 5.144531,-2.320159 5.144531,-5.144531 V 23.699219 a 1.1447968,1.1447968 0 0 0 -0.01563,-0.1875 C 70.977847,22.605363 70.406495,21.99048 70.007812,21.591797 L 48.208984,-0.20898438 C 47.606104,-0.81186474 46.804652,-1.1445313 46,-1.1445312 Z m 1.144531,6.2890624 H 42.855469 V 24 c 0,1.724372 1.420159,3.144531 3.144531,3.144531 H 64.855469 V 74.855469 H 15.144531 Z m 34,4.4179688 L 60.4375,20.855469 H 49.144531 Z"/>
</g>
<g style="fill:#D8DFEE;stroke-width:0">
<path d="M 3.0307167,13.993174 V 7.0307167 h 2.7576792 2.7576792 v 1.8826151 c 0,1.2578262 0.0099,1.9287572 0.029818,2.0216512 0.03884,0.181105 0.168631,0.348218 0.33827,0.43554 l 0.1355017,0.06975 1.9598092,0.0079 1.959809,0.0078 v 4.749829 4.749829 H 8 3.0307167 Z" transform="matrix(5,0,0,5,0,-30)" />
<path d="M 9.8293515,9.0581469 V 7.9456453 l 1.1058025,1.1055492 c 0.608191,0.6080521 1.105802,1.1086775 1.105802,1.1125015 0,0.0038 -0.497611,0.007 -1.105802,0.007 H 9.8293515 Z" transform="matrix(5,0,0,5,0,-30)" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" width="16" height="24" viewBox="0 0 80 60" id="doc" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve">
<g style="fill:#C4CFE5">
<path d="m 14,-1.1445312 c -2.824372,0 -5.1445313,2.320159 -5.1445312,5.1445312 v 72 c 0,2.824372 2.3201592,5.144531 5.1445312,5.144531 h 52 c 2.824372,0 5.144531,-2.320159 5.144531,-5.144531 V 23.699219 a 1.1447968,1.1447968 0 0 0 -0.01563,-0.1875 C 70.977847,22.605363 70.406495,21.99048 70.007812,21.591797 L 48.208984,-0.20898438 C 47.606104,-0.81186474 46.804652,-1.1445313 46,-1.1445312 Z m 1.144531,6.2890624 H 42.855469 V 24 c 0,1.724372 1.420159,3.144531 3.144531,3.144531 H 64.855469 V 74.855469 H 15.144531 Z m 34,4.4179688 L 60.4375,20.855469 H 49.144531 Z"/>
</g>
<g style="fill:#4665A2;stroke-width:0">
<path d="M 3.0307167,13.993174 V 7.0307167 h 2.7576792 2.7576792 v 1.8826151 c 0,1.2578262 0.0099,1.9287572 0.029818,2.0216512 0.03884,0.181105 0.168631,0.348218 0.33827,0.43554 l 0.1355017,0.06975 1.9598092,0.0079 1.959809,0.0078 v 4.749829 4.749829 H 8 3.0307167 Z" transform="matrix(5,0,0,5,0,-30)" />
<path d="M 9.8293515,9.0581469 V 7.9456453 l 1.1058025,1.1055492 c 0.608191,0.6080521 1.105802,1.1086775 1.105802,1.1125015 0,0.0038 -0.497611,0.007 -1.105802,0.007 H 9.8293515 Z" transform="matrix(5,0,0,5,0,-30)" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -0,0 +1,199 @@
/*
@licstart The following is the entire license notice for the JavaScript code in this file.
The MIT License (MIT)
Copyright (C) 1997-2020 by Dimitri van Heesch
Permission is hereby granted, free of charge, to any person obtaining a copy of this software
and associated documentation files (the "Software"), to deal in the Software without restriction,
including without limitation the rights to use, copy, modify, merge, publish, distribute,
sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or
substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@licend The above is the entire license notice for the JavaScript code in this file
*/
function toggleVisibility(linkObj)
{
var base = $(linkObj).attr('id');
var summary = $('#'+base+'-summary');
var content = $('#'+base+'-content');
var trigger = $('#'+base+'-trigger');
var src=$(trigger).attr('src');
if (content.is(':visible')===true) {
content.hide();
summary.show();
$(linkObj).addClass('closed').removeClass('opened');
$(trigger).attr('src',src.substring(0,src.length-8)+'closed.png');
} else {
content.show();
summary.hide();
$(linkObj).removeClass('closed').addClass('opened');
$(trigger).attr('src',src.substring(0,src.length-10)+'open.png');
}
return false;
}
function updateStripes()
{
$('table.directory tr').
removeClass('even').filter(':visible:even').addClass('even');
$('table.directory tr').
removeClass('odd').filter(':visible:odd').addClass('odd');
}
function toggleLevel(level)
{
$('table.directory tr').each(function() {
var l = this.id.split('_').length-1;
var i = $('#img'+this.id.substring(3));
var a = $('#arr'+this.id.substring(3));
if (l<level+1) {
i.removeClass('iconfopen iconfclosed').addClass('iconfopen');
a.html('&#9660;');
$(this).show();
} else if (l==level+1) {
i.removeClass('iconfclosed iconfopen').addClass('iconfclosed');
a.html('&#9658;');
$(this).show();
} else {
$(this).hide();
}
});
updateStripes();
}
function toggleFolder(id)
{
// the clicked row
var currentRow = $('#row_'+id);
// all rows after the clicked row
var rows = currentRow.nextAll("tr");
var re = new RegExp('^row_'+id+'\\d+_$', "i"); //only one sub
// only match elements AFTER this one (can't hide elements before)
var childRows = rows.filter(function() { return this.id.match(re); });
// first row is visible we are HIDING
if (childRows.filter(':first').is(':visible')===true) {
// replace down arrow by right arrow for current row
var currentRowSpans = currentRow.find("span");
currentRowSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
currentRowSpans.filter(".arrow").html('&#9658;');
rows.filter("[id^=row_"+id+"]").hide(); // hide all children
} else { // we are SHOWING
// replace right arrow by down arrow for current row
var currentRowSpans = currentRow.find("span");
currentRowSpans.filter(".iconfclosed").removeClass("iconfclosed").addClass("iconfopen");
currentRowSpans.filter(".arrow").html('&#9660;');
// replace down arrows by right arrows for child rows
var childRowsSpans = childRows.find("span");
childRowsSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
childRowsSpans.filter(".arrow").html('&#9658;');
childRows.show(); //show all children
}
updateStripes();
}
function toggleInherit(id)
{
var rows = $('tr.inherit.'+id);
var img = $('tr.inherit_header.'+id+' img');
var src = $(img).attr('src');
if (rows.filter(':first').is(':visible')===true) {
rows.css('display','none');
$(img).attr('src',src.substring(0,src.length-8)+'closed.png');
} else {
rows.css('display','table-row'); // using show() causes jump in firefox
$(img).attr('src',src.substring(0,src.length-10)+'open.png');
}
}
var opened=true;
// in case HTML_COLORSTYLE is LIGHT or DARK the vars will be replaced, so we write them out explicitly and use double quotes
var plusImg = [ "url('plus.svg')", "url('../../plus.svg')" ];
var minusImg = [ "url('minus.svg')", "url('../../minus.svg')" ];
// toggle all folding blocks
function codefold_toggle_all(relPath) {
if (opened) {
$('#fold_all').css('background-image',plusImg[relPath]);
$('div[id^=foldopen]').hide();
$('div[id^=foldclosed]').show();
} else {
$('#fold_all').css('background-image',minusImg[relPath]);
$('div[id^=foldopen]').show();
$('div[id^=foldclosed]').hide();
}
opened=!opened;
}
// toggle single folding block
function codefold_toggle(id) {
$('#foldopen'+id).toggle();
$('#foldclosed'+id).toggle();
}
function init_codefold(relPath) {
$('span[class=lineno]').css(
{'padding-right':'4px',
'margin-right':'2px',
'display':'inline-block',
'width':'54px',
'background':'linear-gradient(#808080,#808080) no-repeat 46px/2px 100%'
});
// add global toggle to first line
$('span[class=lineno]:first').append('<span class="fold" id="fold_all" '+
'onclick="javascript:codefold_toggle_all('+relPath+');" '+
'style="background-image:'+minusImg[relPath]+';"></span>');
// add vertical lines to other rows
$('span[class=lineno]').not(':eq(0)').append('<span class="fold"></span>');
// add toggle controls to lines with fold divs
$('div[class=foldopen]').each(function() {
// extract specific id to use
var id = $(this).attr('id').replace('foldopen','');
// extract start and end foldable fragment attributes
var start = $(this).attr('data-start');
var end = $(this).attr('data-end');
// replace normal fold span with controls for the first line of a foldable fragment
$(this).find('span[class=fold]:first').replaceWith('<span class="fold" '+
'onclick="javascript:codefold_toggle(\''+id+'\');" '+
'style="background-image:'+minusImg[relPath]+';"></span>');
// append div for folded (closed) representation
$(this).after('<div id="foldclosed'+id+'" class="foldclosed" style="display:none;"></div>');
// extract the first line from the "open" section to represent closed content
var line = $(this).children().first().clone();
// remove any glow that might still be active on the original line
$(line).removeClass('glow');
if (start) {
// if line already ends with a start marker (e.g. trailing {), remove it
$(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),''));
}
// replace minus with plus symbol
$(line).find('span[class=fold]').css('background-image',plusImg[relPath]);
// append ellipsis
$(line).append(' '+start+'<a href="javascript:codefold_toggle(\''+id+'\')">&#8230;</a>'+end);
// insert constructed line into closed div
$('#foldclosed'+id).html(line);
});
}
/* @license-end */
$(document).ready(function() {
$('.code,.codeRef').each(function() {
$(this).data('powertip',$('#a'+$(this).attr('href').replace(/.*\//,'').replace(/[^a-z_A-Z0-9]/g,'_')).html());
$.fn.powerTip.smartPlacementLists.s = [ 's', 'n', 'ne', 'se' ];
$(this).powerTip({ placement: 's', smartPlacement: true, mouseOnToPopup: true });
});
});

View File

@@ -0,0 +1,85 @@
<!-- HTML header for doxygen 1.9.8-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<title>SDi toolsBox</title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="custom_doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">sdi_toolBox
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',false,false,'search.php','Search');
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">File List</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock">Here is a list of all files with brief descriptions:</div><div class="directory">
<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span><span onclick="javascript:toggleLevel(3);">3</span><span onclick="javascript:toggleLevel(4);">4</span><span onclick="javascript:toggleLevel(5);">5</span>]</div><table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="iconfclosed"></span><a class="el" href="dir_027a83007f8d67ce7df36185e958bafc.html" target="_self">docs_pages</a></td><td class="desc"></td></tr>
<tr id="row_1_" class="odd"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_1_" class="arrow" onclick="toggleFolder('1_')">&#9660;</span><span id="img_1_" class="iconfopen" onclick="toggleFolder('1_')">&#160;</span><a class="el" href="dir_1635ad76f8180971a36e709fb0d71e5a.html" target="_self">toolBox</a></td><td class="desc"></td></tr>
<tr id="row_1_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_1_0_" class="arrow" onclick="toggleFolder('1_0_')">&#9660;</span><span id="img_1_0_" class="iconfopen" onclick="toggleFolder('1_0_')">&#160;</span><a class="el" href="dir_a330ae4cda0dd4c6ab0e77aa921b4b70.html" target="_self">sdi_toolBox</a></td><td class="desc"></td></tr>
<tr id="row_1_0_0_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_1_0_0_" class="arrow" onclick="toggleFolder('1_0_0_')">&#9660;</span><span id="img_1_0_0_" class="iconfopen" onclick="toggleFolder('1_0_0_')">&#160;</span><a class="el" href="dir_54865fdb36137c23be3687ea6e83f837.html" target="_self">common</a></td><td class="desc"></td></tr>
<tr id="row_1_0_0_0_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span id="arr_1_0_0_0_" class="arrow" onclick="toggleFolder('1_0_0_0_')">&#9660;</span><span id="img_1_0_0_0_" class="iconfopen" onclick="toggleFolder('1_0_0_0_')">&#160;</span><a class="el" href="dir_d0c2fb49d0db32828bce9490aff92f8c.html" target="_self">utils</a></td><td class="desc"></td></tr>
<tr id="row_1_0_0_0_0_" class="odd"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><a href="circularBuffer_8h_source.html"><span class="icondoc"></span></a><a class="el" href="circularBuffer_8h.html" target="_self">circularBuffer.h</a></td><td class="desc"></td></tr>
<tr id="row_1_0_0_0_1_" class="even"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><a href="hash_8h_source.html"><span class="icondoc"></span></a><a class="el" href="hash_8h.html" target="_self">hash.h</a></td><td class="desc"></td></tr>
<tr id="row_1_0_0_0_2_" class="odd"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><a href="ringBuffer_8h_source.html"><span class="icondoc"></span></a><a class="el" href="ringBuffer_8h.html" target="_self">ringBuffer.h</a></td><td class="desc"></td></tr>
<tr id="row_1_0_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_1_0_1_" class="arrow" onclick="toggleFolder('1_0_1_')">&#9660;</span><span id="img_1_0_1_" class="iconfopen" onclick="toggleFolder('1_0_1_')">&#160;</span><a class="el" href="dir_089392a25720db55834b493c7f458d0d.html" target="_self">desktop</a></td><td class="desc"></td></tr>
<tr id="row_1_0_1_0_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span id="arr_1_0_1_0_" class="arrow" onclick="toggleFolder('1_0_1_0_')">&#9660;</span><span id="img_1_0_1_0_" class="iconfopen" onclick="toggleFolder('1_0_1_0_')">&#160;</span><a class="el" href="dir_03a79da52393399f003ece50c2786062.html" target="_self">eventBus</a></td><td class="desc"></td></tr>
<tr id="row_1_0_1_0_0_" class="even"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><a href="bus_8h_source.html"><span class="icondoc"></span></a><a class="el" href="bus_8h.html" target="_self">bus.h</a></td><td class="desc"></td></tr>
<tr id="row_1_0_1_0_1_" class="odd"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><a href="defs_8h_source.html"><span class="icondoc"></span></a><a class="el" href="defs_8h.html" target="_self">defs.h</a></td><td class="desc"></td></tr>
<tr id="row_1_0_1_0_2_" class="even"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><a href="inode_8h_source.html"><span class="icondoc"></span></a><a class="el" href="inode_8h.html" target="_self">inode.h</a></td><td class="desc"></td></tr>
<tr id="row_1_0_1_0_3_" class="odd"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><a href="message_8h_source.html"><span class="icondoc"></span></a><a class="el" href="message_8h.html" target="_self">message.h</a></td><td class="desc"></td></tr>
<tr id="row_1_0_1_0_4_" class="even"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><a href="node_8h_source.html"><span class="icondoc"></span></a><a class="el" href="node_8h.html" target="_self">node.h</a></td><td class="desc"></td></tr>
<tr id="row_1_0_1_1_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span id="arr_1_0_1_1_" class="arrow" onclick="toggleFolder('1_0_1_1_')">&#9660;</span><span id="img_1_0_1_1_" class="iconfopen" onclick="toggleFolder('1_0_1_1_')">&#160;</span><a class="el" href="dir_11c5793896b93cca99bb38bbe3ee2a48.html" target="_self">utils</a></td><td class="desc"></td></tr>
<tr id="row_1_0_1_1_0_" class="even"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><a href="base64_8h_source.html"><span class="icondoc"></span></a><a class="el" href="base64_8h.html" target="_self">base64.h</a></td><td class="desc"></td></tr>
<tr id="row_1_0_1_1_1_" class="odd"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><a href="uuid_8h_source.html"><span class="icondoc"></span></a><a class="el" href="uuid_8h.html" target="_self">uuid.h</a></td><td class="desc"></td></tr>
<tr id="row_1_0_1_2_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span id="arr_1_0_1_2_" class="arrow" onclick="toggleFolder('1_0_1_2_')">&#9660;</span><span id="img_1_0_1_2_" class="iconfopen" onclick="toggleFolder('1_0_1_2_')">&#160;</span><a class="el" href="dir_3c7d1643a6ee0c51157271b4fffa9825.html" target="_self">wxWidgets</a></td><td class="desc"></td></tr>
<tr id="row_1_0_1_2_0_" class="odd"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><a href="wildcard_8h_source.html"><span class="icondoc"></span></a><a class="el" href="wildcard_8h.html" target="_self">wildcard.h</a></td><td class="desc"></td></tr>
<tr id="row_1_0_2_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="namespace__doc_8h_source.html"><span class="icondoc"></span></a><a class="el" href="namespace__doc_8h.html" target="_self">namespace_doc.h</a></td><td class="desc"></td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
<!-- HTML footer for doxygen 1.9.8-->
<!-- start footer part -->
<hr class="footer"/><address class="footer">
<small>
SDi toolsBox is licensed under the terms and conditions of the <a href="https://opensource.org/licenses/zlib-license.php" target="_blank">zlib/png license</a>
<br />
Copyright (c) 2026 - SD-Innovation S.A.S. - FRANCE | ver: 2.x.x - build: 2026-04-28
<br />
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen" /></a> 1.9.8
</small>
</address>
</body>
</html>

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" width="16" height="24" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve">
<g style="fill:#4665A2;">
<path d="M1,5.998l-0,16.002c-0,1.326 0.527,2.598 1.464,3.536c0.938,0.937 2.21,1.464 3.536,1.464c5.322,0 14.678,-0 20,0c1.326,0 2.598,-0.527 3.536,-1.464c0.937,-0.938 1.464,-2.21 1.464,-3.536c0,-3.486 0,-8.514 0,-12c0,-1.326 -0.527,-2.598 -1.464,-3.536c-0.938,-0.937 -2.21,-1.464 -3.536,-1.464c-0,0 -10.586,0 -10.586,0c0,-0 -3.707,-3.707 -3.707,-3.707c-0.187,-0.188 -0.442,-0.293 -0.707,-0.293l-5.002,0c-2.76,0 -4.998,2.238 -4.998,4.998Zm2,-0l-0,16.002c-0,0.796 0.316,1.559 0.879,2.121c0.562,0.563 1.325,0.879 2.121,0.879l20,0c0.796,0 1.559,-0.316 2.121,-0.879c0.563,-0.562 0.879,-1.325 0.879,-2.121c0,-3.486 0,-8.514 0,-12c0,-0.796 -0.316,-1.559 -0.879,-2.121c-0.562,-0.563 -1.325,-0.879 -2.121,-0.879c-7.738,0 -11,0 -11,0c-0.265,0 -0.52,-0.105 -0.707,-0.293c-0,0 -3.707,-3.707 -3.707,-3.707c-0,0 -4.588,0 -4.588,0c-1.656,0 -2.998,1.342 -2.998,2.998Z"/>
</g>
<g style="fill:#D8DFEE;stroke-width:0;">
<path d="M 5.6063709,24.951908 C 4.3924646,24.775461 3.4197129,23.899792 3.1031586,22.698521 L 3.0216155,22.389078 V 13.997725 5.6063709 L 3.1037477,5.2982247 C 3.3956682,4.2029881 4.1802788,3.412126 5.2787258,3.105917 5.5646428,3.0262132 5.6154982,3.0244963 8.0611641,3.0119829 l 2.4911989,-0.012746 1.932009,1.9300342 c 1.344142,1.3427669 1.976319,1.9498819 2.07763,1.9952626 0.137456,0.061571 0.474218,0.066269 6.006826,0.083795 l 5.861206,0.018568 0.29124,0.081916 c 1.094895,0.3079569 1.890116,1.109428 2.175567,2.192667 l 0.08154,0.3094425 V 16 22.389078 l -0.08154,0.309443 c -0.28446,1.079482 -1.086411,1.888085 -2.175567,2.193614 l -0.29124,0.0817 -10.302616,0.0049 c -5.700217,0.0027 -10.4001945,-0.0093 -10.5210471,-0.02684 z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" width="16" height="24" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve">
<g style="fill:#C4CFE5;">
<path d="M1,5.998l-0,16.002c-0,1.326 0.527,2.598 1.464,3.536c0.938,0.937 2.21,1.464 3.536,1.464c5.322,0 14.678,-0 20,0c1.326,0 2.598,-0.527 3.536,-1.464c0.937,-0.938 1.464,-2.21 1.464,-3.536c0,-3.486 0,-8.514 0,-12c0,-1.326 -0.527,-2.598 -1.464,-3.536c-0.938,-0.937 -2.21,-1.464 -3.536,-1.464c-0,0 -10.586,0 -10.586,0c0,-0 -3.707,-3.707 -3.707,-3.707c-0.187,-0.188 -0.442,-0.293 -0.707,-0.293l-5.002,0c-2.76,0 -4.998,2.238 -4.998,4.998Zm2,-0l-0,16.002c-0,0.796 0.316,1.559 0.879,2.121c0.562,0.563 1.325,0.879 2.121,0.879l20,0c0.796,0 1.559,-0.316 2.121,-0.879c0.563,-0.562 0.879,-1.325 0.879,-2.121c0,-3.486 0,-8.514 0,-12c0,-0.796 -0.316,-1.559 -0.879,-2.121c-0.562,-0.563 -1.325,-0.879 -2.121,-0.879c-7.738,0 -11,0 -11,0c-0.265,0 -0.52,-0.105 -0.707,-0.293c-0,0 -3.707,-3.707 -3.707,-3.707c-0,0 -4.588,0 -4.588,0c-1.656,0 -2.998,1.342 -2.998,2.998Z"/>
</g>
<g style="fill:#4665A2;stroke-width:0;">
<path d="M 5.6063709,24.951908 C 4.3924646,24.775461 3.4197129,23.899792 3.1031586,22.698521 L 3.0216155,22.389078 V 13.997725 5.6063709 L 3.1037477,5.2982247 C 3.3956682,4.2029881 4.1802788,3.412126 5.2787258,3.105917 5.5646428,3.0262132 5.6154982,3.0244963 8.0611641,3.0119829 l 2.4911989,-0.012746 1.932009,1.9300342 c 1.344142,1.3427669 1.976319,1.9498819 2.07763,1.9952626 0.137456,0.061571 0.474218,0.066269 6.006826,0.083795 l 5.861206,0.018568 0.29124,0.081916 c 1.094895,0.3079569 1.890116,1.109428 2.175567,2.192667 l 0.08154,0.3094425 V 16 22.389078 l -0.08154,0.309443 c -0.28446,1.079482 -1.086411,1.888085 -2.175567,2.193614 l -0.29124,0.0817 -10.302616,0.0049 c -5.700217,0.0027 -10.4001945,-0.0093 -10.5210471,-0.02684 z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

Some files were not shown because too many files have changed in this diff Show More