coriolis/katabatic/doc/html/classKatabatic_1_1BaseGrid....

439 lines
22 KiB
HTML
Raw Normal View History

<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0//EN'>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Katabatic Documentation</title>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="SoC.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head>
<h1 id="pagetop" class="header">Katabatic - Routing Toolbox</h1>
<!--
<center class="header">
<table class="header">
<tr>
<td><a href="customSummary.html">Summary</a></td>
<td><a href="namespaces.html">Namespaces</a></td>
<td><a href="customHierarchy.html">Class Hierarchy</a></td>
<td><a href="annotated.html">Classes</a></td>
<td><a href="functions.html">Member Index</a></td>
</tr>
</table>
</center>
-->
<br>
<body onload="javascript:toggleLevel(1)">
<!-- Generated by Doxygen 1.8.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;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 class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespaceKatabatic.html">Katabatic</a></li><li class="navelem"><a class="el" href="classKatabatic_1_1BaseGrid.html">BaseGrid</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="classKatabatic_1_1BaseGrid-members.html">List of all members</a> &#124;
<a href="#nested-classes">Classes</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> </div>
<div class="headertitle">
<div class="title">BaseGrid Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div> </div>
</div><!--header-->
<div class="contents">
<p>Abstract Base Class for Irregular <a class="el" href="classKatabatic_1_1Grid.html" title="Template Class for Regular Grid. ">Grid</a>.
<a href="classKatabatic_1_1BaseGrid.html#details">More...</a></p>
<div class="dynheader">
Inheritance diagram for BaseGrid:</div>
<div class="dyncontent">
<div class="center"><img src="classKatabatic_1_1BaseGrid__inherit__graph.png" border="0" usemap="#BaseGrid_inherit__map" alt="Inheritance graph"/></div>
<map name="BaseGrid_inherit__map" id="BaseGrid_inherit__map">
<area shape="rect" id="node2" href="classKatabatic_1_1Grid.html" title="Grid\&lt; GCell \&gt;" alt="" coords="5,80,107,107"/><area shape="rect" id="node4" href="classKatabatic_1_1Grid.html" title="Template Class for Regular Grid. " alt="" coords="131,80,241,107"/><area shape="rect" id="node3" href="classKatabatic_1_1GCellGrid.html" title="GCell Grid. " alt="" coords="17,155,95,181"/></map>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1BaseGrid_1_1Axis.html">Axis</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Graduations on a <a class="el" href="classKatabatic_1_1BaseGrid.html" title="Abstract Base Class for Irregular Grid. ">BaseGrid</a> <a class="el" href="classKatabatic_1_1BaseGrid_1_1Axis.html" title="Graduations on a BaseGrid Axis (H or V). ">Axis</a> (H or V). <a href="classKatabatic_1_1BaseGrid_1_1Axis.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a3a80b6032f86a56bec74609034b3246f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1BaseGrid.html#a3a80b6032f86a56bec74609034b3246f">destroy</a> ()</td></tr>
<tr class="separator:a3a80b6032f86a56bec74609034b3246f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a895132a706d822c43d6ec747c3266f74"><td class="memItemLeft" align="right" valign="top">const <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Box.html">Box</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1BaseGrid.html#a895132a706d822c43d6ec747c3266f74">getBoundingBox</a> () const </td></tr>
<tr class="separator:a895132a706d822c43d6ec747c3266f74"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae2bf24a99431664bb5897b122bb15b43"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1BaseGrid.html#ae2bf24a99431664bb5897b122bb15b43">getColumns</a> () const </td></tr>
<tr class="separator:ae2bf24a99431664bb5897b122bb15b43"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab7e3c454272e9a8f2c803e24454d7303"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1BaseGrid.html#ab7e3c454272e9a8f2c803e24454d7303">getRows</a> () const </td></tr>
<tr class="separator:ab7e3c454272e9a8f2c803e24454d7303"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac25c519161036ae2d004fcc78abf7856"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1BaseGrid.html#ac25c519161036ae2d004fcc78abf7856">getRawSize</a> () const </td></tr>
<tr class="separator:ac25c519161036ae2d004fcc78abf7856"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5ffadea177995aedb4152f58b9dd391d"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1BaseGrid.html#a5ffadea177995aedb4152f58b9dd391d">getIndex</a> (unsigned int c, unsigned int r) const </td></tr>
<tr class="separator:a5ffadea177995aedb4152f58b9dd391d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3a813e40c392fb62c5b1b86d11f1dcb4"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1BaseGrid.html#a3a813e40c392fb62c5b1b86d11f1dcb4">getRow</a> (unsigned int) const </td></tr>
<tr class="separator:a3a813e40c392fb62c5b1b86d11f1dcb4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3ae31ad99809b916f386fe9bde67c6f2"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1BaseGrid.html#a3ae31ad99809b916f386fe9bde67c6f2">getColumn</a> (unsigned int) const </td></tr>
<tr class="separator:a3ae31ad99809b916f386fe9bde67c6f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5731a526d261c2fa798a2c836cfeb9d1"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classKatabatic_1_1BaseGrid_1_1Axis.html">Axis</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1BaseGrid.html#a5731a526d261c2fa798a2c836cfeb9d1">getXGrads</a> () const </td></tr>
<tr class="separator:a5731a526d261c2fa798a2c836cfeb9d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a40fe4841176c132346564b3d4c942668"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classKatabatic_1_1BaseGrid_1_1Axis.html">Axis</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1BaseGrid.html#a40fe4841176c132346564b3d4c942668">getYGrads</a> () const </td></tr>
<tr class="separator:a40fe4841176c132346564b3d4c942668"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:ac479157e8ac115074615167e8a4a2789"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1BaseGrid.html#ac479157e8ac115074615167e8a4a2789">BaseGrid</a> (const <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Box.html">Box</a> &amp;)</td></tr>
<tr class="separator:ac479157e8ac115074615167e8a4a2789"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Abstract Base Class for Irregular <a class="el" href="classKatabatic_1_1Grid.html" title="Template Class for Regular Grid. ">Grid</a>. </p>
<p>An abstract class for a 2-D matrix of objects. The grid is irregular in the sense that the horizontal and vertical cut lines may not be evenly spaced.</p>
<p>The coordinates of cut lines in horizontal and vertical direction are stored <a class="el" href="classKatabatic_1_1BaseGrid_1_1Axis.html" title="Graduations on a BaseGrid Axis (H or V). ">BaseGrid::Axis</a> structure.</p>
<p>The <a class="el" href="classKatabatic_1_1BaseGrid.html" title="Abstract Base Class for Irregular Grid. ">BaseGrid</a> contains all the non-template methods of the <a class="el" href="classKatabatic_1_1Grid.html" title="Template Class for Regular Grid. ">Grid</a>, that is that do not depend of the matrix element type.</p>
<p>The internal storage implemented in derived classes is expected to store "row by row" (rows are put one after another in the vector). </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="ac479157e8ac115074615167e8a4a2789"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classKatabatic_1_1BaseGrid.html">BaseGrid</a> </td>
<td>(</td>
<td class="paramtype">const <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Box.html">Box</a> &amp;&#160;</td>
<td class="paramname"><em>bb</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Construct a new <a class="el" href="classKatabatic_1_1BaseGrid.html" title="Abstract Base Class for Irregular Grid. ">BaseGrid</a> on area <code>bb</code>. Graduations, rows &amp; columns are sets to zero. </p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="a3a80b6032f86a56bec74609034b3246f"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void destroy </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>The user-level destructor. </p>
</div>
</div>
<a class="anchor" id="a895132a706d822c43d6ec747c3266f74"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Box.html">Box</a> &amp; getBoundingBox </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> The grid bounding box. </p>
</div>
</div>
<a class="anchor" id="ae2bf24a99431664bb5897b122bb15b43"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">unsigned int getColumns </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> The numbers of columns in the grid. </p>
<p>Referenced by <a class="el" href="classKatabatic_1_1GCellGrid.html#a3715b38135ca24745f610bebd3407c10">GCellGrid::_postCreate()</a>, <a class="el" href="classKatabatic_1_1KatabaticEngine.html#a1b7d8ed09a198f7afd6e3ac911f6eb37">KatabaticEngine::createDetailedGrid()</a>, <a class="el" href="classKatabatic_1_1BaseGrid.html#a3ae31ad99809b916f386fe9bde67c6f2">BaseGrid::getColumn()</a>, <a class="el" href="classKatabatic_1_1BaseGrid.html#a5ffadea177995aedb4152f58b9dd391d">BaseGrid::getIndex()</a>, <a class="el" href="classKatabatic_1_1BaseGrid.html#ac25c519161036ae2d004fcc78abf7856">BaseGrid::getRawSize()</a>, and <a class="el" href="classKatabatic_1_1BaseGrid.html#a3a813e40c392fb62c5b1b86d11f1dcb4">BaseGrid::getRow()</a>.</p>
</div>
</div>
<a class="anchor" id="ab7e3c454272e9a8f2c803e24454d7303"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">unsigned int getRows </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> The numbers of rows in the grid. </p>
<p>Referenced by <a class="el" href="classKatabatic_1_1GCellGrid.html#a3715b38135ca24745f610bebd3407c10">GCellGrid::_postCreate()</a>, <a class="el" href="classKatabatic_1_1KatabaticEngine.html#a1b7d8ed09a198f7afd6e3ac911f6eb37">KatabaticEngine::createDetailedGrid()</a>, and <a class="el" href="classKatabatic_1_1BaseGrid.html#ac25c519161036ae2d004fcc78abf7856">BaseGrid::getRawSize()</a>.</p>
</div>
</div>
<a class="anchor" id="ac25c519161036ae2d004fcc78abf7856"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">unsigned int getRawSize </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> The total number of elements in the grid (i.e. <img class="formulaInl" alt="$ rows \times columns $" src="form_6.png"/>) </p>
<p>References <a class="el" href="classKatabatic_1_1BaseGrid.html#ae2bf24a99431664bb5897b122bb15b43">BaseGrid::getColumns()</a>, and <a class="el" href="classKatabatic_1_1BaseGrid.html#ab7e3c454272e9a8f2c803e24454d7303">BaseGrid::getRows()</a>.</p>
</div>
</div>
<a class="anchor" id="a5ffadea177995aedb4152f58b9dd391d"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">unsigned int getIndex </td>
<td>(</td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>c</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>r</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>An helper function that compute the linear index in the element vector from a <code></code>(c,r) coordinate pair: </p>
<p class="formulaDsp">
<img class="formulaDsp" alt="\[ index = c + r \times columns \]" src="form_7.png"/>
</p>
<p>References <a class="el" href="classKatabatic_1_1BaseGrid.html#ae2bf24a99431664bb5897b122bb15b43">BaseGrid::getColumns()</a>.</p>
</div>
</div>
<a class="anchor" id="a3a813e40c392fb62c5b1b86d11f1dcb4"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">unsigned int getRow </td>
<td>(</td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>i</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>An helper function that compute the row number from the linear index in the vector: </p>
<p class="formulaDsp">
<img class="formulaDsp" alt="\[ row = index / columns \]" src="form_8.png"/>
</p>
<p>References <a class="el" href="classKatabatic_1_1BaseGrid.html#ae2bf24a99431664bb5897b122bb15b43">BaseGrid::getColumns()</a>.</p>
<p>Referenced by <a class="el" href="classKatabatic_1_1GCell.html#a14db4e8542de7da785abec87fa65d6a4">GCell::getRow()</a>.</p>
</div>
</div>
<a class="anchor" id="a3ae31ad99809b916f386fe9bde67c6f2"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">unsigned int getColumn </td>
<td>(</td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>i</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>An helper function that compute the column number from the linear index in the vector: </p>
<p class="formulaDsp">
<img class="formulaDsp" alt="\[ column = index \div columns \]" src="form_9.png"/>
</p>
<p>References <a class="el" href="classKatabatic_1_1BaseGrid.html#ae2bf24a99431664bb5897b122bb15b43">BaseGrid::getColumns()</a>.</p>
<p>Referenced by <a class="el" href="classKatabatic_1_1GCell.html#a0035603802c53109ab0581ac39239932">GCell::getColumn()</a>.</p>
</div>
</div>
<a class="anchor" id="a5731a526d261c2fa798a2c836cfeb9d1"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="classKatabatic_1_1BaseGrid_1_1Axis.html">Axis</a> &amp; getXGrads </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> The graduations on the X axis. </p>
</div>
</div>
<a class="anchor" id="a40fe4841176c132346564b3d4c942668"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="classKatabatic_1_1BaseGrid_1_1Axis.html">Axis</a> &amp; getYGrads </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> The graduations on the Y axis. </p>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="Grid_8h_source.html">Grid.h</a></li>
<li>Grid.cpp</li>
<li>Grid.dox</li>
</ul>
</div><!-- contents -->
<br>
<hr>
<table class="footer1">
<tr>
<td class="LFooter"><small>Generated by doxygen 1.8.5 on Mon Oct 1 2018</small></td>
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
</tr>
</table>
<table class="footer2">
<tr>
<td class="LFooter">Katabatic - Routing Toolbox</td>
<td class="RFooter"><small>Copyright &#169; 2008-2016 UPMC. All rights reserved</small></td>
</tr>
</table>
</body>
</html>