<!-- This comment will put IE 6, 7 and 8 in quirks mode -->
<!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"/>
<title>tmudr: Data Fields</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javaScript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body onload='searchBox.OnSelectItem(0);'>
<!-- Generated by Doxygen 1.6.1 -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <img id="MSearchSelect" src="search/search.png"
             onmouseover="return searchBox.OnSearchSelectShow()"
             onmouseout="return searchBox.OnSearchSelectHide()"
             alt=""/>
        <input type="text" id="MSearchField" value="Search" accesskey="S"
             onfocus="searchBox.OnSearchFieldFocus(true)" 
             onblur="searchBox.OnSearchFieldFocus(false)" 
             onkeyup="searchBox.OnSearchFieldChange(event)"/>
        <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
        </div>
      </li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
      <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
      <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li class="current"><a href="functions.html"><span>All</span></a></li>
      <li><a href="functions_func.html"><span>Functions</span></a></li>
      <li><a href="functions_enum.html"><span>Enumerations</span></a></li>
      <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="functions.html#index_a"><span>a</span></a></li>
      <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
      <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
      <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
      <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
      <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
      <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
      <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
      <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
      <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
      <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
      <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
      <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
      <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
      <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
      <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
      <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
      <li class="current"><a href="functions_0x75.html#index_u"><span>u</span></a></li>
      <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
      <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
      <li><a href="functions_0x79.html#index_y"><span>y</span></a></li>
      <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
    </ul>
  </div>
</div>
<div class="contents">
Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:

<h3><a class="anchor" id="index_u">- u -</a></h3><ul>
<li>UDR()
: <a class="el" href="classtmudr_1_1UDR.html#aaa1036a39bef55877bc953b02f9c58da">tmudr::UDR</a>
</li>
<li>UDRException()
: <a class="el" href="classtmudr_1_1UDRException.html#a4a0892baa3b4746b0310339a24a1219b">tmudr::UDRException</a>
</li>
<li>UDRWriterCompileTimeData()
: <a class="el" href="classtmudr_1_1UDRWriterCompileTimeData.html#aa8baf9c39fb18c2ed91931df9e3e2511">tmudr::UDRWriterCompileTimeData</a>
</li>
<li>UNDEFINED_COLLATION
: <a class="el" href="classtmudr_1_1TypeInfo.html#ab0390570f1a369a2ad216999bf033568abe6f0fa45c98745423d99f63e03a1bfa">tmudr::TypeInfo</a>
</li>
<li>UNDEFINED_TYPE_CLASS
: <a class="el" href="classtmudr_1_1TypeInfo.html#a9804443638ca97a8e5dbfeebe0d08ca6ab5a97b37256b6b9a1a9bcdc87cf8604b">tmudr::TypeInfo</a>
</li>
<li>UNDEFINED_TYPE_SUB_CLASS
: <a class="el" href="classtmudr_1_1TypeInfo.html#a82b5906be32d94b8ae2ba20d8cc3f312a779d60e795dc59c3267c0805a02f1a06">tmudr::TypeInfo</a>
</li>
<li>UNIQUE
: <a class="el" href="classtmudr_1_1ConstraintInfo.html#a10e620641613b68ca5a9c063f3ed5029a17d366cd7f84a5f9a69a6419309006f9">tmudr::ConstraintInfo</a>
</li>
<li>UniqueConstraintInfo()
: <a class="el" href="classtmudr_1_1UniqueConstraintInfo.html#a369e24f52470dac46c051d072255590e">tmudr::UniqueConstraintInfo</a>
</li>
<li>UNKNOWN
: <a class="el" href="classtmudr_1_1ColumnInfo.html#acd91858abc45772d55f3310d789271b4af932bad37d6a82ef028b8d259a5f0093">tmudr::ColumnInfo</a>
, <a class="el" href="classtmudr_1_1PartitionInfo.html#a00d9199b7b9ded5c9f6c2d2aadf16e47a8a99eef243aad98789ee3baf4cb19256">tmudr::PartitionInfo</a>
</li>
<li>UNKNOWN_EVAL
: <a class="el" href="classtmudr_1_1PredicateInfo.html#aa2a53f51db2e8e56cf79fe8c28e54232a9a9d393cf0eee2d3f06d72ff09922ed5">tmudr::PredicateInfo</a>
</li>
<li>UNKNOWN_OP
: <a class="el" href="classtmudr_1_1PredicateInfo.html#ab22c05aab4b2ec61421fc2d9efa9f2b5acc2e2fe0b00dd8f64160e946a68db97b">tmudr::PredicateInfo</a>
</li>
<li>USED
: <a class="el" href="classtmudr_1_1ColumnInfo.html#acd91858abc45772d55f3310d789271b4a6a27f51d940992abb9864cdf20bbb700">tmudr::ColumnInfo</a>
</li>
</ul>
</div>
<!--- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&nbsp;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&nbsp;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&nbsp;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&nbsp;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&nbsp;</span>Enumerator</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<hr size="1"/><address style="text-align: right;"><small>Generated on 3 Mar 2017 for tmudr by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
</body>
</html>
