/usr/share/doc/libwreport-doc/apidocs/varinfo_8h.html is in libwreport-doc 3.6-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>libwreport: varinfo.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 id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">libwreport
 <span id="projectnumber">3.6</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<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="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_a77a435eba5a6a11d9ac0a833d87986c.html">wreport</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Data Structures</a> |
<a href="#namespaces">Namespaces</a> |
<a href="#define-members">Macros</a> |
<a href="#typedef-members">Typedefs</a> |
<a href="#enum-members">Enumerations</a> |
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">varinfo.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Implement fast access to information about WMO variables.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include <cstdint></code><br />
<code>#include <string></code><br />
</div>
<p><a href="varinfo_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structwreport_1_1__Varinfo.html">wreport::_Varinfo</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Information about a variable. <a href="structwreport_1_1__Varinfo.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:namespacewreport"><td class="memItemLeft" align="right" valign="top">  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacewreport.html">wreport</a></td></tr>
<tr class="memdesc:namespacewreport"><td class="mdescLeft"> </td><td class="mdescRight">String functions. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:a2c4904311fb1c39d5279e5076e81d6df"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2c4904311fb1c39d5279e5076e81d6df"></a>
#define </td><td class="memItemRight" valign="bottom"><a class="el" href="varinfo_8h.html#a2c4904311fb1c39d5279e5076e81d6df">WR_VAR</a>(f, x, y)   ((<a class="el" href="namespacewreport.html#af9fa16e12fde1ccfb4ce11b3988f5b05">wreport::Varcode</a>)( ((unsigned)(f)<<14) | ((unsigned)(x)<<8) | (unsigned)(y) ))</td></tr>
<tr class="memdesc:a2c4904311fb1c39d5279e5076e81d6df"><td class="mdescLeft"> </td><td class="mdescRight">Create a WMO variable code from its F, X and Y components. <br /></td></tr>
<tr class="separator:a2c4904311fb1c39d5279e5076e81d6df"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a524809aa474eb7cbfe85f86d6657b17e"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="varinfo_8h.html#a524809aa474eb7cbfe85f86d6657b17e">WR_STRING_TO_VAR</a>(str)</td></tr>
<tr class="memdesc:a524809aa474eb7cbfe85f86d6657b17e"><td class="mdescLeft"> </td><td class="mdescRight">Convert a XXYYY string to a WMO variable code. <a href="#a524809aa474eb7cbfe85f86d6657b17e">More...</a><br /></td></tr>
<tr class="separator:a524809aa474eb7cbfe85f86d6657b17e"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:aeda3613fd5af32c0f717876a55a4778b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeda3613fd5af32c0f717876a55a4778b"></a>
#define </td><td class="memItemRight" valign="bottom"><a class="el" href="varinfo_8h.html#aeda3613fd5af32c0f717876a55a4778b">WR_VAR_F</a>(code)   (((code) >> 14) & 0x3)</td></tr>
<tr class="memdesc:aeda3613fd5af32c0f717876a55a4778b"><td class="mdescLeft"> </td><td class="mdescRight">Get the F part of a WMO variable code. <br /></td></tr>
<tr class="separator:aeda3613fd5af32c0f717876a55a4778b"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a21ac703c75a89d7161f35867352d4675"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a21ac703c75a89d7161f35867352d4675"></a>
#define </td><td class="memItemRight" valign="bottom"><a class="el" href="varinfo_8h.html#a21ac703c75a89d7161f35867352d4675">WR_VAR_X</a>(code)   ((code) >> 8 & 0x3f)</td></tr>
<tr class="memdesc:a21ac703c75a89d7161f35867352d4675"><td class="mdescLeft"> </td><td class="mdescRight">Get the X part of a WMO variable code. <br /></td></tr>
<tr class="separator:a21ac703c75a89d7161f35867352d4675"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:aaef8d9af10e2c56e8c1c454d70c227cc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaef8d9af10e2c56e8c1c454d70c227cc"></a>
#define </td><td class="memItemRight" valign="bottom"><a class="el" href="varinfo_8h.html#aaef8d9af10e2c56e8c1c454d70c227cc">WR_VAR_Y</a>(code)   ((code) & 0xff)</td></tr>
<tr class="memdesc:aaef8d9af10e2c56e8c1c454d70c227cc"><td class="mdescLeft"> </td><td class="mdescRight">Get the Y part of a WMO variable code. <br /></td></tr>
<tr class="separator:aaef8d9af10e2c56e8c1c454d70c227cc"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a96c740d1593bcaf6a06d23eeec121daf"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="varinfo_8h.html#a96c740d1593bcaf6a06d23eeec121daf">WR_VAR_FXY</a>(code)   <a class="el" href="varinfo_8h.html#aeda3613fd5af32c0f717876a55a4778b">WR_VAR_F</a>(code), <a class="el" href="varinfo_8h.html#a21ac703c75a89d7161f35867352d4675">WR_VAR_X</a>(code), <a class="el" href="varinfo_8h.html#aaef8d9af10e2c56e8c1c454d70c227cc">WR_VAR_Y</a>(code)</td></tr>
<tr class="memdesc:a96c740d1593bcaf6a06d23eeec121daf"><td class="mdescLeft"> </td><td class="mdescRight">Expands to <a class="el" href="varinfo_8h.html#aeda3613fd5af32c0f717876a55a4778b" title="Get the F part of a WMO variable code. ">WR_VAR_F(code)</a>, <a class="el" href="varinfo_8h.html#a21ac703c75a89d7161f35867352d4675" title="Get the X part of a WMO variable code. ">WR_VAR_X(code)</a>, <a class="el" href="varinfo_8h.html#aaef8d9af10e2c56e8c1c454d70c227cc" title="Get the Y part of a WMO variable code. ">WR_VAR_Y(code)</a>. <a href="#a96c740d1593bcaf6a06d23eeec121daf">More...</a><br /></td></tr>
<tr class="separator:a96c740d1593bcaf6a06d23eeec121daf"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:af9fa16e12fde1ccfb4ce11b3988f5b05"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af9fa16e12fde1ccfb4ce11b3988f5b05"></a>
typedef uint16_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacewreport.html#af9fa16e12fde1ccfb4ce11b3988f5b05">wreport::Varcode</a></td></tr>
<tr class="memdesc:af9fa16e12fde1ccfb4ce11b3988f5b05"><td class="mdescLeft"> </td><td class="mdescRight">Holds the WMO variable code of a variable. <br /></td></tr>
<tr class="separator:af9fa16e12fde1ccfb4ce11b3988f5b05"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:acfcbb1367ca9f4166d76f13fbd910be7"><td class="memItemLeft" align="right" valign="top">typedef const _Varinfo * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacewreport.html#acfcbb1367ca9f4166d76f13fbd910be7">wreport::Varinfo</a></td></tr>
<tr class="memdesc:acfcbb1367ca9f4166d76f13fbd910be7"><td class="mdescLeft"> </td><td class="mdescRight">Varinfo reference. <a href="namespacewreport.html#acfcbb1367ca9f4166d76f13fbd910be7">More...</a><br /></td></tr>
<tr class="separator:acfcbb1367ca9f4166d76f13fbd910be7"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:a50fae4047ed87dfab88063e6781473dd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a50fae4047ed87dfab88063e6781473dd"></a>enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacewreport.html#a50fae4047ed87dfab88063e6781473dd">wreport::Vartype</a> : unsigned { <b>Integer</b>,
<b>Decimal</b>,
<b>String</b>,
<b>Binary</b>
}<tr class="memdesc:a50fae4047ed87dfab88063e6781473dd"><td class="mdescLeft"> </td><td class="mdescRight">Variable type. <br /></td></tr>
</td></tr>
<tr class="separator:a50fae4047ed87dfab88063e6781473dd"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a717ddd344be198e8d473a0a080394f42"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a717ddd344be198e8d473a0a080394f42"></a>
std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacewreport.html#a717ddd344be198e8d473a0a080394f42">wreport::varcode_format</a> (Varcode code)</td></tr>
<tr class="memdesc:a717ddd344be198e8d473a0a080394f42"><td class="mdescLeft"> </td><td class="mdescRight">Format a varcode into a string. <br /></td></tr>
<tr class="separator:a717ddd344be198e8d473a0a080394f42"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ae1d922b777199d35b60f4e9be24ca732"><td class="memItemLeft" align="right" valign="top">Varcode </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacewreport.html#ae1d922b777199d35b60f4e9be24ca732">wreport::varcode_parse</a> (const char *desc)</td></tr>
<tr class="memdesc:ae1d922b777199d35b60f4e9be24ca732"><td class="mdescLeft"> </td><td class="mdescRight">Convert a FXXYYY string descriptor code into its short integer representation. <a href="namespacewreport.html#ae1d922b777199d35b60f4e9be24ca732">More...</a><br /></td></tr>
<tr class="separator:ae1d922b777199d35b60f4e9be24ca732"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:adb9c6f3bdc78404df27a6cd5aa811a11"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adb9c6f3bdc78404df27a6cd5aa811a11"></a>
const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacewreport.html#adb9c6f3bdc78404df27a6cd5aa811a11">wreport::vartype_format</a> (Vartype type)</td></tr>
<tr class="memdesc:adb9c6f3bdc78404df27a6cd5aa811a11"><td class="mdescLeft"> </td><td class="mdescRight">Return a string description of a Vartype. <br /></td></tr>
<tr class="separator:adb9c6f3bdc78404df27a6cd5aa811a11"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a003f2de71e43c745bb72fb79bc6b40cf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a003f2de71e43c745bb72fb79bc6b40cf"></a>
Vartype </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacewreport.html#a003f2de71e43c745bb72fb79bc6b40cf">wreport::vartype_parse</a> (const char *s)</td></tr>
<tr class="memdesc:a003f2de71e43c745bb72fb79bc6b40cf"><td class="mdescLeft"> </td><td class="mdescRight">Return a Vartype from its string description. <br /></td></tr>
<tr class="separator:a003f2de71e43c745bb72fb79bc6b40cf"><td class="memSeparator" colspan="2"> </td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Implement fast access to information about WMO variables. </p>
<p>The measured value of a physical quantity has little meaning without specifying what quantity it represents, what units are used to measure it, and how many digits are significant for the value.</p>
<p>This module provides access to all this metadata:</p>
<ul>
<li><b><a class="el" href="namespacewreport.html#af9fa16e12fde1ccfb4ce11b3988f5b05" title="Holds the WMO variable code of a variable. ">wreport::Varcode</a></b> represents what is the quantity measured, and takes values from the WMO B tables used for BUFR and CREX encodings. The <a class="el" href="varinfo_8h.html#a2c4904311fb1c39d5279e5076e81d6df" title="Create a WMO variable code from its F, X and Y components. ">WR_VAR</a> macro can be used to construct <a class="el" href="namespacewreport.html#af9fa16e12fde1ccfb4ce11b3988f5b05" title="Holds the WMO variable code of a variable. ">wreport::Varcode</a> values, and the <a class="el" href="varinfo_8h.html#aeda3613fd5af32c0f717876a55a4778b" title="Get the F part of a WMO variable code. ">WR_VAR_F</a>, <a class="el" href="varinfo_8h.html#a21ac703c75a89d7161f35867352d4675" title="Get the X part of a WMO variable code. ">WR_VAR_X</a> and <a class="el" href="varinfo_8h.html#aaef8d9af10e2c56e8c1c454d70c227cc" title="Get the Y part of a WMO variable code. ">WR_VAR_Y</a> macros can be used to access the various parts of the dba_varcode. </li>
<li><b><a class="el" href="namespacewreport.html#acfcbb1367ca9f4166d76f13fbd910be7" title="Varinfo reference. ">wreport::Varinfo</a></b> contains all the expanded information about a variable: its <a class="el" href="namespacewreport.html#af9fa16e12fde1ccfb4ce11b3988f5b05" title="Holds the WMO variable code of a variable. ">wreport::Varcode</a>, description, measurement units, significant digits, minimum and maximum values it can have and other information useful for serialisation and deserialisation of values.</li>
</ul>
<p>There are many B tables with slight differences used by different meteorological centre or equipment. This module allows to access different vartables using dba_vartable_create().</p>
<p><a class="el" href="structwreport_1_1Vartable.html" title="Holds a variable information table. ">wreport::Vartable</a> and <a class="el" href="namespacewreport.html#acfcbb1367ca9f4166d76f13fbd910be7" title="Varinfo reference. ">wreport::Varinfo</a> have special memory management: they are never deallocated. This is a precise design choice to speed up passing and copying <a class="el" href="namespacewreport.html#acfcbb1367ca9f4166d76f13fbd910be7" title="Varinfo reference. ">wreport::Varinfo</a> values, that are used very intensely as they accompany all the physical values processed by wreport. This behaviour should not be a cause of memory leaks, since a software would only need to access a limited amount of B tables during its lifetime.</p>
<p>To construct a <a class="el" href="namespacewreport.html#af9fa16e12fde1ccfb4ce11b3988f5b05" title="Holds the WMO variable code of a variable. ">wreport::Varcode</a> value one needs to provide three numbers: F, X and Y.</p>
<ul>
<li><b>F</b> (2 bits) identifies the type of table entry represented by the dba_varcode, and is always 0 for B tables. Different values are only used during encoding and decoding of BUFR and CREX messages and are not in use in other parts of wreport. </li>
<li><b>X</b> (6 bits) identifies a section of the table. </li>
<li><b>Y</b> (8 bits) identifies the value within the section.</li>
</ul>
<p>The normal text representation of a <a class="el" href="namespacewreport.html#af9fa16e12fde1ccfb4ce11b3988f5b05" title="Holds the WMO variable code of a variable. ">wreport::Varcode</a> for a WMO B table uses the format Bxxyyy. </p>
</div><h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="a524809aa474eb7cbfe85f86d6657b17e"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define WR_STRING_TO_VAR</td>
<td>(</td>
<td class="paramtype"> </td>
<td class="paramname">str</td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">((<a class="code" href="namespacewreport.html#af9fa16e12fde1ccfb4ce11b3988f5b05">wreport::Varcode</a>)( \</div><div class="line"> (( ((str)[0] - <span class="charliteral">'0'</span>)*10 + ((str)[1] - <span class="charliteral">'0'</span>) ) << 8) | \</div><div class="line"> ( ((str)[2] - <span class="charliteral">'0'</span>)*100 + ((str)[3] - <span class="charliteral">'0'</span>)*10 + ((str)[4] - <span class="charliteral">'0'</span>) ) \</div><div class="line">))</div><div class="ttc" id="namespacewreport_html_af9fa16e12fde1ccfb4ce11b3988f5b05"><div class="ttname"><a href="namespacewreport.html#af9fa16e12fde1ccfb4ce11b3988f5b05">wreport::Varcode</a></div><div class="ttdeci">uint16_t Varcode</div><div class="ttdoc">Holds the WMO variable code of a variable. </div><div class="ttdef"><b>Definition:</b> varinfo.h:57</div></div>
</div><!-- fragment -->
<p>Convert a XXYYY string to a WMO variable code. </p>
<p>This is useful only in rare cases, such as when parsing tables; use descriptor_code() to parse proper entry names such as "B01003" or "D21301". </p>
</div>
</div>
<a class="anchor" id="a96c740d1593bcaf6a06d23eeec121daf"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define WR_VAR_FXY</td>
<td>(</td>
<td class="paramtype"> </td>
<td class="paramname">code</td><td>)</td>
<td>   <a class="el" href="varinfo_8h.html#aeda3613fd5af32c0f717876a55a4778b">WR_VAR_F</a>(code), <a class="el" href="varinfo_8h.html#a21ac703c75a89d7161f35867352d4675">WR_VAR_X</a>(code), <a class="el" href="varinfo_8h.html#aaef8d9af10e2c56e8c1c454d70c227cc">WR_VAR_Y</a>(code)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Expands to <a class="el" href="varinfo_8h.html#aeda3613fd5af32c0f717876a55a4778b" title="Get the F part of a WMO variable code. ">WR_VAR_F(code)</a>, <a class="el" href="varinfo_8h.html#a21ac703c75a89d7161f35867352d4675" title="Get the X part of a WMO variable code. ">WR_VAR_X(code)</a>, <a class="el" href="varinfo_8h.html#aaef8d9af10e2c56e8c1c454d70c227cc" title="Get the Y part of a WMO variable code. ">WR_VAR_Y(code)</a>. </p>
<p>This is intended as a convenient shortcut to pass a broken down varcode to functions like printf, but not much more than that. Of course it evaluates its argument multiple times. </p>
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Aug 18 2016 13:32:18 for libwreport by  <a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.11
</small></address>
</body>
</html>
|