<!-- 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 Structures</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 class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
      <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
    </ul>
  </div>
</div>
<div class="contents">
<h1>Data Structures</h1>Here are the data structures with brief descriptions:<table>
  <tr><td class="indexkey"><a class="el" href="classtmudr_1_1CardinalityConstraintInfo.html">tmudr::CardinalityConstraintInfo</a></td><td class="indexvalue">A cardinality constraint </td></tr>
  <tr><td class="indexkey"><a class="el" href="classtmudr_1_1ColumnInfo.html">tmudr::ColumnInfo</a></td><td class="indexvalue">Describes a column in an input or output table or a parameter </td></tr>
  <tr><td class="indexkey"><a class="el" href="classtmudr_1_1ComparisonPredicateInfo.html">tmudr::ComparisonPredicateInfo</a></td><td class="indexvalue">A comparison predicate to be evaluated on a table </td></tr>
  <tr><td class="indexkey"><a class="el" href="classtmudr_1_1ConstraintInfo.html">tmudr::ConstraintInfo</a></td><td class="indexvalue">A constraint on a table-valued input or output table </td></tr>
  <tr><td class="indexkey"><a class="el" href="classtmudr_1_1OrderInfo.html">tmudr::OrderInfo</a></td><td class="indexvalue">Ordering of a table by some ascending or descending columns </td></tr>
  <tr><td class="indexkey"><a class="el" href="classtmudr_1_1ParameterListInfo.html">tmudr::ParameterListInfo</a></td><td class="indexvalue">Describes the parameters of a <a class="el" href="classtmudr_1_1UDR.html" title="This class represents the code associated with a UDR.">UDR</a> </td></tr>
  <tr><td class="indexkey"><a class="el" href="classtmudr_1_1PartitionInfo.html">tmudr::PartitionInfo</a></td><td class="indexvalue">Partitioning key of an input table or result table </td></tr>
  <tr><td class="indexkey"><a class="el" href="classtmudr_1_1PredicateInfo.html">tmudr::PredicateInfo</a></td><td class="indexvalue">A predicate to be evaluated on a table </td></tr>
  <tr><td class="indexkey"><a class="el" href="classtmudr_1_1ProvenanceInfo.html">tmudr::ProvenanceInfo</a></td><td class="indexvalue">Describes where an output column is coming from </td></tr>
  <tr><td class="indexkey"><a class="el" href="classtmudr_1_1TableInfo.html">tmudr::TableInfo</a></td><td class="indexvalue">Describes a table-valued input or a table-valued output </td></tr>
  <tr><td class="indexkey"><a class="el" href="classtmudr_1_1TupleInfo.html">tmudr::TupleInfo</a></td><td class="indexvalue">Common base class for parameter lists and row layouts </td></tr>
  <tr><td class="indexkey"><a class="el" href="classtmudr_1_1TypeInfo.html">tmudr::TypeInfo</a></td><td class="indexvalue">Data types in the <a class="el" href="classtmudr_1_1UDR.html" title="This class represents the code associated with a UDR.">UDR</a> interface </td></tr>
  <tr><td class="indexkey"><a class="el" href="classtmudr_1_1UDR.html">tmudr::UDR</a></td><td class="indexvalue">This class represents the code associated with a <a class="el" href="classtmudr_1_1UDR.html" title="This class represents the code associated with a UDR.">UDR</a> </td></tr>
  <tr><td class="indexkey"><a class="el" href="classtmudr_1_1UDRException.html">tmudr::UDRException</a></td><td class="indexvalue">This is the exception to throw when an error occurs in a <a class="el" href="classtmudr_1_1UDR.html" title="This class represents the code associated with a UDR.">UDR</a> </td></tr>
  <tr><td class="indexkey"><a class="el" href="classtmudr_1_1UDRInvocationInfo.html">tmudr::UDRInvocationInfo</a></td><td class="indexvalue">Describes an invocation of a <a class="el" href="classtmudr_1_1UDR.html" title="This class represents the code associated with a UDR.">UDR</a> </td></tr>
  <tr><td class="indexkey"><a class="el" href="classtmudr_1_1UDRPlanInfo.html">tmudr::UDRPlanInfo</a></td><td class="indexvalue">Describes the query plan used for a <a class="el" href="classtmudr_1_1UDR.html" title="This class represents the code associated with a UDR.">UDR</a> invocation </td></tr>
  <tr><td class="indexkey"><a class="el" href="classtmudr_1_1UDRWriterCompileTimeData.html">tmudr::UDRWriterCompileTimeData</a></td><td class="indexvalue">Compile time data owned by the <a class="el" href="classtmudr_1_1UDR.html" title="This class represents the code associated with a UDR.">UDR</a> writer </td></tr>
  <tr><td class="indexkey"><a class="el" href="classtmudr_1_1UniqueConstraintInfo.html">tmudr::UniqueConstraintInfo</a></td><td class="indexvalue">A uniqueness constraint </td></tr>
</table>
</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>
