diff options
Diffstat (limited to '0.14/_2home_2kev_2src_2automotive-message-broker_2lib_2abstractpropertytype_8h-example.html')
-rw-r--r-- | 0.14/_2home_2kev_2src_2automotive-message-broker_2lib_2abstractpropertytype_8h-example.html | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/0.14/_2home_2kev_2src_2automotive-message-broker_2lib_2abstractpropertytype_8h-example.html b/0.14/_2home_2kev_2src_2automotive-message-broker_2lib_2abstractpropertytype_8h-example.html new file mode 100644 index 00000000..9cc225af --- /dev/null +++ b/0.14/_2home_2kev_2src_2automotive-message-broker_2lib_2abstractpropertytype_8h-example.html @@ -0,0 +1,95 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.11"/> +<title>automotive-message-broker: /home/kev/src/automotive-message-broker/lib/abstractpropertytype.h</title> +<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="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { init_search(); }); +</script> +<link href="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 style="height: 56px;"> + <td id="projectalign" style="padding-left: 0.5em;"> + <div id="projectname">automotive-message-broker +  <span id="projectnumber">0.14.0</span> + </div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.11 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Related Pages</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li><a href="examples.html"><span>Examples</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> +</div><!-- top --> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">/home/kev/src/automotive-message-broker/lib/abstractpropertytype.h</div> </div> +</div><!--header--> +<div class="contents"> +<p><a class="el" href="classBasicPropertyType.html">BasicPropertyType</a> is a typed property type. Most internal types are derived from this class</p> +<p>std::unique_ptr<BasicPropertyType<int>> boostPSI = new BasicPropertyType<int>("BoostPSI",5); boostPSI->priority = AbstractPropertyType::Instant; //set instant because we clean up right after. routingEngine->updateProperty(boostPSI.get(), sourceUuid());</p> +<div class="fragment"><div class="line"><span class="comment">/*</span></div><div class="line"><span class="comment"> Copyright (C) 2012 Intel Corporation</span></div><div class="line"><span class="comment"></span></div><div class="line"><span class="comment"> This library is free software; you can redistribute it and/or</span></div><div class="line"><span class="comment"> modify it under the terms of the GNU Lesser General Public</span></div><div class="line"><span class="comment"> License as published by the Free Software Foundation; either</span></div><div class="line"><span class="comment"> version 2.1 of the License, or (at your option) any later version.</span></div><div class="line"><span class="comment"></span></div><div class="line"><span class="comment"> This library is distributed in the hope that it will be useful,</span></div><div class="line"><span class="comment"> but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><span class="comment"> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</span></div><div class="line"><span class="comment"> Lesser General Public License for more details.</span></div><div class="line"><span class="comment"></span></div><div class="line"><span class="comment"> You should have received a copy of the GNU Lesser General Public</span></div><div class="line"><span class="comment"> License along with this library; if not, write to the Free Software</span></div><div class="line"><span class="comment"> Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA</span></div><div class="line"><span class="comment">*/</span></div><div class="line"></div><div class="line"><span class="preprocessor">#ifndef _ABSTRACTPROPERTYTYPE_H_</span></div><div class="line"><span class="preprocessor">#define _ABSTRACTPROPERTYTYPE_H_</span></div><div class="line"></div><div class="line"><span class="preprocessor">#include <string></span></div><div class="line"><span class="preprocessor">#include <sstream></span></div><div class="line"><span class="preprocessor">#include <stdexcept></span></div><div class="line"><span class="preprocessor">#include <vector></span></div><div class="line"><span class="preprocessor">#include <iostream></span></div><div class="line"><span class="preprocessor">#include <memory></span></div><div class="line"><span class="preprocessor">#include <boost/any.hpp></span></div><div class="line"><span class="preprocessor">#include <boost/lexical_cast.hpp></span></div><div class="line"><span class="preprocessor">#include <boost/utility.hpp></span></div><div class="line"><span class="preprocessor">#include <type_traits></span></div><div class="line"><span class="preprocessor">#include <glib.h></span></div><div class="line"><span class="preprocessor">#include <list></span></div><div class="line"><span class="preprocessor">#include "timestamp.h"</span></div><div class="line"><span class="preprocessor">#include <<a class="code" href="debugout_8h.html">debugout.h</a>></span></div><div class="line"><span class="preprocessor">#include <boost/algorithm/string.hpp></span></div><div class="line"><span class="preprocessor">#include <superptr.hpp></span></div><div class="line"></div><div class="line"><span class="keyword">class </span><a name="_a0"></a><a class="code" href="classZone.html">Zone</a> {</div><div class="line"></div><div class="line"><span class="keyword">public</span>:</div><div class="line"></div><div class="line"> <span class="keyword">typedef</span> <span class="keywordtype">int</span> Type;</div><div class="line"></div><div class="line"> <span class="keyword">enum</span> {</div><div class="line"> None = 0,</div><div class="line"> Front = 1,</div><div class="line"> Middle = 1 << 1,</div><div class="line"> Right = 1 << 2,</div><div class="line"> Left = 1 << 3,</div><div class="line"> Rear = 1 << 4,</div><div class="line"> Center = 1 << 5,</div><div class="line"> LeftSide = 1 << 6,</div><div class="line"> RightSide = 1 << 7,</div><div class="line"> FrontSide = 1 << 8,</div><div class="line"> BackSide = 1 << 9</div><div class="line"> };</div><div class="line"></div><div class="line"><span class="keyword">static</span> <span class="keyword">const</span> Zone::Type FrontRight;</div><div class="line"><span class="keyword">static</span> <span class="keyword">const</span> Zone::Type FrontLeft;</div><div class="line"><span class="keyword">static</span> <span class="keyword">const</span> Zone::Type MiddleRight;</div><div class="line"><span class="keyword">static</span> <span class="keyword">const</span> Zone::Type MiddleLeft;</div><div class="line"><span class="keyword">static</span> <span class="keyword">const</span> Zone::Type RearRight;</div><div class="line"><span class="keyword">static</span> <span class="keyword">const</span> Zone::Type RearLeft;</div><div class="line"></div><div class="line"><span class="keyword">typedef</span> std::vector<Zone::Type> ZoneList;</div><div class="line"></div><div class="line">};</div><div class="line"></div><div class="line"><span class="keyword">class </span><a name="_a1"></a><a class="code" href="classAbstractPropertyType.html">AbstractPropertyType</a></div><div class="line">{</div><div class="line"><span class="keyword">public</span>:</div><div class="line"></div><div class="line"> <span class="keyword">enum</span> Priority</div><div class="line"> {</div><div class="line"> Normal = 0,</div><div class="line"> Low,</div><div class="line"> High,</div><div class="line"> Instant</div><div class="line"> };</div><div class="line"></div><div class="line"> <a class="code" href="classAbstractPropertyType.html">AbstractPropertyType</a>(std::string property)</div><div class="line"> : name(property), timestamp(amb::currentTime()), sequence(-1), zone(Zone::None), priority(Normal)</div><div class="line"> {</div><div class="line"></div><div class="line"> }</div><div class="line"></div><div class="line"> <span class="keyword">virtual</span> ~<a class="code" href="classAbstractPropertyType.html">AbstractPropertyType</a>()</div><div class="line"> {</div><div class="line"> <span class="keywordflow">for</span>(<span class="keyword">auto</span> i : destroyed)</div><div class="line"> {</div><div class="line"> <span class="keywordflow">if</span>(i) i(<span class="keyword">this</span>);</div><div class="line"> }</div><div class="line"> }</div><div class="line"></div><div class="line"> <span class="keyword">virtual</span> std::string toString() <span class="keyword">const</span> = 0;</div><div class="line"></div><div class="line"> <span class="keyword">virtual</span> <span class="keywordtype">void</span> fromString(std::string)= 0;</div><div class="line"></div><div class="line"> <span class="keyword">virtual</span> GVariant* toVariant() = 0;</div><div class="line"></div><div class="line"> <span class="keyword">virtual</span> <span class="keywordtype">void</span> fromVariant(GVariant*) = 0;</div><div class="line"></div><div class="line"> <span class="keyword">virtual</span> <a class="code" href="classAbstractPropertyType.html">AbstractPropertyType</a>* copy() = 0;</div><div class="line"></div><div class="line"> <span class="keyword">virtual</span> <span class="keywordtype">void</span> quickCopy(<a class="code" href="classAbstractPropertyType.html">AbstractPropertyType</a>* other)</div><div class="line"> {</div><div class="line"> sequence = other-><a name="a2"></a><a class="code" href="classAbstractPropertyType.html#ae74440c78c4a5f6af1c3b9c85f1a34c2">sequence</a>;</div><div class="line"> mValue = other-><a name="a3"></a><a class="code" href="classAbstractPropertyType.html#a7ba4118acb746d2b8fc220a12b0e2666">anyValue</a>();</div><div class="line"> timestamp = other-><a name="a4"></a><a class="code" href="classAbstractPropertyType.html#a6a391546600fde38a351d3d236be8a9b">timestamp</a>;</div><div class="line"> }</div><div class="line"></div><div class="line"> <span class="keywordtype">bool</span> operator == (<a class="code" href="classAbstractPropertyType.html">AbstractPropertyType</a> &other)</div><div class="line"> {</div><div class="line"> std::string one = toString();</div><div class="line"> std::string two = other.<a name="a5"></a><a class="code" href="classAbstractPropertyType.html#a4c359b2e7c3b0ede21c64ba2c90567aa">toString</a>();</div><div class="line"> <span class="keywordflow">return</span> one == two</div><div class="line"> && zone == other.<a name="a6"></a><a class="code" href="classAbstractPropertyType.html#a420b96a1fcbcbe513ff3801185e788bc">zone</a></div><div class="line"> && sourceUuid == other.<a name="a7"></a><a class="code" href="classAbstractPropertyType.html#abe2de53722d28e8e7c2a715b97e1ae48">sourceUuid</a></div><div class="line"> && name == other.<a name="a8"></a><a class="code" href="classAbstractPropertyType.html#a0899de35293963a6c18a0f4913916871">name</a>;</div><div class="line"> }</div><div class="line"></div><div class="line"> <span class="keywordtype">bool</span> operator != (<a class="code" href="classAbstractPropertyType.html">AbstractPropertyType</a> &other)</div><div class="line"> {</div><div class="line"> std::string one = toString();</div><div class="line"> std::string two = other.<a class="code" href="classAbstractPropertyType.html#a4c359b2e7c3b0ede21c64ba2c90567aa">toString</a>();</div><div class="line"> <span class="keywordflow">return</span> one != two;</div><div class="line"> }</div><div class="line"></div><div class="line"> std::string name;</div><div class="line"></div><div class="line"> <span class="keywordtype">double</span> timestamp;</div><div class="line"></div><div class="line"> int32_t sequence;</div><div class="line"></div><div class="line"> std::string sourceUuid;</div><div class="line"></div><div class="line"> Zone::Type zone;</div><div class="line"></div><div class="line"> Priority priority;</div><div class="line"></div><div class="line"> <span class="keyword">virtual</span> <span class="keywordtype">void</span> setValue(boost::any val)</div><div class="line"> {</div><div class="line"> mValue = val;</div><div class="line"> timestamp = amb::currentTime();</div><div class="line"> }</div><div class="line"></div><div class="line"> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"> T value()<span class="keyword"> const</span></div><div class="line"><span class="keyword"> </span>{</div><div class="line"> <span class="keywordflow">return</span> boost::any_cast<T>(mValue);</div><div class="line"> }</div><div class="line"></div><div class="line"> boost::any anyValue()</div><div class="line"> {</div><div class="line"> <span class="keywordflow">return</span> mValue;</div><div class="line"> }</div><div class="line"></div><div class="line"> <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">string</span> signature()</div><div class="line"> {</div><div class="line"> <span class="keyword">auto</span> var = amb::make_super(toVariant());</div><div class="line"> <span class="keywordflow">if</span>(!var) <span class="keywordflow">return</span> <span class="stringliteral">""</span>;</div><div class="line"></div><div class="line"> <span class="keyword">const</span> <span class="keywordtype">string</span> s = g_variant_get_type_string(var.get());</div><div class="line"></div><div class="line"> <a name="_a9"></a><a class="code" href="classDebugOut.html">DebugOut</a>() << <span class="stringliteral">"returning signature: "</span> << s << <span class="stringliteral">" for "</span><< name << endl;</div><div class="line"></div><div class="line"> <span class="keywordflow">return</span> s;</div><div class="line"> }</div><div class="line"></div><div class="line"> std::vector<std::function<void(AbstractPropertyType*)>> destroyed;</div><div class="line"></div><div class="line"><span class="keyword">protected</span>:</div><div class="line"></div><div class="line"> boost::any mValue;</div><div class="line"></div><div class="line">};</div><div class="line"></div><div class="line"><span class="keyword">namespace </span><a class="code" href="namespaceamb.html">amb</a></div><div class="line">{</div><div class="line"></div><div class="line"><span class="keyword">struct </span>PropertyCompare</div><div class="line">{</div><div class="line"> <span class="keywordtype">bool</span> operator()(<a class="code" href="classAbstractPropertyType.html">AbstractPropertyType</a>* <span class="keyword">const</span> & lhs, <a class="code" href="classAbstractPropertyType.html">AbstractPropertyType</a>* & rhs)<span class="keyword"> const</span></div><div class="line"><span class="keyword"> </span>{</div><div class="line"> <span class="keywordflow">if</span> (lhs-><a class="code" href="classAbstractPropertyType.html#a0899de35293963a6c18a0f4913916871">name</a> == rhs-><a class="code" href="classAbstractPropertyType.html#a0899de35293963a6c18a0f4913916871">name</a></div><div class="line"> && lhs-><a class="code" href="classAbstractPropertyType.html#abe2de53722d28e8e7c2a715b97e1ae48">sourceUuid</a> == rhs-><a class="code" href="classAbstractPropertyType.html#abe2de53722d28e8e7c2a715b97e1ae48">sourceUuid</a></div><div class="line"> && lhs-><a class="code" href="classAbstractPropertyType.html#a420b96a1fcbcbe513ff3801185e788bc">zone</a> == rhs-><a class="code" href="classAbstractPropertyType.html#a420b96a1fcbcbe513ff3801185e788bc">zone</a>)</div><div class="line"> {</div><div class="line"> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"> }</div><div class="line"></div><div class="line"> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"> }</div><div class="line"></div><div class="line">};</div><div class="line"></div><div class="line">}</div><div class="line"></div><div class="line"></div><div class="line"><span class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><span class="keyword">class </span><a name="_a10"></a><a class="code" href="classGVS.html">GVS</a>;</div><div class="line"></div><div class="line"><span class="keyword">template</span> <></div><div class="line"><span class="keyword">class </span><a class="code" href="classGVS.html">GVS</a><int></div><div class="line">{</div><div class="line"><span class="keyword">public</span>:</div><div class="line"> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* signature() { <span class="keywordflow">return</span> <span class="stringliteral">"i"</span>; }</div><div class="line"></div><div class="line"> <span class="keyword">static</span> <span class="keywordtype">int</span> value(GVariant* v)</div><div class="line"> {</div><div class="line"> <span class="keywordtype">int</span> val = 0;</div><div class="line"> g_variant_get(v, signature(), &val);</div><div class="line"> <span class="keywordflow">return</span> val;</div><div class="line"> }</div><div class="line"></div><div class="line"> <span class="keyword">static</span> std::string stringize(std::string v)</div><div class="line"> {</div><div class="line"> <span class="keywordflow">return</span> v;</div><div class="line"> }</div><div class="line">};</div><div class="line"></div><div class="line"><span class="keyword">template</span> <></div><div class="line"><span class="keyword">class </span><a class="code" href="classGVS.html">GVS</a><double></div><div class="line">{</div><div class="line"><span class="keyword">public</span>:</div><div class="line"> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* signature() { <span class="keywordflow">return</span> <span class="stringliteral">"d"</span>; }</div><div class="line"></div><div class="line"> <span class="keyword">static</span> <span class="keywordtype">double</span> value(GVariant* v)</div><div class="line"> {</div><div class="line"> <span class="keywordflow">return</span> g_variant_get_double(v);</div><div class="line"> }</div><div class="line"> <span class="keyword">static</span> std::string stringize(std::string v)</div><div class="line"> {</div><div class="line"> <span class="keywordflow">return</span> v;</div><div class="line"> }</div><div class="line">};</div><div class="line"></div><div class="line"><span class="keyword">template</span> <></div><div class="line"><span class="keyword">class </span><a class="code" href="classGVS.html">GVS</a><uint16_t></div><div class="line">{</div><div class="line"><span class="keyword">public</span>:</div><div class="line"> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* signature() { <span class="keywordflow">return</span> <span class="stringliteral">"q"</span>; }</div><div class="line"></div><div class="line"> <span class="keyword">static</span> uint16_t value(GVariant* v)</div><div class="line"> {</div><div class="line"> <span class="keywordflow">return</span> g_variant_get_uint16(v);</div><div class="line"> }</div><div class="line"> <span class="keyword">static</span> std::string stringize(std::string v)</div><div class="line"> {</div><div class="line"> <span class="keywordflow">return</span> v;</div><div class="line"> }</div><div class="line">};</div><div class="line"></div><div class="line"><span class="keyword">template</span> <></div><div class="line"><span class="keyword">class </span><a class="code" href="classGVS.html">GVS</a><int16_t></div><div class="line">{</div><div class="line"><span class="keyword">public</span>:</div><div class="line"> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* signature() { <span class="keywordflow">return</span> <span class="stringliteral">"n"</span>; }</div><div class="line"></div><div class="line"> <span class="keyword">static</span> int16_t value(GVariant* v)</div><div class="line"> {</div><div class="line"> <span class="keywordflow">return</span> g_variant_get_int16(v);</div><div class="line"> }</div><div class="line"> <span class="keyword">static</span> std::string stringize(std::string v)</div><div class="line"> {</div><div class="line"> <span class="keywordflow">return</span> v;</div><div class="line"> }</div><div class="line">};</div><div class="line"></div><div class="line"><span class="keyword">template</span> <></div><div class="line"><span class="keyword">class </span><a class="code" href="classGVS.html">GVS</a><char></div><div class="line">{</div><div class="line"><span class="keyword">public</span>:</div><div class="line"> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* signature() { <span class="keywordflow">return</span> <span class="stringliteral">"y"</span>; }</div><div class="line"></div><div class="line"> <span class="keyword">static</span> <span class="keywordtype">char</span> value(GVariant* v)</div><div class="line"> {</div><div class="line"> <span class="keywordflow">return</span> g_variant_get_byte(v);</div><div class="line"> }</div><div class="line"> <span class="keyword">static</span> std::string stringize(std::string v)</div><div class="line"> {</div><div class="line"> <span class="keywordflow">return</span> v;</div><div class="line"> }</div><div class="line">};</div><div class="line"></div><div class="line"><span class="keyword">template</span> <></div><div class="line"><span class="keyword">class </span><a class="code" href="classGVS.html">GVS</a><uint32_t></div><div class="line">{</div><div class="line"><span class="keyword">public</span>:</div><div class="line"> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* signature() { <span class="keywordflow">return</span> <span class="stringliteral">"u"</span>; }</div><div class="line"></div><div class="line"> <span class="keyword">static</span> uint32_t value(GVariant* v)</div><div class="line"> {</div><div class="line"> <span class="keywordflow">return</span> g_variant_get_uint32(v);</div><div class="line"> }</div><div class="line"> <span class="keyword">static</span> std::string stringize(std::string v)</div><div class="line"> {</div><div class="line"> <span class="keywordflow">return</span> v;</div><div class="line"> }</div><div class="line">};</div><div class="line"></div><div class="line"><span class="keyword">template</span> <></div><div class="line"><span class="keyword">class </span><a class="code" href="classGVS.html">GVS</a><int64_t></div><div class="line">{</div><div class="line"><span class="keyword">public</span>:</div><div class="line"> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* signature() { <span class="keywordflow">return</span> <span class="stringliteral">"x"</span>; }</div><div class="line"></div><div class="line"> <span class="keyword">static</span> int64_t value(GVariant* v)</div><div class="line"> {</div><div class="line"> <span class="keywordflow">return</span> g_variant_get_int64(v);</div><div class="line"> }</div><div class="line"> <span class="keyword">static</span> std::string stringize(std::string v)</div><div class="line"> {</div><div class="line"> <span class="keywordflow">return</span> v;</div><div class="line"> }</div><div class="line">};</div><div class="line"></div><div class="line"><span class="keyword">template</span> <></div><div class="line"><span class="keyword">class </span><a class="code" href="classGVS.html">GVS</a><uint64_t></div><div class="line">{</div><div class="line"><span class="keyword">public</span>:</div><div class="line"> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* signature() { <span class="keywordflow">return</span> <span class="stringliteral">"t"</span>; }</div><div class="line"></div><div class="line"> <span class="keyword">static</span> uint64_t value(GVariant* v)</div><div class="line"> {</div><div class="line"> <span class="keywordflow">return</span> g_variant_get_uint64(v);</div><div class="line"> }</div><div class="line"> <span class="keyword">static</span> std::string stringize(std::string v)</div><div class="line"> {</div><div class="line"> <span class="keywordflow">return</span> v;</div><div class="line"> }</div><div class="line">};</div><div class="line"></div><div class="line"><span class="keyword">template</span> <></div><div class="line"><span class="keyword">class </span><a class="code" href="classGVS.html">GVS</a><bool></div><div class="line">{</div><div class="line"><span class="keyword">public</span>:</div><div class="line"> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* signature() { <span class="keywordflow">return</span> <span class="stringliteral">"b"</span>; }</div><div class="line"></div><div class="line"> <span class="keyword">static</span> <span class="keywordtype">bool</span> value(GVariant *v)</div><div class="line"> {</div><div class="line"> <span class="keywordflow">return</span> g_variant_get_boolean(v);</div><div class="line"> }</div><div class="line"> <span class="keyword">static</span> std::string stringize(std::string v)</div><div class="line"> {</div><div class="line"> <span class="keywordflow">if</span>(v == <span class="stringliteral">"0"</span> || v == <span class="stringliteral">"1"</span>)</div><div class="line"> <span class="keywordflow">return</span> v;</div><div class="line"></div><div class="line"> boost::algorithm::to_lower(v);</div><div class="line"> <span class="keywordflow">return</span> v == <span class="stringliteral">"true"</span> ? <span class="stringliteral">"1"</span>:<span class="stringliteral">"0"</span>;</div><div class="line"> }</div><div class="line">};</div><div class="line"></div><div class="line"><span class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><span class="keyword">class </span><a name="_a11"></a><a class="code" href="classBasicPropertyType.html">BasicPropertyType</a>: <span class="keyword">public</span> <a class="code" href="classAbstractPropertyType.html">AbstractPropertyType</a></div><div class="line">{</div><div class="line"><span class="keyword">public</span>:</div><div class="line"> <a class="code" href="classBasicPropertyType.html">BasicPropertyType</a>(): <a class="code" href="classAbstractPropertyType.html">AbstractPropertyType</a>(<span class="stringliteral">""</span>)</div><div class="line"> {</div><div class="line"> mValue = T();</div><div class="line"> }</div><div class="line"></div><div class="line"> <a class="code" href="classBasicPropertyType.html">BasicPropertyType</a>(<a class="code" href="classBasicPropertyType.html">BasicPropertyType</a> <span class="keyword">const</span> & other)</div><div class="line"> :<a class="code" href="classAbstractPropertyType.html">AbstractPropertyType</a>(other.<a class="code" href="classAbstractPropertyType.html#a0899de35293963a6c18a0f4913916871">name</a>)</div><div class="line"> {</div><div class="line"> setValue(other.<a name="a12"></a><a class="code" href="classAbstractPropertyType.html#ae723621925382263eba046fa1ca8e36d">value</a><T>());</div><div class="line"> timestamp = other.<a class="code" href="classAbstractPropertyType.html#a6a391546600fde38a351d3d236be8a9b">timestamp</a>;</div><div class="line"> sequence = other.<a class="code" href="classAbstractPropertyType.html#ae74440c78c4a5f6af1c3b9c85f1a34c2">sequence</a>;</div><div class="line"> sourceUuid = other.<a class="code" href="classAbstractPropertyType.html#abe2de53722d28e8e7c2a715b97e1ae48">sourceUuid</a>;</div><div class="line"> name = other.<a class="code" href="classAbstractPropertyType.html#a0899de35293963a6c18a0f4913916871">name</a>;</div><div class="line"> zone = other.<a class="code" href="classAbstractPropertyType.html#a420b96a1fcbcbe513ff3801185e788bc">zone</a>;</div><div class="line"></div><div class="line"> }</div><div class="line"></div><div class="line"> <a class="code" href="classBasicPropertyType.html">BasicPropertyType</a> & operator = (<a class="code" href="classBasicPropertyType.html">BasicPropertyType</a> <span class="keyword">const</span> & other)</div><div class="line"> {</div><div class="line"> setValue(other.<a class="code" href="classAbstractPropertyType.html#ae723621925382263eba046fa1ca8e36d">value</a><T>());</div><div class="line"> timestamp = other.<a class="code" href="classAbstractPropertyType.html#a6a391546600fde38a351d3d236be8a9b">timestamp</a>;</div><div class="line"> sequence = other.<a class="code" href="classAbstractPropertyType.html#ae74440c78c4a5f6af1c3b9c85f1a34c2">sequence</a>;</div><div class="line"> sourceUuid = other.<a class="code" href="classAbstractPropertyType.html#abe2de53722d28e8e7c2a715b97e1ae48">sourceUuid</a>;</div><div class="line"> name = other.<a class="code" href="classAbstractPropertyType.html#a0899de35293963a6c18a0f4913916871">name</a>;</div><div class="line"> zone = other.<a class="code" href="classAbstractPropertyType.html#a420b96a1fcbcbe513ff3801185e788bc">zone</a>;</div><div class="line"></div><div class="line"> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"> }</div><div class="line"></div><div class="line"> <a class="code" href="classBasicPropertyType.html">BasicPropertyType</a> & operator = (T <span class="keyword">const</span> & other)</div><div class="line"> {</div><div class="line"> setValue(other);</div><div class="line"> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"> }</div><div class="line"></div><div class="line"> <a class="code" href="classBasicPropertyType.html">BasicPropertyType</a> & operator ++ ()</div><div class="line"> {</div><div class="line"> setValue(basicValue() + 1);</div><div class="line"> }</div><div class="line"></div><div class="line"> <a class="code" href="classBasicPropertyType.html">BasicPropertyType</a> & operator -- ()</div><div class="line"> {</div><div class="line"> setValue(basicValue() - 1);</div><div class="line"> }</div><div class="line"></div><div class="line"> <span class="keywordtype">bool</span> operator < (const BasicPropertyType<T>& other) <span class="keyword">const</span></div><div class="line"> {</div><div class="line"> <span class="keywordflow">return</span> value<T>() < other.value<T>();</div><div class="line"> }</div><div class="line"></div><div class="line"> <span class="keywordtype">bool</span> operator > (<span class="keyword">const</span> <a class="code" href="classBasicPropertyType.html">BasicPropertyType<T></a>& other)<span class="keyword"> const</span></div><div class="line"><span class="keyword"> </span>{</div><div class="line"> <span class="keywordflow">return</span> value<T>() > other.<a name="a13"></a><a class="code" href="classAbstractPropertyType.html#ae723621925382263eba046fa1ca8e36d">value</a><T>();</div><div class="line"> }</div><div class="line"></div><div class="line"> <a class="code" href="classBasicPropertyType.html">BasicPropertyType</a>( T val)</div><div class="line"> :<a class="code" href="classAbstractPropertyType.html">AbstractPropertyType</a>(<span class="stringliteral">""</span>)</div><div class="line"> {</div><div class="line"> setValue(val);</div><div class="line"> }</div><div class="line"></div><div class="line"> <a class="code" href="classBasicPropertyType.html">BasicPropertyType</a>( std::string propertyName, T val)</div><div class="line"> :<a class="code" href="classAbstractPropertyType.html">AbstractPropertyType</a>(propertyName)</div><div class="line"> {</div><div class="line"> setValue(val);</div><div class="line"> }</div><div class="line"></div><div class="line"> <a class="code" href="classBasicPropertyType.html">BasicPropertyType</a>( std::string propertyName, std::string val)</div><div class="line"> :<a class="code" href="classAbstractPropertyType.html">AbstractPropertyType</a>(propertyName)</div><div class="line"> {</div><div class="line"> <span class="keywordflow">if</span>(!val.empty() && val != <span class="stringliteral">""</span>)</div><div class="line"> {</div><div class="line"> serialize<T>(val);</div><div class="line"> }</div><div class="line"> <span class="keywordflow">else</span> setValue(T());</div><div class="line"> }</div><div class="line"></div><div class="line"> <a class="code" href="classBasicPropertyType.html">BasicPropertyType</a>(std::string propertyName)</div><div class="line"> :<a class="code" href="classAbstractPropertyType.html">AbstractPropertyType</a>(propertyName)</div><div class="line"> {</div><div class="line"> mValue = T();</div><div class="line"> }</div><div class="line"></div><div class="line"> <a class="code" href="classAbstractPropertyType.html">AbstractPropertyType</a>* copy()</div><div class="line"> {</div><div class="line"> <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code" href="classBasicPropertyType.html">BasicPropertyType<T></a>(*this);</div><div class="line"> }</div><div class="line"></div><div class="line"> <span class="keywordtype">void</span> fromString(std::string val)</div><div class="line"> {</div><div class="line"> <span class="keywordflow">if</span>(!val.empty() && val != <span class="stringliteral">""</span>)</div><div class="line"> {</div><div class="line"> serialize<T>(val);</div><div class="line"> }</div><div class="line"> }</div><div class="line"></div><div class="line"> std::string toString()<span class="keyword"> const</span></div><div class="line"><span class="keyword"> </span>{</div><div class="line"> std::stringstream stream;</div><div class="line"> stream.precision(10);</div><div class="line"> stream<<value<T>();</div><div class="line"></div><div class="line"> <span class="keywordflow">return</span> stream.str();</div><div class="line"> }</div><div class="line"></div><div class="line"> GVariant* toVariant()</div><div class="line"> {</div><div class="line"> <span class="keywordflow">return</span> serializeVariant<T>(value<T>());</div><div class="line"> }</div><div class="line"></div><div class="line"> <span class="keywordtype">void</span> fromVariant(GVariant *v)</div><div class="line"> {</div><div class="line"> setValue(deserializeVariant<T>(v));</div><div class="line"> }</div><div class="line"></div><div class="line"> T basicValue()</div><div class="line"> {</div><div class="line"> <span class="keywordflow">return</span> value<T>();</div><div class="line"> }</div><div class="line"></div><div class="line"> <span class="keywordtype">void</span> setValue(T val)</div><div class="line"> {</div><div class="line"> <a name="a14"></a><a class="code" href="classAbstractPropertyType.html#a1b2598b86718911533587a5bd41bfb9c">AbstractPropertyType::setValue</a>(val);</div><div class="line"> }</div><div class="line"></div><div class="line"> <span class="keywordtype">void</span> setValue(boost::any val)</div><div class="line"> {</div><div class="line"> <a class="code" href="classAbstractPropertyType.html#a1b2598b86718911533587a5bd41bfb9c">AbstractPropertyType::setValue</a>(val);</div><div class="line"> }</div><div class="line"></div><div class="line"><span class="keyword">private</span>:</div><div class="line"></div><div class="line"> <span class="comment">//GVariant* mVariant;</span></div><div class="line"></div><div class="line"> <span class="keyword">template</span> <<span class="keyword">class</span> N></div><div class="line"> <span class="keywordtype">void</span> serialize(std::string val, <span class="keyword">typename</span> std::enable_if<std::is_enum<N>::value, N>::type* = 0)</div><div class="line"> {</div><div class="line"> <span class="keywordtype">int</span> someTemp;</div><div class="line"></div><div class="line"> std::stringstream stream(val);</div><div class="line"></div><div class="line"> stream>>someTemp;</div><div class="line"> setValue((N)someTemp);</div><div class="line"> }</div><div class="line"></div><div class="line"> <span class="keyword">template</span> <<span class="keyword">class</span> N></div><div class="line"> <span class="keywordtype">void</span> serialize(std::string val, <span class="keyword">typename</span> std::enable_if<!std::is_enum<N>::value, N>::type* = 0)</div><div class="line"> {</div><div class="line"> std::stringstream stream(<a class="code" href="classGVS.html">GVS<T>::stringize</a>(val));</div><div class="line"> N someTemp;</div><div class="line"> stream>>someTemp;</div><div class="line"> setValue(someTemp);</div><div class="line"> }</div><div class="line"></div><div class="line"> <span class="keyword">template</span> <<span class="keyword">class</span> N></div><div class="line"> GVariant* serializeVariant(T val, <span class="keyword">typename</span> std::enable_if<std::is_enum<N>::value, N>::type* = 0)</div><div class="line"> {</div><div class="line"> <span class="comment">//mVariant = Glib::VariantBase(Glib::Variant<gint16>::create((int)val).gobj());</span></div><div class="line"></div><div class="line"> <span class="keywordflow">return</span> (g_variant_new(<span class="stringliteral">"i"</span>,(<span class="keywordtype">int</span>)val));</div><div class="line"> }</div><div class="line"></div><div class="line"> <span class="keyword">template</span> <<span class="keyword">class</span> N></div><div class="line"> GVariant* serializeVariant(T val, <span class="keyword">typename</span> std::enable_if<!std::is_enum<N>::value, N>::type* = 0)</div><div class="line"> {</div><div class="line"> <span class="comment">//mVariant = Glib::Variant<T>::create(val);</span></div><div class="line"> <span class="comment">//mVariant = g_variant_ref(g_variant_new(GVS<T>::signature(),val));</span></div><div class="line"> <span class="keywordflow">return</span> g_variant_new(<a class="code" href="classGVS.html">GVS<T>::signature</a>(),val);</div><div class="line"> }</div><div class="line"></div><div class="line"> <span class="keyword">template</span> <<span class="keyword">class</span> N></div><div class="line"> T deserializeVariant(GVariant* v, <span class="keyword">typename</span> std::enable_if<std::is_enum<N>::value, N>::type* = 0)</div><div class="line"> {</div><div class="line"><span class="comment">// return (T)((Glib::Variant<int>::cast_dynamic<Glib::Variant<int> >(*v)).get());</span></div><div class="line"></div><div class="line"> <span class="keywordflow">return</span> (T)<a class="code" href="classGVS.html">GVS<int>::value</a>(v);</div><div class="line"> }</div><div class="line"></div><div class="line"> <span class="keyword">template</span> <<span class="keyword">class</span> N></div><div class="line"> T deserializeVariant(GVariant* v, <span class="keyword">typename</span> std::enable_if<!std::is_enum<N>::value, N>::type* = 0)</div><div class="line"> {</div><div class="line"> <span class="comment">// return Glib::VariantBase::cast_dynamic<Glib::Variant<T> >(*v).get();</span></div><div class="line"> <span class="keywordflow">return</span> <a class="code" href="classGVS.html">GVS<T>::value</a>(v);</div><div class="line"> }</div><div class="line">};</div><div class="line"></div><div class="line"><span class="keyword">class </span><a name="_a15"></a><a class="code" href="classStringPropertyType.html">StringPropertyType</a>: <span class="keyword">public</span> <a class="code" href="classAbstractPropertyType.html">AbstractPropertyType</a></div><div class="line">{</div><div class="line"><span class="keyword">public</span>:</div><div class="line"></div><div class="line"></div><div class="line"> <a class="code" href="classStringPropertyType.html">StringPropertyType</a>()</div><div class="line"> :<a class="code" href="classAbstractPropertyType.html">AbstractPropertyType</a>(<span class="stringliteral">""</span>)</div><div class="line"> {</div><div class="line"> setValue(std::string());</div><div class="line"> }</div><div class="line"></div><div class="line"> <a class="code" href="classStringPropertyType.html">StringPropertyType</a>(std::string propertyName)</div><div class="line"> :<a class="code" href="classAbstractPropertyType.html">AbstractPropertyType</a>(propertyName)</div><div class="line"> {</div><div class="line"> setValue(std::string());</div><div class="line"> }</div><div class="line"></div><div class="line"> <a class="code" href="classStringPropertyType.html">StringPropertyType</a>(std::string propertyName, std::string val)</div><div class="line"> :<a class="code" href="classAbstractPropertyType.html">AbstractPropertyType</a>(propertyName)</div><div class="line"> {</div><div class="line"> setValue(val);</div><div class="line"> }</div><div class="line"></div><div class="line"> <a class="code" href="classStringPropertyType.html">StringPropertyType</a>(<a class="code" href="classStringPropertyType.html">StringPropertyType</a> <span class="keyword">const</span> & other)</div><div class="line"> :<a class="code" href="classAbstractPropertyType.html">AbstractPropertyType</a>(other.<a class="code" href="classAbstractPropertyType.html#a0899de35293963a6c18a0f4913916871">name</a>)</div><div class="line"> {</div><div class="line"> setValue(other.<a class="code" href="classAbstractPropertyType.html#ae723621925382263eba046fa1ca8e36d">value</a><std::string>());</div><div class="line"> timestamp = other.<a class="code" href="classAbstractPropertyType.html#a6a391546600fde38a351d3d236be8a9b">timestamp</a>;</div><div class="line"> sequence = other.<a class="code" href="classAbstractPropertyType.html#ae74440c78c4a5f6af1c3b9c85f1a34c2">sequence</a>;</div><div class="line"> sourceUuid = other.<a class="code" href="classAbstractPropertyType.html#abe2de53722d28e8e7c2a715b97e1ae48">sourceUuid</a>;</div><div class="line"> name = other.<a class="code" href="classAbstractPropertyType.html#a0899de35293963a6c18a0f4913916871">name</a>;</div><div class="line"> zone = other.<a class="code" href="classAbstractPropertyType.html#a420b96a1fcbcbe513ff3801185e788bc">zone</a>;</div><div class="line"> }</div><div class="line"></div><div class="line"> <a class="code" href="classStringPropertyType.html">StringPropertyType</a> & operator = (<a class="code" href="classStringPropertyType.html">StringPropertyType</a> <span class="keyword">const</span> & other)</div><div class="line"> {</div><div class="line"> setValue(other.<a class="code" href="classAbstractPropertyType.html#ae723621925382263eba046fa1ca8e36d">value</a><std::string>());</div><div class="line"> timestamp = other.<a class="code" href="classAbstractPropertyType.html#a6a391546600fde38a351d3d236be8a9b">timestamp</a>;</div><div class="line"> sequence = other.<a class="code" href="classAbstractPropertyType.html#ae74440c78c4a5f6af1c3b9c85f1a34c2">sequence</a>;</div><div class="line"> sourceUuid = other.<a class="code" href="classAbstractPropertyType.html#abe2de53722d28e8e7c2a715b97e1ae48">sourceUuid</a>;</div><div class="line"> name = other.<a class="code" href="classAbstractPropertyType.html#a0899de35293963a6c18a0f4913916871">name</a>;</div><div class="line"> zone = other.<a class="code" href="classAbstractPropertyType.html#a420b96a1fcbcbe513ff3801185e788bc">zone</a>;</div><div class="line"></div><div class="line"> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"> }</div><div class="line"></div><div class="line"> <a class="code" href="classStringPropertyType.html">StringPropertyType</a> & operator = (std::string <span class="keyword">const</span> & other)</div><div class="line"> {</div><div class="line"> setValue(std::string(other));</div><div class="line"> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"> }</div><div class="line"></div><div class="line"> <span class="keywordtype">bool</span> operator < (<span class="keyword">const</span> <a class="code" href="classStringPropertyType.html">StringPropertyType</a>& other)<span class="keyword"> const</span></div><div class="line"><span class="keyword"> </span>{</div><div class="line"> <span class="keywordflow">return</span> value<std::string>() < other.<a class="code" href="classAbstractPropertyType.html#ae723621925382263eba046fa1ca8e36d">value</a><std::string>();</div><div class="line"> }</div><div class="line"></div><div class="line"></div><div class="line"> <span class="keywordtype">void</span> fromString(std::string val)</div><div class="line"> {</div><div class="line"> setValue(val);</div><div class="line"> }</div><div class="line"></div><div class="line"> <a class="code" href="classAbstractPropertyType.html">AbstractPropertyType</a>* copy()</div><div class="line"> {</div><div class="line"> <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code" href="classStringPropertyType.html">StringPropertyType</a>(*<span class="keyword">this</span>);</div><div class="line"> }</div><div class="line"></div><div class="line"> std::string toString()<span class="keyword"> const</span></div><div class="line"><span class="keyword"> </span>{</div><div class="line"> <span class="keywordflow">return</span> value<std::string>();</div><div class="line"> }</div><div class="line"></div><div class="line"> GVariant* toVariant()</div><div class="line"> {</div><div class="line"> <span class="comment">//mVariant = Glib::Variant<std::string>::create(toString());</span></div><div class="line"></div><div class="line"> <span class="keywordflow">return</span> g_variant_new_string(toString().c_str());</div><div class="line"></div><div class="line"> }</div><div class="line"></div><div class="line"> <span class="keywordtype">void</span> fromVariant(GVariant *v)</div><div class="line"> {</div><div class="line"> setValue(std::string(g_variant_get_string(v,NULL)));</div><div class="line"> }</div><div class="line">};</div><div class="line"></div><div class="line"><span class="keyword">template</span> <<span class="keyword">class</span> T = AbstractPropertyType></div><div class="line"><span class="keyword">class </span><a name="_a16"></a><a class="code" href="classListPropertyType.html">ListPropertyType</a>: <span class="keyword">public</span> <a class="code" href="classAbstractPropertyType.html">AbstractPropertyType</a></div><div class="line">{</div><div class="line"><span class="keyword">public</span>:</div><div class="line"></div><div class="line"> <a class="code" href="classListPropertyType.html">ListPropertyType</a>(std::string propertyName)</div><div class="line"> : <a class="code" href="classAbstractPropertyType.html">AbstractPropertyType</a>(propertyName), initialized(<span class="keyword">false</span>)</div><div class="line"> {</div><div class="line"></div><div class="line"> }</div><div class="line"></div><div class="line"> <a class="code" href="classListPropertyType.html">ListPropertyType</a>(std::string propertyName, T value)</div><div class="line"> : <a class="code" href="classAbstractPropertyType.html">AbstractPropertyType</a>(propertyName), initialized(<span class="keyword">false</span>)</div><div class="line"> {</div><div class="line"> appendPriv(value);</div><div class="line"> }</div><div class="line"></div><div class="line"> <a class="code" href="classListPropertyType.html">ListPropertyType</a>(<a class="code" href="classListPropertyType.html">ListPropertyType</a> & other)</div><div class="line"> :<a class="code" href="classAbstractPropertyType.html">AbstractPropertyType</a>(other.<a class="code" href="classAbstractPropertyType.html#a0899de35293963a6c18a0f4913916871">name</a>),initialized(<span class="keyword">false</span>)</div><div class="line"> {</div><div class="line"> std::vector<T> l = other.<a name="a17"></a>list();</div><div class="line"> <span class="keywordflow">for</span>(<span class="keyword">auto</span> i : l)</div><div class="line"> {</div><div class="line"> append(i);</div><div class="line"> }</div><div class="line"></div><div class="line"> timestamp = other.<a class="code" href="classAbstractPropertyType.html#a6a391546600fde38a351d3d236be8a9b">timestamp</a>;</div><div class="line"> sequence = other.<a class="code" href="classAbstractPropertyType.html#ae74440c78c4a5f6af1c3b9c85f1a34c2">sequence</a>;</div><div class="line"> sourceUuid = other.<a class="code" href="classAbstractPropertyType.html#abe2de53722d28e8e7c2a715b97e1ae48">sourceUuid</a>;</div><div class="line"> name = other.<a class="code" href="classAbstractPropertyType.html#a0899de35293963a6c18a0f4913916871">name</a>;</div><div class="line"> zone = other.<a class="code" href="classAbstractPropertyType.html#a420b96a1fcbcbe513ff3801185e788bc">zone</a>;</div><div class="line"> }</div><div class="line"></div><div class="line"> ~<a class="code" href="classListPropertyType.html">ListPropertyType</a>()</div><div class="line"> {</div><div class="line"> clear();</div><div class="line"> }</div><div class="line"></div><div class="line"> <span class="keywordtype">void</span> append(T property)</div><div class="line"> {</div><div class="line"> <span class="keywordflow">if</span>(!initialized)</div><div class="line"> {</div><div class="line"> mList.clear();</div><div class="line"> initialized = <span class="keyword">true</span>;</div><div class="line"> }</div><div class="line"></div><div class="line"> appendPriv(property);</div><div class="line"> }</div><div class="line"></div><div class="line"> uint count()</div><div class="line"> {</div><div class="line"> <span class="keywordflow">return</span> mList.size();</div><div class="line"> }</div><div class="line"></div><div class="line"> <a class="code" href="classAbstractPropertyType.html">AbstractPropertyType</a>* copy()</div><div class="line"> {</div><div class="line"> <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code" href="classListPropertyType.html">ListPropertyType</a>(*<span class="keyword">this</span>);</div><div class="line"> }</div><div class="line"></div><div class="line"> <span class="keywordtype">void</span> quickCopy(<a class="code" href="classAbstractPropertyType.html">AbstractPropertyType</a>* other)</div><div class="line"> {</div><div class="line"> <a name="a18"></a><a class="code" href="classAbstractPropertyType.html#a0996989d0082ad3f621fec938b60ed10">AbstractPropertyType::quickCopy</a>(other);</div><div class="line"> <a class="code" href="classListPropertyType.html">ListPropertyType<T></a>* v = <span class="keyword">static_cast<</span><a class="code" href="classListPropertyType.html">ListPropertyType<T></a>*<span class="keyword">></span>(other);</div><div class="line"> <span class="keywordflow">if</span>(!v)</div><div class="line"> {</div><div class="line"> <a class="code" href="classDebugOut.html">DebugOut</a>(<a name="a19"></a><a class="code" href="classDebugOut.html#a40314aef0df2ed8a705d9372d49b0535">DebugOut::Error</a>) << <span class="stringliteral">"ListPropertyType Quick Copy failed"</span> << endl;</div><div class="line"> <span class="keywordflow">return</span>;</div><div class="line"> }</div><div class="line"> mList = v-><a name="a20"></a>list();</div><div class="line"> }</div><div class="line"></div><div class="line"> std::string toString()<span class="keyword"> const</span></div><div class="line"><span class="keyword"> </span>{</div><div class="line"> std::string str = <span class="stringliteral">"["</span>;</div><div class="line"></div><div class="line"> <span class="keywordflow">for</span>(<span class="keyword">auto</span> itr = mList.begin(); itr != mList.end(); itr++)</div><div class="line"> {</div><div class="line"> <span class="keywordflow">if</span>(str != <span class="stringliteral">"["</span>)</div><div class="line"> str += <span class="stringliteral">","</span>;</div><div class="line"></div><div class="line"> T t = *itr;</div><div class="line"></div><div class="line"> str += t.toString();</div><div class="line"> }</div><div class="line"></div><div class="line"> str += <span class="stringliteral">"]"</span>;</div><div class="line"></div><div class="line"> <span class="keywordflow">return</span> str;</div><div class="line"> }</div><div class="line"></div><div class="line"></div><div class="line"> <span class="keywordtype">void</span> fromString(std::string str )</div><div class="line"> {</div><div class="line"> clear();</div><div class="line"></div><div class="line"> <span class="keywordflow">if</span>(!str.length())</div><div class="line"> <span class="keywordflow">return</span>;</div><div class="line"></div><div class="line"> <span class="keywordflow">if</span>(str[0] == <span class="charliteral">'['</span> && str[str.length()-1] == <span class="charliteral">']'</span>)</div><div class="line"> {</div><div class="line"> str = str.substr(1,str.length() - 2);</div><div class="line"> }</div><div class="line"></div><div class="line"> std::vector<std::string> elements;</div><div class="line"></div><div class="line"> std::istringstream f(str);</div><div class="line"></div><div class="line"> std::string element;</div><div class="line"> <span class="keywordflow">while</span>(std::getline(f,element,<span class="charliteral">','</span>))</div><div class="line"> {</div><div class="line"> T foo(<span class="stringliteral">""</span>, element);</div><div class="line"> append (foo);</div><div class="line"> }</div><div class="line"> timestamp = amb::currentTime();</div><div class="line"> }</div><div class="line"></div><div class="line"></div><div class="line"> GVariant* toVariant()</div><div class="line"> {</div><div class="line"></div><div class="line"> GVariantBuilder params;</div><div class="line"> g_variant_builder_init(&params, ((<span class="keyword">const</span> GVariantType *) <span class="stringliteral">"av"</span>));</div><div class="line"></div><div class="line"> <span class="keywordflow">for</span>(<span class="keyword">auto</span> itr = mList.begin(); itr != mList.end(); itr++)</div><div class="line"> {</div><div class="line"> T t = *itr;</div><div class="line"> <span class="keyword">auto</span> var = t.toVariant();</div><div class="line"> GVariant *newvar = g_variant_new(<span class="stringliteral">"v"</span>, var);</div><div class="line"> g_variant_builder_add_value(&params, newvar);</div><div class="line"> }</div><div class="line"></div><div class="line"> GVariant* var = g_variant_builder_end(&params);</div><div class="line"> g_assert(var);</div><div class="line"> <span class="keywordflow">return</span> var;</div><div class="line"></div><div class="line"> }</div><div class="line"></div><div class="line"> <span class="keywordtype">void</span> fromVariant(GVariant* v)</div><div class="line"> {</div><div class="line"> clear();</div><div class="line"></div><div class="line"> gsize dictsize = g_variant_n_children(v);</div><div class="line"> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0;i<dictsize;i++)</div><div class="line"> {</div><div class="line"> GVariant *childvariant = g_variant_get_child_value(v,i);</div><div class="line"> GVariant *innervariant = g_variant_get_variant(childvariant);</div><div class="line"> T t;</div><div class="line"> t.fromVariant(innervariant);</div><div class="line"> appendPriv(t);</div><div class="line"> }</div><div class="line"> }</div><div class="line"></div><div class="line"> std::vector<T> list() { <span class="keywordflow">return</span> mList; }</div><div class="line"></div><div class="line"><span class="keyword">private</span>:</div><div class="line"></div><div class="line"> <span class="keywordtype">void</span> clear()</div><div class="line"> {</div><div class="line"> mList.clear();</div><div class="line"> }</div><div class="line"></div><div class="line"> <span class="keywordtype">void</span> appendPriv(T i)</div><div class="line"> {</div><div class="line"> mList.push_back(i);</div><div class="line"> }</div><div class="line"></div><div class="line"> <span class="keywordtype">bool</span> initialized;</div><div class="line"></div><div class="line"> std::vector<T> mList;</div><div class="line">};</div><div class="line"></div><div class="line"><span class="preprocessor">#endif</span></div></div><!-- fragment --> </div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.11 +</small></address> +</body> +</html> |