<!-- 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: tmudr::ProvenanceInfo Class Reference</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><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
    </ul>
  </div>
  <div class="navpath"><b>tmudr</b>::<a class="el" href="classtmudr_1_1ProvenanceInfo.html">ProvenanceInfo</a>
  </div>
</div>
<div class="contents">
<h1>tmudr::ProvenanceInfo Class Reference</h1><!-- doxytag: class="tmudr::ProvenanceInfo" -->
<p>Describes where an output column is coming from.  
<a href="#_details">More...</a></p>

<p><code>#include &lt;<a class="el" href="sqludr_8h_source.html">sqludr.h</a>&gt;</code></p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtmudr_1_1ProvenanceInfo.html#ad6be4c301a7f3b9a34d2c0863fa3d337">ProvenanceInfo</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtmudr_1_1ProvenanceInfo.html#afe9e921ca4bbbe70f2ad1cdbc27618b5">ProvenanceInfo</a> (int inputTableNum, int inputColNum)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtmudr_1_1ProvenanceInfo.html#adfad1a87e41077dc3dd62ca4e073b3ef">getInputTableNum</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtmudr_1_1ProvenanceInfo.html#a2c10c9b580e812db85cf7c74a35f63c2">getInputColumnNum</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtmudr_1_1ProvenanceInfo.html#ad8d8d8c7b33c849000f0fd33e9d6c797">isFromInputTable</a> (int inputTableNum=-1) const </td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Describes where an output column is coming from. </p>
<p>Points to input table and input column number that is the source of a column. This must only be used if the result column always has the exact same value as the current value of the corresponding input column.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classtmudr_1_1ColumnInfo.html#abd56e48603e02a2b65f383921a2c44a1">ColumnInfo::getProvenance()</a> </dd>
<dd>
<a class="el" href="classtmudr_1_1ColumnInfo.html#a361ed635eeb56e2262a41aded487ccf7">ColumnInfo::setProvenance()</a> </dd>
<dd>
<a class="el" href="classtmudr_1_1UDRInvocationInfo.html#ae7274d94c79a78a4cd0976cbe572ab26">UDRInvocationInfo::addPassThruColumns()</a> </dd></dl>
<hr/><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="ad6be4c301a7f3b9a34d2c0863fa3d337"></a><!-- doxytag: member="tmudr::ProvenanceInfo::ProvenanceInfo" ref="ad6be4c301a7f3b9a34d2c0863fa3d337" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">ProvenanceInfo::ProvenanceInfo </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Default constructor, generates unspecified provenance. </p>

</div>
</div>
<a class="anchor" id="afe9e921ca4bbbe70f2ad1cdbc27618b5"></a><!-- doxytag: member="tmudr::ProvenanceInfo::ProvenanceInfo" ref="afe9e921ca4bbbe70f2ad1cdbc27618b5" args="(int inputTableNum, int inputColNum)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">ProvenanceInfo::ProvenanceInfo </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>inputTableNum</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>inputColNum</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Constructor to link an output column to a specific input column</p>
<p>This constructor can be used to produce a "passthru column". An easier way to do this is the <a class="el" href="classtmudr_1_1UDRInvocationInfo.html#ae7274d94c79a78a4cd0976cbe572ab26">UDRInvocationInfo::addPassThruColumns()</a> method.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>inputTableNum</em>&nbsp;</td><td>Input table number (0 for a TMUDF with a single table-valued input, the most common case). </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>inputColNum</em>&nbsp;</td><td>Column number in intput table "inputTableNum" that is the source of the output column to be produced. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="a2c10c9b580e812db85cf7c74a35f63c2"></a><!-- doxytag: member="tmudr::ProvenanceInfo::getInputColumnNum" ref="a2c10c9b580e812db85cf7c74a35f63c2" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ProvenanceInfo::getInputColumnNum </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Get the input column number.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>Input column number. </dd></dl>

</div>
</div>
<a class="anchor" id="adfad1a87e41077dc3dd62ca4e073b3ef"></a><!-- doxytag: member="tmudr::ProvenanceInfo::getInputTableNum" ref="adfad1a87e41077dc3dd62ca4e073b3ef" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ProvenanceInfo::getInputTableNum </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Get the input table number.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>Input table number. </dd></dl>

</div>
</div>
<a class="anchor" id="ad8d8d8c7b33c849000f0fd33e9d6c797"></a><!-- doxytag: member="tmudr::ProvenanceInfo::isFromInputTable" ref="ad8d8d8c7b33c849000f0fd33e9d6c797" args="(int inputTableNum=&#45;1) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ProvenanceInfo::isFromInputTable </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>inputTableNum</em> = <code>-1</code></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Test whether the column comes from any or from a specific table-valued input.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>inputTableNum</em>&nbsp;</td><td>-1 to test for any table-valued input, or a specific input table number. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>true if the provenance indicates a column that comes from the specified input table(s), false otherwise </dd></dl>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="sqludr_8h_source.html">sqludr.h</a></li>
<li>sqludr.cpp</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>
