📁 File Manager Pro
v10.0.3 | PHP: 8.1.34
Server: Apache
2026-06-22 20:27:14
📂
/ (Root)
/
opt
/
alt
/
alt-nodejs24
/
root
/
usr
/
share
/
doc
/
alt-nodejs24-libicu-doc
📍 /opt/alt/alt-nodejs24/root/usr/share/doc/alt-nodejs24-libicu-doc
🔄 Refresh
✏️
Editing: messageformat2__data__model_8h_source.html
Read Only
<!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.14"/> <meta name="viewport" content="width=device-width, initial-scale=1"/> <title>ICU 77.1: i18n/unicode/messageformat2_data_model.h Source File</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> <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">ICU 77.1  <span id="projectnumber">77.1</span> </div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.8.14 --> <script type="text/javascript"> /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ var searchBox = new SearchBox("searchBox", "search",false,'Search'); /* @license-end */ </script> <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:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ $(function() { initMenu('',true,false,'search.php','Search'); $(document).ready(function() { init_search(); }); }); /* @license-end */</script> <div id="main-nav"></div> <!-- 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 id="nav-path" class="navpath"> <ul> <li class="navelem"><a class="el" href="dir_73bc6a9bb617ea1bc89a10aa59ce84e4.html">i18n</a></li><li class="navelem"><a class="el" href="dir_0119ce638985e8a1561a00fdb5f76ff6.html">unicode</a></li> </ul> </div> </div><!-- top --> <div class="header"> <div class="headertitle"> <div class="title">messageformat2_data_model.h</div> </div> </div><!--header--> <div class="contents"> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// © 2024 and later: Unicode, Inc. and others.</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// License & terms of use: http://www.unicode.org/copyright.html</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include "<a class="code" href="utypes_8h.html">unicode/utypes.h</a>"</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="preprocessor">#ifndef MESSAGEFORMAT_DATA_MODEL_H</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="preprocessor">#define MESSAGEFORMAT_DATA_MODEL_H</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> </div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="preprocessor">#if U_SHOW_CPLUSPLUS_API</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> </div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="preprocessor">#if !UCONFIG_NO_NORMALIZATION</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#if !UCONFIG_NO_FORMATTING</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> </div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="preprocessor">#if !UCONFIG_NO_MF2</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include "<a class="code" href="localpointer_8h.html">unicode/localpointer.h</a>"</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "unicode/messageformat2_data_model_names.h"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#ifndef U_HIDE_DEPRECATED_API</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <algorithm></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <cstddef></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <iterator></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <optional></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <variant></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> U_NAMESPACE_BEGIN</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">class </span>UVector;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">// Helpers</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">// Note: this _must_ be declared `inline` or else gcc will generate code</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// for its instantiations, which needs to be avoided because it returns</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">// a std::vector</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">template</span><<span class="keyword">typename</span> T></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">static</span> <span class="keyword">inline</span> std::vector<T> toStdVector(<span class="keyword">const</span> T* arr, int32_t len) {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  std::vector<T> result;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordflow">for</span> (int32_t i = 0; i < len; i++) {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  result.push_back(arr[i]);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  }</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#if defined(U_REAL_MSVC)</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor">#pragma warning(push)</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="comment">// Ignore warning 4251 as these templates are instantiated later in this file,</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment">// after the classes used to instantiate them have been defined.</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor">#pragma warning(disable: 4251)</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="keyword">namespace </span>message2 {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">class </span>Checker;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">class </span>MFDataModel;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">class </span>MessageFormatter;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">class </span>Parser;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">class </span>Serializer;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keyword">namespace </span>data_model {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keyword">class </span>Binding;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keyword">class </span>Literal;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">class </span>Operator;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Literal.html"> 78</a></span>  <span class="keyword">class </span><a class="code" href="utypes_8h.html#ab9d90a30137b6ec046fe59e79b09745a">U_I18N_API</a> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Literal.html">Literal</a> : <span class="keyword">public</span> <a class="code" href="classicu_1_1UObject.html">UObject</a> {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <a class="code" href="classicu_1_1UnicodeString.html">UnicodeString</a> quoted() <span class="keyword">const</span>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keyword">const</span> <a class="code" href="classicu_1_1UnicodeString.html">UnicodeString</a>& unquoted() <span class="keyword">const</span>;</div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Literal.html#a262bae71a59b0c00d0d9cdc359499ee6"> 107</a></span>  <a class="code" href="umachine_8h.html#a349ef00011f20ccd1d3b424445681aa5">UBool</a> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Literal.html#a262bae71a59b0c00d0d9cdc359499ee6">isQuoted</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> thisIsQuoted; }</div><div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Literal.html#a816692081978fc6cd5afbe53ebe990ce"> 119</a></span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Literal.html#a816692081978fc6cd5afbe53ebe990ce">Literal</a>(<a class="code" href="umachine_8h.html#a349ef00011f20ccd1d3b424445681aa5">UBool</a> q, <span class="keyword">const</span> <a class="code" href="classicu_1_1UnicodeString.html">UnicodeString</a>& s) : thisIsQuoted(q), contents(s) {}</div><div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Literal.html#aee309e55585159159e0f2cd832ac956c"> 126</a></span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Literal.html#aee309e55585159159e0f2cd832ac956c">Literal</a>(<span class="keyword">const</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Literal.html">Literal</a>& other) : thisIsQuoted(other.thisIsQuoted), contents(other.contents) {}</div><div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Literal.html#a46159be7d8f6fd452db705c6289cfab2"> 135</a></span>  <span class="keyword">friend</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Literal.html#a46159be7d8f6fd452db705c6289cfab2">swap</a>(<a class="code" href="classicu_1_1message2_1_1data__model_1_1Literal.html">Literal</a>& l1, <a class="code" href="classicu_1_1message2_1_1data__model_1_1Literal.html">Literal</a>& l2) noexcept {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keyword">using</span> std::swap;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> </div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  swap(l1.thisIsQuoted, l2.thisIsQuoted);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  swap(l1.contents, l2.contents);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  }</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Literal.html">Literal</a>& operator=(<a class="code" href="classicu_1_1message2_1_1data__model_1_1Literal.html">Literal</a>) noexcept;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Literal.html">Literal</a>() = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordtype">bool</span> operator<(<span class="keyword">const</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Literal.html">Literal</a>& other) <span class="keyword">const</span>;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keywordtype">bool</span> <a class="code" href="namespaceicu.html#a1c2f6ca43e636f38d1a3291eb851e9f0">operator==</a>(<span class="keyword">const</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Literal.html">Literal</a>& other) <span class="keyword">const</span>;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keyword">virtual</span> ~<a class="code" href="classicu_1_1message2_1_1data__model_1_1Literal.html">Literal</a>();</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="comment">/* const */</span> <span class="keywordtype">bool</span> thisIsQuoted = <span class="keyword">false</span>;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="comment">/* const */</span> <a class="code" href="classicu_1_1UnicodeString.html">UnicodeString</a> contents;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  };</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  } <span class="comment">// namespace data_model</span></div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> } <span class="comment">// namespace message2</span></div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> </div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> <span class="comment">// Export an explicit template instantiation of the LocalPointer that is used as a</span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> <span class="comment">// data member of various MFDataModel classes.</span></div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> <span class="comment">// (When building DLLs for Windows this is required.)</span></div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> <span class="comment">// (See measunit_impl.h, datefmt.h, collationiterator.h, erarules.h and others</span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> <span class="comment">// for similar examples.)</span></div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> <span class="preprocessor">#if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> <span class="keyword">template</span> <span class="keyword">class </span><a class="code" href="utypes_8h.html#ab9d90a30137b6ec046fe59e79b09745a">U_I18N_API</a> LocalPointerBase<message2::data_model::Literal>;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> <span class="keyword">template</span> <span class="keyword">class </span><a class="code" href="utypes_8h.html#ab9d90a30137b6ec046fe59e79b09745a">U_I18N_API</a> LocalArray<message2::data_model::Literal>;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> <span class="preprocessor">#if defined(U_REAL_MSVC)</span></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> <span class="preprocessor">#pragma warning(pop)</span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> </div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> U_NAMESPACE_END</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> </div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> <span class="comment">// Export an explicit template instantiation of the std::variants and std::optionals</span></div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> <span class="comment">// that are used as a data member of various MFDataModel classes.</span></div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> <span class="comment">// (When building DLLs for Windows this is required.)</span></div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> <span class="comment">// (See measunit_impl.h, datefmt.h, collationiterator.h, erarules.h and others</span></div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> <span class="comment">// for similar examples.)</span></div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> <span class="preprocessor">#if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN</span></div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> <span class="preprocessor">#if defined(U_REAL_MSVC) && defined(_MSVC_STL_VERSION)</span></div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> <span class="keyword">struct </span><a class="code" href="utypes_8h.html#ab9d90a30137b6ec046fe59e79b09745a">U_I18N_API</a> std::_Nontrivial_dummy_type;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> <span class="keyword">template</span> <span class="keyword">class </span><a class="code" href="utypes_8h.html#ab9d90a30137b6ec046fe59e79b09745a">U_I18N_API</a> std::_Variant_storage_<false, icu::UnicodeString, icu::message2::data_model::Literal>;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> <span class="keyword">template</span> <span class="keyword">class </span><a class="code" href="utypes_8h.html#ab9d90a30137b6ec046fe59e79b09745a">U_I18N_API</a> std::variant<icu::UnicodeString, icu::message2::data_model::Literal>;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span> <span class="keyword">template</span> <span class="keyword">class </span><a class="code" href="utypes_8h.html#ab9d90a30137b6ec046fe59e79b09745a">U_I18N_API</a> std::optional<std::variant<icu::UnicodeString, icu::message2::data_model::Literal>>;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> <span class="keyword">template</span> <span class="keyword">class </span><a class="code" href="utypes_8h.html#ab9d90a30137b6ec046fe59e79b09745a">U_I18N_API</a> std::optional<icu::message2::data_model::Literal>;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> </div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> U_NAMESPACE_BEGIN</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> </div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> <span class="keyword">namespace </span>message2 {</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keyword">namespace </span>data_model {</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> </div><div class="line"><a name="l00256"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Operand.html"> 256</a></span>  <span class="keyword">class </span><a class="code" href="utypes_8h.html#ab9d90a30137b6ec046fe59e79b09745a">U_I18N_API</a> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Operand.html">Operand</a> : <span class="keyword">public</span> <a class="code" href="classicu_1_1UObject.html">UObject</a> {</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <a class="code" href="umachine_8h.html#a349ef00011f20ccd1d3b424445681aa5">UBool</a> isVariable() <span class="keyword">const</span>;</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <a class="code" href="umachine_8h.html#a349ef00011f20ccd1d3b424445681aa5">UBool</a> isLiteral() <span class="keyword">const</span>;</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="keyword">virtual</span> <a class="code" href="umachine_8h.html#a349ef00011f20ccd1d3b424445681aa5">UBool</a> isNull() <span class="keyword">const</span>;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <span class="keyword">const</span> <a class="code" href="classicu_1_1UnicodeString.html">UnicodeString</a>& asVariable() <span class="keyword">const</span>;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keyword">const</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Literal.html">Literal</a>& asLiteral() <span class="keyword">const</span>;</div><div class="line"><a name="l00312"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Operand.html#ad9c5965c2ab254e8f805f4560a86f493"> 312</a></span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Operand.html#ad9c5965c2ab254e8f805f4560a86f493">Operand</a>() : contents(std::nullopt) {}</div><div class="line"><a name="l00322"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Operand.html#ac2487034fbdee4176b0becf4bafa6553"> 322</a></span>  <span class="keyword">explicit</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Operand.html#ac2487034fbdee4176b0becf4bafa6553">Operand</a>(<span class="keyword">const</span> <a class="code" href="classicu_1_1UnicodeString.html">UnicodeString</a>& v) : contents(<a class="code" href="classicu_1_1UnicodeString.html">VariableName</a>(v)) {}</div><div class="line"><a name="l00332"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Operand.html#aac4448d90520e35507b58660d627a4f8"> 332</a></span>  <span class="keyword">explicit</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Operand.html#aac4448d90520e35507b58660d627a4f8">Operand</a>(<span class="keyword">const</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Literal.html">Literal</a>& l) : contents(l) {}</div><div class="line"><a name="l00341"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Operand.html#a8355a0bdc62fa17350eb5363988d41e7"> 341</a></span>  <span class="keyword">friend</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Operand.html#a8355a0bdc62fa17350eb5363988d41e7">swap</a>(<a class="code" href="classicu_1_1message2_1_1data__model_1_1Operand.html">Operand</a>& o1, <a class="code" href="classicu_1_1message2_1_1data__model_1_1Operand.html">Operand</a>& o2) noexcept {</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="keyword">using</span> std::swap;</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  (void) o1;</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  (void) o2;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  swap(o1.contents, o2.contents);</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  }</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <span class="keyword">virtual</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Operand.html">Operand</a>& operator=(<a class="code" href="classicu_1_1message2_1_1data__model_1_1Operand.html">Operand</a>) noexcept;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Operand.html">Operand</a>(<span class="keyword">const</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Operand.html">Operand</a>&);</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <span class="keyword">virtual</span> ~<a class="code" href="classicu_1_1message2_1_1data__model_1_1Operand.html">Operand</a>();</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  std::optional<std::variant<VariableName, Literal>> contents;</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  }; <span class="comment">// class Operand</span></div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span> </div><div class="line"><a name="l00387"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Key.html"> 387</a></span>  <span class="keyword">class </span><a class="code" href="utypes_8h.html#ab9d90a30137b6ec046fe59e79b09745a">U_I18N_API</a> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Key.html">Key</a> : <span class="keyword">public</span> <a class="code" href="classicu_1_1UObject.html">UObject</a> {</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00397"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Key.html#a3e0a0fcb4775e3324e9fa47fa3a09cfa"> 397</a></span>  <a class="code" href="umachine_8h.html#a349ef00011f20ccd1d3b424445681aa5">UBool</a> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Key.html#a3e0a0fcb4775e3324e9fa47fa3a09cfa">isWildcard</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> !contents.has_value(); }</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <span class="keyword">const</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Literal.html">Literal</a>& asLiteral() <span class="keyword">const</span>;</div><div class="line"><a name="l00414"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Key.html#a2b3df131ace84d85284a2a5043829cd7"> 414</a></span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Key.html#a2b3df131ace84d85284a2a5043829cd7">Key</a>(<span class="keyword">const</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Key.html">Key</a>& other) : contents(other.contents) {}</div><div class="line"><a name="l00422"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Key.html#a610d2169401ac2ac6bab28782a4680b8"> 422</a></span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Key.html#a610d2169401ac2ac6bab28782a4680b8">Key</a>() : contents(std::nullopt) {}</div><div class="line"><a name="l00432"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Key.html#a60e110f93b433548c61f94b2638ab94e"> 432</a></span>  <span class="keyword">explicit</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Key.html#a60e110f93b433548c61f94b2638ab94e">Key</a>(<span class="keyword">const</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Literal.html">Literal</a>& lit) : contents(lit) {}</div><div class="line"><a name="l00441"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Key.html#abe22260eb719343c6a277b39dc94d053"> 441</a></span>  <span class="keyword">friend</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Key.html#abe22260eb719343c6a277b39dc94d053">swap</a>(<a class="code" href="classicu_1_1message2_1_1data__model_1_1Key.html">Key</a>& k1, <a class="code" href="classicu_1_1message2_1_1data__model_1_1Key.html">Key</a>& k2) noexcept {</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <span class="keyword">using</span> std::swap;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span> </div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  swap(k1.contents, k2.contents);</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  }</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Key.html">Key</a>& operator=(<a class="code" href="classicu_1_1message2_1_1data__model_1_1Key.html">Key</a>) noexcept;</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  <span class="keywordtype">bool</span> operator<(<span class="keyword">const</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Key.html">Key</a>& other) <span class="keyword">const</span>;</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <span class="keywordtype">bool</span> <a class="code" href="namespaceicu.html#a1c2f6ca43e636f38d1a3291eb851e9f0">operator==</a>(<span class="keyword">const</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Key.html">Key</a>& other) <span class="keyword">const</span>;</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <span class="keyword">virtual</span> ~<a class="code" href="classicu_1_1message2_1_1data__model_1_1Key.html">Key</a>();</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <span class="comment">/* const */</span> std::optional<Literal> contents;</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  }; <span class="comment">// class Key</span></div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  } <span class="comment">// namespace data_model</span></div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span> } <span class="comment">// namespace message2</span></div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span> </div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span> <span class="comment">// Export an explicit template instantiation of the LocalPointer that is used as a</span></div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span> <span class="comment">// data member of various MFDataModel classes.</span></div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span> <span class="comment">// (When building DLLs for Windows this is required.)</span></div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span> <span class="comment">// (See measunit_impl.h, datefmt.h, collationiterator.h, erarules.h and others</span></div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span> <span class="comment">// for similar examples.)</span></div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span> <span class="preprocessor">#if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN</span></div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span> <span class="keyword">template</span> <span class="keyword">class </span><a class="code" href="utypes_8h.html#ab9d90a30137b6ec046fe59e79b09745a">U_I18N_API</a> LocalPointerBase<message2::data_model::Key>;</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span> <span class="keyword">template</span> <span class="keyword">class </span><a class="code" href="utypes_8h.html#ab9d90a30137b6ec046fe59e79b09745a">U_I18N_API</a> LocalArray<message2::data_model::Key>;</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span> </div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span> <span class="keyword">namespace </span>message2 {</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  <span class="keyword">namespace </span>data_model {</div><div class="line"><a name="l00518"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1SelectorKeys.html"> 518</a></span>  <span class="keyword">class </span><a class="code" href="utypes_8h.html#ab9d90a30137b6ec046fe59e79b09745a">U_I18N_API</a> <a class="code" href="classicu_1_1message2_1_1data__model_1_1SelectorKeys.html">SelectorKeys</a> : <span class="keyword">public</span> <a class="code" href="classicu_1_1UObject.html">UObject</a> {</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00530"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1SelectorKeys.html#ae6e271c613108312f0a3fe251144b7e4"> 530</a></span>  std::vector<Key> <a class="code" href="classicu_1_1message2_1_1data__model_1_1SelectorKeys.html#ae6e271c613108312f0a3fe251144b7e4">getKeys</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  <span class="keywordflow">return</span> toStdVector<Key>(keys.getAlias(), len);</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  }</div><div class="line"><a name="l00542"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1SelectorKeys_1_1Builder.html"> 542</a></span>  <span class="keyword">class </span><a class="code" href="utypes_8h.html#ab9d90a30137b6ec046fe59e79b09745a">U_I18N_API</a> <a class="code" href="classicu_1_1message2_1_1data__model_1_1SelectorKeys_1_1Builder.html">Builder</a> : <span class="keyword">public</span> <a class="code" href="classicu_1_1UMemory.html">UMemory</a> {</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classicu_1_1message2_1_1data__model_1_1SelectorKeys.html">SelectorKeys</a>;</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  UVector* keys; <span class="comment">// This is a raw pointer and not a LocalPointer<UVector> to avoid undefined behavior warnings,</span></div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  <span class="comment">// since UVector is forward-declared</span></div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  <span class="comment">// The vector owns its elements</span></div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1SelectorKeys_1_1Builder.html">Builder</a>& add(<a class="code" href="classicu_1_1message2_1_1data__model_1_1Key.html">Key</a>&& key, <a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a>& status) noexcept;</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1SelectorKeys.html">SelectorKeys</a> build(<a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a>& status) <span class="keyword">const</span>;</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1SelectorKeys_1_1Builder.html">Builder</a>(<a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a>& status);</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  <span class="keyword">virtual</span> ~<a class="code" href="classicu_1_1message2_1_1data__model_1_1SelectorKeys_1_1Builder.html">Builder</a>();</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1SelectorKeys_1_1Builder.html">Builder</a>(<span class="keyword">const</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1SelectorKeys_1_1Builder.html">Builder</a>&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1SelectorKeys_1_1Builder.html">Builder</a>& operator=(<span class="keyword">const</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1SelectorKeys_1_1Builder.html">Builder</a>&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1SelectorKeys_1_1Builder.html">Builder</a>(<a class="code" href="classicu_1_1message2_1_1data__model_1_1SelectorKeys_1_1Builder.html">Builder</a>&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1SelectorKeys_1_1Builder.html">Builder</a>& operator=(<a class="code" href="classicu_1_1message2_1_1data__model_1_1SelectorKeys_1_1Builder.html">Builder</a>&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  }; <span class="comment">// class SelectorKeys::Builder</span></div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span> <span class="comment"></span> <span class="keywordtype">bool</span> operator<(<span class="keyword">const</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1SelectorKeys.html">SelectorKeys</a>& other) <span class="keyword">const</span>;</div><div class="line"><a name="l00617"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1SelectorKeys.html#acd9fe54c48969f73a9ebde2afccf3cbc"> 617</a></span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1SelectorKeys.html#acd9fe54c48969f73a9ebde2afccf3cbc">SelectorKeys</a>() : len(0) {}</div><div class="line"><a name="l00626"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1SelectorKeys.html#a366610831bc6059d72ecaca4e9f13ab3"> 626</a></span>  <span class="keyword">friend</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1SelectorKeys.html#a366610831bc6059d72ecaca4e9f13ab3">swap</a>(<a class="code" href="classicu_1_1message2_1_1data__model_1_1SelectorKeys.html">SelectorKeys</a>& s1, <a class="code" href="classicu_1_1message2_1_1data__model_1_1SelectorKeys.html">SelectorKeys</a>& s2) noexcept {</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  <span class="keyword">using</span> std::swap;</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span> </div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  swap(s1.len, s2.len);</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  swap(s1.keys, s2.keys);</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  }</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1SelectorKeys.html">SelectorKeys</a>(<span class="keyword">const</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1SelectorKeys.html">SelectorKeys</a>& other);</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1SelectorKeys.html">SelectorKeys</a>& operator=(<a class="code" href="classicu_1_1message2_1_1data__model_1_1SelectorKeys.html">SelectorKeys</a> other) noexcept;</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  <span class="keyword">virtual</span> ~<a class="code" href="classicu_1_1message2_1_1data__model_1_1SelectorKeys.html">SelectorKeys</a>();</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>  <span class="keyword">friend</span> <span class="keyword">class </span>Builder;</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  <span class="keyword">friend</span> <span class="keyword">class </span>message2::Checker;</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classicu_1_1message2_1_1MessageFormatter.html">message2::MessageFormatter</a>;</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>  <span class="keyword">friend</span> <span class="keyword">class </span>message2::Serializer;</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span> </div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  <span class="comment">/* const */</span> <a class="code" href="classicu_1_1LocalArray.html">LocalArray<Key></a> keys;</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  <span class="comment">/* const */</span> int32_t len;</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span> </div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  <span class="keyword">const</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Key.html">Key</a>* getKeysInternal() <span class="keyword">const</span>;</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1SelectorKeys.html">SelectorKeys</a>(<span class="keyword">const</span> UVector& ks, <a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a>& status);</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  }; <span class="comment">// class SelectorKeys</span></div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span> </div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span> </div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  } <span class="comment">// namespace data_model</span></div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span> </div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span> </div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  <span class="keyword">namespace </span>data_model {</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  <span class="keyword">class </span>Operator;</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span> </div><div class="line"><a name="l00681"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Option.html"> 681</a></span>  <span class="keyword">class </span><a class="code" href="utypes_8h.html#ab9d90a30137b6ec046fe59e79b09745a">U_I18N_API</a> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Option.html">Option</a> : <span class="keyword">public</span> <a class="code" href="classicu_1_1UObject.html">UObject</a> {</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00691"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Option.html#a7bce26188af97ec43284381c81806e57"> 691</a></span>  <span class="keyword">const</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Operand.html">Operand</a>& <a class="code" href="classicu_1_1message2_1_1data__model_1_1Option.html#a7bce26188af97ec43284381c81806e57">getValue</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> rand; }</div><div class="line"><a name="l00700"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Option.html#a0413eb5548c43f05fda7b36b79b59fff"> 700</a></span>  <span class="keyword">const</span> <a class="code" href="classicu_1_1UnicodeString.html">UnicodeString</a>& <a class="code" href="classicu_1_1message2_1_1data__model_1_1Option.html#a0413eb5548c43f05fda7b36b79b59fff">getName</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> name; }</div><div class="line"><a name="l00711"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Option.html#ac7c38011ccfc8ffe41c2e3b6062f4201"> 711</a></span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Option.html#ac7c38011ccfc8ffe41c2e3b6062f4201">Option</a>(<span class="keyword">const</span> <a class="code" href="classicu_1_1UnicodeString.html">UnicodeString</a>& n, <a class="code" href="classicu_1_1message2_1_1data__model_1_1Operand.html">Operand</a>&& r) : name(n), rand(std::move(r)) {}</div><div class="line"><a name="l00719"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Option.html#abaff252971ddf9c65356b2d9967fe3cb"> 719</a></span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Option.html#abaff252971ddf9c65356b2d9967fe3cb">Option</a>() {}</div><div class="line"><a name="l00728"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Option.html#afe65b6a21ba45b36aa88e57b0494a03c"> 728</a></span>  <span class="keyword">friend</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Option.html#afe65b6a21ba45b36aa88e57b0494a03c">swap</a>(<a class="code" href="classicu_1_1message2_1_1data__model_1_1Option.html">Option</a>& o1, <a class="code" href="classicu_1_1message2_1_1data__model_1_1Option.html">Option</a>& o2) noexcept {</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>  <span class="keyword">using</span> std::swap;</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span> </div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>  swap(o1.name, o2.name);</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>  swap(o1.rand, o2.rand);</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>  }</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Option.html">Option</a>(<span class="keyword">const</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Option.html">Option</a>& other);</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Option.html">Option</a>& operator=(<a class="code" href="classicu_1_1message2_1_1data__model_1_1Option.html">Option</a> other) noexcept;</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>  <span class="keyword">virtual</span> ~<a class="code" href="classicu_1_1message2_1_1data__model_1_1Option.html">Option</a>();</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>  <span class="comment">/* const */</span> <a class="code" href="classicu_1_1UnicodeString.html">UnicodeString</a> name;</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  <span class="comment">/* const */</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Operand.html">Operand</a> rand;</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>  }; <span class="comment">// class Option</span></div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>  } <span class="comment">// namespace data_model</span></div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span> } <span class="comment">// namespace message2</span></div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span> </div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span> <span class="comment">// Export an explicit template instantiation of the LocalPointer that is used as a</span></div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span> <span class="comment">// data member of various MFDataModel classes.</span></div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span> <span class="comment">// (When building DLLs for Windows this is required.)</span></div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span> <span class="comment">// (See measunit_impl.h, datefmt.h, collationiterator.h, erarules.h and others</span></div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span> <span class="comment">// for similar examples.)</span></div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span> <span class="preprocessor">#if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN</span></div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span> <span class="keyword">template</span> <span class="keyword">class </span><a class="code" href="utypes_8h.html#ab9d90a30137b6ec046fe59e79b09745a">U_I18N_API</a> LocalPointerBase<message2::data_model::Option>;</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span> <span class="keyword">template</span> <span class="keyword">class </span><a class="code" href="utypes_8h.html#ab9d90a30137b6ec046fe59e79b09745a">U_I18N_API</a> LocalArray<message2::data_model::Option>;</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span> </div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span> <span class="keyword">namespace </span>message2 {</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>  <span class="keyword">namespace </span>data_model {</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>  <span class="comment">// Internal only</span></div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span> <span class="preprocessor"> #ifndef U_IN_DOXYGEN</span></div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>  <span class="comment">// Options</span></div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  <span class="comment">// This is a wrapper class around a vector of options that provides lookup operations</span></div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  <span class="keyword">class </span><a class="code" href="utypes_8h.html#ab9d90a30137b6ec046fe59e79b09745a">U_I18N_API</a> OptionMap : <span class="keyword">public</span> UObject {</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>  int32_t size() <span class="keyword">const</span>;</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  <span class="comment">// Needs to take an error code b/c an earlier copy might have failed</span></div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>  <span class="keyword">const</span> Option& getOption(int32_t, <a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a>&) <span class="keyword">const</span>;</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>  <span class="keyword">friend</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> swap(OptionMap& m1, OptionMap& m2) noexcept {</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  <span class="keyword">using</span> std::swap;</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span> </div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>  swap(m1.bogus, m2.bogus);</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  swap(m1.options, m2.options);</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  swap(m1.len, m2.len);</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  }</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  OptionMap() : len(0) {}</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  OptionMap(<span class="keyword">const</span> OptionMap&);</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  OptionMap& operator=(OptionMap);</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  std::vector<Option> getOptions()<span class="keyword"> const </span>{</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  <span class="keywordflow">return</span> toStdVector<Option>(options.getAlias(), len);</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  }</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  OptionMap(<span class="keyword">const</span> UVector&, <a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a>&);</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  OptionMap(Option*, int32_t);</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>  <span class="keyword">virtual</span> ~OptionMap();</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span> </div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>  <span class="keyword">class </span><a class="code" href="utypes_8h.html#ab9d90a30137b6ec046fe59e79b09745a">U_I18N_API</a> Builder : <span class="keyword">public</span> UObject {</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>  UVector* options;</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>  <span class="keywordtype">bool</span> checkDuplicates = <span class="keyword">true</span>;</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  Builder& add(Option&& opt, <a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a>&);</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>  Builder(<a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a>&);</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  <span class="keyword">static</span> Builder attributes(<a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a>&);</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  <span class="comment">// As this class is private, build() is destructive</span></div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>  OptionMap build(<a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a>&);</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  <span class="keyword">friend</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> swap(Builder& m1, Builder& m2) noexcept {</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  <span class="keyword">using</span> std::swap;</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span> </div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>  swap(m1.options, m2.options);</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>  swap(m1.checkDuplicates, m2.checkDuplicates);</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>  }</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>  Builder(Builder&&);</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>  Builder(<span class="keyword">const</span> Builder&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  Builder& operator=(Builder) noexcept;</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  <span class="keyword">virtual</span> ~Builder();</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>  }; <span class="comment">// class OptionMap::Builder</span></div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  <span class="keyword">friend</span> <span class="keyword">class </span>message2::Serializer;</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span> </div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  <span class="keywordtype">bool</span> bogus = <span class="keyword">false</span>;</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>  LocalArray<Option> options;</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>  int32_t len;</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>  }; <span class="comment">// class OptionMap</span></div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span> <span class="preprocessor"> #endif</span></div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span> </div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  } <span class="comment">// namespace data_model</span></div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span> } <span class="comment">// namespace message2</span></div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span> </div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span> U_NAMESPACE_END</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span> </div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span> U_NAMESPACE_BEGIN</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span> </div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span> <span class="keyword">namespace </span>message2 {</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  <span class="keyword">namespace </span>data_model {</div><div class="line"><a name="l00854"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Operator.html"> 854</a></span>  <span class="keyword">class </span><a class="code" href="utypes_8h.html#ab9d90a30137b6ec046fe59e79b09745a">U_I18N_API</a> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Operator.html">Operator</a> : <span class="keyword">public</span> <a class="code" href="classicu_1_1UObject.html">UObject</a> {</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>  <span class="keyword">const</span> <a class="code" href="classicu_1_1UnicodeString.html">FunctionName</a>& getFunctionName() <span class="keyword">const</span>;</div><div class="line"><a name="l00873"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Operator.html#a8ca86951633a9bf8e215f95e49a646f2"> 873</a></span>  std::vector<Option> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Operator.html#a8ca86951633a9bf8e215f95e49a646f2">getOptions</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>  <span class="keywordflow">return</span> options.getOptions();</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>  }</div><div class="line"><a name="l00885"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Operator_1_1Builder.html"> 885</a></span>  <span class="keyword">class </span><a class="code" href="utypes_8h.html#ab9d90a30137b6ec046fe59e79b09745a">U_I18N_API</a> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Operator_1_1Builder.html">Builder</a> : <span class="keyword">public</span> <a class="code" href="classicu_1_1UMemory.html">UMemory</a> {</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classicu_1_1message2_1_1data__model_1_1Operator.html">Operator</a>;</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>  <a class="code" href="classicu_1_1UnicodeString.html">FunctionName</a> functionName;</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>  OptionMap::Builder options;</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Operator_1_1Builder.html">Builder</a>& setFunctionName(<a class="code" href="classicu_1_1UnicodeString.html">FunctionName</a>&& func);</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Operator_1_1Builder.html">Builder</a>& addOption(<span class="keyword">const</span> <a class="code" href="classicu_1_1UnicodeString.html">UnicodeString</a> &key, <a class="code" href="classicu_1_1message2_1_1data__model_1_1Operand.html">Operand</a>&& value, <a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a>& status) noexcept;</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Operator.html">Operator</a> build(<a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a>& status);</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Operator_1_1Builder.html">Builder</a>(<a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a>& status);</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>  <span class="keyword">virtual</span> ~<a class="code" href="classicu_1_1message2_1_1data__model_1_1Operator_1_1Builder.html">Builder</a>();</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Operator_1_1Builder.html">Builder</a>(<span class="keyword">const</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Operator_1_1Builder.html">Builder</a>&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Operator_1_1Builder.html">Builder</a>& operator=(<span class="keyword">const</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Operator_1_1Builder.html">Builder</a>&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Operator_1_1Builder.html">Builder</a>(<a class="code" href="classicu_1_1message2_1_1data__model_1_1Operator_1_1Builder.html">Builder</a>&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Operator_1_1Builder.html">Builder</a>& operator=(<a class="code" href="classicu_1_1message2_1_1data__model_1_1Operator_1_1Builder.html">Builder</a>&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>  }; <span class="comment">// class Operator::Builder</span></div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span> <span class="comment"></span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Operator.html">Operator</a>(<span class="keyword">const</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Operator.html">Operator</a>& other) noexcept;</div><div class="line"><a name="l00968"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Operator.html#a45f6b0d1656f7ec3e316a0f1c4148498"> 968</a></span>  <span class="keyword">friend</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Operator.html#a45f6b0d1656f7ec3e316a0f1c4148498">swap</a>(<a class="code" href="classicu_1_1message2_1_1data__model_1_1Operator.html">Operator</a>& o1, <a class="code" href="classicu_1_1message2_1_1data__model_1_1Operator.html">Operator</a>& o2) noexcept {</div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>  <span class="keyword">using</span> std::swap;</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span> </div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>  swap(o1.name, o2.name);</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>  swap(o1.options, o2.options);</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>  }</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Operator.html">Operator</a>& operator=(<a class="code" href="classicu_1_1message2_1_1data__model_1_1Operator.html">Operator</a>) noexcept;</div><div class="line"><a name="l00988"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Operator.html#a36423113545ee28a22ba9d7b1b02484d"> 988</a></span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Operator.html#a36423113545ee28a22ba9d7b1b02484d">Operator</a>() {}</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>  <span class="keyword">virtual</span> ~<a class="code" href="classicu_1_1message2_1_1data__model_1_1Operator.html">Operator</a>();</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classicu_1_1message2_1_1data__model_1_1Binding.html">Binding</a>;</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>  <span class="keyword">friend</span> <span class="keyword">class </span>Builder;</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>  <span class="keyword">friend</span> <span class="keyword">class </span>message2::Checker;</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classicu_1_1message2_1_1MessageFormatter.html">message2::MessageFormatter</a>;</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>  <span class="keyword">friend</span> <span class="keyword">class </span>message2::Serializer;</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span> </div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>  <span class="comment">// Function call constructor</span></div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Operator.html">Operator</a>(<span class="keyword">const</span> <a class="code" href="classicu_1_1UnicodeString.html">FunctionName</a>& f, <span class="keyword">const</span> UVector& options, <a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a>&);</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span> </div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>  <span class="keyword">const</span> OptionMap& getOptionsInternal() <span class="keyword">const</span>;</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Operator.html">Operator</a>(<span class="keyword">const</span> <a class="code" href="classicu_1_1UnicodeString.html">FunctionName</a>&, <span class="keyword">const</span> OptionMap&);</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span> </div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>  <span class="comment">/* const */</span> <a class="code" href="classicu_1_1UnicodeString.html">FunctionName</a> name;</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>  <span class="comment">/* const */</span> OptionMap options;</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>  }; <span class="comment">// class Operator</span></div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>  } <span class="comment">// namespace data_model</span></div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span> } <span class="comment">// namespace message2</span></div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span> </div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span> U_NAMESPACE_END</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span> </div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span> <span class="comment">// Export an explicit template instantiation of the std::optional that is used as a</span></div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span> <span class="comment">// data member of various MFDataModel classes.</span></div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span> <span class="comment">// (When building DLLs for Windows this is required.)</span></div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span> <span class="comment">// (See measunit_impl.h, datefmt.h, collationiterator.h, erarules.h and others</span></div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span> <span class="comment">// for similar examples.)</span></div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span> <span class="preprocessor">#if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN</span></div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span> <span class="keyword">template</span> <span class="keyword">class </span><a class="code" href="utypes_8h.html#ab9d90a30137b6ec046fe59e79b09745a">U_I18N_API</a> std::optional<icu::message2::data_model::Operator>;</div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span> </div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span> U_NAMESPACE_BEGIN</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span> </div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span> <span class="keyword">namespace </span>message2 {</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>  <span class="keyword">namespace </span>data_model {</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>  <span class="comment">// Internal only</span></div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>  <span class="keyword">typedef</span> <span class="keyword">enum</span> UMarkupType {</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>  UMARKUP_OPEN = 0,</div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>  UMARKUP_CLOSE,</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>  UMARKUP_STANDALONE,</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>  UMARKUP_COUNT</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>  } UMarkupType;</div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span> </div><div class="line"><a name="l01050"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Markup.html"> 1050</a></span>  <span class="keyword">class </span><a class="code" href="utypes_8h.html#ab9d90a30137b6ec046fe59e79b09745a">U_I18N_API</a> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Markup.html">Markup</a> : <span class="keyword">public</span> <a class="code" href="classicu_1_1UObject.html">UObject</a> {</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l01060"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Markup.html#a48aa7fe4ee59b527cdfec8e16e824954"> 1060</a></span>  <a class="code" href="umachine_8h.html#a349ef00011f20ccd1d3b424445681aa5">UBool</a> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Markup.html#a48aa7fe4ee59b527cdfec8e16e824954">isOpen</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (type == UMARKUP_OPEN); }</div><div class="line"><a name="l01069"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Markup.html#a844faa00dacbd7794f1ef338fdf4602f"> 1069</a></span>  <a class="code" href="umachine_8h.html#a349ef00011f20ccd1d3b424445681aa5">UBool</a> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Markup.html#a844faa00dacbd7794f1ef338fdf4602f">isClose</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (type == UMARKUP_CLOSE); }</div><div class="line"><a name="l01078"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Markup.html#aff6ed17d6e786d9c64967e396e99a4e6"> 1078</a></span>  <a class="code" href="umachine_8h.html#a349ef00011f20ccd1d3b424445681aa5">UBool</a> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Markup.html#aff6ed17d6e786d9c64967e396e99a4e6">isStandalone</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (type == UMARKUP_STANDALONE); }</div><div class="line"><a name="l01087"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Markup.html#ae5991663d3382e75f495e07e4f2f7fc8"> 1087</a></span>  <span class="keyword">const</span> <a class="code" href="classicu_1_1UnicodeString.html">UnicodeString</a>& <a class="code" href="classicu_1_1message2_1_1data__model_1_1Markup.html#ae5991663d3382e75f495e07e4f2f7fc8">getName</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> name; }</div><div class="line"><a name="l01096"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Markup.html#ad7bc75813f5fcc0cb417a39be46ecdb0"> 1096</a></span>  std::vector<Option> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Markup.html#ad7bc75813f5fcc0cb417a39be46ecdb0">getOptions</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> options.getOptions(); }</div><div class="line"><a name="l01105"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Markup.html#a382ac6ff9481305fb0b2ec3d638917d6"> 1105</a></span>  std::vector<Option> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Markup.html#a382ac6ff9481305fb0b2ec3d638917d6">getAttributes</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> attributes.getOptions(); }</div><div class="line"><a name="l01113"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Markup.html#a28b9db0d4de24e7de5aac969a2817976"> 1113</a></span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Markup.html#a28b9db0d4de24e7de5aac969a2817976">Markup</a>() {}</div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>  <span class="keyword">virtual</span> ~<a class="code" href="classicu_1_1message2_1_1data__model_1_1Markup.html">Markup</a>();</div><div class="line"><a name="l01130"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Markup_1_1Builder.html"> 1130</a></span>  <span class="keyword">class </span><a class="code" href="utypes_8h.html#ab9d90a30137b6ec046fe59e79b09745a">U_I18N_API</a> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Markup_1_1Builder.html">Builder</a> : <span class="keyword">public</span> <a class="code" href="classicu_1_1UMemory.html">UMemory</a> {</div><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classicu_1_1message2_1_1data__model_1_1Markup.html">Markup</a>;</div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span> </div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>  <a class="code" href="classicu_1_1UnicodeString.html">UnicodeString</a> name;</div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>  OptionMap::Builder options;</div><div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>  OptionMap::Builder attributes;</div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>  UMarkupType type = UMARKUP_COUNT;</div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l01148"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Markup_1_1Builder.html#a02cfc98cc696175d8ff9778138108fbb"> 1148</a></span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Markup_1_1Builder.html">Builder</a>& <a class="code" href="classicu_1_1message2_1_1data__model_1_1Markup_1_1Builder.html#a02cfc98cc696175d8ff9778138108fbb">setName</a>(<span class="keyword">const</span> <a class="code" href="classicu_1_1UnicodeString.html">UnicodeString</a>& n) { name = n; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div><div class="line"><a name="l01157"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Markup_1_1Builder.html#a3c8e7f3581112981c741bbd18bf28561"> 1157</a></span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Markup_1_1Builder.html">Builder</a>& <a class="code" href="classicu_1_1message2_1_1data__model_1_1Markup_1_1Builder.html#a3c8e7f3581112981c741bbd18bf28561">setOpen</a>() { type = UMARKUP_OPEN; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div><div class="line"><a name="l01166"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Markup_1_1Builder.html#a9fe99a490f023193e1cce8c202f2c57a"> 1166</a></span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Markup_1_1Builder.html">Builder</a>& <a class="code" href="classicu_1_1message2_1_1data__model_1_1Markup_1_1Builder.html#a9fe99a490f023193e1cce8c202f2c57a">setClose</a>() { type = UMARKUP_CLOSE; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div><div class="line"><a name="l01175"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Markup_1_1Builder.html#a0d26135bd405d4866528e6c4c9a930a3"> 1175</a></span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Markup_1_1Builder.html">Builder</a>& <a class="code" href="classicu_1_1message2_1_1data__model_1_1Markup_1_1Builder.html#a0d26135bd405d4866528e6c4c9a930a3">setStandalone</a>() { type = UMARKUP_STANDALONE; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Markup_1_1Builder.html">Builder</a>& addOption(<span class="keyword">const</span> <a class="code" href="classicu_1_1UnicodeString.html">UnicodeString</a> &key, <a class="code" href="classicu_1_1message2_1_1data__model_1_1Operand.html">Operand</a>&& value, <a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a>& status);</div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Markup_1_1Builder.html">Builder</a>& addAttribute(<span class="keyword">const</span> <a class="code" href="classicu_1_1UnicodeString.html">UnicodeString</a> &key, <a class="code" href="classicu_1_1message2_1_1data__model_1_1Operand.html">Operand</a>&& value, <a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a>& status);</div><div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Markup.html">Markup</a> build(<a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a>& status);</div><div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Markup_1_1Builder.html">Builder</a>(<a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a>& status);</div><div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>  <span class="keyword">virtual</span> ~<a class="code" href="classicu_1_1message2_1_1data__model_1_1Markup_1_1Builder.html">Builder</a>();</div><div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Markup_1_1Builder.html">Builder</a>(<span class="keyword">const</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Markup_1_1Builder.html">Builder</a>&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Markup_1_1Builder.html">Builder</a>& operator=(<span class="keyword">const</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Markup_1_1Builder.html">Builder</a>&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Markup_1_1Builder.html">Builder</a>(<a class="code" href="classicu_1_1message2_1_1data__model_1_1Markup_1_1Builder.html">Builder</a>&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Markup_1_1Builder.html">Builder</a>& operator=(<a class="code" href="classicu_1_1message2_1_1data__model_1_1Markup_1_1Builder.html">Builder</a>&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>  }; <span class="comment">// class Markup::Builder</span></div><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span> </div><div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>  <span class="keyword">friend</span> <span class="keyword">class </span>Builder;</div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>  <span class="keyword">friend</span> <span class="keyword">class </span>message2::Serializer;</div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span> </div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>  UMarkupType type;</div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>  <a class="code" href="classicu_1_1UnicodeString.html">UnicodeString</a> name;</div><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>  OptionMap options;</div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>  OptionMap attributes;</div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>  <span class="keyword">const</span> OptionMap& getOptionsInternal()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> options; }</div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>  <span class="keyword">const</span> OptionMap& getAttributesInternal()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> attributes; }</div><div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>  Markup(UMarkupType, <a class="code" href="classicu_1_1UnicodeString.html">UnicodeString</a>, OptionMap&&, OptionMap&&);</div><div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>  }; <span class="comment">// class Markup</span></div><div class="line"><a name="l01253"></a><span class="lineno"> 1253</span> </div><div class="line"><a name="l01267"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Expression.html"> 1267</a></span>  <span class="keyword">class </span><a class="code" href="utypes_8h.html#ab9d90a30137b6ec046fe59e79b09745a">U_I18N_API</a> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Expression.html">Expression</a> : <span class="keyword">public</span> <a class="code" href="classicu_1_1UObject.html">UObject</a> {</div><div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>  <a class="code" href="umachine_8h.html#a349ef00011f20ccd1d3b424445681aa5">UBool</a> isStandaloneAnnotation() <span class="keyword">const</span>;</div><div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>  <a class="code" href="umachine_8h.html#a349ef00011f20ccd1d3b424445681aa5">UBool</a> isFunctionCall() <span class="keyword">const</span>;</div><div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>  <span class="keyword">const</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Operator.html">Operator</a>* getOperator(<a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a>& status) <span class="keyword">const</span>;</div><div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>  <span class="keyword">const</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Operand.html">Operand</a>& getOperand() <span class="keyword">const</span>;</div><div class="line"><a name="l01323"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Expression.html#a88eb7ba31fb58c1a4a04651c581e053a"> 1323</a></span>  std::vector<Option> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Expression.html#a88eb7ba31fb58c1a4a04651c581e053a">getAttributes</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> attributes.getOptions(); }</div><div class="line"><a name="l01333"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Expression_1_1Builder.html"> 1333</a></span>  <span class="keyword">class </span><a class="code" href="utypes_8h.html#ab9d90a30137b6ec046fe59e79b09745a">U_I18N_API</a> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Expression_1_1Builder.html">Builder</a> : <span class="keyword">public</span> <a class="code" href="classicu_1_1UMemory.html">UMemory</a> {</div><div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classicu_1_1message2_1_1data__model_1_1Expression.html">Expression</a>;</div><div class="line"><a name="l01336"></a><span class="lineno"> 1336</span> </div><div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>  <span class="keywordtype">bool</span> hasOperand = <span class="keyword">false</span>;</div><div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>  <span class="keywordtype">bool</span> hasOperator = <span class="keyword">false</span>;</div><div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Operand.html">Operand</a> rand;</div><div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Operator.html">Operator</a> rator;</div><div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>  OptionMap::Builder attributes;</div><div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Expression_1_1Builder.html">Builder</a>& setOperand(<a class="code" href="classicu_1_1message2_1_1data__model_1_1Operand.html">Operand</a>&& rAnd);</div><div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Expression_1_1Builder.html">Builder</a>& setOperator(<a class="code" href="classicu_1_1message2_1_1data__model_1_1Operator.html">Operator</a>&& rAtor);</div><div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Expression_1_1Builder.html">Builder</a>& addAttribute(<span class="keyword">const</span> <a class="code" href="classicu_1_1UnicodeString.html">UnicodeString</a> &key, <a class="code" href="classicu_1_1message2_1_1data__model_1_1Operand.html">Operand</a>&& value, <a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a>& status);</div><div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Expression.html">Expression</a> build(<a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a>& status);</div><div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Expression_1_1Builder.html">Builder</a>(<a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a>& status);</div><div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>  <span class="keyword">virtual</span> ~<a class="code" href="classicu_1_1message2_1_1data__model_1_1Expression_1_1Builder.html">Builder</a>();</div><div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Expression_1_1Builder.html">Builder</a>(<span class="keyword">const</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Expression_1_1Builder.html">Builder</a>&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Expression_1_1Builder.html">Builder</a>& operator=(<span class="keyword">const</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Expression_1_1Builder.html">Builder</a>&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Expression_1_1Builder.html">Builder</a>(<a class="code" href="classicu_1_1message2_1_1data__model_1_1Expression_1_1Builder.html">Builder</a>&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Expression_1_1Builder.html">Builder</a>& operator=(<a class="code" href="classicu_1_1message2_1_1data__model_1_1Expression_1_1Builder.html">Builder</a>&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>  }; <span class="comment">// class Expression::Builder</span></div><div class="line"><a name="l01423"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Expression.html#ae063e5c63f2a8a5d0950b9ef9c7fa913"> 1423</a></span> <span class="comment"></span> <span class="keyword">friend</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Expression.html#ae063e5c63f2a8a5d0950b9ef9c7fa913">swap</a>(<a class="code" href="classicu_1_1message2_1_1data__model_1_1Expression.html">Expression</a>& e1, <a class="code" href="classicu_1_1message2_1_1data__model_1_1Expression.html">Expression</a>& e2) noexcept {</div><div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>  <span class="keyword">using</span> std::swap;</div><div class="line"><a name="l01425"></a><span class="lineno"> 1425</span> </div><div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>  swap(e1.rator, e2.rator);</div><div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>  swap(e1.rand, e2.rand);</div><div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>  swap(e1.attributes, e2.attributes);</div><div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>  }</div><div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Expression.html">Expression</a>(<span class="keyword">const</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Expression.html">Expression</a>& other);</div><div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Expression.html">Expression</a>& operator=(<a class="code" href="classicu_1_1message2_1_1data__model_1_1Expression.html">Expression</a>) noexcept;</div><div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Expression.html">Expression</a>();</div><div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>  <span class="keyword">virtual</span> ~<a class="code" href="classicu_1_1message2_1_1data__model_1_1Expression.html">Expression</a>();</div><div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>  <span class="keyword">friend</span> <span class="keyword">class </span>message2::Serializer;</div><div class="line"><a name="l01461"></a><span class="lineno"> 1461</span> </div><div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>  <span class="comment">/*</span></div><div class="line"><a name="l01463"></a><span class="lineno"> 1463</span> <span class="comment"> Internally, an expression is represented as the application of an optional operator to an operand.</span></div><div class="line"><a name="l01464"></a><span class="lineno"> 1464</span> <span class="comment"> The operand is always present; for function calls with no operand, it's represented</span></div><div class="line"><a name="l01465"></a><span class="lineno"> 1465</span> <span class="comment"> as an operand for which `isNull()` is true.</span></div><div class="line"><a name="l01466"></a><span class="lineno"> 1466</span> <span class="comment"></span></div><div class="line"><a name="l01467"></a><span class="lineno"> 1467</span> <span class="comment"> Operator | Operand</span></div><div class="line"><a name="l01468"></a><span class="lineno"> 1468</span> <span class="comment"> --------------------------------</span></div><div class="line"><a name="l01469"></a><span class="lineno"> 1469</span> <span class="comment"> { |42| :fun opt=value } => (FunctionName=fun, | Literal(quoted=true, contents="42")</span></div><div class="line"><a name="l01470"></a><span class="lineno"> 1470</span> <span class="comment"> options={opt: value})</span></div><div class="line"><a name="l01471"></a><span class="lineno"> 1471</span> <span class="comment"> { abcd } => null | Literal(quoted=false, contents="abcd")</span></div><div class="line"><a name="l01472"></a><span class="lineno"> 1472</span> <span class="comment"> { : fun opt=value } => (FunctionName=fun,</span></div><div class="line"><a name="l01473"></a><span class="lineno"> 1473</span> <span class="comment"> options={opt: value}) | NullOperand()</span></div><div class="line"><a name="l01474"></a><span class="lineno"> 1474</span> <span class="comment"> */</span></div><div class="line"><a name="l01475"></a><span class="lineno"> 1475</span> </div><div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Expression.html">Expression</a>(<span class="keyword">const</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Operator.html">Operator</a> &rAtor, <span class="keyword">const</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Operand.html">Operand</a> &rAnd, <span class="keyword">const</span> OptionMap& attrs) : rator(rAtor), rand(rAnd), attributes(attrs) {}</div><div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Expression.html">Expression</a>(<span class="keyword">const</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Operand.html">Operand</a> &rAnd, <span class="keyword">const</span> OptionMap& attrs) : rator(std::nullopt), rand(<a class="code" href="classicu_1_1message2_1_1data__model_1_1Operand.html">Operand</a>(rAnd)), attributes(attrs) {}</div><div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>  Expression(<span class="keyword">const</span> Operator &rAtor, <span class="keyword">const</span> OptionMap& attrs) : rator(rAtor), rand(), attributes(attrs) {}</div><div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>  <span class="comment">/* const */</span> std::optional<Operator> rator;</div><div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>  <span class="comment">/* const */</span> Operand rand;</div><div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>  <span class="comment">/* const */</span> OptionMap attributes;</div><div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>  <span class="keyword">const</span> OptionMap& getAttributesInternal()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> attributes; }</div><div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>  }; <span class="comment">// class Expression</span></div><div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>  } <span class="comment">// namespace data_model</span></div><div class="line"><a name="l01485"></a><span class="lineno"> 1485</span> } <span class="comment">// namespace message2</span></div><div class="line"><a name="l01486"></a><span class="lineno"> 1486</span> </div><div class="line"><a name="l01488"></a><span class="lineno"> 1488</span> <span class="comment">// Export an explicit template instantiation of the LocalPointer that is used as a</span></div><div class="line"><a name="l01489"></a><span class="lineno"> 1489</span> <span class="comment">// data member of various MFDataModel classes.</span></div><div class="line"><a name="l01490"></a><span class="lineno"> 1490</span> <span class="comment">// (When building DLLs for Windows this is required.)</span></div><div class="line"><a name="l01491"></a><span class="lineno"> 1491</span> <span class="comment">// (See measunit_impl.h, datefmt.h, collationiterator.h, erarules.h and others</span></div><div class="line"><a name="l01492"></a><span class="lineno"> 1492</span> <span class="comment">// for similar examples.)</span></div><div class="line"><a name="l01493"></a><span class="lineno"> 1493</span> <span class="preprocessor">#if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN</span></div><div class="line"><a name="l01494"></a><span class="lineno"> 1494</span> <span class="keyword">template</span> <span class="keyword">class </span><a class="code" href="utypes_8h.html#ab9d90a30137b6ec046fe59e79b09745a">U_I18N_API</a> LocalPointerBase<message2::data_model::Expression>;</div><div class="line"><a name="l01495"></a><span class="lineno"> 1495</span> <span class="keyword">template</span> <span class="keyword">class </span><a class="code" href="utypes_8h.html#ab9d90a30137b6ec046fe59e79b09745a">U_I18N_API</a> LocalArray<message2::data_model::Expression>;</div><div class="line"><a name="l01496"></a><span class="lineno"> 1496</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01497"></a><span class="lineno"> 1497</span> </div><div class="line"><a name="l01499"></a><span class="lineno"> 1499</span> <span class="keyword">namespace </span>message2 {</div><div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>  <span class="keyword">namespace </span>data_model {</div><div class="line"><a name="l01501"></a><span class="lineno"> 1501</span> </div><div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>  <span class="keyword">class </span>Pattern;</div><div class="line"><a name="l01503"></a><span class="lineno"> 1503</span> </div><div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>  <span class="comment">// Despite the comments, `PatternPart` is internal-only</span></div><div class="line"><a name="l01515"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1PatternPart.html"> 1515</a></span> <span class="comment"></span> <span class="keyword">class </span><a class="code" href="classicu_1_1message2_1_1data__model_1_1PatternPart.html">PatternPart</a> : <span class="keyword">public</span> <a class="code" href="classicu_1_1UObject.html">UObject</a> {</div><div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l01525"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1PatternPart.html#a7d8020e3e2012a2b1c9671b553e1ec8b"> 1525</a></span>  <a class="code" href="umachine_8h.html#a349ef00011f20ccd1d3b424445681aa5">UBool</a> <a class="code" href="classicu_1_1message2_1_1data__model_1_1PatternPart.html#a7d8020e3e2012a2b1c9671b553e1ec8b">isText</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> std::holds_alternative<UnicodeString>(piece); }</div><div class="line"><a name="l01534"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1PatternPart.html#a6aa3e9f41a864257a3b9631ec18c4357"> 1534</a></span>  <a class="code" href="umachine_8h.html#a349ef00011f20ccd1d3b424445681aa5">UBool</a> <a class="code" href="classicu_1_1message2_1_1data__model_1_1PatternPart.html#a6aa3e9f41a864257a3b9631ec18c4357">isMarkup</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> std::holds_alternative<Markup>(piece); }</div><div class="line"><a name="l01543"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1PatternPart.html#a0319364ae111c28db15b15d16308eda6"> 1543</a></span>  <a class="code" href="umachine_8h.html#a349ef00011f20ccd1d3b424445681aa5">UBool</a> <a class="code" href="classicu_1_1message2_1_1data__model_1_1PatternPart.html#a0319364ae111c28db15b15d16308eda6">isExpression</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> std::holds_alternative<Expression>(piece); }</div><div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>  <span class="keyword">const</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Expression.html">Expression</a>& contents() <span class="keyword">const</span>;</div><div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>  <span class="keyword">const</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Markup.html">Markup</a>& asMarkup() <span class="keyword">const</span>;</div><div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>  <span class="keyword">const</span> <a class="code" href="classicu_1_1UnicodeString.html">UnicodeString</a>& asText() <span class="keyword">const</span>;</div><div class="line"><a name="l01582"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1PatternPart.html#aea57fc8a6d8adf84357db5796491ceb8"> 1582</a></span>  <span class="keyword">friend</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1PatternPart.html#aea57fc8a6d8adf84357db5796491ceb8">swap</a>(<a class="code" href="classicu_1_1message2_1_1data__model_1_1PatternPart.html">PatternPart</a>& p1, <a class="code" href="classicu_1_1message2_1_1data__model_1_1PatternPart.html">PatternPart</a>& p2) noexcept {</div><div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>  <span class="keyword">using</span> std::swap;</div><div class="line"><a name="l01584"></a><span class="lineno"> 1584</span> </div><div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>  swap(p1.piece, p2.piece);</div><div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>  }</div><div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1PatternPart.html">PatternPart</a>(<span class="keyword">const</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1PatternPart.html">PatternPart</a>& other);</div><div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1PatternPart.html">PatternPart</a>& operator=(<a class="code" href="classicu_1_1message2_1_1data__model_1_1PatternPart.html">PatternPart</a>) noexcept;</div><div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>  <span class="keyword">virtual</span> ~<a class="code" href="classicu_1_1message2_1_1data__model_1_1PatternPart.html">PatternPart</a>();</div><div class="line"><a name="l01617"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1PatternPart.html#a3223945c74c9034135e801cef62dd45c"> 1617</a></span>  <span class="keyword">explicit</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1PatternPart.html#a3223945c74c9034135e801cef62dd45c">PatternPart</a>(<span class="keyword">const</span> <a class="code" href="classicu_1_1UnicodeString.html">UnicodeString</a>& t) : piece(t) {}</div><div class="line"><a name="l01627"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1PatternPart.html#a4e33912e8415a055b6a99f87a4e22aab"> 1627</a></span>  <span class="keyword">explicit</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1PatternPart.html#a4e33912e8415a055b6a99f87a4e22aab">PatternPart</a>(<a class="code" href="classicu_1_1message2_1_1data__model_1_1Expression.html">Expression</a>&& e) : piece(e) {}</div><div class="line"><a name="l01637"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1PatternPart.html#a614a6a3e9773cec9f1bc2b233068e148"> 1637</a></span>  <span class="keyword">explicit</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1PatternPart.html#a614a6a3e9773cec9f1bc2b233068e148">PatternPart</a>(<a class="code" href="classicu_1_1message2_1_1data__model_1_1Markup.html">Markup</a>&& m) : piece(m) {}</div><div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1PatternPart.html">PatternPart</a>() = <span class="keywordflow">default</span>;</div><div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classicu_1_1message2_1_1data__model_1_1Pattern.html">Pattern</a>;</div><div class="line"><a name="l01648"></a><span class="lineno"> 1648</span> </div><div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>  std::variant<UnicodeString, Expression, Markup> piece;</div><div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>  }; <span class="comment">// class PatternPart</span></div><div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>  } <span class="comment">// namespace data_model</span></div><div class="line"><a name="l01652"></a><span class="lineno"> 1652</span> } <span class="comment">// namespace message2</span></div><div class="line"><a name="l01653"></a><span class="lineno"> 1653</span> </div><div class="line"><a name="l01655"></a><span class="lineno"> 1655</span> <span class="comment">// Export an explicit template instantiation of the LocalPointer that is used as a</span></div><div class="line"><a name="l01656"></a><span class="lineno"> 1656</span> <span class="comment">// data member of various MFDataModel classes.</span></div><div class="line"><a name="l01657"></a><span class="lineno"> 1657</span> <span class="comment">// (When building DLLs for Windows this is required.)</span></div><div class="line"><a name="l01658"></a><span class="lineno"> 1658</span> <span class="comment">// (See measunit_impl.h, datefmt.h, collationiterator.h, erarules.h and others</span></div><div class="line"><a name="l01659"></a><span class="lineno"> 1659</span> <span class="comment">// for similar examples.)</span></div><div class="line"><a name="l01660"></a><span class="lineno"> 1660</span> <span class="preprocessor">#if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN</span></div><div class="line"><a name="l01661"></a><span class="lineno"> 1661</span> <span class="keyword">template</span> <span class="keyword">class </span><a class="code" href="utypes_8h.html#ab9d90a30137b6ec046fe59e79b09745a">U_I18N_API</a> LocalPointerBase<message2::data_model::PatternPart>;</div><div class="line"><a name="l01662"></a><span class="lineno"> 1662</span> <span class="keyword">template</span> <span class="keyword">class </span><a class="code" href="utypes_8h.html#ab9d90a30137b6ec046fe59e79b09745a">U_I18N_API</a> LocalArray<message2::data_model::PatternPart>;</div><div class="line"><a name="l01663"></a><span class="lineno"> 1663</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01664"></a><span class="lineno"> 1664</span> </div><div class="line"><a name="l01666"></a><span class="lineno"> 1666</span> <span class="keyword">namespace </span>message2 {</div><div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>  <span class="keyword">namespace </span>data_model {</div><div class="line"><a name="l01678"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Pattern.html"> 1678</a></span>  <span class="keyword">class </span><a class="code" href="utypes_8h.html#ab9d90a30137b6ec046fe59e79b09745a">U_I18N_API</a> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Pattern.html">Pattern</a> : <span class="keyword">public</span> <a class="code" href="classicu_1_1UObject.html">UObject</a> {</div><div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classicu_1_1message2_1_1data__model_1_1PatternPart.html">PatternPart</a>;</div><div class="line"><a name="l01681"></a><span class="lineno"> 1681</span> </div><div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>  <span class="keyword">struct </span><a class="code" href="structicu_1_1message2_1_1data__model_1_1Pattern_1_1Iterator.html">Iterator</a>;</div><div class="line"><a name="l01693"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Pattern.html#ad94dddd151a9146a6d4848f24a479f74"> 1693</a></span>  <a class="code" href="structicu_1_1message2_1_1data__model_1_1Pattern_1_1Iterator.html">Iterator</a> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Pattern.html#ad94dddd151a9146a6d4848f24a479f74">begin</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>  <span class="keywordflow">return</span> <a class="code" href="structicu_1_1message2_1_1data__model_1_1Pattern_1_1Iterator.html">Iterator</a>(<span class="keyword">this</span>, 0);</div><div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>  }</div><div class="line"><a name="l01705"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Pattern.html#a0c64899524687dd8068ccd9f3f8d1b2f"> 1705</a></span>  <a class="code" href="structicu_1_1message2_1_1data__model_1_1Pattern_1_1Iterator.html">Iterator</a> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Pattern.html#a0c64899524687dd8068ccd9f3f8d1b2f">end</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>  <span class="keywordflow">return</span> <a class="code" href="structicu_1_1message2_1_1data__model_1_1Pattern_1_1Iterator.html">Iterator</a>(<span class="keyword">this</span>, len);</div><div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>  }</div><div class="line"><a name="l01717"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Pattern_1_1Builder.html"> 1717</a></span>  <span class="keyword">class </span><a class="code" href="utypes_8h.html#ab9d90a30137b6ec046fe59e79b09745a">U_I18N_API</a> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Pattern_1_1Builder.html">Builder</a> : <span class="keyword">public</span> <a class="code" href="classicu_1_1UMemory.html">UMemory</a> {</div><div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classicu_1_1message2_1_1data__model_1_1Pattern.html">Pattern</a>;</div><div class="line"><a name="l01720"></a><span class="lineno"> 1720</span> </div><div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>  UVector* parts; <span class="comment">// Not a LocalPointer for the same reason as in `SelectorKeys::Builder`</span></div><div class="line"><a name="l01722"></a><span class="lineno"> 1722</span> </div><div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Pattern_1_1Builder.html">Builder</a>& add(<a class="code" href="classicu_1_1message2_1_1data__model_1_1Expression.html">Expression</a>&& part, <a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a>& status) noexcept;</div><div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Pattern_1_1Builder.html">Builder</a>& add(<a class="code" href="classicu_1_1message2_1_1data__model_1_1Markup.html">Markup</a>&& part, <a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a>& status) noexcept;</div><div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Pattern_1_1Builder.html">Builder</a>& add(<a class="code" href="classicu_1_1UnicodeString.html">UnicodeString</a>&& part, <a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a>& status) noexcept;</div><div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Pattern.html">Pattern</a> build(<a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a>& status) <span class="keyword">const</span> noexcept;</div><div class="line"><a name="l01779"></a><span class="lineno"> 1779</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Pattern_1_1Builder.html">Builder</a>(<a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a>& status);</div><div class="line"><a name="l01786"></a><span class="lineno"> 1786</span>  <span class="keyword">virtual</span> ~<a class="code" href="classicu_1_1message2_1_1data__model_1_1Pattern_1_1Builder.html">Builder</a>();</div><div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Pattern_1_1Builder.html">Builder</a>(<span class="keyword">const</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Pattern_1_1Builder.html">Builder</a>&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Pattern_1_1Builder.html">Builder</a>& operator=(<span class="keyword">const</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Pattern_1_1Builder.html">Builder</a>&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Pattern_1_1Builder.html">Builder</a>(<a class="code" href="classicu_1_1message2_1_1data__model_1_1Pattern_1_1Builder.html">Builder</a>&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Pattern_1_1Builder.html">Builder</a>& operator=(<a class="code" href="classicu_1_1message2_1_1data__model_1_1Pattern_1_1Builder.html">Builder</a>&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>  }; <span class="comment">// class Pattern::Builder</span></div><div class="line"><a name="l01792"></a><span class="lineno"> 1792</span> </div><div class="line"><a name="l01800"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Pattern.html#a8a5f728d83b2d3c4c5e34302bb18512b"> 1800</a></span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Pattern.html#a8a5f728d83b2d3c4c5e34302bb18512b">Pattern</a>() : parts(<a class="code" href="classicu_1_1LocalArray.html">LocalArray</a><<a class="code" href="classicu_1_1message2_1_1data__model_1_1PatternPart.html">PatternPart</a>>()) {}</div><div class="line"><a name="l01809"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Pattern.html#ac6361b31d7467366b64e29f0f5868537"> 1809</a></span>  <span class="keyword">friend</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Pattern.html#ac6361b31d7467366b64e29f0f5868537">swap</a>(<a class="code" href="classicu_1_1message2_1_1data__model_1_1Pattern.html">Pattern</a>& p1, <a class="code" href="classicu_1_1message2_1_1data__model_1_1Pattern.html">Pattern</a>& p2) noexcept {</div><div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>  <span class="keyword">using</span> std::swap;</div><div class="line"><a name="l01811"></a><span class="lineno"> 1811</span> </div><div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>  swap(p1.bogus, p2.bogus);</div><div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>  swap(p1.len, p2.len);</div><div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>  swap(p1.parts, p2.parts);</div><div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>  }</div><div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Pattern.html">Pattern</a>(<span class="keyword">const</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Pattern.html">Pattern</a>& other);</div><div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Pattern.html">Pattern</a>& operator=(<a class="code" href="classicu_1_1message2_1_1data__model_1_1Pattern.html">Pattern</a>) noexcept;</div><div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>  <span class="keyword">virtual</span> ~<a class="code" href="classicu_1_1message2_1_1data__model_1_1Pattern.html">Pattern</a>();</div><div class="line"><a name="l01837"></a><span class="lineno"> 1837</span> </div><div class="line"><a name="l01847"></a><span class="lineno"><a class="line" href="structicu_1_1message2_1_1data__model_1_1Pattern_1_1Iterator.html"> 1847</a></span>  <span class="keyword">struct </span><a class="code" href="utypes_8h.html#ab9d90a30137b6ec046fe59e79b09745a">U_I18N_API</a> <a class="code" href="structicu_1_1message2_1_1data__model_1_1Pattern_1_1Iterator.html">Iterator</a> {</div><div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l01849"></a><span class="lineno"> 1849</span>  <span class="keyword">using</span> iterator_category = std::forward_iterator_tag;</div><div class="line"><a name="l01850"></a><span class="lineno"> 1850</span>  <span class="keyword">using</span> difference_type = std::ptrdiff_t;</div><div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>  <span class="keyword">using</span> value_type = std::variant<UnicodeString, Expression, Markup>;</div><div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>  <span class="keyword">using</span> pointer = value_type*;</div><div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>  <span class="keyword">using</span> reference = <span class="keyword">const</span> value_type&;</div><div class="line"><a name="l01854"></a><span class="lineno"> 1854</span> </div><div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classicu_1_1message2_1_1data__model_1_1Pattern.html">Pattern</a>;</div><div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>  <a class="code" href="structicu_1_1message2_1_1data__model_1_1Pattern_1_1Iterator.html">Iterator</a>(<span class="keyword">const</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Pattern.html">Pattern</a>* p, int32_t i) : pos(i), pat(p) {}</div><div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>  <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceicu.html#a1c2f6ca43e636f38d1a3291eb851e9f0">operator== </a>(<span class="keyword">const</span> <a class="code" href="structicu_1_1message2_1_1data__model_1_1Pattern_1_1Iterator.html">Iterator</a>& a, <span class="keyword">const</span> <a class="code" href="structicu_1_1message2_1_1data__model_1_1Pattern_1_1Iterator.html">Iterator</a>& b) { <span class="keywordflow">return</span> (a.pat == b.pat && a.pos == b.pos); }</div><div class="line"><a name="l01858"></a><span class="lineno"> 1858</span> </div><div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>  int32_t pos;</div><div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>  <span class="keyword">const</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Pattern.html">Pattern</a>* pat;</div><div class="line"><a name="l01861"></a><span class="lineno"> 1861</span> </div><div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l01869"></a><span class="lineno"><a class="line" href="structicu_1_1message2_1_1data__model_1_1Pattern_1_1Iterator.html#a4f2f53c33496852cd7d41fc46dd8d94a"> 1869</a></span>  reference <a class="code" href="structicu_1_1message2_1_1data__model_1_1Pattern_1_1Iterator.html#a4f2f53c33496852cd7d41fc46dd8d94a">operator*</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>  <span class="keyword">const</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1PatternPart.html">PatternPart</a>& part = pat->parts[pos];</div><div class="line"><a name="l01871"></a><span class="lineno"> 1871</span>  <span class="keywordflow">return</span> patternContents(part);</div><div class="line"><a name="l01872"></a><span class="lineno"> 1872</span>  }</div><div class="line"><a name="l01879"></a><span class="lineno"><a class="line" href="structicu_1_1message2_1_1data__model_1_1Pattern_1_1Iterator.html#ab07a41f471f7e8b7714d1b9c4586b08b"> 1879</a></span>  <a class="code" href="structicu_1_1message2_1_1data__model_1_1Pattern_1_1Iterator.html">Iterator</a> <a class="code" href="structicu_1_1message2_1_1data__model_1_1Pattern_1_1Iterator.html#ab07a41f471f7e8b7714d1b9c4586b08b">operator++</a>() { pos++; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div><div class="line"><a name="l01886"></a><span class="lineno"><a class="line" href="structicu_1_1message2_1_1data__model_1_1Pattern_1_1Iterator.html#a27aed9f3ea67a677964fa51de28a5824"> 1886</a></span>  <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceicu.html#a8d8f68e93f4a83a227b82cec7745dff6">operator!= </a>(<span class="keyword">const</span> <a class="code" href="structicu_1_1message2_1_1data__model_1_1Pattern_1_1Iterator.html">Iterator</a>& a, <span class="keyword">const</span> <a class="code" href="structicu_1_1message2_1_1data__model_1_1Pattern_1_1Iterator.html">Iterator</a>& b) { <span class="keywordflow">return</span> !(a == b); }</div><div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>  }; <span class="comment">// struct Iterator</span></div><div class="line"><a name="l01888"></a><span class="lineno"> 1888</span> </div><div class="line"><a name="l01889"></a><span class="lineno"> 1889</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l01890"></a><span class="lineno"> 1890</span>  <span class="keyword">friend</span> <span class="keyword">class </span>Builder;</div><div class="line"><a name="l01891"></a><span class="lineno"> 1891</span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classicu_1_1message2_1_1MessageFormatter.html">message2::MessageFormatter</a>;</div><div class="line"><a name="l01892"></a><span class="lineno"> 1892</span>  <span class="keyword">friend</span> <span class="keyword">class </span>message2::Serializer;</div><div class="line"><a name="l01893"></a><span class="lineno"> 1893</span> </div><div class="line"><a name="l01894"></a><span class="lineno"> 1894</span>  <span class="comment">// Set to true if a copy constructor fails;</span></div><div class="line"><a name="l01895"></a><span class="lineno"> 1895</span>  <span class="comment">// needed in order to distinguish an uninitialized</span></div><div class="line"><a name="l01896"></a><span class="lineno"> 1896</span>  <span class="comment">// Pattern from a 0-length pattern</span></div><div class="line"><a name="l01897"></a><span class="lineno"> 1897</span>  <span class="keywordtype">bool</span> bogus = <span class="keyword">false</span>;</div><div class="line"><a name="l01898"></a><span class="lineno"> 1898</span> </div><div class="line"><a name="l01899"></a><span class="lineno"> 1899</span>  <span class="comment">// Possibly-empty array of parts</span></div><div class="line"><a name="l01900"></a><span class="lineno"> 1900</span>  int32_t len = 0;</div><div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>  <a class="code" href="classicu_1_1LocalArray.html">LocalArray<PatternPart></a> parts;</div><div class="line"><a name="l01902"></a><span class="lineno"> 1902</span> </div><div class="line"><a name="l01903"></a><span class="lineno"> 1903</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Pattern.html">Pattern</a>(<span class="keyword">const</span> UVector& parts, <a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a>& status);</div><div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>  <span class="comment">// Helper</span></div><div class="line"><a name="l01905"></a><span class="lineno"> 1905</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> initParts(<a class="code" href="classicu_1_1message2_1_1data__model_1_1Pattern.html">Pattern</a>&, <span class="keyword">const</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Pattern.html">Pattern</a>&);</div><div class="line"><a name="l01906"></a><span class="lineno"> 1906</span> </div><div class="line"><a name="l01915"></a><span class="lineno"> 1915</span>  int32_t numParts() <span class="keyword">const</span>;</div><div class="line"><a name="l01926"></a><span class="lineno"> 1926</span>  <span class="keyword">const</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1PatternPart.html">PatternPart</a>& getPart(int32_t i) <span class="keyword">const</span>;</div><div class="line"><a name="l01927"></a><span class="lineno"> 1927</span> </div><div class="line"><a name="l01928"></a><span class="lineno"> 1928</span>  <span class="comment">// Gets around not being able to declare Pattern::Iterator as a friend</span></div><div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>  <span class="comment">// in PatternPart</span></div><div class="line"><a name="l01930"></a><span class="lineno"> 1930</span>  <span class="keyword">static</span> <span class="keyword">const</span> std::variant<UnicodeString, Expression, Markup>&</div><div class="line"><a name="l01931"></a><span class="lineno"> 1931</span>  patternContents(<span class="keyword">const</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1PatternPart.html">PatternPart</a>& p) { <span class="keywordflow">return</span> p.piece; }</div><div class="line"><a name="l01932"></a><span class="lineno"> 1932</span>  }; <span class="comment">// class Pattern</span></div><div class="line"><a name="l01933"></a><span class="lineno"> 1933</span> </div><div class="line"><a name="l01944"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Variant.html"> 1944</a></span>  <span class="keyword">class </span><a class="code" href="utypes_8h.html#ab9d90a30137b6ec046fe59e79b09745a">U_I18N_API</a> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Variant.html">Variant</a> : <span class="keyword">public</span> <a class="code" href="classicu_1_1UObject.html">UObject</a> {</div><div class="line"><a name="l01945"></a><span class="lineno"> 1945</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l01954"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Variant.html#ad7e7d877e9d4d99c404a46edfb3ff89e"> 1954</a></span>  <span class="keyword">const</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Pattern.html">Pattern</a>& <a class="code" href="classicu_1_1message2_1_1data__model_1_1Variant.html#ad7e7d877e9d4d99c404a46edfb3ff89e">getPattern</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> p; }</div><div class="line"><a name="l01963"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Variant.html#aaf55f489ba2e4b96d3334a3b1c02a348"> 1963</a></span>  <span class="keyword">const</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1SelectorKeys.html">SelectorKeys</a>& <a class="code" href="classicu_1_1message2_1_1data__model_1_1Variant.html#aaf55f489ba2e4b96d3334a3b1c02a348">getKeys</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> k; }</div><div class="line"><a name="l01975"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Variant.html#a16dfe6ffb8e6b969bd4309ad3f702cf8"> 1975</a></span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Variant.html#a16dfe6ffb8e6b969bd4309ad3f702cf8">Variant</a>(<span class="keyword">const</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1SelectorKeys.html">SelectorKeys</a>& keys, <a class="code" href="classicu_1_1message2_1_1data__model_1_1Pattern.html">Pattern</a>&& pattern) : k(keys), p(std::move(pattern)) {}</div><div class="line"><a name="l01984"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Variant.html#a6167953fb8369b0a73a949b41995e136"> 1984</a></span>  <span class="keyword">friend</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Variant.html#a6167953fb8369b0a73a949b41995e136">swap</a>(<a class="code" href="classicu_1_1message2_1_1data__model_1_1Variant.html">Variant</a>& v1, <a class="code" href="classicu_1_1message2_1_1data__model_1_1Variant.html">Variant</a>& v2) noexcept {</div><div class="line"><a name="l01985"></a><span class="lineno"> 1985</span>  <span class="keyword">using</span> std::swap;</div><div class="line"><a name="l01986"></a><span class="lineno"> 1986</span> </div><div class="line"><a name="l01987"></a><span class="lineno"> 1987</span>  swap(v1.k, v2.k);</div><div class="line"><a name="l01988"></a><span class="lineno"> 1988</span>  swap(v1.p, v2.p);</div><div class="line"><a name="l01989"></a><span class="lineno"> 1989</span>  }</div><div class="line"><a name="l01996"></a><span class="lineno"> 1996</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Variant.html">Variant</a>& operator=(<a class="code" href="classicu_1_1message2_1_1data__model_1_1Variant.html">Variant</a> other) noexcept;</div><div class="line"><a name="l02004"></a><span class="lineno"> 2004</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Variant.html">Variant</a>() = <span class="keywordflow">default</span>;</div><div class="line"><a name="l02011"></a><span class="lineno"> 2011</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Variant.html">Variant</a>(<span class="keyword">const</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Variant.html">Variant</a>&);</div><div class="line"><a name="l02018"></a><span class="lineno"> 2018</span>  <span class="keyword">virtual</span> ~<a class="code" href="classicu_1_1message2_1_1data__model_1_1Variant.html">Variant</a>();</div><div class="line"><a name="l02019"></a><span class="lineno"> 2019</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l02020"></a><span class="lineno"> 2020</span>  <span class="comment">/* const */</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1SelectorKeys.html">SelectorKeys</a> k;</div><div class="line"><a name="l02021"></a><span class="lineno"> 2021</span>  <span class="comment">/* const */</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Pattern.html">Pattern</a> p;</div><div class="line"><a name="l02022"></a><span class="lineno"> 2022</span>  }; <span class="comment">// class Variant</span></div><div class="line"><a name="l02023"></a><span class="lineno"> 2023</span>  } <span class="comment">// namespace data_model</span></div><div class="line"><a name="l02024"></a><span class="lineno"> 2024</span> </div><div class="line"><a name="l02025"></a><span class="lineno"> 2025</span>  <span class="keyword">namespace </span>data_model {</div><div class="line"><a name="l02036"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Binding.html"> 2036</a></span>  <span class="keyword">class </span><a class="code" href="utypes_8h.html#ab9d90a30137b6ec046fe59e79b09745a">U_I18N_API</a> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Binding.html">Binding</a> : <span class="keyword">public</span> <a class="code" href="classicu_1_1UObject.html">UObject</a> {</div><div class="line"><a name="l02037"></a><span class="lineno"> 2037</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l02046"></a><span class="lineno"> 2046</span>  <span class="keyword">const</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Expression.html">Expression</a>& getValue() <span class="keyword">const</span>;</div><div class="line"><a name="l02055"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Binding.html#a624edaea1c627f28c28fdae60dd10992"> 2055</a></span>  <span class="keyword">const</span> <a class="code" href="classicu_1_1UnicodeString.html">VariableName</a>& <a class="code" href="classicu_1_1message2_1_1data__model_1_1Binding.html#a624edaea1c627f28c28fdae60dd10992">getVariable</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> var; }</div><div class="line"><a name="l02070"></a><span class="lineno"> 2070</span>  <span class="keyword">static</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Binding.html">Binding</a> input(<a class="code" href="classicu_1_1UnicodeString.html">UnicodeString</a>&& variableName, <a class="code" href="classicu_1_1message2_1_1data__model_1_1Expression.html">Expression</a>&& rhs, <a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a>& errorCode);</div><div class="line"><a name="l02078"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Binding.html#a4b54c6fa7f03744ce8539d5ffa0fe7b0"> 2078</a></span>  <a class="code" href="umachine_8h.html#a349ef00011f20ccd1d3b424445681aa5">UBool</a> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Binding.html#a4b54c6fa7f03744ce8539d5ffa0fe7b0">isLocal</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> local; }</div><div class="line"><a name="l02088"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Binding.html#ad483377f061642534a8d948174909db7"> 2088</a></span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Binding.html#ad483377f061642534a8d948174909db7">Binding</a>(<span class="keyword">const</span> <a class="code" href="classicu_1_1UnicodeString.html">VariableName</a>& v, <a class="code" href="classicu_1_1message2_1_1data__model_1_1Expression.html">Expression</a>&& e) : var(v), expr(std::move(e)), local(true), annotation(nullptr) {}</div><div class="line"><a name="l02097"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Binding.html#af2ec4b8f815b7967592b8e1081f1a0f9"> 2097</a></span>  <span class="keyword">friend</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Binding.html#af2ec4b8f815b7967592b8e1081f1a0f9">swap</a>(<a class="code" href="classicu_1_1message2_1_1data__model_1_1Binding.html">Binding</a>& b1, <a class="code" href="classicu_1_1message2_1_1data__model_1_1Binding.html">Binding</a>& b2) noexcept {</div><div class="line"><a name="l02098"></a><span class="lineno"> 2098</span>  <span class="keyword">using</span> std::swap;</div><div class="line"><a name="l02099"></a><span class="lineno"> 2099</span> </div><div class="line"><a name="l02100"></a><span class="lineno"> 2100</span>  swap(b1.var, b2.var);</div><div class="line"><a name="l02101"></a><span class="lineno"> 2101</span>  swap(b1.expr, b2.expr);</div><div class="line"><a name="l02102"></a><span class="lineno"> 2102</span>  swap(b1.local, b2.local);</div><div class="line"><a name="l02103"></a><span class="lineno"> 2103</span>  b1.updateAnnotation();</div><div class="line"><a name="l02104"></a><span class="lineno"> 2104</span>  b2.updateAnnotation();</div><div class="line"><a name="l02105"></a><span class="lineno"> 2105</span>  }</div><div class="line"><a name="l02112"></a><span class="lineno"> 2112</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Binding.html">Binding</a>(<span class="keyword">const</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Binding.html">Binding</a>& other);</div><div class="line"><a name="l02119"></a><span class="lineno"> 2119</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Binding.html">Binding</a>& operator=(<a class="code" href="classicu_1_1message2_1_1data__model_1_1Binding.html">Binding</a>) noexcept;</div><div class="line"><a name="l02127"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1data__model_1_1Binding.html#a913928647afa118a938b6a1291ec6b33"> 2127</a></span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Binding.html#a913928647afa118a938b6a1291ec6b33">Binding</a>() : local(true) {}</div><div class="line"><a name="l02134"></a><span class="lineno"> 2134</span>  <span class="keyword">virtual</span> ~<a class="code" href="classicu_1_1message2_1_1data__model_1_1Binding.html">Binding</a>();</div><div class="line"><a name="l02135"></a><span class="lineno"> 2135</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l02136"></a><span class="lineno"> 2136</span>  <span class="keyword">friend</span> <span class="keyword">class </span>message2::Checker;</div><div class="line"><a name="l02137"></a><span class="lineno"> 2137</span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classicu_1_1message2_1_1MessageFormatter.html">message2::MessageFormatter</a>;</div><div class="line"><a name="l02138"></a><span class="lineno"> 2138</span>  <span class="keyword">friend</span> <span class="keyword">class </span>message2::Parser;</div><div class="line"><a name="l02139"></a><span class="lineno"> 2139</span>  <span class="keyword">friend</span> <span class="keyword">class </span>message2::Serializer;</div><div class="line"><a name="l02140"></a><span class="lineno"> 2140</span> </div><div class="line"><a name="l02141"></a><span class="lineno"> 2141</span>  <span class="comment">/* const */</span> <a class="code" href="classicu_1_1UnicodeString.html">VariableName</a> var;</div><div class="line"><a name="l02142"></a><span class="lineno"> 2142</span>  <span class="comment">/* const */</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Expression.html">Expression</a> expr;</div><div class="line"><a name="l02143"></a><span class="lineno"> 2143</span>  <span class="comment">/* const */</span> <span class="keywordtype">bool</span> local;</div><div class="line"><a name="l02144"></a><span class="lineno"> 2144</span> </div><div class="line"><a name="l02145"></a><span class="lineno"> 2145</span>  <span class="comment">// The following field is always nullptr for a local</span></div><div class="line"><a name="l02146"></a><span class="lineno"> 2146</span>  <span class="comment">// declaration, and possibly nullptr for an .input declaration</span></div><div class="line"><a name="l02147"></a><span class="lineno"> 2147</span>  <span class="comment">// If non-null, the referent is a member of `expr` so</span></div><div class="line"><a name="l02148"></a><span class="lineno"> 2148</span>  <span class="comment">// its lifetime is the same as the lifetime of the enclosing Binding</span></div><div class="line"><a name="l02149"></a><span class="lineno"> 2149</span>  <span class="comment">// (as long as there's no mutation)</span></div><div class="line"><a name="l02150"></a><span class="lineno"> 2150</span>  <span class="keyword">const</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Operator.html">Operator</a>* annotation = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l02151"></a><span class="lineno"> 2151</span> </div><div class="line"><a name="l02152"></a><span class="lineno"> 2152</span>  <span class="keyword">const</span> OptionMap& getOptionsInternal() <span class="keyword">const</span>;</div><div class="line"><a name="l02153"></a><span class="lineno"> 2153</span> </div><div class="line"><a name="l02154"></a><span class="lineno"> 2154</span>  <span class="keywordtype">bool</span> hasAnnotation()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> !local && (annotation != <span class="keyword">nullptr</span>); }</div><div class="line"><a name="l02155"></a><span class="lineno"> 2155</span>  <span class="keywordtype">void</span> updateAnnotation();</div><div class="line"><a name="l02156"></a><span class="lineno"> 2156</span>  }; <span class="comment">// class Binding</span></div><div class="line"><a name="l02157"></a><span class="lineno"> 2157</span>  } <span class="comment">// namespace data_model</span></div><div class="line"><a name="l02158"></a><span class="lineno"> 2158</span> } <span class="comment">// namespace message2</span></div><div class="line"><a name="l02159"></a><span class="lineno"> 2159</span> </div><div class="line"><a name="l02161"></a><span class="lineno"> 2161</span> <span class="comment">// Export an explicit template instantiation of the LocalPointer that is used as a</span></div><div class="line"><a name="l02162"></a><span class="lineno"> 2162</span> <span class="comment">// data member of various MFDataModel classes.</span></div><div class="line"><a name="l02163"></a><span class="lineno"> 2163</span> <span class="comment">// (When building DLLs for Windows this is required.)</span></div><div class="line"><a name="l02164"></a><span class="lineno"> 2164</span> <span class="comment">// (See measunit_impl.h, datefmt.h, collationiterator.h, erarules.h and others</span></div><div class="line"><a name="l02165"></a><span class="lineno"> 2165</span> <span class="comment">// for similar examples.)</span></div><div class="line"><a name="l02166"></a><span class="lineno"> 2166</span> <span class="preprocessor">#if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN</span></div><div class="line"><a name="l02167"></a><span class="lineno"> 2167</span> <span class="keyword">template</span> <span class="keyword">class </span><a class="code" href="utypes_8h.html#ab9d90a30137b6ec046fe59e79b09745a">U_I18N_API</a> LocalPointerBase<message2::data_model::Variant>;</div><div class="line"><a name="l02168"></a><span class="lineno"> 2168</span> <span class="keyword">template</span> <span class="keyword">class </span><a class="code" href="utypes_8h.html#ab9d90a30137b6ec046fe59e79b09745a">U_I18N_API</a> LocalPointerBase<message2::data_model::Binding>;</div><div class="line"><a name="l02169"></a><span class="lineno"> 2169</span> <span class="keyword">template</span> <span class="keyword">class </span><a class="code" href="utypes_8h.html#ab9d90a30137b6ec046fe59e79b09745a">U_I18N_API</a> LocalArray<message2::data_model::Variant>;</div><div class="line"><a name="l02170"></a><span class="lineno"> 2170</span> <span class="keyword">template</span> <span class="keyword">class </span><a class="code" href="utypes_8h.html#ab9d90a30137b6ec046fe59e79b09745a">U_I18N_API</a> LocalArray<message2::data_model::Binding>;</div><div class="line"><a name="l02171"></a><span class="lineno"> 2171</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l02172"></a><span class="lineno"> 2172</span> </div><div class="line"><a name="l02174"></a><span class="lineno"> 2174</span> <span class="keyword">namespace </span>message2 {</div><div class="line"><a name="l02175"></a><span class="lineno"> 2175</span>  <span class="keyword">using namespace </span>data_model;</div><div class="line"><a name="l02176"></a><span class="lineno"> 2176</span> </div><div class="line"><a name="l02177"></a><span class="lineno"> 2177</span> </div><div class="line"><a name="l02178"></a><span class="lineno"> 2178</span>  <span class="comment">// Internal only</span></div><div class="line"><a name="l02179"></a><span class="lineno"> 2179</span> </div><div class="line"><a name="l02180"></a><span class="lineno"> 2180</span>  <span class="keyword">class </span>MFDataModel;</div><div class="line"><a name="l02181"></a><span class="lineno"> 2181</span> </div><div class="line"><a name="l02182"></a><span class="lineno"> 2182</span> <span class="preprocessor"> #ifndef U_IN_DOXYGEN</span></div><div class="line"><a name="l02183"></a><span class="lineno"> 2183</span>  <span class="keyword">class </span>Matcher : <span class="keyword">public</span> UObject {</div><div class="line"><a name="l02184"></a><span class="lineno"> 2184</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l02185"></a><span class="lineno"> 2185</span>  Matcher& operator=(Matcher);</div><div class="line"><a name="l02186"></a><span class="lineno"> 2186</span>  Matcher(<span class="keyword">const</span> Matcher&);</div><div class="line"><a name="l02195"></a><span class="lineno"> 2195</span>  <span class="keyword">friend</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> swap(Matcher& m1, Matcher& m2) noexcept {</div><div class="line"><a name="l02196"></a><span class="lineno"> 2196</span>  <span class="keyword">using</span> std::swap;</div><div class="line"><a name="l02197"></a><span class="lineno"> 2197</span> </div><div class="line"><a name="l02198"></a><span class="lineno"> 2198</span>  <span class="keywordflow">if</span> (m1.bogus) {</div><div class="line"><a name="l02199"></a><span class="lineno"> 2199</span>  m2.bogus = <span class="keyword">true</span>;</div><div class="line"><a name="l02200"></a><span class="lineno"> 2200</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l02201"></a><span class="lineno"> 2201</span>  }</div><div class="line"><a name="l02202"></a><span class="lineno"> 2202</span>  <span class="keywordflow">if</span> (m2.bogus) {</div><div class="line"><a name="l02203"></a><span class="lineno"> 2203</span>  m1.bogus = <span class="keyword">true</span>;</div><div class="line"><a name="l02204"></a><span class="lineno"> 2204</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l02205"></a><span class="lineno"> 2205</span>  }</div><div class="line"><a name="l02206"></a><span class="lineno"> 2206</span>  swap(m1.selectors, m2.selectors);</div><div class="line"><a name="l02207"></a><span class="lineno"> 2207</span>  swap(m1.numSelectors, m2.numSelectors);</div><div class="line"><a name="l02208"></a><span class="lineno"> 2208</span>  swap(m1.variants, m2.variants);</div><div class="line"><a name="l02209"></a><span class="lineno"> 2209</span>  swap(m1.numVariants, m2.numVariants);</div><div class="line"><a name="l02210"></a><span class="lineno"> 2210</span>  }</div><div class="line"><a name="l02211"></a><span class="lineno"> 2211</span>  <span class="keyword">virtual</span> ~Matcher();</div><div class="line"><a name="l02212"></a><span class="lineno"> 2212</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l02213"></a><span class="lineno"> 2213</span> </div><div class="line"><a name="l02214"></a><span class="lineno"> 2214</span>  <span class="keyword">friend</span> <span class="keyword">class </span>MFDataModel;</div><div class="line"><a name="l02215"></a><span class="lineno"> 2215</span> </div><div class="line"><a name="l02216"></a><span class="lineno"> 2216</span>  Matcher(VariableName* ss, int32_t ns, Variant* vs, int32_t nv);</div><div class="line"><a name="l02217"></a><span class="lineno"> 2217</span>  Matcher() {}</div><div class="line"><a name="l02218"></a><span class="lineno"> 2218</span> </div><div class="line"><a name="l02219"></a><span class="lineno"> 2219</span>  <span class="comment">// A Matcher may have numSelectors=0 and numVariants=0</span></div><div class="line"><a name="l02220"></a><span class="lineno"> 2220</span>  <span class="comment">// (this is a data model error, but it's representable).</span></div><div class="line"><a name="l02221"></a><span class="lineno"> 2221</span>  <span class="comment">// So we have to keep a separate flag to track failed copies.</span></div><div class="line"><a name="l02222"></a><span class="lineno"> 2222</span>  <span class="keywordtype">bool</span> bogus = <span class="keyword">false</span>;</div><div class="line"><a name="l02223"></a><span class="lineno"> 2223</span> </div><div class="line"><a name="l02224"></a><span class="lineno"> 2224</span>  <span class="comment">// The variables that are being matched on.</span></div><div class="line"><a name="l02225"></a><span class="lineno"> 2225</span>  LocalArray<VariableName> selectors;</div><div class="line"><a name="l02226"></a><span class="lineno"> 2226</span>  <span class="comment">// The number of selectors</span></div><div class="line"><a name="l02227"></a><span class="lineno"> 2227</span>  int32_t numSelectors = 0;</div><div class="line"><a name="l02228"></a><span class="lineno"> 2228</span>  <span class="comment">// The list of `when` clauses (case arms).</span></div><div class="line"><a name="l02229"></a><span class="lineno"> 2229</span>  LocalArray<Variant> variants;</div><div class="line"><a name="l02230"></a><span class="lineno"> 2230</span>  <span class="comment">// The number of variants</span></div><div class="line"><a name="l02231"></a><span class="lineno"> 2231</span>  int32_t numVariants = 0;</div><div class="line"><a name="l02232"></a><span class="lineno"> 2232</span>  }; <span class="comment">// class Matcher</span></div><div class="line"><a name="l02233"></a><span class="lineno"> 2233</span> <span class="preprocessor"> #endif</span></div><div class="line"><a name="l02234"></a><span class="lineno"> 2234</span> } <span class="comment">// namespace message2</span></div><div class="line"><a name="l02235"></a><span class="lineno"> 2235</span> </div><div class="line"><a name="l02236"></a><span class="lineno"> 2236</span> U_NAMESPACE_END</div><div class="line"><a name="l02237"></a><span class="lineno"> 2237</span> </div><div class="line"><a name="l02239"></a><span class="lineno"> 2239</span> <span class="comment">// Export an explicit template instantiation of the std::variant that is used as a</span></div><div class="line"><a name="l02240"></a><span class="lineno"> 2240</span> <span class="comment">// data member of various MFDataModel classes.</span></div><div class="line"><a name="l02241"></a><span class="lineno"> 2241</span> <span class="comment">// (When building DLLs for Windows this is required.)</span></div><div class="line"><a name="l02242"></a><span class="lineno"> 2242</span> <span class="comment">// (See measunit_impl.h, datefmt.h, collationiterator.h, erarules.h and others</span></div><div class="line"><a name="l02243"></a><span class="lineno"> 2243</span> <span class="comment">// for similar examples.)</span></div><div class="line"><a name="l02244"></a><span class="lineno"> 2244</span> <span class="preprocessor">#if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN</span></div><div class="line"><a name="l02245"></a><span class="lineno"> 2245</span> <span class="preprocessor">#if defined(U_REAL_MSVC) && defined(_MSVC_STL_VERSION)</span></div><div class="line"><a name="l02246"></a><span class="lineno"> 2246</span> <span class="keyword">template</span> <span class="keyword">class </span><a class="code" href="utypes_8h.html#ab9d90a30137b6ec046fe59e79b09745a">U_I18N_API</a> std::_Variant_storage_<false, icu::message2::Matcher,icu::message2::data_model::Pattern>;</div><div class="line"><a name="l02247"></a><span class="lineno"> 2247</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l02248"></a><span class="lineno"> 2248</span> <span class="keyword">template</span> <span class="keyword">class </span><a class="code" href="utypes_8h.html#ab9d90a30137b6ec046fe59e79b09745a">U_I18N_API</a> std::variant<icu::message2::Matcher,icu::message2::data_model::Pattern>;</div><div class="line"><a name="l02249"></a><span class="lineno"> 2249</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l02250"></a><span class="lineno"> 2250</span> </div><div class="line"><a name="l02252"></a><span class="lineno"> 2252</span> U_NAMESPACE_BEGIN</div><div class="line"><a name="l02253"></a><span class="lineno"> 2253</span> </div><div class="line"><a name="l02254"></a><span class="lineno"> 2254</span> <span class="keyword">namespace </span>message2 {</div><div class="line"><a name="l02255"></a><span class="lineno"> 2255</span>  <span class="comment">// -----------------------------------------------------------------------</span></div><div class="line"><a name="l02256"></a><span class="lineno"> 2256</span>  <span class="comment">// Public MFDataModel class</span></div><div class="line"><a name="l02257"></a><span class="lineno"> 2257</span> </div><div class="line"><a name="l02274"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1MFDataModel.html"> 2274</a></span>  <span class="keyword">class </span><a class="code" href="utypes_8h.html#ab9d90a30137b6ec046fe59e79b09745a">U_I18N_API</a> <a class="code" href="classicu_1_1message2_1_1MFDataModel.html">MFDataModel</a> : <span class="keyword">public</span> <a class="code" href="classicu_1_1UMemory.html">UMemory</a> {</div><div class="line"><a name="l02275"></a><span class="lineno"> 2275</span>  <span class="comment">/*</span></div><div class="line"><a name="l02276"></a><span class="lineno"> 2276</span> <span class="comment"> Classes that represent nodes in the data model are nested inside the</span></div><div class="line"><a name="l02277"></a><span class="lineno"> 2277</span> <span class="comment"> `MFDataModel` class.</span></div><div class="line"><a name="l02278"></a><span class="lineno"> 2278</span> <span class="comment"></span></div><div class="line"><a name="l02279"></a><span class="lineno"> 2279</span> <span class="comment"> Classes such as `Expression`, `Pattern` and `VariantMap` are immutable and</span></div><div class="line"><a name="l02280"></a><span class="lineno"> 2280</span> <span class="comment"> are constructed using the builder pattern.</span></div><div class="line"><a name="l02281"></a><span class="lineno"> 2281</span> <span class="comment"></span></div><div class="line"><a name="l02282"></a><span class="lineno"> 2282</span> <span class="comment"> Most classes representing nodes have copy constructors. This is because builders</span></div><div class="line"><a name="l02283"></a><span class="lineno"> 2283</span> <span class="comment"> contain immutable data that must be copied when calling `build()`, since the builder</span></div><div class="line"><a name="l02284"></a><span class="lineno"> 2284</span> <span class="comment"> could go out of scope before the immutable result of the builder does. Copying is</span></div><div class="line"><a name="l02285"></a><span class="lineno"> 2285</span> <span class="comment"> also necessary to prevent unexpected mutation if intermediate builders are saved</span></div><div class="line"><a name="l02286"></a><span class="lineno"> 2286</span> <span class="comment"> and mutated again after calling `build()`.</span></div><div class="line"><a name="l02287"></a><span class="lineno"> 2287</span> <span class="comment"></span></div><div class="line"><a name="l02288"></a><span class="lineno"> 2288</span> <span class="comment"> The copy constructors perform a deep copy, for example by copying the entire</span></div><div class="line"><a name="l02289"></a><span class="lineno"> 2289</span> <span class="comment"> list of options for an `Operator` (and copying the entire underlying vector.)</span></div><div class="line"><a name="l02290"></a><span class="lineno"> 2290</span> <span class="comment"> Some internal fields should be `const`, but are declared as non-`const` to make</span></div><div class="line"><a name="l02291"></a><span class="lineno"> 2291</span> <span class="comment"> the copy constructor simpler to implement. (These are noted throughout.) In</span></div><div class="line"><a name="l02292"></a><span class="lineno"> 2292</span> <span class="comment"> other words, those fields are `const` except during the execution of a copy</span></div><div class="line"><a name="l02293"></a><span class="lineno"> 2293</span> <span class="comment"> constructor.</span></div><div class="line"><a name="l02294"></a><span class="lineno"> 2294</span> <span class="comment"></span></div><div class="line"><a name="l02295"></a><span class="lineno"> 2295</span> <span class="comment"> On the other hand, intermediate `Builder` methods that return a `Builder&`</span></div><div class="line"><a name="l02296"></a><span class="lineno"> 2296</span> <span class="comment"> mutate the state of the builder, so in code like:</span></div><div class="line"><a name="l02297"></a><span class="lineno"> 2297</span> <span class="comment"></span></div><div class="line"><a name="l02298"></a><span class="lineno"> 2298</span> <span class="comment"> Expression::Builder& exprBuilder = Expression::builder()-> setOperand(foo);</span></div><div class="line"><a name="l02299"></a><span class="lineno"> 2299</span> <span class="comment"> Expression::Builder& exprBuilder2 = exprBuilder.setOperator(bar);</span></div><div class="line"><a name="l02300"></a><span class="lineno"> 2300</span> <span class="comment"></span></div><div class="line"><a name="l02301"></a><span class="lineno"> 2301</span> <span class="comment"> the call to `setOperator()` would mutate `exprBuilder`, since `exprBuilder`</span></div><div class="line"><a name="l02302"></a><span class="lineno"> 2302</span> <span class="comment"> and `exprBuilder2` are references to the same object.</span></div><div class="line"><a name="l02303"></a><span class="lineno"> 2303</span> <span class="comment"></span></div><div class="line"><a name="l02304"></a><span class="lineno"> 2304</span> <span class="comment"> An alternate choice would be to make `build()` destructive, so that copying would</span></div><div class="line"><a name="l02305"></a><span class="lineno"> 2305</span> <span class="comment"> be unnecessary. Or, both copying and moving variants of `build()` could be</span></div><div class="line"><a name="l02306"></a><span class="lineno"> 2306</span> <span class="comment"> provided. Copying variants of the intermediate `Builder` methods could be</span></div><div class="line"><a name="l02307"></a><span class="lineno"> 2307</span> <span class="comment"> provided as well, if this proved useful.</span></div><div class="line"><a name="l02308"></a><span class="lineno"> 2308</span> <span class="comment"> */</span></div><div class="line"><a name="l02309"></a><span class="lineno"> 2309</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l02318"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1MFDataModel.html#ad372b4a79f2863330ee7db0150c15f08"> 2318</a></span>  std::vector<Binding> <a class="code" href="classicu_1_1message2_1_1MFDataModel.html#ad372b4a79f2863330ee7db0150c15f08">getLocalVariables</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l02319"></a><span class="lineno"> 2319</span>  std::vector<Binding> result;</div><div class="line"><a name="l02320"></a><span class="lineno"> 2320</span>  <span class="keywordflow">if</span> (!bogus) {</div><div class="line"><a name="l02321"></a><span class="lineno"> 2321</span>  <span class="keywordflow">return</span> toStdVector<Binding>(bindings.getAlias(), bindingsLen);</div><div class="line"><a name="l02322"></a><span class="lineno"> 2322</span>  }</div><div class="line"><a name="l02323"></a><span class="lineno"> 2323</span>  <span class="keywordflow">return</span> {};</div><div class="line"><a name="l02324"></a><span class="lineno"> 2324</span>  }</div><div class="line"><a name="l02333"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1MFDataModel.html#a10d1b944f18bb60e8ec8471e00b9ca9d"> 2333</a></span>  std::vector<VariableName> <a class="code" href="classicu_1_1message2_1_1MFDataModel.html#a10d1b944f18bb60e8ec8471e00b9ca9d">getSelectors</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l02334"></a><span class="lineno"> 2334</span>  <span class="keywordflow">if</span> (std::holds_alternative<Pattern>(body)) {</div><div class="line"><a name="l02335"></a><span class="lineno"> 2335</span>  <span class="keywordflow">return</span> {};</div><div class="line"><a name="l02336"></a><span class="lineno"> 2336</span>  }</div><div class="line"><a name="l02337"></a><span class="lineno"> 2337</span>  <span class="keyword">const</span> Matcher* match = std::get_if<Matcher>(&body);</div><div class="line"><a name="l02338"></a><span class="lineno"> 2338</span>  <span class="comment">// match must be non-null, given the previous check</span></div><div class="line"><a name="l02339"></a><span class="lineno"> 2339</span>  <span class="keywordflow">return</span> toStdVector<VariableName>(match->selectors.getAlias(), match->numSelectors);</div><div class="line"><a name="l02340"></a><span class="lineno"> 2340</span>  }</div><div class="line"><a name="l02349"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1MFDataModel.html#a4ac934c4ca1e984f89f153fbdc9b3be1"> 2349</a></span>  std::vector<Variant> <a class="code" href="classicu_1_1message2_1_1MFDataModel.html#a4ac934c4ca1e984f89f153fbdc9b3be1">getVariants</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l02350"></a><span class="lineno"> 2350</span>  <span class="comment">// Return empty vector if no variants</span></div><div class="line"><a name="l02351"></a><span class="lineno"> 2351</span>  <span class="keywordflow">if</span> (std::holds_alternative<Pattern>(body)) {</div><div class="line"><a name="l02352"></a><span class="lineno"> 2352</span>  <span class="keywordflow">return</span> {};</div><div class="line"><a name="l02353"></a><span class="lineno"> 2353</span>  }</div><div class="line"><a name="l02354"></a><span class="lineno"> 2354</span>  <span class="keyword">const</span> Matcher* match = std::get_if<Matcher>(&body);</div><div class="line"><a name="l02355"></a><span class="lineno"> 2355</span>  <span class="comment">// match must be non-null, given the previous check</span></div><div class="line"><a name="l02356"></a><span class="lineno"> 2356</span>  <span class="keywordflow">return</span> toStdVector<Variant>(match->variants.getAlias(), match->numVariants);</div><div class="line"><a name="l02357"></a><span class="lineno"> 2357</span>  <span class="keywordflow">return</span> {};</div><div class="line"><a name="l02358"></a><span class="lineno"> 2358</span>  }</div><div class="line"><a name="l02368"></a><span class="lineno"> 2368</span>  <span class="keyword">const</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Pattern.html">Pattern</a>& getPattern() <span class="keyword">const</span>;</div><div class="line"><a name="l02369"></a><span class="lineno"> 2369</span> </div><div class="line"><a name="l02377"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1MFDataModel.html#accd6d3a444e697f991a181d459218ad4"> 2377</a></span>  <span class="keyword">class </span><a class="code" href="utypes_8h.html#ab9d90a30137b6ec046fe59e79b09745a">U_I18N_API</a> <a class="code" href="classicu_1_1message2_1_1MFDataModel_1_1Builder.html">Builder</a>;</div><div class="line"><a name="l02378"></a><span class="lineno"> 2378</span> </div><div class="line"><a name="l02386"></a><span class="lineno"> 2386</span>  <a class="code" href="classicu_1_1message2_1_1MFDataModel.html">MFDataModel</a>();</div><div class="line"><a name="l02395"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1MFDataModel.html#ab8c013009e2bd578da32f209233e725d"> 2395</a></span>  <span class="keyword">friend</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classicu_1_1message2_1_1MFDataModel.html#ab8c013009e2bd578da32f209233e725d">swap</a>(<a class="code" href="classicu_1_1message2_1_1MFDataModel.html">MFDataModel</a>& m1, <a class="code" href="classicu_1_1message2_1_1MFDataModel.html">MFDataModel</a>& m2) noexcept {</div><div class="line"><a name="l02396"></a><span class="lineno"> 2396</span>  <span class="keyword">using</span> std::swap;</div><div class="line"><a name="l02397"></a><span class="lineno"> 2397</span> </div><div class="line"><a name="l02398"></a><span class="lineno"> 2398</span>  <span class="keywordflow">if</span> (m1.bogus) {</div><div class="line"><a name="l02399"></a><span class="lineno"> 2399</span>  m2.bogus = <span class="keyword">true</span>;</div><div class="line"><a name="l02400"></a><span class="lineno"> 2400</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l02401"></a><span class="lineno"> 2401</span>  }</div><div class="line"><a name="l02402"></a><span class="lineno"> 2402</span>  <span class="keywordflow">if</span> (m2.bogus) {</div><div class="line"><a name="l02403"></a><span class="lineno"> 2403</span>  m1.bogus = <span class="keyword">true</span>;</div><div class="line"><a name="l02404"></a><span class="lineno"> 2404</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l02405"></a><span class="lineno"> 2405</span>  }</div><div class="line"><a name="l02406"></a><span class="lineno"> 2406</span>  swap(m1.body, m2.body);</div><div class="line"><a name="l02407"></a><span class="lineno"> 2407</span>  swap(m1.bindings, m2.bindings);</div><div class="line"><a name="l02408"></a><span class="lineno"> 2408</span>  swap(m1.bindingsLen, m2.bindingsLen);</div><div class="line"><a name="l02409"></a><span class="lineno"> 2409</span>  }</div><div class="line"><a name="l02416"></a><span class="lineno"> 2416</span>  <a class="code" href="classicu_1_1message2_1_1MFDataModel.html">MFDataModel</a>& operator=(<a class="code" href="classicu_1_1message2_1_1MFDataModel.html">MFDataModel</a>) noexcept;</div><div class="line"><a name="l02423"></a><span class="lineno"> 2423</span>  <a class="code" href="classicu_1_1message2_1_1MFDataModel.html">MFDataModel</a>(<span class="keyword">const</span> <a class="code" href="classicu_1_1message2_1_1MFDataModel.html">MFDataModel</a>& other);</div><div class="line"><a name="l02430"></a><span class="lineno"> 2430</span>  <span class="keyword">virtual</span> ~<a class="code" href="classicu_1_1message2_1_1MFDataModel.html">MFDataModel</a>();</div><div class="line"><a name="l02431"></a><span class="lineno"> 2431</span> </div><div class="line"><a name="l02439"></a><span class="lineno"><a class="line" href="classicu_1_1message2_1_1MFDataModel_1_1Builder.html"> 2439</a></span>  <span class="keyword">class </span><a class="code" href="utypes_8h.html#ab9d90a30137b6ec046fe59e79b09745a">U_I18N_API</a> <a class="code" href="classicu_1_1message2_1_1MFDataModel_1_1Builder.html">Builder</a> : <span class="keyword">public</span> <a class="code" href="classicu_1_1UMemory.html">UMemory</a> {</div><div class="line"><a name="l02440"></a><span class="lineno"> 2440</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l02441"></a><span class="lineno"> 2441</span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classicu_1_1message2_1_1MFDataModel.html">MFDataModel</a>;</div><div class="line"><a name="l02442"></a><span class="lineno"> 2442</span> </div><div class="line"><a name="l02443"></a><span class="lineno"> 2443</span>  <span class="keywordtype">void</span> checkDuplicate(<span class="keyword">const</span> <a class="code" href="classicu_1_1UnicodeString.html">VariableName</a>&, <a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a>&) <span class="keyword">const</span>;</div><div class="line"><a name="l02444"></a><span class="lineno"> 2444</span>  <span class="keywordtype">void</span> buildSelectorsMessage(<a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a>&);</div><div class="line"><a name="l02445"></a><span class="lineno"> 2445</span>  <span class="keywordtype">bool</span> hasPattern = <span class="keyword">true</span>;</div><div class="line"><a name="l02446"></a><span class="lineno"> 2446</span>  <span class="keywordtype">bool</span> hasSelectors = <span class="keyword">false</span>;</div><div class="line"><a name="l02447"></a><span class="lineno"> 2447</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Pattern.html">Pattern</a> pattern;</div><div class="line"><a name="l02448"></a><span class="lineno"> 2448</span>  <span class="comment">// The following members are not LocalPointers for the same reason as in SelectorKeys::Builder</span></div><div class="line"><a name="l02449"></a><span class="lineno"> 2449</span>  UVector* selectors = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l02450"></a><span class="lineno"> 2450</span>  UVector* variants = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l02451"></a><span class="lineno"> 2451</span>  UVector* bindings = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l02452"></a><span class="lineno"> 2452</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l02465"></a><span class="lineno"> 2465</span>  <a class="code" href="classicu_1_1message2_1_1MFDataModel_1_1Builder.html">Builder</a>& addBinding(<a class="code" href="classicu_1_1message2_1_1data__model_1_1Binding.html">Binding</a>&& b, <a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a>& status);</div><div class="line"><a name="l02477"></a><span class="lineno"> 2477</span>  <a class="code" href="classicu_1_1message2_1_1MFDataModel_1_1Builder.html">Builder</a>& addSelector(<a class="code" href="classicu_1_1UnicodeString.html">VariableName</a>&& selector, <a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a>& errorCode);</div><div class="line"><a name="l02490"></a><span class="lineno"> 2490</span>  <a class="code" href="classicu_1_1message2_1_1MFDataModel_1_1Builder.html">Builder</a>& addVariant(<a class="code" href="classicu_1_1message2_1_1data__model_1_1SelectorKeys.html">SelectorKeys</a>&& keys, <a class="code" href="classicu_1_1message2_1_1data__model_1_1Pattern.html">Pattern</a>&& pattern, <a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a>& errorCode) noexcept;</div><div class="line"><a name="l02502"></a><span class="lineno"> 2502</span>  <a class="code" href="classicu_1_1message2_1_1MFDataModel_1_1Builder.html">Builder</a>& setPattern(<a class="code" href="classicu_1_1message2_1_1data__model_1_1Pattern.html">Pattern</a>&& pattern);</div><div class="line"><a name="l02522"></a><span class="lineno"> 2522</span>  <a class="code" href="classicu_1_1message2_1_1MFDataModel.html">MFDataModel</a> build(<a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a>& status) <span class="keyword">const</span> noexcept;</div><div class="line"><a name="l02535"></a><span class="lineno"> 2535</span>  <a class="code" href="classicu_1_1message2_1_1MFDataModel_1_1Builder.html">Builder</a>(<a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a>& status);</div><div class="line"><a name="l02542"></a><span class="lineno"> 2542</span>  <span class="keyword">virtual</span> ~<a class="code" href="classicu_1_1message2_1_1MFDataModel_1_1Builder.html">Builder</a>();</div><div class="line"><a name="l02543"></a><span class="lineno"> 2543</span>  <a class="code" href="classicu_1_1message2_1_1MFDataModel_1_1Builder.html">Builder</a>(<span class="keyword">const</span> <a class="code" href="classicu_1_1message2_1_1MFDataModel_1_1Builder.html">Builder</a>&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l02544"></a><span class="lineno"> 2544</span>  <a class="code" href="classicu_1_1message2_1_1MFDataModel_1_1Builder.html">Builder</a>& operator=(<span class="keyword">const</span> <a class="code" href="classicu_1_1message2_1_1MFDataModel_1_1Builder.html">Builder</a>&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l02545"></a><span class="lineno"> 2545</span>  <a class="code" href="classicu_1_1message2_1_1MFDataModel_1_1Builder.html">Builder</a>(<a class="code" href="classicu_1_1message2_1_1MFDataModel_1_1Builder.html">Builder</a>&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l02546"></a><span class="lineno"> 2546</span>  <a class="code" href="classicu_1_1message2_1_1MFDataModel_1_1Builder.html">Builder</a>& operator=(<a class="code" href="classicu_1_1message2_1_1MFDataModel_1_1Builder.html">Builder</a>&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l02547"></a><span class="lineno"> 2547</span>  }; <span class="comment">// class Builder</span></div><div class="line"><a name="l02548"></a><span class="lineno"> 2548</span> </div><div class="line"><a name="l02549"></a><span class="lineno"> 2549</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l02550"></a><span class="lineno"> 2550</span>  <span class="keyword">friend</span> <span class="keyword">class </span>Checker;</div><div class="line"><a name="l02551"></a><span class="lineno"> 2551</span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classicu_1_1message2_1_1MessageFormatter.html">MessageFormatter</a>;</div><div class="line"><a name="l02552"></a><span class="lineno"> 2552</span>  <span class="keyword">friend</span> <span class="keyword">class </span>Serializer;</div><div class="line"><a name="l02553"></a><span class="lineno"> 2553</span> </div><div class="line"><a name="l02554"></a><span class="lineno"> 2554</span>  <a class="code" href="classicu_1_1message2_1_1data__model_1_1Pattern.html">Pattern</a> empty; <span class="comment">// Provided so that `getPattern()` can return a result</span></div><div class="line"><a name="l02555"></a><span class="lineno"> 2555</span>  <span class="comment">// if called on a selectors message</span></div><div class="line"><a name="l02556"></a><span class="lineno"> 2556</span>  <span class="keywordtype">bool</span> hasPattern()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> std::holds_alternative<Pattern>(body); }</div><div class="line"><a name="l02557"></a><span class="lineno"> 2557</span> </div><div class="line"><a name="l02558"></a><span class="lineno"> 2558</span>  <span class="keywordtype">bool</span> bogus = <span class="keyword">false</span>; <span class="comment">// Set if a copy constructor fails</span></div><div class="line"><a name="l02559"></a><span class="lineno"> 2559</span> </div><div class="line"><a name="l02560"></a><span class="lineno"> 2560</span>  <span class="comment">// A message body is either a matcher (selector list and variant list),</span></div><div class="line"><a name="l02561"></a><span class="lineno"> 2561</span>  <span class="comment">// or a single pattern</span></div><div class="line"><a name="l02562"></a><span class="lineno"> 2562</span>  std::variant<Matcher, Pattern> body;</div><div class="line"><a name="l02563"></a><span class="lineno"> 2563</span> </div><div class="line"><a name="l02564"></a><span class="lineno"> 2564</span>  <span class="comment">// Bindings for local variables</span></div><div class="line"><a name="l02565"></a><span class="lineno"> 2565</span>  <span class="comment">/* const */</span> <a class="code" href="classicu_1_1LocalArray.html">LocalArray<Binding></a> bindings;</div><div class="line"><a name="l02566"></a><span class="lineno"> 2566</span>  int32_t bindingsLen = 0;</div><div class="line"><a name="l02567"></a><span class="lineno"> 2567</span> </div><div class="line"><a name="l02568"></a><span class="lineno"> 2568</span>  <span class="keyword">const</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Binding.html">Binding</a>* getLocalVariablesInternal() <span class="keyword">const</span>;</div><div class="line"><a name="l02569"></a><span class="lineno"> 2569</span>  <span class="keyword">const</span> <a class="code" href="classicu_1_1UnicodeString.html">VariableName</a>* getSelectorsInternal() <span class="keyword">const</span>;</div><div class="line"><a name="l02570"></a><span class="lineno"> 2570</span>  <span class="keyword">const</span> <a class="code" href="classicu_1_1message2_1_1data__model_1_1Variant.html">Variant</a>* getVariantsInternal() <span class="keyword">const</span>;</div><div class="line"><a name="l02571"></a><span class="lineno"> 2571</span> </div><div class="line"><a name="l02572"></a><span class="lineno"> 2572</span>  int32_t numSelectors()<span class="keyword"> const </span>{</div><div class="line"><a name="l02573"></a><span class="lineno"> 2573</span>  <span class="keyword">const</span> Matcher* matcher = std::get_if<Matcher>(&body);</div><div class="line"><a name="l02574"></a><span class="lineno"> 2574</span>  <span class="keywordflow">return</span> (matcher == <span class="keyword">nullptr</span> ? 0 : matcher->numSelectors);</div><div class="line"><a name="l02575"></a><span class="lineno"> 2575</span>  }</div><div class="line"><a name="l02576"></a><span class="lineno"> 2576</span>  int32_t numVariants()<span class="keyword"> const </span>{</div><div class="line"><a name="l02577"></a><span class="lineno"> 2577</span>  <span class="keyword">const</span> Matcher* matcher = std::get_if<Matcher>(&body);</div><div class="line"><a name="l02578"></a><span class="lineno"> 2578</span>  <span class="keywordflow">return</span> (matcher == <span class="keyword">nullptr</span> ? 0 : matcher->numVariants);</div><div class="line"><a name="l02579"></a><span class="lineno"> 2579</span>  }</div><div class="line"><a name="l02580"></a><span class="lineno"> 2580</span> </div><div class="line"><a name="l02581"></a><span class="lineno"> 2581</span>  <span class="comment">// Helper</span></div><div class="line"><a name="l02582"></a><span class="lineno"> 2582</span>  <span class="keywordtype">void</span> initBindings(<span class="keyword">const</span> Binding*);</div><div class="line"><a name="l02583"></a><span class="lineno"> 2583</span> </div><div class="line"><a name="l02584"></a><span class="lineno"> 2584</span>  MFDataModel(<span class="keyword">const</span> Builder& builder, <a class="code" href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a>&) noexcept;</div><div class="line"><a name="l02585"></a><span class="lineno"> 2585</span>  }; <span class="comment">// class MFDataModel</span></div><div class="line"><a name="l02586"></a><span class="lineno"> 2586</span> </div><div class="line"><a name="l02587"></a><span class="lineno"> 2587</span> } <span class="comment">// namespace message2</span></div><div class="line"><a name="l02588"></a><span class="lineno"> 2588</span> </div><div class="line"><a name="l02589"></a><span class="lineno"> 2589</span> U_NAMESPACE_END</div><div class="line"><a name="l02590"></a><span class="lineno"> 2590</span> </div><div class="line"><a name="l02591"></a><span class="lineno"> 2591</span> <span class="preprocessor">#endif // U_HIDE_DEPRECATED_API</span></div><div class="line"><a name="l02592"></a><span class="lineno"> 2592</span> </div><div class="line"><a name="l02593"></a><span class="lineno"> 2593</span> <span class="preprocessor">#endif </span><span class="comment">/* #if !UCONFIG_NO_MF2 */</span><span class="preprocessor"></span></div><div class="line"><a name="l02594"></a><span class="lineno"> 2594</span> </div><div class="line"><a name="l02595"></a><span class="lineno"> 2595</span> <span class="preprocessor">#endif </span><span class="comment">/* #if !UCONFIG_NO_FORMATTING */</span><span class="preprocessor"></span></div><div class="line"><a name="l02596"></a><span class="lineno"> 2596</span> </div><div class="line"><a name="l02597"></a><span class="lineno"> 2597</span> <span class="preprocessor">#endif </span><span class="comment">/* #if !UCONFIG_NO_NORMALIZATION */</span><span class="preprocessor"></span></div><div class="line"><a name="l02598"></a><span class="lineno"> 2598</span> </div><div class="line"><a name="l02599"></a><span class="lineno"> 2599</span> <span class="preprocessor">#endif </span><span class="comment">/* U_SHOW_CPLUSPLUS_API */</span><span class="preprocessor"></span></div><div class="line"><a name="l02600"></a><span class="lineno"> 2600</span> </div><div class="line"><a name="l02601"></a><span class="lineno"> 2601</span> <span class="preprocessor">#endif // MESSAGEFORMAT_DATA_MODEL_H</span></div><div class="line"><a name="l02602"></a><span class="lineno"> 2602</span> </div><div class="line"><a name="l02603"></a><span class="lineno"> 2603</span> <span class="comment">// eof</span></div><div class="line"><a name="l02604"></a><span class="lineno"> 2604</span> </div><div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Variant_html_aaf55f489ba2e4b96d3334a3b1c02a348"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Variant.html#aaf55f489ba2e4b96d3334a3b1c02a348">icu::message2::data_model::Variant::getKeys</a></div><div class="ttdeci">const SelectorKeys & getKeys() const</div><div class="ttdoc">Accesses the keys of the variant. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l01963">messageformat2_data_model.h:1963</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1SelectorKeys_html_a366610831bc6059d72ecaca4e9f13ab3"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1SelectorKeys.html#a366610831bc6059d72ecaca4e9f13ab3">icu::message2::data_model::SelectorKeys::swap</a></div><div class="ttdeci">friend void swap(SelectorKeys &s1, SelectorKeys &s2) noexcept</div><div class="ttdoc">Non-member swap function. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l00626">messageformat2_data_model.h:626</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Markup_1_1Builder_html"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Markup_1_1Builder.html">icu::message2::data_model::Markup::Builder</a></div><div class="ttdoc">The mutable Markup::Builder class allows the markup to be constructed incrementally. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l01130">messageformat2_data_model.h:1130</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Expression_html_a88eb7ba31fb58c1a4a04651c581e053a"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Expression.html#a88eb7ba31fb58c1a4a04651c581e053a">icu::message2::data_model::Expression::getAttributes</a></div><div class="ttdeci">std::vector< Option > getAttributes() const</div><div class="ttdoc">Gets the attributes of this expression. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l01323">messageformat2_data_model.h:1323</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Variant_html"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Variant.html">icu::message2::data_model::Variant</a></div><div class="ttdoc">A Variant pairs a list of keys with a pattern It corresponds to the Variant interface defined in http...</div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l01944">messageformat2_data_model.h:1944</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Markup_html_a382ac6ff9481305fb0b2ec3d638917d6"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Markup.html#a382ac6ff9481305fb0b2ec3d638917d6">icu::message2::data_model::Markup::getAttributes</a></div><div class="ttdeci">std::vector< Option > getAttributes() const</div><div class="ttdoc">Gets the attributes of this markup. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l01105">messageformat2_data_model.h:1105</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1PatternPart_html"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1PatternPart.html">icu::message2::data_model::PatternPart</a></div><div class="ttdoc">A PatternPart is a single element (text or expression) in a Pattern. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l01515">messageformat2_data_model.h:1515</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Variant_html_a6167953fb8369b0a73a949b41995e136"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Variant.html#a6167953fb8369b0a73a949b41995e136">icu::message2::data_model::Variant::swap</a></div><div class="ttdeci">friend void swap(Variant &v1, Variant &v2) noexcept</div><div class="ttdoc">Non-member swap function. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l01984">messageformat2_data_model.h:1984</a></div></div> <div class="ttc" id="namespaceicu_html_a8d8f68e93f4a83a227b82cec7745dff6"><div class="ttname"><a href="namespaceicu.html#a8d8f68e93f4a83a227b82cec7745dff6">icu::operator!=</a></div><div class="ttdeci">bool operator!=(const StringPiece &x, const StringPiece &y)</div><div class="ttdoc">Global operator != for StringPiece. </div><div class="ttdef"><b>Definition:</b> <a href="stringpiece_8h_source.html#l00346">stringpiece.h:346</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Markup_1_1Builder_html_a9fe99a490f023193e1cce8c202f2c57a"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Markup_1_1Builder.html#a9fe99a490f023193e1cce8c202f2c57a">icu::message2::data_model::Markup::Builder::setClose</a></div><div class="ttdeci">Builder & setClose()</div><div class="ttdoc">Sets this to be an closing markup. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l01166">messageformat2_data_model.h:1166</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Variant_html_a16dfe6ffb8e6b969bd4309ad3f702cf8"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Variant.html#a16dfe6ffb8e6b969bd4309ad3f702cf8">icu::message2::data_model::Variant::Variant</a></div><div class="ttdeci">Variant(const SelectorKeys &keys, Pattern &&pattern)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l01975">messageformat2_data_model.h:1975</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1MessageFormatter_html"><div class="ttname"><a href="classicu_1_1message2_1_1MessageFormatter.html">icu::message2::MessageFormatter</a></div><div class="ttdef"><b>Definition:</b> <a href="messageformat2_8h_source.html#l00054">messageformat2.h:54</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1PatternPart_html_a7d8020e3e2012a2b1c9671b553e1ec8b"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1PatternPart.html#a7d8020e3e2012a2b1c9671b553e1ec8b">icu::message2::data_model::PatternPart::isText</a></div><div class="ttdeci">UBool isText() const</div><div class="ttdoc">Checks if the part is a text part. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l01525">messageformat2_data_model.h:1525</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Markup_1_1Builder_html_a02cfc98cc696175d8ff9778138108fbb"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Markup_1_1Builder.html#a02cfc98cc696175d8ff9778138108fbb">icu::message2::data_model::Markup::Builder::setName</a></div><div class="ttdeci">Builder & setName(const UnicodeString &n)</div><div class="ttdoc">Sets the name of this markup. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l01148">messageformat2_data_model.h:1148</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Literal_html_aee309e55585159159e0f2cd832ac956c"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Literal.html#aee309e55585159159e0f2cd832ac956c">icu::message2::data_model::Literal::Literal</a></div><div class="ttdeci">Literal(const Literal &other)</div><div class="ttdoc">Copy constructor. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l00126">messageformat2_data_model.h:126</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Binding_html_a913928647afa118a938b6a1291ec6b33"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Binding.html#a913928647afa118a938b6a1291ec6b33">icu::message2::data_model::Binding::Binding</a></div><div class="ttdeci">Binding()</div><div class="ttdoc">Default constructor. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l02127">messageformat2_data_model.h:2127</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1MFDataModel_html_a4ac934c4ca1e984f89f153fbdc9b3be1"><div class="ttname"><a href="classicu_1_1message2_1_1MFDataModel.html#a4ac934c4ca1e984f89f153fbdc9b3be1">icu::message2::MFDataModel::getVariants</a></div><div class="ttdeci">std::vector< Variant > getVariants() const</div><div class="ttdoc">Accesses the variants. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l02349">messageformat2_data_model.h:2349</a></div></div> <div class="ttc" id="namespaceicu_html_a1c2f6ca43e636f38d1a3291eb851e9f0"><div class="ttname"><a href="namespaceicu.html#a1c2f6ca43e636f38d1a3291eb851e9f0">icu::operator==</a></div><div class="ttdeci">U_EXPORT UBool operator==(const StringPiece &x, const StringPiece &y)</div><div class="ttdoc">Global operator == for StringPiece. </div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Operator_html_a45f6b0d1656f7ec3e316a0f1c4148498"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Operator.html#a45f6b0d1656f7ec3e316a0f1c4148498">icu::message2::data_model::Operator::swap</a></div><div class="ttdeci">friend void swap(Operator &o1, Operator &o2) noexcept</div><div class="ttdoc">Non-member swap function. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l00968">messageformat2_data_model.h:968</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Literal_html_a816692081978fc6cd5afbe53ebe990ce"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Literal.html#a816692081978fc6cd5afbe53ebe990ce">icu::message2::data_model::Literal::Literal</a></div><div class="ttdeci">Literal(UBool q, const UnicodeString &s)</div><div class="ttdoc">Literal constructor. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l00119">messageformat2_data_model.h:119</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Pattern_html_a0c64899524687dd8068ccd9f3f8d1b2f"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Pattern.html#a0c64899524687dd8068ccd9f3f8d1b2f">icu::message2::data_model::Pattern::end</a></div><div class="ttdeci">Iterator end() const</div><div class="ttdoc">Returns a special value to mark the end of iteration. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l01705">messageformat2_data_model.h:1705</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Option_html_a0413eb5548c43f05fda7b36b79b59fff"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Option.html#a0413eb5548c43f05fda7b36b79b59fff">icu::message2::data_model::Option::getName</a></div><div class="ttdeci">const UnicodeString & getName() const</div><div class="ttdoc">Accesses the left-hand side of the option. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l00700">messageformat2_data_model.h:700</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Option_html_abaff252971ddf9c65356b2d9967fe3cb"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Option.html#abaff252971ddf9c65356b2d9967fe3cb">icu::message2::data_model::Option::Option</a></div><div class="ttdeci">Option()</div><div class="ttdoc">Default constructor. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l00719">messageformat2_data_model.h:719</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Literal_html_a46159be7d8f6fd452db705c6289cfab2"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Literal.html#a46159be7d8f6fd452db705c6289cfab2">icu::message2::data_model::Literal::swap</a></div><div class="ttdeci">friend void swap(Literal &l1, Literal &l2) noexcept</div><div class="ttdoc">Non-member swap function. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l00135">messageformat2_data_model.h:135</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Operator_html_a36423113545ee28a22ba9d7b1b02484d"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Operator.html#a36423113545ee28a22ba9d7b1b02484d">icu::message2::data_model::Operator::Operator</a></div><div class="ttdeci">Operator()</div><div class="ttdoc">Default constructor. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l00988">messageformat2_data_model.h:988</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1SelectorKeys_html_ae6e271c613108312f0a3fe251144b7e4"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1SelectorKeys.html#ae6e271c613108312f0a3fe251144b7e4">icu::message2::data_model::SelectorKeys::getKeys</a></div><div class="ttdeci">std::vector< Key > getKeys() const</div><div class="ttdoc">Returns the underlying list of keys. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l00530">messageformat2_data_model.h:530</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1SelectorKeys_html_acd9fe54c48969f73a9ebde2afccf3cbc"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1SelectorKeys.html#acd9fe54c48969f73a9ebde2afccf3cbc">icu::message2::data_model::SelectorKeys::SelectorKeys</a></div><div class="ttdeci">SelectorKeys()</div><div class="ttdoc">Default constructor. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l00617">messageformat2_data_model.h:617</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Markup_html_aff6ed17d6e786d9c64967e396e99a4e6"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Markup.html#aff6ed17d6e786d9c64967e396e99a4e6">icu::message2::data_model::Markup::isStandalone</a></div><div class="ttdeci">UBool isStandalone() const</div><div class="ttdoc">Checks if this markup is an standalone tag. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l01078">messageformat2_data_model.h:1078</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Pattern_html_ad94dddd151a9146a6d4848f24a479f74"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Pattern.html#ad94dddd151a9146a6d4848f24a479f74">icu::message2::data_model::Pattern::begin</a></div><div class="ttdeci">Iterator begin() const</div><div class="ttdoc">Returns the parts of this pattern. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l01693">messageformat2_data_model.h:1693</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1MFDataModel_html_a10d1b944f18bb60e8ec8471e00b9ca9d"><div class="ttname"><a href="classicu_1_1message2_1_1MFDataModel.html#a10d1b944f18bb60e8ec8471e00b9ca9d">icu::message2::MFDataModel::getSelectors</a></div><div class="ttdeci">std::vector< VariableName > getSelectors() const</div><div class="ttdoc">Accesses the selectors. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l02333">messageformat2_data_model.h:2333</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Literal_html_a262bae71a59b0c00d0d9cdc359499ee6"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Literal.html#a262bae71a59b0c00d0d9cdc359499ee6">icu::message2::data_model::Literal::isQuoted</a></div><div class="ttdeci">UBool isQuoted() const</div><div class="ttdoc">Determines if this literal appeared as a quoted literal in the message. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l00107">messageformat2_data_model.h:107</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Option_html_ac7c38011ccfc8ffe41c2e3b6062f4201"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Option.html#ac7c38011ccfc8ffe41c2e3b6062f4201">icu::message2::data_model::Option::Option</a></div><div class="ttdeci">Option(const UnicodeString &n, Operand &&r)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l00711">messageformat2_data_model.h:711</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Markup_html_a28b9db0d4de24e7de5aac969a2817976"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Markup.html#a28b9db0d4de24e7de5aac969a2817976">icu::message2::data_model::Markup::Markup</a></div><div class="ttdeci">Markup()</div><div class="ttdoc">Default constructor. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l01113">messageformat2_data_model.h:1113</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Literal_html"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Literal.html">icu::message2::data_model::Literal</a></div><div class="ttdoc">The Literal class corresponds to the literal nonterminal in the MessageFormat 2 grammar, https://github.com/unicode-org/message-format-wg/blob/main/spec/message.abnf and the Literal interface defined in // https://github.com/unicode-org/message-format-wg/blob/main/spec/data-model.md#expressions. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l00078">messageformat2_data_model.h:78</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Option_html"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Option.html">icu::message2::data_model::Option</a></div><div class="ttdoc">An Option pairs an option name with an Operand. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l00681">messageformat2_data_model.h:681</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Pattern_1_1Builder_html"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Pattern_1_1Builder.html">icu::message2::data_model::Pattern::Builder</a></div><div class="ttdoc">The mutable Pattern::Builder class allows the pattern to be constructed one part at a time...</div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l01717">messageformat2_data_model.h:1717</a></div></div> <div class="ttc" id="structicu_1_1message2_1_1data__model_1_1Pattern_1_1Iterator_html_ab07a41f471f7e8b7714d1b9c4586b08b"><div class="ttname"><a href="structicu_1_1message2_1_1data__model_1_1Pattern_1_1Iterator.html#ab07a41f471f7e8b7714d1b9c4586b08b">icu::message2::data_model::Pattern::Iterator::operator++</a></div><div class="ttdeci">Iterator operator++()</div><div class="ttdoc">Increment operator (advances to the next iterator position) </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l01879">messageformat2_data_model.h:1879</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Key_html_a60e110f93b433548c61f94b2638ab94e"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Key.html#a60e110f93b433548c61f94b2638ab94e">icu::message2::data_model::Key::Key</a></div><div class="ttdeci">Key(const Literal &lit)</div><div class="ttdoc">Literal key constructor. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l00432">messageformat2_data_model.h:432</a></div></div> <div class="ttc" id="utypes_8h_html_ab9d90a30137b6ec046fe59e79b09745a"><div class="ttname"><a href="utypes_8h.html#ab9d90a30137b6ec046fe59e79b09745a">U_I18N_API</a></div><div class="ttdeci">#define U_I18N_API</div><div class="ttdoc">Set to export library symbols from inside the i18n library, and to import them from outside...</div><div class="ttdef"><b>Definition:</b> <a href="utypes_8h_source.html#l00316">utypes.h:316</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Operand_html_aac4448d90520e35507b58660d627a4f8"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Operand.html#aac4448d90520e35507b58660d627a4f8">icu::message2::data_model::Operand::Operand</a></div><div class="ttdeci">Operand(const Literal &l)</div><div class="ttdoc">Literal operand constructor. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l00332">messageformat2_data_model.h:332</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1SelectorKeys_1_1Builder_html"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1SelectorKeys_1_1Builder.html">icu::message2::data_model::SelectorKeys::Builder</a></div><div class="ttdoc">The mutable SelectorKeys::Builder class allows the key list to be constructed one key at a time...</div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l00542">messageformat2_data_model.h:542</a></div></div> <div class="ttc" id="structicu_1_1message2_1_1data__model_1_1Pattern_1_1Iterator_html"><div class="ttname"><a href="structicu_1_1message2_1_1data__model_1_1Pattern_1_1Iterator.html">icu::message2::data_model::Pattern::Iterator</a></div><div class="ttdoc">The Pattern::Iterator class provides an iterator over the formattable parts of a pattern. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l01847">messageformat2_data_model.h:1847</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Operand_html_ad9c5965c2ab254e8f805f4560a86f493"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Operand.html#ad9c5965c2ab254e8f805f4560a86f493">icu::message2::data_model::Operand::Operand</a></div><div class="ttdeci">Operand()</div><div class="ttdoc">Default constructor. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l00312">messageformat2_data_model.h:312</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Expression_html_ae063e5c63f2a8a5d0950b9ef9c7fa913"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Expression.html#ae063e5c63f2a8a5d0950b9ef9c7fa913">icu::message2::data_model::Expression::swap</a></div><div class="ttdeci">friend void swap(Expression &e1, Expression &e2) noexcept</div><div class="ttdoc">Non-member swap function. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l01423">messageformat2_data_model.h:1423</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Expression_1_1Builder_html"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Expression_1_1Builder.html">icu::message2::data_model::Expression::Builder</a></div><div class="ttdoc">The mutable Expression::Builder class allows the operator to be constructed incrementally. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l01333">messageformat2_data_model.h:1333</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Markup_html"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Markup.html">icu::message2::data_model::Markup</a></div><div class="ttdoc">The Markup class corresponds to the markup nonterminal in the MessageFormat 2 grammar and the markup ...</div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l01050">messageformat2_data_model.h:1050</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Key_html_a2b3df131ace84d85284a2a5043829cd7"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Key.html#a2b3df131ace84d85284a2a5043829cd7">icu::message2::data_model::Key::Key</a></div><div class="ttdeci">Key(const Key &other)</div><div class="ttdoc">Copy constructor. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l00414">messageformat2_data_model.h:414</a></div></div> <div class="ttc" id="localpointer_8h_html"><div class="ttname"><a href="localpointer_8h.html">localpointer.h</a></div><div class="ttdoc">C++ API: "Smart pointers" for use with and in ICU4C C++ code. </div></div> <div class="ttc" id="classicu_1_1message2_1_1MFDataModel_html"><div class="ttname"><a href="classicu_1_1message2_1_1MFDataModel.html">icu::message2::MFDataModel</a></div><div class="ttdoc">The MFDataModel class describes a parsed representation of the text of a message. ...</div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l02274">messageformat2_data_model.h:2274</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Option_html_afe65b6a21ba45b36aa88e57b0494a03c"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Option.html#afe65b6a21ba45b36aa88e57b0494a03c">icu::message2::data_model::Option::swap</a></div><div class="ttdeci">friend void swap(Option &o1, Option &o2) noexcept</div><div class="ttdoc">Non-member swap function. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l00728">messageformat2_data_model.h:728</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Binding_html_af2ec4b8f815b7967592b8e1081f1a0f9"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Binding.html#af2ec4b8f815b7967592b8e1081f1a0f9">icu::message2::data_model::Binding::swap</a></div><div class="ttdeci">friend void swap(Binding &b1, Binding &b2) noexcept</div><div class="ttdoc">Non-member swap function. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l02097">messageformat2_data_model.h:2097</a></div></div> <div class="ttc" id="classicu_1_1LocalArray_html"><div class="ttname"><a href="classicu_1_1LocalArray.html">icu::LocalArray</a></div><div class="ttdoc">"Smart pointer" class, deletes objects via the C++ array delete[] operator. </div><div class="ttdef"><b>Definition:</b> <a href="localpointer_8h_source.html#l00366">localpointer.h:366</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Markup_html_ad7bc75813f5fcc0cb417a39be46ecdb0"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Markup.html#ad7bc75813f5fcc0cb417a39be46ecdb0">icu::message2::data_model::Markup::getOptions</a></div><div class="ttdeci">std::vector< Option > getOptions() const</div><div class="ttdoc">Gets the options of this markup. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l01096">messageformat2_data_model.h:1096</a></div></div> <div class="ttc" id="structicu_1_1message2_1_1data__model_1_1Pattern_1_1Iterator_html_a4f2f53c33496852cd7d41fc46dd8d94a"><div class="ttname"><a href="structicu_1_1message2_1_1data__model_1_1Pattern_1_1Iterator.html#a4f2f53c33496852cd7d41fc46dd8d94a">icu::message2::data_model::Pattern::Iterator::operator*</a></div><div class="ttdeci">reference operator*() const</div><div class="ttdoc">Dereference operator (gets the element at the current iterator position) </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l01869">messageformat2_data_model.h:1869</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1PatternPart_html_a0319364ae111c28db15b15d16308eda6"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1PatternPart.html#a0319364ae111c28db15b15d16308eda6">icu::message2::data_model::PatternPart::isExpression</a></div><div class="ttdeci">UBool isExpression() const</div><div class="ttdoc">Checks if the part is an expression part. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l01543">messageformat2_data_model.h:1543</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Operator_html"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Operator.html">icu::message2::data_model::Operator</a></div><div class="ttdoc">The Operator class corresponds to the FunctionRef type in the Expression interface defined in https:/...</div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l00854">messageformat2_data_model.h:854</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Key_html_abe22260eb719343c6a277b39dc94d053"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Key.html#abe22260eb719343c6a277b39dc94d053">icu::message2::data_model::Key::swap</a></div><div class="ttdeci">friend void swap(Key &k1, Key &k2) noexcept</div><div class="ttdoc">Non-member swap function. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l00441">messageformat2_data_model.h:441</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1MFDataModel_html_ab8c013009e2bd578da32f209233e725d"><div class="ttname"><a href="classicu_1_1message2_1_1MFDataModel.html#ab8c013009e2bd578da32f209233e725d">icu::message2::MFDataModel::swap</a></div><div class="ttdeci">friend void swap(MFDataModel &m1, MFDataModel &m2) noexcept</div><div class="ttdoc">Non-member swap function. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l02395">messageformat2_data_model.h:2395</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1PatternPart_html_a4e33912e8415a055b6a99f87a4e22aab"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1PatternPart.html#a4e33912e8415a055b6a99f87a4e22aab">icu::message2::data_model::PatternPart::PatternPart</a></div><div class="ttdeci">PatternPart(Expression &&e)</div><div class="ttdoc">Expression part constructor. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l01627">messageformat2_data_model.h:1627</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1MFDataModel_1_1Builder_html"><div class="ttname"><a href="classicu_1_1message2_1_1MFDataModel_1_1Builder.html">icu::message2::MFDataModel::Builder</a></div><div class="ttdoc">The mutable MFDataModel::Builder class allows the data model to be constructed incrementally. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l02439">messageformat2_data_model.h:2439</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1PatternPart_html_a3223945c74c9034135e801cef62dd45c"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1PatternPart.html#a3223945c74c9034135e801cef62dd45c">icu::message2::data_model::PatternPart::PatternPart</a></div><div class="ttdeci">PatternPart(const UnicodeString &t)</div><div class="ttdoc">Text part constructor. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l01617">messageformat2_data_model.h:1617</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Pattern_html_a8a5f728d83b2d3c4c5e34302bb18512b"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Pattern.html#a8a5f728d83b2d3c4c5e34302bb18512b">icu::message2::data_model::Pattern::Pattern</a></div><div class="ttdeci">Pattern()</div><div class="ttdoc">Default constructor. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l01800">messageformat2_data_model.h:1800</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1PatternPart_html_a614a6a3e9773cec9f1bc2b233068e148"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1PatternPart.html#a614a6a3e9773cec9f1bc2b233068e148">icu::message2::data_model::PatternPart::PatternPart</a></div><div class="ttdeci">PatternPart(Markup &&m)</div><div class="ttdoc">Markup part constructor. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l01637">messageformat2_data_model.h:1637</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Key_html_a610d2169401ac2ac6bab28782a4680b8"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Key.html#a610d2169401ac2ac6bab28782a4680b8">icu::message2::data_model::Key::Key</a></div><div class="ttdeci">Key()</div><div class="ttdoc">Wildcard constructor; constructs a Key representing the catchall or wildcard key, &#39;*&#39;...</div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l00422">messageformat2_data_model.h:422</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Operand_html"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Operand.html">icu::message2::data_model::Operand</a></div><div class="ttdoc">The Operand class corresponds to the operand nonterminal in the MessageFormat 2 grammar, https://github.com/unicode-org/message-format-wg/blob/main/spec/message.abnf . </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l00256">messageformat2_data_model.h:256</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Markup_1_1Builder_html_a3c8e7f3581112981c741bbd18bf28561"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Markup_1_1Builder.html#a3c8e7f3581112981c741bbd18bf28561">icu::message2::data_model::Markup::Builder::setOpen</a></div><div class="ttdeci">Builder & setOpen()</div><div class="ttdoc">Sets this to be an opening markup. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l01157">messageformat2_data_model.h:1157</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Expression_html"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Expression.html">icu::message2::data_model::Expression</a></div><div class="ttdoc">The Expression class corresponds to the expression nonterminal in the MessageFormat 2 grammar and the...</div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l01267">messageformat2_data_model.h:1267</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Binding_html_ad483377f061642534a8d948174909db7"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Binding.html#ad483377f061642534a8d948174909db7">icu::message2::data_model::Binding::Binding</a></div><div class="ttdeci">Binding(const VariableName &v, Expression &&e)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l02088">messageformat2_data_model.h:2088</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Binding_html"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Binding.html">icu::message2::data_model::Binding</a></div><div class="ttdoc">A Binding pairs a variable name with an expression. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l02036">messageformat2_data_model.h:2036</a></div></div> <div class="ttc" id="utypes_8h_html_a3343c1c8a8377277046774691c98d78c"><div class="ttname"><a href="utypes_8h.html#a3343c1c8a8377277046774691c98d78c">UErrorCode</a></div><div class="ttdeci">UErrorCode</div><div class="ttdoc">Standard ICU4C error code type, a substitute for exceptions. </div><div class="ttdef"><b>Definition:</b> <a href="utypes_8h_source.html#l00430">utypes.h:430</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Key_html"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Key.html">icu::message2::data_model::Key</a></div><div class="ttdoc">The Key class corresponds to the key nonterminal in the MessageFormat 2 grammar, https://github.com/unicode-org/message-format-wg/blob/main/spec/message.abnf . </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l00387">messageformat2_data_model.h:387</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1PatternPart_html_a6aa3e9f41a864257a3b9631ec18c4357"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1PatternPart.html#a6aa3e9f41a864257a3b9631ec18c4357">icu::message2::data_model::PatternPart::isMarkup</a></div><div class="ttdeci">UBool isMarkup() const</div><div class="ttdoc">Checks if the part is a markup part. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l01534">messageformat2_data_model.h:1534</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Markup_html_a48aa7fe4ee59b527cdfec8e16e824954"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Markup.html#a48aa7fe4ee59b527cdfec8e16e824954">icu::message2::data_model::Markup::isOpen</a></div><div class="ttdeci">UBool isOpen() const</div><div class="ttdoc">Checks if this markup is an opening tag. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l01060">messageformat2_data_model.h:1060</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Binding_html_a4b54c6fa7f03744ce8539d5ffa0fe7b0"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Binding.html#a4b54c6fa7f03744ce8539d5ffa0fe7b0">icu::message2::data_model::Binding::isLocal</a></div><div class="ttdeci">UBool isLocal() const</div><div class="ttdoc">Returns true if and only if this binding represents a local declaration. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l02078">messageformat2_data_model.h:2078</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Operand_html_ac2487034fbdee4176b0becf4bafa6553"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Operand.html#ac2487034fbdee4176b0becf4bafa6553">icu::message2::data_model::Operand::Operand</a></div><div class="ttdeci">Operand(const UnicodeString &v)</div><div class="ttdoc">Variable operand constructor. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l00322">messageformat2_data_model.h:322</a></div></div> <div class="ttc" id="utypes_8h_html"><div class="ttname"><a href="utypes_8h.html">utypes.h</a></div><div class="ttdoc">Basic definitions for ICU, for both C and C++ APIs. </div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Key_html_a3e0a0fcb4775e3324e9fa47fa3a09cfa"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Key.html#a3e0a0fcb4775e3324e9fa47fa3a09cfa">icu::message2::data_model::Key::isWildcard</a></div><div class="ttdeci">UBool isWildcard() const</div><div class="ttdoc">Determines if this is a wildcard key. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l00397">messageformat2_data_model.h:397</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Operator_html_a8ca86951633a9bf8e215f95e49a646f2"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Operator.html#a8ca86951633a9bf8e215f95e49a646f2">icu::message2::data_model::Operator::getOptions</a></div><div class="ttdeci">std::vector< Option > getOptions() const</div><div class="ttdoc">Accesses function options. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l00873">messageformat2_data_model.h:873</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Pattern_html"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Pattern.html">icu::message2::data_model::Pattern</a></div><div class="ttdoc">A Pattern is a sequence of formattable parts. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l01678">messageformat2_data_model.h:1678</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Variant_html_ad7e7d877e9d4d99c404a46edfb3ff89e"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Variant.html#ad7e7d877e9d4d99c404a46edfb3ff89e">icu::message2::data_model::Variant::getPattern</a></div><div class="ttdeci">const Pattern & getPattern() const</div><div class="ttdoc">Accesses the pattern of the variant. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l01954">messageformat2_data_model.h:1954</a></div></div> <div class="ttc" id="classicu_1_1UnicodeString_html"><div class="ttname"><a href="classicu_1_1UnicodeString.html">icu::UnicodeString</a></div><div class="ttdoc">UnicodeString is a string class that stores Unicode characters directly and provides similar function...</div><div class="ttdef"><b>Definition:</b> <a href="unistr_8h_source.html#l00295">unistr.h:295</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1SelectorKeys_html"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1SelectorKeys.html">icu::message2::data_model::SelectorKeys</a></div><div class="ttdoc">The SelectorKeys class represents the key list for a single variant. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l00518">messageformat2_data_model.h:518</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1PatternPart_html_aea57fc8a6d8adf84357db5796491ceb8"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1PatternPart.html#aea57fc8a6d8adf84357db5796491ceb8">icu::message2::data_model::PatternPart::swap</a></div><div class="ttdeci">friend void swap(PatternPart &p1, PatternPart &p2) noexcept</div><div class="ttdoc">Non-member swap function. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l01582">messageformat2_data_model.h:1582</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Binding_html_a624edaea1c627f28c28fdae60dd10992"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Binding.html#a624edaea1c627f28c28fdae60dd10992">icu::message2::data_model::Binding::getVariable</a></div><div class="ttdeci">const VariableName & getVariable() const</div><div class="ttdoc">Accesses the left-hand side of the binding. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l02055">messageformat2_data_model.h:2055</a></div></div> <div class="ttc" id="classicu_1_1UObject_html"><div class="ttname"><a href="classicu_1_1UObject.html">icu::UObject</a></div><div class="ttdoc">UObject is the common ICU "boilerplate" class. </div><div class="ttdef"><b>Definition:</b> <a href="uobject_8h_source.html#l00223">uobject.h:223</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Markup_html_ae5991663d3382e75f495e07e4f2f7fc8"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Markup.html#ae5991663d3382e75f495e07e4f2f7fc8">icu::message2::data_model::Markup::getName</a></div><div class="ttdeci">const UnicodeString & getName() const</div><div class="ttdoc">Gets the name of this markup. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l01087">messageformat2_data_model.h:1087</a></div></div> <div class="ttc" id="classicu_1_1UMemory_html"><div class="ttname"><a href="classicu_1_1UMemory.html">icu::UMemory</a></div><div class="ttdoc">UMemory is the common ICU base class. </div><div class="ttdef"><b>Definition:</b> <a href="uobject_8h_source.html#l00115">uobject.h:115</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Markup_1_1Builder_html_a0d26135bd405d4866528e6c4c9a930a3"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Markup_1_1Builder.html#a0d26135bd405d4866528e6c4c9a930a3">icu::message2::data_model::Markup::Builder::setStandalone</a></div><div class="ttdeci">Builder & setStandalone()</div><div class="ttdoc">Sets this to be a standalone markup. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l01175">messageformat2_data_model.h:1175</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1MFDataModel_html_ad372b4a79f2863330ee7db0150c15f08"><div class="ttname"><a href="classicu_1_1message2_1_1MFDataModel.html#ad372b4a79f2863330ee7db0150c15f08">icu::message2::MFDataModel::getLocalVariables</a></div><div class="ttdeci">std::vector< Binding > getLocalVariables() const</div><div class="ttdoc">Accesses the local variable declarations for this data model. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l02318">messageformat2_data_model.h:2318</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Operand_html_a8355a0bdc62fa17350eb5363988d41e7"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Operand.html#a8355a0bdc62fa17350eb5363988d41e7">icu::message2::data_model::Operand::swap</a></div><div class="ttdeci">friend void swap(Operand &o1, Operand &o2) noexcept</div><div class="ttdoc">Non-member swap function. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l00341">messageformat2_data_model.h:341</a></div></div> <div class="ttc" id="umachine_8h_html_a349ef00011f20ccd1d3b424445681aa5"><div class="ttname"><a href="umachine_8h.html#a349ef00011f20ccd1d3b424445681aa5">UBool</a></div><div class="ttdeci">int8_t UBool</div><div class="ttdoc">The ICU boolean type, a signed-byte integer. </div><div class="ttdef"><b>Definition:</b> <a href="umachine_8h_source.html#l00247">umachine.h:247</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Pattern_html_ac6361b31d7467366b64e29f0f5868537"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Pattern.html#ac6361b31d7467366b64e29f0f5868537">icu::message2::data_model::Pattern::swap</a></div><div class="ttdeci">friend void swap(Pattern &p1, Pattern &p2) noexcept</div><div class="ttdoc">Non-member swap function. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l01809">messageformat2_data_model.h:1809</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Markup_html_a844faa00dacbd7794f1ef338fdf4602f"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Markup.html#a844faa00dacbd7794f1ef338fdf4602f">icu::message2::data_model::Markup::isClose</a></div><div class="ttdeci">UBool isClose() const</div><div class="ttdoc">Checks if this markup is an closing tag. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l01069">messageformat2_data_model.h:1069</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Option_html_a7bce26188af97ec43284381c81806e57"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Option.html#a7bce26188af97ec43284381c81806e57">icu::message2::data_model::Option::getValue</a></div><div class="ttdeci">const Operand & getValue() const</div><div class="ttdoc">Accesses the right-hand side of the option. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l00691">messageformat2_data_model.h:691</a></div></div> <div class="ttc" id="classicu_1_1message2_1_1data__model_1_1Operator_1_1Builder_html"><div class="ttname"><a href="classicu_1_1message2_1_1data__model_1_1Operator_1_1Builder.html">icu::message2::data_model::Operator::Builder</a></div><div class="ttdoc">The mutable Operator::Builder class allows the operator to be constructed incrementally. </div><div class="ttdef"><b>Definition:</b> <a href="messageformat2__data__model_8h_source.html#l00885">messageformat2_data_model.h:885</a></div></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.14 </small></address> </body> </html>
💾 Save Changes
❌ Cancel