<!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"/> <title>ICU 52.1: uversion.h File Reference</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="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 style="padding-left: 0.5em;"> <div id="projectname">ICU 52.1  <span id="projectnumber">52.1</span> </div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.8.1.2 --> <div id="navrow1" class="tabs"> <ul class="tablist"> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li> <li><a href="namespaces.html"><span>Namespaces</span></a></li> <li><a href="annotated.html"><span>Data Structures</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li> </ul> </div> <div id="navrow2" class="tabs2"> <ul class="tablist"> <li><a href="files.html"><span>File List</span></a></li> <li><a href="globals.html"><span>Globals</span></a></li> </ul> </div> <div id="nav-path" class="navpath"> <ul> <li class="navelem"><a class="el" href="dir_bdd9a5d540de89e9fe90efdfc6973a4f.html">common</a></li><li class="navelem"><a class="el" href="dir_f59c6450ff718ff1b085cfd1c36acbd7.html">unicode</a></li> </ul> </div> </div><!-- top --> <div class="header"> <div class="summary"> <a href="#define-members">Macros</a> | <a href="#typedef-members">Typedefs</a> | <a href="#func-members">Functions</a> </div> <div class="headertitle"> <div class="title">uversion.h File Reference</div> </div> </div><!--header--> <div class="contents"> <p>C API: API for accessing ICU version numbers. <a href="#details">More...</a></p> <div class="textblock"><code>#include "<a class="el" href="umachine_8h_source.html">unicode/umachine.h</a>"</code><br/> <code>#include "<a class="el" href="uvernum_8h_source.html">unicode/uvernum.h</a>"</code><br/> </div> <p><a href="uversion_8h_source.html">Go to the source code of this file.</a></p> <table class="memberdecls"> <tr class="heading"><td colspan="2"><h2><a name="define-members"></a> Macros</h2></td></tr> <tr class="memitem:a8855561449c5835245f330ce18b4f781"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="uversion_8h.html#a8855561449c5835245f330ce18b4f781">U_COPYRIGHT_STRING_LENGTH</a>   128</td></tr> <tr class="memdesc:a8855561449c5835245f330ce18b4f781"><td class="mdescLeft"> </td><td class="mdescRight">Maximum length of the copyright string. <a href="#a8855561449c5835245f330ce18b4f781"></a><br/></td></tr> <tr class="memitem:acf6cc6b794656998aaaba2ab03f29baf"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="uversion_8h.html#acf6cc6b794656998aaaba2ab03f29baf">U_MAX_VERSION_LENGTH</a>   4</td></tr> <tr class="memdesc:acf6cc6b794656998aaaba2ab03f29baf"><td class="mdescLeft"> </td><td class="mdescRight">An ICU version consists of up to 4 numbers from 0..255. <a href="#acf6cc6b794656998aaaba2ab03f29baf"></a><br/></td></tr> <tr class="memitem:a7d52298e2afe0f592cf53023d20c31e5"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="uversion_8h.html#a7d52298e2afe0f592cf53023d20c31e5">U_VERSION_DELIMITER</a>   '.'</td></tr> <tr class="memdesc:a7d52298e2afe0f592cf53023d20c31e5"><td class="mdescLeft"> </td><td class="mdescRight">In a string, ICU version fields are delimited by dots. <a href="#a7d52298e2afe0f592cf53023d20c31e5"></a><br/></td></tr> <tr class="memitem:af204c175920d1e8b82b1042447194977"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="uversion_8h.html#af204c175920d1e8b82b1042447194977">U_MAX_VERSION_STRING_LENGTH</a>   20</td></tr> <tr class="memdesc:af204c175920d1e8b82b1042447194977"><td class="mdescLeft"> </td><td class="mdescRight">The maximum length of an ICU version string. <a href="#af204c175920d1e8b82b1042447194977"></a><br/></td></tr> <tr class="memitem:a7d9374e037299886d4192b763b4c5e8b"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="uversion_8h.html#a7d9374e037299886d4192b763b4c5e8b">U_NAMESPACE_BEGIN</a></td></tr> <tr class="memdesc:a7d9374e037299886d4192b763b4c5e8b"><td class="mdescLeft"> </td><td class="mdescRight">This is used to begin a declaration of a public ICU C++ API. <a href="#a7d9374e037299886d4192b763b4c5e8b"></a><br/></td></tr> <tr class="memitem:a3da1f00f3b02976ac53c014a3e4c0933"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="uversion_8h.html#a3da1f00f3b02976ac53c014a3e4c0933">U_NAMESPACE_END</a></td></tr> <tr class="memdesc:a3da1f00f3b02976ac53c014a3e4c0933"><td class="mdescLeft"> </td><td class="mdescRight">This is used to end a declaration of a public ICU C++ API. <a href="#a3da1f00f3b02976ac53c014a3e4c0933"></a><br/></td></tr> <tr class="memitem:aa0c93141ff345327f966fda6c3a2366f"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="uversion_8h.html#aa0c93141ff345327f966fda6c3a2366f">U_NAMESPACE_USE</a></td></tr> <tr class="memdesc:aa0c93141ff345327f966fda6c3a2366f"><td class="mdescLeft"> </td><td class="mdescRight">This is used to specify that the rest of the code uses the public ICU C++ API namespace. <a href="#aa0c93141ff345327f966fda6c3a2366f"></a><br/></td></tr> <tr class="memitem:a398d471a6b925791d52b72d7bb700bdd"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="uversion_8h.html#a398d471a6b925791d52b72d7bb700bdd">U_NAMESPACE_QUALIFIER</a></td></tr> <tr class="memdesc:a398d471a6b925791d52b72d7bb700bdd"><td class="mdescLeft"> </td><td class="mdescRight">This is used to qualify that a function or class is part of the public ICU C++ API namespace. <a href="#a398d471a6b925791d52b72d7bb700bdd"></a><br/></td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2><a name="typedef-members"></a> Typedefs</h2></td></tr> <tr class="memitem:a61caef96ba86d8e86a4031925ea44e94"><td class="memItemLeft" align="right" valign="top">typedef uint8_t </td><td class="memItemRight" valign="bottom"><a class="el" href="uversion_8h.html#a61caef96ba86d8e86a4031925ea44e94">UVersionInfo</a> [<a class="el" href="uversion_8h.html#acf6cc6b794656998aaaba2ab03f29baf">U_MAX_VERSION_LENGTH</a>]</td></tr> <tr class="memdesc:a61caef96ba86d8e86a4031925ea44e94"><td class="mdescLeft"> </td><td class="mdescRight">The binary form of a version on ICU APIs is an array of 4 uint8_t. <a href="#a61caef96ba86d8e86a4031925ea44e94"></a><br/></td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2><a name="func-members"></a> Functions</h2></td></tr> <tr class="memitem:a358c6faf63bf23f51fc5153351866c95"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="uversion_8h.html#a358c6faf63bf23f51fc5153351866c95">u_versionFromString</a> (<a class="el" href="uversion_8h.html#a61caef96ba86d8e86a4031925ea44e94">UVersionInfo</a> versionArray, const char *versionString)</td></tr> <tr class="memdesc:a358c6faf63bf23f51fc5153351866c95"><td class="mdescLeft"> </td><td class="mdescRight">Parse a string with dotted-decimal version information and fill in a UVersionInfo structure with the result. <a href="#a358c6faf63bf23f51fc5153351866c95"></a><br/></td></tr> <tr class="memitem:afd8b49a4f07e049445f8891ae0aa6add"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="uversion_8h.html#afd8b49a4f07e049445f8891ae0aa6add">u_versionFromUString</a> (<a class="el" href="uversion_8h.html#a61caef96ba86d8e86a4031925ea44e94">UVersionInfo</a> versionArray, const <a class="el" href="umachine_8h.html#a6bb9fad572d65b305324ef288165e2ac">UChar</a> *versionString)</td></tr> <tr class="memdesc:afd8b49a4f07e049445f8891ae0aa6add"><td class="mdescLeft"> </td><td class="mdescRight">Parse a Unicode string with dotted-decimal version information and fill in a UVersionInfo structure with the result. <a href="#afd8b49a4f07e049445f8891ae0aa6add"></a><br/></td></tr> <tr class="memitem:a380cb5fc925e9aec904c5052a5321182"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="uversion_8h.html#a380cb5fc925e9aec904c5052a5321182">u_versionToString</a> (const <a class="el" href="uversion_8h.html#a61caef96ba86d8e86a4031925ea44e94">UVersionInfo</a> versionArray, char *versionString)</td></tr> <tr class="memdesc:a380cb5fc925e9aec904c5052a5321182"><td class="mdescLeft"> </td><td class="mdescRight">Write a string with dotted-decimal version information according to the input UVersionInfo. <a href="#a380cb5fc925e9aec904c5052a5321182"></a><br/></td></tr> <tr class="memitem:afcdc1acb19210765c232f93da732e22e"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="uversion_8h.html#afcdc1acb19210765c232f93da732e22e">u_getVersion</a> (<a class="el" href="uversion_8h.html#a61caef96ba86d8e86a4031925ea44e94">UVersionInfo</a> versionArray)</td></tr> <tr class="memdesc:afcdc1acb19210765c232f93da732e22e"><td class="mdescLeft"> </td><td class="mdescRight">Gets the ICU release version. <a href="#afcdc1acb19210765c232f93da732e22e"></a><br/></td></tr> </table> <a name="details" id="details"></a><h2>Detailed Description</h2> <div class="textblock"><p>C API: API for accessing ICU version numbers. </p> <p>Definition in file <a class="el" href="uversion_8h_source.html">uversion.h</a>.</p> </div><h2>Macro Definition Documentation</h2> <a class="anchor" id="a8855561449c5835245f330ce18b4f781"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define U_COPYRIGHT_STRING_LENGTH   128</td> </tr> </table> </div><div class="memdoc"> <p>Maximum length of the copyright string. </p> <dl class="stable"><dt><b><a class="el" href="stable.html#_stable002811">Stable:</a></b></dt><dd>ICU 2.4 </dd></dl> <p>Definition at line <a class="el" href="uversion_8h_source.html#l00036">36</a> of file <a class="el" href="uversion_8h_source.html">uversion.h</a>.</p> </div> </div> <a class="anchor" id="acf6cc6b794656998aaaba2ab03f29baf"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define U_MAX_VERSION_LENGTH   4</td> </tr> </table> </div><div class="memdoc"> <p>An ICU version consists of up to 4 numbers from 0..255. </p> <dl class="stable"><dt><b><a class="el" href="stable.html#_stable002812">Stable:</a></b></dt><dd>ICU 2.4 </dd></dl> <p>Definition at line <a class="el" href="uversion_8h_source.html#l00041">41</a> of file <a class="el" href="uversion_8h_source.html">uversion.h</a>.</p> </div> </div> <a class="anchor" id="af204c175920d1e8b82b1042447194977"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define U_MAX_VERSION_STRING_LENGTH   20</td> </tr> </table> </div><div class="memdoc"> <p>The maximum length of an ICU version string. </p> <dl class="stable"><dt><b><a class="el" href="stable.html#_stable002814">Stable:</a></b></dt><dd>ICU 2.4 </dd></dl> <p>Definition at line <a class="el" href="uversion_8h_source.html#l00051">51</a> of file <a class="el" href="uversion_8h_source.html">uversion.h</a>.</p> </div> </div> <a class="anchor" id="a7d9374e037299886d4192b763b4c5e8b"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define U_NAMESPACE_BEGIN</td> </tr> </table> </div><div class="memdoc"> <p>This is used to begin a declaration of a public ICU C++ API. </p> <p>When not compiling for C++, it does nothing. When compiling for C++, it begins an extern "C++" linkage block (to protect against cases in which an external client includes ICU header files inside an extern "C" linkage block).</p> <p>It also begins a versioned-ICU-namespace block. </p> <dl class="stable"><dt><b><a class="el" href="stable.html#_stable002816">Stable:</a></b></dt><dd>ICU 2.4 </dd></dl> <p>Definition at line <a class="el" href="uversion_8h_source.html#l00129">129</a> of file <a class="el" href="uversion_8h_source.html">uversion.h</a>.</p> </div> </div> <a class="anchor" id="a3da1f00f3b02976ac53c014a3e4c0933"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define U_NAMESPACE_END</td> </tr> </table> </div><div class="memdoc"> <p>This is used to end a declaration of a public ICU C++ API. </p> <p>When not compiling for C++, it does nothing. When compiling for C++, it ends the extern "C++" block begun by U_NAMESPACE_BEGIN.</p> <p>It also ends the versioned-ICU-namespace block begun by U_NAMESPACE_BEGIN. </p> <dl class="stable"><dt><b><a class="el" href="stable.html#_stable002817">Stable:</a></b></dt><dd>ICU 2.4 </dd></dl> <p>Definition at line <a class="el" href="uversion_8h_source.html#l00130">130</a> of file <a class="el" href="uversion_8h_source.html">uversion.h</a>.</p> </div> </div> <a class="anchor" id="a398d471a6b925791d52b72d7bb700bdd"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define U_NAMESPACE_QUALIFIER</td> </tr> </table> </div><div class="memdoc"> <p>This is used to qualify that a function or class is part of the public ICU C++ API namespace. </p> <p>This macro is unnecessary since ICU 49 requires namespace support. You can just use "icu::" instead. </p> <dl class="stable"><dt><b><a class="el" href="stable.html#_stable002819">Stable:</a></b></dt><dd>ICU 2.4 </dd></dl> <p>Definition at line <a class="el" href="uversion_8h_source.html#l00132">132</a> of file <a class="el" href="uversion_8h_source.html">uversion.h</a>.</p> </div> </div> <a class="anchor" id="aa0c93141ff345327f966fda6c3a2366f"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define U_NAMESPACE_USE</td> </tr> </table> </div><div class="memdoc"> <p>This is used to specify that the rest of the code uses the public ICU C++ API namespace. </p> <p>This is invoked by default; we recommend that you turn it off: See the "Recommended Build Options" section of the ICU4C readme (<a href="http://source.icu-project.org/repos/icu/icu/trunk/readme.html#RecBuild">http://source.icu-project.org/repos/icu/icu/trunk/readme.html#RecBuild</a>) </p> <dl class="stable"><dt><b><a class="el" href="stable.html#_stable002818">Stable:</a></b></dt><dd>ICU 2.4 </dd></dl> <p>Definition at line <a class="el" href="uversion_8h_source.html#l00131">131</a> of file <a class="el" href="uversion_8h_source.html">uversion.h</a>.</p> </div> </div> <a class="anchor" id="a7d52298e2afe0f592cf53023d20c31e5"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define U_VERSION_DELIMITER   '.'</td> </tr> </table> </div><div class="memdoc"> <p>In a string, ICU version fields are delimited by dots. </p> <dl class="stable"><dt><b><a class="el" href="stable.html#_stable002813">Stable:</a></b></dt><dd>ICU 2.4 </dd></dl> <p>Definition at line <a class="el" href="uversion_8h_source.html#l00046">46</a> of file <a class="el" href="uversion_8h_source.html">uversion.h</a>.</p> </div> </div> <h2>Typedef Documentation</h2> <a class="anchor" id="a61caef96ba86d8e86a4031925ea44e94"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef uint8_t UVersionInfo[<a class="el" href="uversion_8h.html#acf6cc6b794656998aaaba2ab03f29baf">U_MAX_VERSION_LENGTH</a>]</td> </tr> </table> </div><div class="memdoc"> <p>The binary form of a version on ICU APIs is an array of 4 uint8_t. </p> <p>To compare two versions, use memcmp(v1,v2,sizeof(UVersionInfo)). </p> <dl class="stable"><dt><b><a class="el" href="stable.html#_stable002815">Stable:</a></b></dt><dd>ICU 2.4 </dd></dl> <p>Definition at line <a class="el" href="uversion_8h_source.html#l00057">57</a> of file <a class="el" href="uversion_8h_source.html">uversion.h</a>.</p> </div> </div> <h2>Function Documentation</h2> <a class="anchor" id="afcdc1acb19210765c232f93da732e22e"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void u_getVersion </td> <td>(</td> <td class="paramtype"><a class="el" href="uversion_8h.html#a61caef96ba86d8e86a4031925ea44e94">UVersionInfo</a> </td> <td class="paramname"><em>versionArray</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Gets the ICU release version. </p> <p>The version array stores the version information for ICU. For example, release "1.3.31.2" is then represented as 0x01031F02. Definition of this function lives in putil.c</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">versionArray</td><td>the version # information, the result will be filled in </td></tr> </table> </dd> </dl> <dl class="stable"><dt><b><a class="el" href="stable.html#_stable002823">Stable:</a></b></dt><dd>ICU 2.0 </dd></dl> </div> </div> <a class="anchor" id="a358c6faf63bf23f51fc5153351866c95"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void u_versionFromString </td> <td>(</td> <td class="paramtype"><a class="el" href="uversion_8h.html#a61caef96ba86d8e86a4031925ea44e94">UVersionInfo</a> </td> <td class="paramname"><em>versionArray</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>versionString</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Parse a string with dotted-decimal version information and fill in a UVersionInfo structure with the result. </p> <p>Definition of this function lives in putil.c</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">versionArray</td><td>The destination structure for the version information. </td></tr> <tr><td class="paramname">versionString</td><td>A string with dotted-decimal version information, with up to four non-negative number fields with values of up to 255 each. </td></tr> </table> </dd> </dl> <dl class="stable"><dt><b><a class="el" href="stable.html#_stable002820">Stable:</a></b></dt><dd>ICU 2.4 </dd></dl> </div> </div> <a class="anchor" id="afd8b49a4f07e049445f8891ae0aa6add"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void u_versionFromUString </td> <td>(</td> <td class="paramtype"><a class="el" href="uversion_8h.html#a61caef96ba86d8e86a4031925ea44e94">UVersionInfo</a> </td> <td class="paramname"><em>versionArray</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="umachine_8h.html#a6bb9fad572d65b305324ef288165e2ac">UChar</a> * </td> <td class="paramname"><em>versionString</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Parse a Unicode string with dotted-decimal version information and fill in a UVersionInfo structure with the result. </p> <p>Definition of this function lives in putil.c</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">versionArray</td><td>The destination structure for the version information. </td></tr> <tr><td class="paramname">versionString</td><td>A Unicode string with dotted-decimal version information, with up to four non-negative number fields with values of up to 255 each. </td></tr> </table> </dd> </dl> <dl class="stable"><dt><b><a class="el" href="stable.html#_stable002821">Stable:</a></b></dt><dd>ICU 4.2 </dd></dl> </div> </div> <a class="anchor" id="a380cb5fc925e9aec904c5052a5321182"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void u_versionToString </td> <td>(</td> <td class="paramtype">const <a class="el" href="uversion_8h.html#a61caef96ba86d8e86a4031925ea44e94">UVersionInfo</a> </td> <td class="paramname"><em>versionArray</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">char * </td> <td class="paramname"><em>versionString</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Write a string with dotted-decimal version information according to the input UVersionInfo. </p> <p>Definition of this function lives in putil.c</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">versionArray</td><td>The version information to be written as a string. </td></tr> <tr><td class="paramname">versionString</td><td>A string buffer that will be filled in with a string corresponding to the numeric version information in versionArray. The buffer size must be at least U_MAX_VERSION_STRING_LENGTH. </td></tr> </table> </dd> </dl> <dl class="stable"><dt><b><a class="el" href="stable.html#_stable002822">Stable:</a></b></dt><dd>ICU 2.4 </dd></dl> </div> </div> </div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> Generated on Fri Oct 4 2013 14:10:23 for ICU 52.1 by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.1.2 </small></address> </body> </html>