{"id":393,"date":"2015-02-24T17:22:28","date_gmt":"2015-02-24T17:22:28","guid":{"rendered":"http:\/\/anthroponaute.fr\/blog-informatique\/?p=393"},"modified":"2015-11-24T19:43:39","modified_gmt":"2015-11-24T19:43:39","slug":"classe-dataparameters-pour-faciliter-lechange-dinformation","status":"publish","type":"post","link":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/?p=393","title":{"rendered":"Classe DataParameters pour faciliter l&rsquo;\u00e9change d&rsquo;information entre modules"},"content":{"rendered":"<p>todo : refaire le stream reset avec une m\u00e9thode<\/p>\n<p><strong>Intro :<\/strong><\/p>\n<p>Parfois il est utile de regrouper des param\u00e8tres ensemble afin de les \u00e9changer entre modules.<\/p>\n<p><strong>Explications :<\/strong><\/p>\n<p>Voici le fichier DataParameters.h :<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\n#ifndef DATA_PARAMETERS_H\r\n#define DATA_PARAMETERS_H\r\n\u00a0\r\n#include &lt;string&gt;\r\n#include &lt;map&gt;\r\n\r\nclass DataParameters\r\n{\r\npublic:\r\n\u00a0\u00a0 \u00a0\/\/ Diff\u00e9rents types de variables \u00e0 stocker\r\n\u00a0\u00a0\u00a0 struct Param { int i; float f; std::string s; };\r\n\u00a0\r\n\u00a0\u00a0\u00a0 DataParameters();\r\n\u00a0\u00a0\u00a0 virtual ~DataParameters();\r\n\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0\u00a0 \/\/ Premier num\u00e9ro d'index (c'est-\u00e0-dire le num\u00e9ro 0)\r\n\u00a0\u00a0\u00a0 DataParameters(int param);\r\n\u00a0\u00a0\u00a0 DataParameters(float param);\r\n\u00a0\u00a0\u00a0 DataParameters(char* param);\r\n\u00a0\u00a0\u00a0 DataParameters(const std::string&amp; sParam);\r\n\u00a0\r\n\u00a0\u00a0\u00a0 \/\/ Par nom\r\n\u00a0\u00a0\u00a0 DataParameters(const std::string&amp; sParamName, int param);\r\n\u00a0\u00a0\u00a0 DataParameters(const std::string&amp; sParamName, float param);\r\n\u00a0\u00a0\u00a0 DataParameters(const std::string&amp; sParamName, const char* param);\r\n\u00a0\u00a0\u00a0 DataParameters(const std::string&amp; sParamName, const std::string&amp; sParam);\r\n\u00a0\r\n\u00a0\u00a0\u00a0 \/******************\/\r\n\u00a0\r\n\u00a0\u00a0\u00a0 \/\/ Par nom\r\n\u00a0\u00a0\u00a0 void setParam(const std::string&amp; sParamName, int param);\r\n\u00a0\u00a0\u00a0 void setParam(const std::string&amp; sParamName, float param);\r\n\u00a0\u00a0\u00a0 void setParam(const std::string&amp; sParamName, const char* param);\r\n\u00a0\u00a0\u00a0 void setParam(const std::string&amp; sParamName, const std::string&amp; sParam);\r\n\u00a0\r\n\u00a0\u00a0\u00a0 \/\/ Par index\r\n\u00a0\u00a0\u00a0 void pushParam(int param);\r\n\u00a0\u00a0\u00a0 void pushParam(float param);\r\n\u00a0\u00a0\u00a0 void pushParam(const char* param);\r\n\u00a0\u00a0\u00a0 void pushParam(const std::string&amp; param);\r\n\u00a0\r\n\u00a0\u00a0\u00a0 Param* getParameter(const std::string&amp; sParamName);\r\n\u00a0\u00a0\u00a0 int getParameterAsInt(const std::string&amp; sParamName);\r\n\u00a0\u00a0\u00a0 float getParameterAsFloat(const std::string&amp; sParamName);\r\n\u00a0\u00a0\u00a0 const char* getParameterAsString(const std::string&amp; sParamName);\r\n\u00a0\r\n\u00a0\u00a0\u00a0 \/\/ Par acc\u00e8s au premier argument\r\n\u00a0\u00a0\u00a0 Param* getFirstParameter();\r\n\u00a0\u00a0\u00a0 int getFirstParameterAsInt();\r\n\u00a0\u00a0\u00a0 float getFirstParameterAsFloat();\r\n\u00a0\u00a0\u00a0 const char* getFirstParameterAsString();\r\n\r\n\u00a0\u00a0\u00a0 unsigned int getParamNumber();\r\n\u00a0\r\n\u00a0\u00a0 \u00a0\/\/ Op\u00e9rateurs &gt;&gt; flux pour lire les donn\u00e9es\r\n\u00a0\u00a0 \u00a0DataParameters&amp; operator &gt;&gt;(bool&amp; data);\r\n\u00a0\u00a0 \u00a0DataParameters&amp; operator &gt;&gt;(int&amp; data);\r\n\u00a0\u00a0 \u00a0DataParameters&amp; operator &gt;&gt;(unsigned int&amp; data);\r\n\u00a0\u00a0 \u00a0DataParameters&amp; operator &gt;&gt;(float&amp; data);\r\n\u00a0\u00a0 \u00a0DataParameters&amp; operator &gt;&gt;(char* data);\r\n\u00a0\u00a0 \u00a0DataParameters&amp; operator &gt;&gt;(std::string&amp; data);\r\n\r\n\u00a0\u00a0 \u00a0\/\/ Op\u00e9rateurs &lt;&lt; flux pour \u00e9crire des donn\u00e9es\r\n\u00a0\u00a0 \u00a0DataParameters&amp; operator &lt;&lt;(bool data);\r\n\u00a0\u00a0 \u00a0DataParameters&amp; operator &lt;&lt;(int data);\r\n\u00a0\u00a0 \u00a0DataParameters&amp; operator &lt;&lt;(unsigned int data);\r\n\u00a0\u00a0 \u00a0DataParameters&amp; operator &lt;&lt;(float data);\r\n\u00a0\u00a0 \u00a0DataParameters&amp; operator &lt;&lt;(char* data);\r\n\u00a0\u00a0 \u00a0DataParameters&amp; operator &lt;&lt;(std::string data);\r\n\r\n\u00a0\u00a0 \u00a0std::map&lt;std::string, Param&gt;&amp; GetParameters();\r\n\r\n\u00a0\u00a0 \u00a0\/\/ Variable pour r\u00e9initialiser les flux sortants\r\n\u00a0\u00a0 \u00a0static char* StreamReset;\r\n\r\nprivate:\r\n\u00a0\u00a0\u00a0 \/\/ Liste des param\u00e8tres\r\n\u00a0\u00a0\u00a0 std::map&lt;std::string, Param&gt; m_params;\r\n\r\n\u00a0\u00a0\u00a0 \/\/ Num\u00e9ro de param\u00e8tre courant\r\n\u00a0\u00a0\u00a0 unsigned int m_iIndex;\r\n\r\n\u00a0\u00a0 \u00a0\/\/ Position de lecture du stream courant\r\n\u00a0\u00a0 \u00a0unsigned int m_iCurrentStreamPos;\r\n};\r\n\u00a0\r\n#endif\r\n\r\n<\/pre>\n<p>Voici le fichier .cpp :<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\n#include &quot;DataParameters.h&quot;\r\n\u00a0\r\n\/********************************* Class DataParameters *********************************\/\r\n\r\nchar* DataParameters::StreamReset\u00a0 = &quot;StreamReset&quot;;\r\n\r\nDataParameters::DataParameters() :\r\nm_iIndex(0),\r\nm_iCurrentStreamPos(0)\r\n{\r\n}\r\n\u00a0\r\nDataParameters::~DataParameters()\r\n{\r\n\u00a0\u00a0\u00a0 m_params.clear();\r\n}\r\n\u00a0\r\nDataParameters::DataParameters(int param) :\r\nm_iIndex(0),\r\nm_iCurrentStreamPos(0)\r\n{\r\n\u00a0\u00a0\u00a0 std::string sParamName = std::to_string(m_iIndex);\r\n\u00a0\r\n\u00a0\u00a0\u00a0 m_params[sParamName].i = param;\r\n\u00a0\u00a0\u00a0 m_iIndex++;\r\n}\r\n\u00a0\r\nDataParameters::DataParameters(float param) :\r\nm_iIndex(0),\r\nm_iCurrentStreamPos(0)\r\n{\r\n\u00a0\u00a0\u00a0 std::string sParamName = std::to_string(m_iIndex);\r\n\u00a0\r\n\u00a0\u00a0\u00a0 m_params[sParamName].f = param;\r\n\u00a0\u00a0\u00a0 m_iIndex++;\r\n}\r\n\u00a0\r\nDataParameters::DataParameters(char* param) :\r\nm_iIndex(0),\r\nm_iCurrentStreamPos(0)\r\n{\r\n\u00a0\u00a0\u00a0 std::string sParamName = std::to_string(m_iIndex);\r\n\u00a0\r\n\u00a0\u00a0\u00a0 m_params[sParamName].s = param;\r\n\u00a0\u00a0\u00a0 m_iIndex++;\r\n}\r\n\u00a0\r\nDataParameters::DataParameters(const std::string&amp; param) :\r\nm_iIndex(0),\r\nm_iCurrentStreamPos(0)\r\n{\r\n\u00a0\u00a0\u00a0 std::string sParamName = std::to_string(m_iIndex);\r\n\u00a0\r\n\u00a0\u00a0\u00a0 m_params[sParamName].s = param;\r\n\u00a0\u00a0\u00a0 m_iIndex++;\r\n}\r\n\u00a0\r\n\/******* Par nom *******\/\r\n\u00a0\r\nDataParameters::DataParameters(const std::string&amp; sParamName, int param)\r\n{\r\n\u00a0\u00a0\u00a0 m_params[sParamName].i = param;\r\n}\r\n\u00a0\r\nDataParameters::DataParameters(const std::string&amp; sParamName, float param)\r\n{\r\n\u00a0\u00a0\u00a0 m_params[sParamName].f = param;\r\n}\r\n\u00a0\r\nDataParameters::DataParameters(const std::string&amp; sParamName, const char* param)\r\n{\r\n\u00a0\u00a0\u00a0 m_params[sParamName].s = param;\r\n}\r\n\u00a0\r\nDataParameters::DataParameters(const std::string&amp; sParamName, const std::string&amp; sParam)\r\n{\r\n\u00a0\u00a0\u00a0 m_params[sParamName].s = sParam;\r\n}\r\n\u00a0\r\n\/**********************************\/\r\n\u00a0\r\nvoid DataParameters::setParam(const std::string&amp; sParamName, int param)\r\n{\r\n\u00a0\u00a0\u00a0 m_params[sParamName].i = param;\r\n}\r\n\u00a0\r\nvoid DataParameters::setParam(const std::string&amp; sParamName, float param)\r\n{\r\n\u00a0\u00a0\u00a0 m_params[sParamName].f = param;\r\n}\r\n\u00a0\r\nvoid DataParameters::setParam(const std::string&amp; sParamName, const char* param)\r\n{\r\n\u00a0\u00a0\u00a0 m_params[sParamName].s = param;\r\n}\r\n\u00a0\r\nvoid DataParameters::setParam(const std::string&amp; sParamName, const std::string&amp; param)\r\n{\r\n\u00a0\u00a0\u00a0 m_params[sParamName].s = param;\r\n}\r\n\u00a0\r\n\/*************** Getters ***************\/\r\n\u00a0\r\nint DataParameters::getParameterAsInt(const std::string&amp; sParamName)\r\n{\r\n\u00a0\u00a0\u00a0 if (m_params.count(sParamName) &gt; 0)\r\n\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 return m_params[sParamName].i;\r\n\u00a0\u00a0\u00a0 }\r\n\u00a0\r\n\u00a0\u00a0\u00a0 return 0;\r\n}\r\n\u00a0\r\nfloat DataParameters::getParameterAsFloat(const std::string&amp; sParamName)\r\n{\r\n\u00a0\u00a0\u00a0 if (m_params.count(sParamName) &gt; 0)\r\n\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 return m_params[sParamName].f;\r\n\u00a0\u00a0\u00a0 }\r\n\u00a0\r\n\u00a0\u00a0\u00a0 return 0.0f;\r\n}\r\n\u00a0\r\nconst char* DataParameters::getParameterAsString(const std::string&amp; sParamName)\r\n{\r\n\u00a0\u00a0\u00a0 if (m_params.count(sParamName) &gt; 0)\r\n\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 return m_params[sParamName].s.c_str();\r\n\u00a0\u00a0\u00a0 }\r\n\u00a0\r\n\u00a0\u00a0\u00a0 return nullptr;\r\n}\r\n\u00a0\r\nDataParameters::Param* DataParameters::getParameter(const std::string&amp; sParamName)\r\n{\r\n\u00a0\u00a0\u00a0 if (m_params.count(sParamName) &gt; 0)\r\n\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 return &amp;m_params[sParamName];\r\n\u00a0\u00a0\u00a0 }\r\n\u00a0\r\n\u00a0\u00a0\u00a0 return nullptr;\r\n}\r\n\r\nstd::map&lt;std::string, DataParameters::Param&gt;&amp; DataParameters::GetParameters()\r\n{\r\n\u00a0\u00a0 \u00a0return m_params;\r\n}\r\n\r\n\/*************** Getters sans param\u00e8tres ***************\/\r\n\u00a0\r\nint DataParameters::getFirstParameterAsInt()\r\n{\r\n\u00a0\u00a0\u00a0 if (m_params.count(&quot;0&quot;) &gt; 0)\r\n\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 return m_params[&quot;0&quot;].i;\r\n\u00a0\u00a0\u00a0 }\r\n\u00a0\r\n\u00a0\u00a0\u00a0 return 0;\r\n}\r\n\u00a0\r\nfloat DataParameters::getFirstParameterAsFloat()\r\n{\r\n\u00a0\u00a0\u00a0 if (m_params.count(&quot;0&quot;) &gt; 0)\r\n\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 return m_params[&quot;0&quot;].f;\r\n\u00a0\u00a0\u00a0 }\r\n\u00a0\r\n\u00a0\u00a0\u00a0 return 0.0f;\r\n}\r\n\u00a0\r\nconst char* DataParameters::getFirstParameterAsString()\r\n{\r\n\u00a0\u00a0\u00a0 if (m_params.count(&quot;0&quot;) &gt; 0)\r\n\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 return m_params[&quot;0&quot;].s.c_str();\r\n\u00a0\u00a0\u00a0 }\r\n\u00a0\r\n\u00a0\u00a0\u00a0 return nullptr;\r\n}\r\n\u00a0\r\nDataParameters::Param* DataParameters::getFirstParameter()\r\n{\r\n\u00a0\u00a0\u00a0 if (m_params.count(&quot;0&quot;) &gt; 0)\r\n\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 return &amp;m_params[&quot;0&quot;];\r\n\u00a0\u00a0\u00a0 }\r\n\u00a0\r\n\u00a0\u00a0\u00a0 return nullptr;\r\n}\r\n\u00a0\r\nunsigned int DataParameters::getParamNumber()\r\n{\r\n\u00a0\u00a0\u00a0 return m_params.size();\r\n}\r\n\u00a0\r\n\/****************\/\r\n\u00a0\r\nvoid DataParameters::pushParam(int param)\r\n{\r\n\u00a0\u00a0\u00a0 std::string sParamName = std::to_string(m_iIndex);\r\n\u00a0\r\n\u00a0\u00a0\u00a0 m_params[sParamName].i = param;\r\n\u00a0\u00a0\u00a0 m_iIndex++;\r\n}\r\n\u00a0\r\nvoid DataParameters::pushParam(float param)\r\n{\r\n\u00a0\u00a0\u00a0 std::string sParamName = std::to_string(m_iIndex);\r\n\u00a0\r\n\u00a0\u00a0\u00a0 m_params[sParamName].f = param;\r\n\u00a0\u00a0\u00a0 m_iIndex++;\r\n}\r\nvoid DataParameters::pushParam(const char* param)\r\n{\r\n\u00a0\u00a0\u00a0 std::string sParamName = std::to_string(m_iIndex);\r\n\u00a0\r\n\u00a0\u00a0\u00a0 m_params[sParamName].s = param;\r\n\u00a0\u00a0\u00a0 m_iIndex++;\r\n}\r\n\u00a0\r\nvoid DataParameters::pushParam(const std::string&amp; param)\r\n{\r\n\u00a0\u00a0\u00a0 std::string sParamName = std::to_string(m_iIndex);\r\n\u00a0\r\n\u00a0\u00a0\u00a0 m_params[sParamName].s = param;\r\n\u00a0\u00a0\u00a0 m_iIndex++;\r\n}\r\n\r\n\/\/----------------------------------------\r\n\/\/ Op\u00e9rateurs &gt;&gt; pour lire les donn\u00e9es\r\n\/\/----------------------------------------\r\nDataParameters&amp; DataParameters::operator &gt;&gt;(bool&amp; data)\r\n{\r\n\u00a0\u00a0\u00a0 std::string sParamName = std::to_string(m_iCurrentStreamPos);\r\n\u00a0\r\n\u00a0\u00a0\u00a0 if (m_params.count(sParamName) &gt; 0)\r\n\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0data = (m_params[sParamName].i == 0) ? 0 : 1;\r\n\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0m_iCurrentStreamPos++;\r\n\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0 \u00a0else\r\n\u00a0\u00a0 \u00a0{\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0data = false;\r\n\u00a0\u00a0 \u00a0}\r\n\r\n\u00a0\u00a0 \u00a0return *this;\r\n}\r\n\r\nDataParameters&amp; DataParameters::operator &gt;&gt;(int&amp; data)\r\n{\r\n\u00a0\u00a0\u00a0 std::string sParamName = std::to_string(m_iCurrentStreamPos);\r\n\u00a0\r\n\u00a0\u00a0\u00a0 if (m_params.count(sParamName) &gt; 0)\r\n\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0data = m_params[sParamName].i;\r\n\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0m_iCurrentStreamPos++;\r\n\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0 \u00a0else\r\n\u00a0\u00a0 \u00a0{\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0data = 0;\r\n\u00a0\u00a0 \u00a0}\r\n\r\n\u00a0\u00a0 \u00a0return *this;\r\n}\r\n\r\nDataParameters&amp; DataParameters::operator &gt;&gt;(unsigned int &amp; data)\r\n{\r\n\u00a0\u00a0\u00a0 std::string sParamName = std::to_string(m_iCurrentStreamPos);\r\n\u00a0\r\n\u00a0\u00a0\u00a0 if (m_params.count(sParamName) &gt; 0)\r\n\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0data = m_params[sParamName].i;\r\n\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0m_iCurrentStreamPos++;\r\n\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0 \u00a0else\r\n\u00a0\u00a0 \u00a0{\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0data = 0;\r\n\u00a0\u00a0 \u00a0}\r\n\r\n\u00a0\u00a0 \u00a0return *this;\r\n}\r\n\r\nDataParameters&amp; DataParameters::operator &gt;&gt;(float&amp; data)\r\n{\r\n\u00a0\u00a0\u00a0 std::string sParamName = std::to_string(m_iCurrentStreamPos);\r\n\u00a0\r\n\u00a0\u00a0\u00a0 if (m_params.count(sParamName) &gt; 0)\r\n\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0data = m_params[sParamName].f;\r\n\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0m_iCurrentStreamPos++;\r\n\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0 \u00a0else\r\n\u00a0\u00a0 \u00a0{\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0data = 0.0f;\r\n\u00a0\u00a0 \u00a0}\r\n\r\n\u00a0\u00a0 \u00a0return *this;\r\n}\r\n\r\nDataParameters&amp; DataParameters::operator &gt;&gt;(char* data)\r\n{\r\n\u00a0\u00a0\u00a0 std::string sParamName = std::to_string(m_iCurrentStreamPos);\r\n\u00a0\r\n\u00a0\u00a0\u00a0 if (m_params.count(sParamName) &gt; 0)\r\n\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0data = (char*)m_params[sParamName].s.c_str();\r\n\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0m_iCurrentStreamPos++;\r\n\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0 \u00a0else\r\n\u00a0\u00a0 \u00a0{\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0data = &quot;&quot;;\r\n\u00a0\u00a0 \u00a0}\r\n\r\n\u00a0\u00a0 \u00a0return *this;\r\n}\r\n\r\nDataParameters&amp; DataParameters::operator &gt;&gt;(std::string&amp; data)\r\n{\r\n\u00a0\u00a0\u00a0 std::string sParamName = std::to_string(m_iCurrentStreamPos);\r\n\u00a0\r\n\u00a0\u00a0\u00a0 if (m_params.count(sParamName) &gt; 0)\r\n\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0data = m_params[sParamName].s;\r\n\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0m_iCurrentStreamPos++;\r\n\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0 \u00a0else\r\n\u00a0\u00a0 \u00a0{\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0data = &quot;&quot;;\r\n\u00a0\u00a0 \u00a0}\r\n\r\n\u00a0\u00a0 \u00a0return *this;\r\n}\r\n\r\n\/\/----------------------------------------\r\n\/\/ Op\u00e9rateurs &lt;&lt; pour \u00e9crire des donn\u00e9es\r\n\/\/----------------------------------------\r\nDataParameters&amp; DataParameters::operator &lt;&lt;(bool data)\r\n{\r\n\u00a0\u00a0\u00a0 std::string sParamName = std::to_string(m_iIndex);\r\n\u00a0\r\n\u00a0\u00a0\u00a0 m_params[sParamName].i = data;\r\n\u00a0\u00a0\u00a0 m_iIndex++;\r\n\r\n\u00a0\u00a0 \u00a0return *this;\r\n}\r\n\r\nDataParameters&amp; DataParameters::operator &lt;&lt;(int data)\r\n{\r\n\u00a0\u00a0\u00a0 std::string sParamName = std::to_string(m_iIndex);\r\n\u00a0\r\n\u00a0\u00a0\u00a0 m_params[sParamName].i = data;\r\n\u00a0\u00a0\u00a0 m_iIndex++;\r\n\r\n\u00a0\u00a0 \u00a0return *this;\r\n}\r\n\r\nDataParameters&amp; DataParameters::operator &lt;&lt;(unsigned int data)\r\n{\r\n\u00a0\u00a0\u00a0 std::string sParamName = std::to_string(m_iIndex);\r\n\u00a0\r\n\u00a0\u00a0\u00a0 m_params[sParamName].i = data;\r\n\u00a0\u00a0\u00a0 m_iIndex++;\r\n\r\n\u00a0\u00a0 \u00a0return *this;\r\n}\r\n\r\nDataParameters&amp; DataParameters::operator &lt;&lt;(float data)\r\n{\r\n\u00a0\u00a0\u00a0 std::string sParamName = std::to_string(m_iIndex);\r\n\u00a0\r\n\u00a0\u00a0\u00a0 m_params[sParamName].f = data;\r\n\u00a0\u00a0\u00a0 m_iIndex++;\r\n\r\n\u00a0\u00a0 \u00a0return *this;\r\n}\r\n\r\nDataParameters&amp; DataParameters::operator &lt;&lt;(char* data)\r\n{\r\n\u00a0\u00a0\u00a0 std::string sParamName = std::to_string(m_iIndex);\r\n\u00a0\r\n\u00a0\u00a0\u00a0 m_params[sParamName].s = data;\r\n\u00a0\u00a0\u00a0 m_iIndex++;\r\n\r\n\u00a0\u00a0 \u00a0if (data == &quot;StreamReset&quot;)\r\n\u00a0\u00a0 \u00a0{\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0m_iCurrentStreamPos = 0;\r\n\u00a0\u00a0 \u00a0}\r\n\r\n\u00a0\u00a0 \u00a0return *this;\r\n}\r\n\r\nDataParameters&amp; DataParameters::operator &lt;&lt;(std::string data)\r\n{\r\n\u00a0\u00a0\u00a0 std::string sParamName = std::to_string(m_iIndex);\r\n\u00a0\r\n\u00a0\u00a0\u00a0 m_params[sParamName].s = data;\r\n\u00a0\u00a0\u00a0 m_iIndex++;\r\n\r\n\u00a0\u00a0 \u00a0return *this;\r\n}\r\n\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>R\u00e9sum\u00e9 : <\/strong><\/p>\n<p>Nous avons pr\u00e9sent\u00e9 un objet rassemblant des donn\u00e9es pouvant \u00eatre de diff\u00e9rents types.<\/p>\n<p>Avec les flux <strong>&lt;&lt;<\/strong> et <strong>&gt;&gt;<\/strong>\u00a0 nous avons int\u00e9gr\u00e9 une technique plus simple pour \u00e9changer des donn\u00e9es.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>todo : refaire le stream reset avec une m\u00e9thode Intro : Parfois il est utile de regrouper des param\u00e8tres ensemble afin de les \u00e9changer entre modules. Explications : Voici le fichier DataParameters.h : Voici le fichier .cpp : &nbsp; R\u00e9sum\u00e9 : Nous avons pr\u00e9sent\u00e9 un objet rassemblant des donn\u00e9es pouvant \u00eatre de diff\u00e9rents types. Avec [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[4],"tags":[],"_links":{"self":[{"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=\/wp\/v2\/posts\/393"}],"collection":[{"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=393"}],"version-history":[{"count":37,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=\/wp\/v2\/posts\/393\/revisions"}],"predecessor-version":[{"id":3995,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=\/wp\/v2\/posts\/393\/revisions\/3995"}],"wp:attachment":[{"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=393"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=393"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=393"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}