Boost logo

Boost-Commit :

From: hervebronnimann_at_[hidden]
Date: 2007-06-12 02:15:41


Author: hervebronnimann
Date: 2007-06-12 02:15:39 EDT (Tue, 12 Jun 2007)
New Revision: 6996
URL: http://svn.boost.org/trac/boost/changeset/6996

Log:
Commit this version of the documentation (let's say we reached a small
milestone). But documentation should not be checked in too often, and should
remain in a stable (i.e., clean) state, even if it is incomplete.

Directory structure is dev/doxy for the temporary files (not checked in, they
are the product of make_doc.sh script, generated simply by doing:
  export HDSTL_ROOT=.../SOC/2007/geometry/libs/hdstl
and adding $HDSTL_ROOT/tools to your path, then in the directory dev/hds_concepts,
simply "make_doc.sh *.hpp").

Added:
   sandbox/SOC/2007/geometry/libs/hdstl/dev/doxy/
      - copied from r6995, /sandbox/SOC/2007/geometry/libs/hdstl/doxy/
   sandbox/SOC/2007/geometry/libs/hdstl/doc/html/backward__hds__concept_8hpp-source.html
   sandbox/SOC/2007/geometry/libs/hdstl/doc/html/backward__hds__concept_8hpp.html
   sandbox/SOC/2007/geometry/libs/hdstl/doc/html/backwardhds.html
   sandbox/SOC/2007/geometry/libs/hdstl/doc/html/doxygen.css
   sandbox/SOC/2007/geometry/libs/hdstl/doc/html/doxygen.png (contents, props changed)
   sandbox/SOC/2007/geometry/libs/hdstl/doc/html/files.html
   sandbox/SOC/2007/geometry/libs/hdstl/doc/html/forward__hds__concept_8hpp-source.html
   sandbox/SOC/2007/geometry/libs/hdstl/doc/html/forward__hds__concept_8hpp.html
   sandbox/SOC/2007/geometry/libs/hdstl/doc/html/forwardhds.html
   sandbox/SOC/2007/geometry/libs/hdstl/doc/html/hds__concept_8hpp-source.html
   sandbox/SOC/2007/geometry/libs/hdstl/doc/html/hds__concept_8hpp.html
   sandbox/SOC/2007/geometry/libs/hdstl/doc/html/hdsconcept.html
   sandbox/SOC/2007/geometry/libs/hdstl/doc/html/index.html
   sandbox/SOC/2007/geometry/libs/hdstl/doc/html/pages.html
   sandbox/SOC/2007/geometry/libs/hdstl/doc/html/tab_b.gif (contents, props changed)
   sandbox/SOC/2007/geometry/libs/hdstl/doc/html/tab_l.gif (contents, props changed)
   sandbox/SOC/2007/geometry/libs/hdstl/doc/html/tab_r.gif (contents, props changed)
   sandbox/SOC/2007/geometry/libs/hdstl/doc/html/tabs.css
   sandbox/SOC/2007/geometry/libs/hdstl/doc/latex/backward__hds__concept_8hpp.tex
   sandbox/SOC/2007/geometry/libs/hdstl/doc/latex/backwardhds.tex
   sandbox/SOC/2007/geometry/libs/hdstl/doc/latex/files.tex
   sandbox/SOC/2007/geometry/libs/hdstl/doc/latex/forward__hds__concept_8hpp.tex
   sandbox/SOC/2007/geometry/libs/hdstl/doc/latex/forwardhds.tex
   sandbox/SOC/2007/geometry/libs/hdstl/doc/latex/hds__concept_8hpp.tex
   sandbox/SOC/2007/geometry/libs/hdstl/doc/latex/hdsconcept.tex
   sandbox/SOC/2007/geometry/libs/hdstl/doc/latex/pages.tex
   sandbox/SOC/2007/geometry/libs/hdstl/doc/latex/refman.tex
Removed:
   sandbox/SOC/2007/geometry/libs/hdstl/doxy/
Text files modified:
   sandbox/SOC/2007/geometry/libs/hdstl/doc/hdstl.conf | 2 +-
   sandbox/SOC/2007/geometry/libs/hdstl/doc/latex/doxygen.sty | 4 ++--
   sandbox/SOC/2007/geometry/libs/hdstl/tools/make_doc.sh | 2 +-
   3 files changed, 4 insertions(+), 4 deletions(-)

Modified: sandbox/SOC/2007/geometry/libs/hdstl/doc/hdstl.conf
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/doc/hdstl.conf (original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/doc/hdstl.conf 2007-06-12 02:15:39 EDT (Tue, 12 Jun 2007)
@@ -459,7 +459,7 @@
 # directories like "/usr/src/myproject". Separate the files or directories
 # with spaces.
 
-INPUT = "../doxy"
+INPUT = "../dev/doxy"
 
 # If the value of the INPUT tag contains directories, you can use the
 # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp

Added: sandbox/SOC/2007/geometry/libs/hdstl/doc/html/backward__hds__concept_8hpp-source.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/doc/html/backward__hds__concept_8hpp-source.html 2007-06-12 02:15:39 EDT (Tue, 12 Jun 2007)
@@ -0,0 +1,68 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>HDSTL: backward_hds_concept.hpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li id="current">Files</li>
+ <li>Related Pages</li>
+ </ul></div>
+<h1>backward_hds_concept.hpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
+<a name="l00119"></a>00119 <span class="preprocessor">#ifdef BOOST_HDSTL_CONCEPTS_BACKWARDHDSCONCEPT_HPP</span>
+<a name="l00120"></a>00120 <span class="preprocessor"></span><span class="preprocessor">#define BOOST_HDSTL_CONCEPTS_BACKWARDHDSCONCEPT_HPP 1</span>
+<a name="l00121"></a>00121 <span class="preprocessor"></span>
+<a name="l00122"></a>00122 <span class="keyword">namespace </span>hdstl{
+<a name="l00123"></a>00123 <span class="keyword">namespace </span>concepts{
+<a name="l00124"></a>00124
+<a name="l00125"></a>00125 <span class="keyword">template</span> &lt;<span class="keyword">class</span> HDS&gt;
+<a name="l00126"></a>00126 <span class="keyword">struct </span>BackwardHDSConcept {
+<a name="l00143"></a>00143 <span class="keyword">typedef</span> <span class="keyword">typename</span> hds_traits&lt;HDS&gt;::halfedge_descriptor halfedge_descriptor;
+<a name="l00144"></a>00144 <span class="keyword">typedef</span> <span class="keyword">typename</span> hds_traits&lt;HDS&gt;::traversal_category traversal_category;
+<a name="l00145"></a>00145 <span class="keyword">typedef</span> <span class="keyword">typename</span> hds_traits&lt;HDS&gt;::backward_category backward_category;
+<a name="l00146"></a>00146
+<a name="l00148"></a>00148
+<a name="l00149"></a>00149
+<a name="l00150"></a>00150 <span class="keywordtype">void</span> constraints() {
+<a name="l00151"></a>00151 <span class="keyword">using namespace </span>boost;
+<a name="l00152"></a>00152
+<a name="l00153"></a>00153 function_requires&lt;HDSConcept&lt;HDS&gt; &gt;();
+<a name="l00154"></a>00154 function_requires&lt;ConvertibleConcept&lt;traversal_category,
+<a name="l00155"></a>00155 backward_traversal_tag&gt; &gt;();
+<a name="l00156"></a>00156 <span class="keyword">const</span> <span class="keywordtype">bool</span> is_valid_storage_tag =
+<a name="l00157"></a>00157 is_convertible&lt;backward_category,prev_at_source_tag&gt;::value ||
+<a name="l00158"></a>00158 is_convertible&lt;backward_category,prev_at_target_tag&gt;::value ||
+<a name="l00159"></a>00159 is_convertible&lt;backward_category,prev_in_facet_tag&gt;::value;
+<a name="l00160"></a>00160 BOOST_STATIC_ASSERT( is_valid_storage_tag );
+<a name="l00161"></a>00161
+<a name="l00162"></a>00162 const_constraints(hds);
+<a name="l00163"></a>00163 }
+<a name="l00164"></a>00164
+<a name="l00166"></a>00166
+<a name="l00167"></a>00167
+<a name="l00168"></a>00168 <span class="keywordtype">void</span> const_constraints(HDS <span class="keyword">const</span>&amp; hds){
+<a name="l00169"></a>00169 h = prev_in_facet(hds,h);
+<a name="l00170"></a>00170 h = prev_at_source(hds,h);
+<a name="l00171"></a>00171 h = prev_at_target(hds,h);
+<a name="l00172"></a>00172 }
+<a name="l00173"></a>00173
+<a name="l00174"></a>00174 <span class="keyword">private</span>:
+<a name="l00176"></a>00176
+<a name="l00177"></a>00177
+<a name="l00178"></a>00178 BackwardHDS hds; <span class="comment">// a halfedge data structure object</span>
+<a name="l00179"></a>00179 halfedge_descriptor h; <span class="comment">// a halfedge descriptor</span>
+<a name="l00180"></a>00180 halfedge_descriptor g; <span class="comment">// another halfedge descriptor</span>
+<a name="l00181"></a>00181 };
+<a name="l00182"></a>00182
+<a name="l00183"></a>00183 } <span class="comment">// close namespace concepts</span>
+<a name="l00184"></a>00184 } <span class="comment">// close namespace hdstl</span>
+<a name="l00185"></a>00185
+<a name="l00186"></a>00186 <span class="preprocessor">#endif</span>
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Tue Jun 12 02:11:13 2007 for HDSTL by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
+</body>
+</html>

Added: sandbox/SOC/2007/geometry/libs/hdstl/doc/html/backward__hds__concept_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/doc/html/backward__hds__concept_8hpp.html 2007-06-12 02:15:39 EDT (Tue, 12 Jun 2007)
@@ -0,0 +1,30 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>HDSTL: backward_hds_concept.hpp File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li id="current">Files</li>
+ <li>Related Pages</li>
+ </ul></div>
+<h1>backward_hds_concept.hpp File Reference</h1>Provide <code>BackwardHDS</code> concept definition and concept-checking class. More...
+<p>
+
+<p>
+Go to the source code of this file.<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Provide <code>BackwardHDS</code> concept definition and concept-checking class.
+<p>
+This file provides a single class template that, when used with the following concept-checking utilities: <div class="fragment"><pre class="fragment"> boost::function_requires&lt;BackwardHDSConcept&lt;HDS&gt; &gt;();
+</pre></div> inside a function body, or <div class="fragment"><pre class="fragment"> BOOST_CLASS_REQUIRE(HDS, boost::hdstl, BackwardHDSConcept);
+</pre></div> inside a class body, checks whether the type given as template argument is a model of the HDS concept described on the page <a class="el" href="backwardhds.html">Backward HDS concept</a>. <hr size="1"><address style="align: right;"><small>Generated on Tue Jun 12 02:11:13 2007 for HDSTL by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
+</body>
+</html>

Added: sandbox/SOC/2007/geometry/libs/hdstl/doc/html/backwardhds.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/doc/html/backwardhds.html 2007-06-12 02:15:39 EDT (Tue, 12 Jun 2007)
@@ -0,0 +1,81 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>HDSTL: Backward HDS concept</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Files</li>
+ <li>Related Pages</li>
+ </ul></div>
+<h1><a class="anchor" name="backwardhds">Backward HDS concept</a></h1><h2><a class="anchor" name="refbackwardhds1">
+Definition</a></h2>
+This concept refines the <code>HDSConcept</code>, and specifies additional backward category to iterate over the <code>HDS</code> data structure, which means clockwise movement around the facet and counter clockwise movement around the vertex. Possible backward categories are <code>prev_in_facet</code>, <code>prev_at_source</code>, and <code>prev_at_target</code>. Once one of these categories are given all others can be accessed with the help of the <code>opposite</code> of a halfedge (see the section "Invariants" below for the algebraic relations that must hold).<h2><a class="anchor" name="refbackwardhds2">
+Refinement of</a></h2>
+<ul>
+<li><code>HDSConcept</code></li></ul>
+<h2><a class="anchor" name="refbackwardhds3">
+Notation</a></h2>
+<ul>
+<li><code>HDS</code> A type that is a model of <code>BackwardHDSConcept</code></li><li><code>hds</code> A non-modifiable instance of <code>HDS</code></li><li><code>h</code>,<code>g</code> Halfedge descriptors, of type <code>hds_traits&lt;HDS&gt;::halfedge_descriptor</code></li></ul>
+<h2><a class="anchor" name="refbackwardhds4">
+Associated types</a></h2>
+<ul>
+<li><code>hds_traits&lt;HDS&gt;::halfedge_descriptor</code>: from <code>HDSConcept</code>.</li><li><code>hds_traits&lt;HDS&gt;::traversal_category</code>: from <code>HDSConcept</code>, with additional requirement that this type must be convertible to <code>hdstl::backward_traversal_tag</code>.</li><li><code>hds_traits&lt;HDS&gt;::backward_category</code>: defines the pointer type for backward iteration.</li></ul>
+<h2><a class="anchor" name="refbackwardhds5">
+Definitions</a></h2>
+<ul>
+<li><code>halfedge_descriptor</code> is a type that contains information to access the halfedge. (See the <code>HDS</code> concept or a full definition.)</li><li><code>traversal_category</code> is a type that contains information about the direction of the traversal, which is forward, backward or bidirectional. For this <code>BackwardHDS</code> concept, the <code>traversal_category</code> has to be convertible to the <code>hdstl::backward_traversal_tag</code> type defined in <code>&lt;boost/hdstl.hpp&gt;</code>.</li><li><code>backward_category</code> defines the primary accessor of the backward information for use by algorithms which desire the most direct access.</li></ul>
+<h2><a class="anchor" name="refbackwardhds6">
+Valid Expressions</a></h2>
+In addition to the valid expressions of the <code>HDS</code> concept:<ul>
+<li><code>prev_in_facet(hds,h)</code> must return a value assignable to h.</li><li><code>prev_at_source(hds,h)</code> must return a value assignable to h.</li><li><code>prev_at_target(hds,h)</code> must return a value assignable to h.</li></ul>
+<h2><a class="anchor" name="refbackwardhds7">
+Expression Semantics</a></h2>
+In addition to the expression semantics of the <code>HDS</code> concept:<ul>
+<li><code>prev_in_facet(hds,h)</code> returns a halfedge descriptor to the halfedge preceding <code>h</code> in the adjacent facet cycle, when facet cycles are oriented in counter-clockwise order.</li><li><code>prev_at_source(hds,h)</code> returns a halfedge descriptor to the halfedge preceding <code>h</code> around the source vertex of <code>h</code>, when halfedges are ordered around a given vertex in clockwise order.</li><li><code>prev_at_target(hds,h)</code> returns a halfedge descriptor to the halfedge preceding <code>h</code> around the target vertex of <code>h</code>, when halfedges are ordered around a given vertex in clockwise order.</li></ul>
+<h2><a class="anchor" name="refbackwardhds8">
+Complexity guarantees</a></h2>
+<ul>
+<li><code>prev_in_facet(hds,h)</code>: amortized constant time.</li><li><code>prev_at_source(hds,h)</code>: amortized constant time.</li><li><code>prev_at_target(hds,h)</code>: amortized constant time.</li></ul>
+<h2><a class="anchor" name="refbackwardhds9">
+Invariants</a></h2>
+The backward halfedge accessors are linked via the algebraic relations:<ul>
+<li><code>prev_in_facet(hds,h)</code> == <code>prev_at_target(opposite(hds,h))</code> == <code>opposite(prev_at_source(hds,h))</code></li><li><code>prev_at_source(hds,h)</code> == <code>opposite(prev_in_facet(hds,h))</code> == <code>opposite(prev_at_target(opposite(hds,h)))</code></li><li><code>prev_at_target(hds,h)</code> == <code>prev_in_facet(opposite(hds,h))</code> == <code>opposite(prev_at_source(opposite(hds,h)))</code></li></ul>
+<h2><a class="anchor" name="refbackwardhds10">
+Concept-checking class</a></h2>
+<div class="fragment"><pre class="fragment"> <span class="keyword">template</span> &lt;<span class="keyword">class</span> HDS&gt;
+ <span class="keyword">struct </span>BackwardHDSConcept {
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> hds_traits&lt;HDS&gt;::halfedge_descriptor halfedge_descriptor;
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> hds_traits&lt;HDS&gt;::traversal_category traversal_category;
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> hds_traits&lt;HDS&gt;::backward_category backward_category;
+ <span class="keywordtype">void</span> constraints() {
+ <span class="keyword">using namespace </span>boost;
+ function_requires&lt;HDSConcept&lt;HDS&gt; &gt;();
+ function_requires&lt;ConvertibleConcept&lt;traversal_category,
+ hdstl::backward_traversal_tag&gt; &gt;();
+ <span class="keyword">const</span> <span class="keywordtype">bool</span> is_valid_storage_tag =
+ is_convertible&lt;backward_category,prev_at_source_tag&gt;::value ||
+ is_convertible&lt;backward_category,prev_at_target_tag&gt;::value ||
+ is_convertible&lt;backward_category,prev_in_facet_tag&gt;::value;
+ BOOST_STATIC_ASSERT( is_valid_storage_tag );
+
+ const_constraints(hds);
+ }
+ <span class="keywordtype">void</span> const_constraints(HDS <span class="keyword">const</span>&amp; hds){
+ h = prev_in_facet(hds,h);
+ h = prev_at_source(hds,h);
+ h = prev_at_target(hds,h);
+ }
+ BackwardHDS hds;
+ halfedge_descriptor h;
+ halfedge_descriptor g;
+ };
+</pre></div> <hr size="1"><address style="align: right;"><small>Generated on Tue Jun 12 02:11:13 2007 for HDSTL by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
+</body>
+</html>

Added: sandbox/SOC/2007/geometry/libs/hdstl/doc/html/doxygen.css
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/doc/html/doxygen.css 2007-06-12 02:15:39 EDT (Tue, 12 Jun 2007)
@@ -0,0 +1,358 @@
+BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV {
+ font-family: Geneva, Arial, Helvetica, sans-serif;
+}
+BODY,TD {
+ font-size: 90%;
+}
+H1 {
+ text-align: center;
+ font-size: 160%;
+}
+H2 {
+ font-size: 120%;
+}
+H3 {
+ font-size: 100%;
+}
+CAPTION { font-weight: bold }
+DIV.qindex {
+ width: 100%;
+ background-color: #e8eef2;
+ border: 1px solid #84b0c7;
+ text-align: center;
+ margin: 2px;
+ padding: 2px;
+ line-height: 140%;
+}
+DIV.nav {
+ width: 100%;
+ background-color: #e8eef2;
+ border: 1px solid #84b0c7;
+ text-align: center;
+ margin: 2px;
+ padding: 2px;
+ line-height: 140%;
+}
+DIV.navtab {
+ background-color: #e8eef2;
+ border: 1px solid #84b0c7;
+ text-align: center;
+ margin: 2px;
+ margin-right: 15px;
+ padding: 2px;
+}
+TD.navtab {
+ font-size: 70%;
+}
+A.qindex {
+ text-decoration: none;
+ font-weight: bold;
+ color: #1A419D;
+}
+A.qindex:visited {
+ text-decoration: none;
+ font-weight: bold;
+ color: #1A419D
+}
+A.qindex:hover {
+ text-decoration: none;
+ background-color: #ddddff;
+}
+A.qindexHL {
+ text-decoration: none;
+ font-weight: bold;
+ background-color: #6666cc;
+ color: #ffffff;
+ border: 1px double #9295C2;
+}
+A.qindexHL:hover {
+ text-decoration: none;
+ background-color: #6666cc;
+ color: #ffffff;
+}
+A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff }
+A.el { text-decoration: none; font-weight: bold }
+A.elRef { font-weight: bold }
+A.code:link { text-decoration: none; font-weight: normal; color: #0000FF}
+A.code:visited { text-decoration: none; font-weight: normal; color: #0000FF}
+A.codeRef:link { font-weight: normal; color: #0000FF}
+A.codeRef:visited { font-weight: normal; color: #0000FF}
+A:hover { text-decoration: none; background-color: #f2f2ff }
+DL.el { margin-left: -1cm }
+.fragment {
+ font-family: monospace, fixed;
+ font-size: 95%;
+}
+PRE.fragment {
+ border: 1px solid #CCCCCC;
+ background-color: #f5f5f5;
+ margin-top: 4px;
+ margin-bottom: 4px;
+ margin-left: 2px;
+ margin-right: 8px;
+ padding-left: 6px;
+ padding-right: 6px;
+ padding-top: 4px;
+ padding-bottom: 4px;
+}
+DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px }
+
+DIV.groupHeader {
+ margin-left: 16px;
+ margin-top: 12px;
+ margin-bottom: 6px;
+ font-weight: bold;
+}
+DIV.groupText { margin-left: 16px; font-style: italic; font-size: 90% }
+BODY {
+ background: white;
+ color: black;
+ margin-right: 20px;
+ margin-left: 20px;
+}
+TD.indexkey {
+ background-color: #e8eef2;
+ font-weight: bold;
+ padding-right : 10px;
+ padding-top : 2px;
+ padding-left : 10px;
+ padding-bottom : 2px;
+ margin-left : 0px;
+ margin-right : 0px;
+ margin-top : 2px;
+ margin-bottom : 2px;
+ border: 1px solid #CCCCCC;
+}
+TD.indexvalue {
+ background-color: #e8eef2;
+ font-style: italic;
+ padding-right : 10px;
+ padding-top : 2px;
+ padding-left : 10px;
+ padding-bottom : 2px;
+ margin-left : 0px;
+ margin-right : 0px;
+ margin-top : 2px;
+ margin-bottom : 2px;
+ border: 1px solid #CCCCCC;
+}
+TR.memlist {
+ background-color: #f0f0f0;
+}
+P.formulaDsp { text-align: center; }
+IMG.formulaDsp { }
+IMG.formulaInl { vertical-align: middle; }
+SPAN.keyword { color: #008000 }
+SPAN.keywordtype { color: #604020 }
+SPAN.keywordflow { color: #e08000 }
+SPAN.comment { color: #800000 }
+SPAN.preprocessor { color: #806020 }
+SPAN.stringliteral { color: #002080 }
+SPAN.charliteral { color: #008080 }
+.mdescLeft {
+ padding: 0px 8px 4px 8px;
+ font-size: 80%;
+ font-style: italic;
+ background-color: #FAFAFA;
+ border-top: 1px none #E0E0E0;
+ border-right: 1px none #E0E0E0;
+ border-bottom: 1px none #E0E0E0;
+ border-left: 1px none #E0E0E0;
+ margin: 0px;
+}
+.mdescRight {
+ padding: 0px 8px 4px 8px;
+ font-size: 80%;
+ font-style: italic;
+ background-color: #FAFAFA;
+ border-top: 1px none #E0E0E0;
+ border-right: 1px none #E0E0E0;
+ border-bottom: 1px none #E0E0E0;
+ border-left: 1px none #E0E0E0;
+ margin: 0px;
+}
+.memItemLeft {
+ padding: 1px 0px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-top-style: solid;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ background-color: #FAFAFA;
+ font-size: 80%;
+}
+.memItemRight {
+ padding: 1px 8px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-top-style: solid;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ background-color: #FAFAFA;
+ font-size: 80%;
+}
+.memTemplItemLeft {
+ padding: 1px 0px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-top-style: none;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ background-color: #FAFAFA;
+ font-size: 80%;
+}
+.memTemplItemRight {
+ padding: 1px 8px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-top-style: none;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ background-color: #FAFAFA;
+ font-size: 80%;
+}
+.memTemplParams {
+ padding: 1px 0px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-top-style: solid;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ color: #606060;
+ background-color: #FAFAFA;
+ font-size: 80%;
+}
+.search { color: #003399;
+ font-weight: bold;
+}
+FORM.search {
+ margin-bottom: 0px;
+ margin-top: 0px;
+}
+INPUT.search { font-size: 75%;
+ color: #000080;
+ font-weight: normal;
+ background-color: #e8eef2;
+}
+TD.tiny { font-size: 75%;
+}
+a {
+ color: #1A41A8;
+}
+a:visited {
+ color: #2A3798;
+}
+.dirtab { padding: 4px;
+ border-collapse: collapse;
+ border: 1px solid #84b0c7;
+}
+TH.dirtab { background: #e8eef2;
+ font-weight: bold;
+}
+HR { height: 1px;
+ border: none;
+ border-top: 1px solid black;
+}
+
+/* Style for detailed member documentation */
+.memtemplate {
+ font-size: 80%;
+ color: #606060;
+ font-weight: normal;
+}
+.memnav {
+ background-color: #e8eef2;
+ border: 1px solid #84b0c7;
+ text-align: center;
+ margin: 2px;
+ margin-right: 15px;
+ padding: 2px;
+}
+.memitem {
+ padding: 4px;
+ background-color: #eef3f5;
+ border-width: 1px;
+ border-style: solid;
+ border-color: #dedeee;
+ -moz-border-radius: 8px 8px 8px 8px;
+}
+.memname {
+ white-space: nowrap;
+ font-weight: bold;
+}
+.memdoc{
+ padding-left: 10px;
+}
+.memproto {
+ background-color: #d5e1e8;
+ width: 100%;
+ border-width: 1px;
+ border-style: solid;
+ border-color: #84b0c7;
+ font-weight: bold;
+ -moz-border-radius: 8px 8px 8px 8px;
+}
+.paramkey {
+ text-align: right;
+}
+.paramtype {
+ white-space: nowrap;
+}
+.paramname {
+ color: #602020;
+ font-style: italic;
+}
+/* End Styling for detailed member documentation */
+
+/* for the tree view */
+.ftvtree {
+ font-family: sans-serif;
+ margin:0.5em;
+}
+.directory { font-size: 9pt; font-weight: bold; }
+.directory h3 { margin: 0px; margin-top: 1em; font-size: 11pt; }
+.directory > h3 { margin-top: 0; }
+.directory p { margin: 0px; white-space: nowrap; }
+.directory div { display: none; margin: 0px; }
+.directory img { vertical-align: -30%; }
+

Added: sandbox/SOC/2007/geometry/libs/hdstl/doc/html/doxygen.png
==============================================================================
Binary file. No diff available.

Added: sandbox/SOC/2007/geometry/libs/hdstl/doc/html/files.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/doc/html/files.html 2007-06-12 02:15:39 EDT (Tue, 12 Jun 2007)
@@ -0,0 +1,23 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>HDSTL: File Index</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li id="current">Files</li>
+ <li>Related Pages</li>
+ </ul></div>
+<h1>HDSTL File List</h1>Here is a list of all files with brief descriptions:<table>
+ <tr><td class="indexkey"><a class="el" href="backward__hds__concept_8hpp.html">backward_hds_concept.hpp</a> [code]</td><td class="indexvalue">Provide <code>BackwardHDS</code> concept definition and concept-checking class </td></tr>
+ <tr><td class="indexkey"><a class="el" href="forward__hds__concept_8hpp.html">forward_hds_concept.hpp</a> [code]</td><td class="indexvalue">Provide <code>ForwardHDS</code> concept definition and concept-checking class </td></tr>
+ <tr><td class="indexkey"><a class="el" href="hds__concept_8hpp.html">hds_concept.hpp</a> [code]</td><td class="indexvalue">Provide <code>HDS</code> concept definition and concept-checking class </td></tr>
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Tue Jun 12 02:11:13 2007 for HDSTL by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
+</body>
+</html>

Added: sandbox/SOC/2007/geometry/libs/hdstl/doc/html/forward__hds__concept_8hpp-source.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/doc/html/forward__hds__concept_8hpp-source.html 2007-06-12 02:15:39 EDT (Tue, 12 Jun 2007)
@@ -0,0 +1,68 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>HDSTL: forward_hds_concept.hpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li id="current">Files</li>
+ <li>Related Pages</li>
+ </ul></div>
+<h1>forward_hds_concept.hpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
+<a name="l00119"></a>00119 <span class="preprocessor">#ifdef BOOST_HDSTL_CONCEPTS_FORWARDHDSCONCEPT_HPP</span>
+<a name="l00120"></a>00120 <span class="preprocessor"></span><span class="preprocessor">#define BOOST_HDSTL_CONCEPTS_FORWARDHDSCONCEPT_HPP 1</span>
+<a name="l00121"></a>00121 <span class="preprocessor"></span>
+<a name="l00122"></a>00122 <span class="keyword">namespace </span>hdstl{
+<a name="l00123"></a>00123 <span class="keyword">namespace </span>concepts{
+<a name="l00124"></a>00124
+<a name="l00125"></a>00125 <span class="keyword">template</span> &lt;<span class="keyword">class</span> HDS&gt;
+<a name="l00126"></a>00126 <span class="keyword">struct </span>ForwardHDSConcept {
+<a name="l00143"></a>00143 <span class="keyword">typedef</span> <span class="keyword">typename</span> hds_traits&lt;HDS&gt;::halfedge_descriptor halfedge_descriptor;
+<a name="l00144"></a>00144 <span class="keyword">typedef</span> <span class="keyword">typename</span> hds_traits&lt;HDS&gt;::traversal_category traversal_category;
+<a name="l00145"></a>00145 <span class="keyword">typedef</span> <span class="keyword">typename</span> hds_traits&lt;HDS&gt;::forward_category forward_category;
+<a name="l00146"></a>00146
+<a name="l00148"></a>00148
+<a name="l00149"></a>00149
+<a name="l00150"></a>00150 <span class="keywordtype">void</span> constraints() {
+<a name="l00151"></a>00151 <span class="keyword">using namespace </span>boost;
+<a name="l00152"></a>00152
+<a name="l00153"></a>00153 function_requires&lt;HDSConcept&lt;HDS&gt; &gt;();
+<a name="l00154"></a>00154 function_requires&lt;ConvertibleConcept&lt;traversal_category,
+<a name="l00155"></a>00155 forward_traversal_tag&gt; &gt;();
+<a name="l00156"></a>00156 <span class="keyword">const</span> <span class="keywordtype">bool</span> is_valid_storage_tag =
+<a name="l00157"></a>00157 is_convertible&lt;forward_category,next_at_source_tag&gt;::value ||
+<a name="l00158"></a>00158 is_convertible&lt;forward_category,next_at_target_tag&gt;::value ||
+<a name="l00159"></a>00159 is_convertible&lt;forward_category,next_in_facet_tag&gt;::value;
+<a name="l00160"></a>00160 BOOST_STATIC_ASSERT( is_valid_storage_tag );
+<a name="l00161"></a>00161
+<a name="l00162"></a>00162 const_constraints(hds);
+<a name="l00163"></a>00163 }
+<a name="l00164"></a>00164
+<a name="l00166"></a>00166
+<a name="l00167"></a>00167
+<a name="l00168"></a>00168 <span class="keywordtype">void</span> const_constraints(HDS <span class="keyword">const</span>&amp; hds){
+<a name="l00169"></a>00169 h = next_in_facet(hds,h);
+<a name="l00170"></a>00170 h = next_at_source(hds,h);
+<a name="l00171"></a>00171 h = next_at_target(hds,h);
+<a name="l00172"></a>00172 }
+<a name="l00173"></a>00173
+<a name="l00174"></a>00174 <span class="keyword">private</span>:
+<a name="l00176"></a>00176
+<a name="l00177"></a>00177
+<a name="l00178"></a>00178 ForwardHDS hds; <span class="comment">// a halfedge data structure object</span>
+<a name="l00179"></a>00179 halfedge_descriptor h; <span class="comment">// a halfedge descriptor</span>
+<a name="l00180"></a>00180 halfedge_descriptor g; <span class="comment">// another halfedge descriptor</span>
+<a name="l00181"></a>00181 };
+<a name="l00182"></a>00182
+<a name="l00183"></a>00183 } <span class="comment">// close namespace concepts</span>
+<a name="l00184"></a>00184 } <span class="comment">// close namespace hdstl</span>
+<a name="l00185"></a>00185
+<a name="l00186"></a>00186 <span class="preprocessor">#endif</span>
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Tue Jun 12 02:11:13 2007 for HDSTL by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
+</body>
+</html>

Added: sandbox/SOC/2007/geometry/libs/hdstl/doc/html/forward__hds__concept_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/doc/html/forward__hds__concept_8hpp.html 2007-06-12 02:15:39 EDT (Tue, 12 Jun 2007)
@@ -0,0 +1,30 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>HDSTL: forward_hds_concept.hpp File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li id="current">Files</li>
+ <li>Related Pages</li>
+ </ul></div>
+<h1>forward_hds_concept.hpp File Reference</h1>Provide <code>ForwardHDS</code> concept definition and concept-checking class. More...
+<p>
+
+<p>
+Go to the source code of this file.<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Provide <code>ForwardHDS</code> concept definition and concept-checking class.
+<p>
+This file provides a single class template that, when used with the following concept-checking utilities: <div class="fragment"><pre class="fragment"> boost::function_requires&lt;ForwardHDSConcept&lt;HDS&gt; &gt;();
+</pre></div> inside a function body, or <div class="fragment"><pre class="fragment"> BOOST_CLASS_REQUIRE(HDS, boost::hdstl, ForwardHDSConcept);
+</pre></div> inside a class body, checks whether the type given as template argument is a model of the HDS concept described on the page <a class="el" href="forwardhds.html">Forward HDS concept</a>. <hr size="1"><address style="align: right;"><small>Generated on Tue Jun 12 02:11:13 2007 for HDSTL by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
+</body>
+</html>

Added: sandbox/SOC/2007/geometry/libs/hdstl/doc/html/forwardhds.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/doc/html/forwardhds.html 2007-06-12 02:15:39 EDT (Tue, 12 Jun 2007)
@@ -0,0 +1,81 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>HDSTL: Forward HDS concept</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Files</li>
+ <li>Related Pages</li>
+ </ul></div>
+<h1><a class="anchor" name="forwardhds">Forward HDS concept</a></h1><h2><a class="anchor" name="refforwardhds1">
+Definition</a></h2>
+This concept refines the <code>HDSConcept</code>, and specifies additional forward category to iterate over the <code>HDS</code> data structure, which means clockwise movement around the facet and counter clockwise movement around the vertex. Possible forward categories are <code>next_in_facet</code>, <code>next_at_source</code>, and <code>next_at_target</code>. Once one of these categories are given all others can be accessed with the help of the <code>opposite</code> of a halfedge (see the section "Invariants" below for the algebraic relations that must hold).<h2><a class="anchor" name="refforwardhds2">
+Refinement of</a></h2>
+<ul>
+<li><code>HDSConcept</code></li></ul>
+<h2><a class="anchor" name="refforwardhds3">
+Notation</a></h2>
+<ul>
+<li><code>HDS</code> A type that is a model of <code>ForwardHDSConcept</code></li><li><code>hds</code> A non-modifiable instance of <code>HDS</code></li><li><code>h</code>,<code>g</code> Halfedge descriptors, of type <code>hds_traits&lt;HDS&gt;::halfedge_descriptor</code></li></ul>
+<h2><a class="anchor" name="refforwardhds4">
+Associated types</a></h2>
+<ul>
+<li><code>hds_traits&lt;HDS&gt;::halfedge_descriptor</code>: from <code>HDSConcept</code>.</li><li><code>hds_traits&lt;HDS&gt;::traversal_category</code>: from <code>HDSConcept</code>, with additional requirement that this type must be convertible to <code>hdstl::forward_traversal_tag</code>.</li><li><code>hds_traits&lt;HDS&gt;::forward_category</code>: defines the pointer type for forward iteration.</li></ul>
+<h2><a class="anchor" name="refforwardhds5">
+Definitions</a></h2>
+<ul>
+<li><code>halfedge_descriptor</code> is a type that contains information to access the halfedge. (See the <code>HDS</code> concept or a full definition.)</li><li><code>traversal_category</code> is a type that contains information about the direction of the traversal, which is forward, forward or bidirectional. For this <code>ForwardHDS</code> concept, the <code>traversal_category</code> has to be convertible to the <code>hdstl::forward_traversal_tag</code> type defined in <code>&lt;boost/hdstl.hpp&gt;</code>.</li><li><code>forward_category</code> defines the primary accessor of the forward information for use by algorithms which desire the most direct access.</li></ul>
+<h2><a class="anchor" name="refforwardhds6">
+Valid Expressions</a></h2>
+In addition to the valid expressions of the <code>HDS</code> concept:<ul>
+<li><code>next_in_facet(hds,h)</code> must return a value assignable to h.</li><li><code>next_at_source(hds,h)</code> must return a value assignable to h.</li><li><code>next_at_target(hds,h)</code> must return a value assignable to h.</li></ul>
+<h2><a class="anchor" name="refforwardhds7">
+Expression Semantics</a></h2>
+In addition to the expression semantics of the <code>HDS</code> concept:<ul>
+<li><code>next_in_facet(hds,h)</code> returns a halfedge descriptor to the halfedge preceding <code>h</code> in the adjacent facet cycle, when facet cycles are oriented in counter-clockwise order.</li><li><code>next_at_source(hds,h)</code> returns a halfedge descriptor to the halfedge preceding <code>h</code> around the source vertex of <code>h</code>, when halfedges are ordered around a given vertex in clockwise order.</li><li><code>next_at_target(hds,h)</code> returns a halfedge descriptor to the halfedge preceding <code>h</code> around the target vertex of <code>h</code>, when halfedges are ordered around a given vertex in clockwise order.</li></ul>
+<h2><a class="anchor" name="refforwardhds8">
+Complexity guarantees</a></h2>
+<ul>
+<li><code>next_in_facet(hds,h)</code>: amortized constant time.</li><li><code>next_at_source(hds,h)</code>: amortized constant time.</li><li><code>next_at_target(hds,h)</code>: amortized constant time.</li></ul>
+<h2><a class="anchor" name="refforwardhds9">
+Invariants</a></h2>
+The forward halfedge accessors are linked via the algebraic relations:<ul>
+<li><code>next_in_facet(hds,h)</code> == <code>next_at_source(opposite(hds,h))</code> == <code>opposite(next_at_target(hds,h))</code></li><li><code>next_at_source(hds,h)</code> == <code>next_in_facet(opposite(hds,h))</code> == <code>opposite(next_at_target(opposite(hds,h)))</code></li><li><code>next_at_target(hds,h)</code> == <code>opposite(next_in_facet(hds,h))</code> == <code>opposite(next_at_source(opposite(hds,h)))</code></li></ul>
+<h2><a class="anchor" name="refforwardhds10">
+Concept-checking class</a></h2>
+<div class="fragment"><pre class="fragment"> <span class="keyword">template</span> &lt;<span class="keyword">class</span> HDS&gt;
+ <span class="keyword">struct </span>ForwardHDSConcept {
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> hds_traits&lt;HDS&gt;::halfedge_descriptor halfedge_descriptor;
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> hds_traits&lt;HDS&gt;::traversal_category traversal_category;
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> hds_traits&lt;HDS&gt;::forward_category forward_category;
+ <span class="keywordtype">void</span> constraints() {
+ <span class="keyword">using namespace </span>boost;
+ function_requires&lt;HDSConcept&lt;HDS&gt; &gt;();
+ function_requires&lt;ConvertibleConcept&lt;traversal_category,
+ hdstl::forward_traversal_tag&gt; &gt;();
+ <span class="keyword">const</span> <span class="keywordtype">bool</span> is_valid_storage_tag =
+ is_convertible&lt;forward_category,next_at_source_tag&gt;::value ||
+ is_convertible&lt;forward_category,next_at_target_tag&gt;::value ||
+ is_convertible&lt;forward_category,next_in_facet_tag&gt;::value;
+ BOOST_STATIC_ASSERT( is_valid_storage_tag );
+
+ const_constraints(hds);
+ }
+ <span class="keywordtype">void</span> const_constraints(HDS <span class="keyword">const</span>&amp; hds){
+ h = next_in_facet(hds,h);
+ h = next_at_source(hds,h);
+ h = next_at_target(hds,h);
+ }
+ ForwardHDS hds;
+ halfedge_descriptor h;
+ halfedge_descriptor g;
+ };
+</pre></div> <hr size="1"><address style="align: right;"><small>Generated on Tue Jun 12 02:11:13 2007 for HDSTL by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
+</body>
+</html>

Added: sandbox/SOC/2007/geometry/libs/hdstl/doc/html/hds__concept_8hpp-source.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/doc/html/hds__concept_8hpp-source.html 2007-06-12 02:15:39 EDT (Tue, 12 Jun 2007)
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>HDSTL: hds_concept.hpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li id="current">Files</li>
+ <li>Related Pages</li>
+ </ul></div>
+<h1>hds_concept.hpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
+<a name="l00086"></a>00086 <span class="preprocessor">#include &lt;boost/concepts.h&gt;</span>
+<a name="l00087"></a>00087
+<a name="l00088"></a>00088 <span class="preprocessor">#ifdef BOOST_HDSTL_CONCEPTS_HDSCONCEPT_HPP</span>
+<a name="l00089"></a>00089 <span class="preprocessor"></span><span class="preprocessor">#define BOOST_HDSTL_CONCEPTS_HDSCONCEPT_HPP 1</span>
+<a name="l00090"></a>00090 <span class="preprocessor"></span>
+<a name="l00091"></a>00091 <span class="keyword">namespace </span>hdstl{
+<a name="l00092"></a>00092 <span class="keyword">namespace </span>concepts {
+<a name="l00093"></a>00093
+<a name="l00094"></a>00094 <span class="keyword">template</span> &lt;<span class="keyword">class</span> HDS&gt;
+<a name="l00095"></a>00095 <span class="keyword">struct </span>HDSConcept {
+<a name="l00112"></a>00112 <span class="keyword">typedef</span> <span class="keyword">typename</span> hds_traits&lt;HDS&gt;::halfedge_descriptor halfedge_descriptor;
+<a name="l00119"></a>00119
+<a name="l00120"></a>00120
+<a name="l00121"></a>00121 <span class="keywordtype">void</span> constraints()
+<a name="l00125"></a>00125 {
+<a name="l00126"></a>00126 <span class="keyword">using namespace </span>boost;
+<a name="l00127"></a>00127 function_requires&lt;DefaultConstructibleConcept&lt;halfedge_descriptor&gt; &gt;();
+<a name="l00128"></a>00128 function_requires&lt;CopyConstructibleConcept&lt;halfedge_descriptor&gt; &gt;();
+<a name="l00129"></a>00129 function_requires&lt;EqualityComparableConcept&lt;halfedge_descriptor&gt; &gt;();
+<a name="l00130"></a>00130 function_requires&lt;AssignableConcept&lt;halfedge_descriptor&gt; &gt;();
+<a name="l00131"></a>00131
+<a name="l00132"></a>00132 const_constraints(hds);
+<a name="l00133"></a>00133 }
+<a name="l00134"></a>00134
+<a name="l00136"></a>00136
+<a name="l00137"></a>00137
+<a name="l00138"></a>00138 <span class="keywordtype">void</span> const_constraints(HDS <span class="keyword">const</span>&amp; hds)
+<a name="l00142"></a>00142 {
+<a name="l00143"></a>00143 h = opposite(hds,h);
+<a name="l00144"></a>00144 }
+<a name="l00145"></a>00145
+<a name="l00146"></a>00146 <span class="keyword">private</span>:
+<a name="l00147"></a>00147 <span class="comment">// DATA</span>
+<a name="l00148"></a>00148 HDS hds; <span class="comment">// a halfedge data structure object</span>
+<a name="l00149"></a>00149 halfedge_descriptor h; <span class="comment">// a halfedge descriptor</span>
+<a name="l00150"></a>00150 };
+<a name="l00151"></a>00151
+<a name="l00152"></a>00152 } <span class="comment">// close namespace concepts</span>
+<a name="l00153"></a>00153 } <span class="comment">// close namespace hdstl</span>
+<a name="l00154"></a>00154
+<a name="l00155"></a>00155 <span class="preprocessor">#endif</span>
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Tue Jun 12 02:11:13 2007 for HDSTL by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
+</body>
+</html>

Added: sandbox/SOC/2007/geometry/libs/hdstl/doc/html/hds__concept_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/doc/html/hds__concept_8hpp.html 2007-06-12 02:15:39 EDT (Tue, 12 Jun 2007)
@@ -0,0 +1,31 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>HDSTL: hds_concept.hpp File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li id="current">Files</li>
+ <li>Related Pages</li>
+ </ul></div>
+<h1>hds_concept.hpp File Reference</h1>Provide <code>HDS</code> concept definition and concept-checking class. More...
+<p>
+<code>#include &lt;boost/concepts.h&gt;</code><br>
+
+<p>
+Go to the source code of this file.<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Provide <code>HDS</code> concept definition and concept-checking class.
+<p>
+This file provides a single class template that, when used with the following concept-checking utilities: <div class="fragment"><pre class="fragment"> boost::function_requires&lt;HDSConcept&lt;HDS&gt; &gt;();
+</pre></div> inside a function body, or <div class="fragment"><pre class="fragment"> BOOST_CLASS_REQUIRE(HDS, boost::hdstl, HDSConcept);
+</pre></div> inside a class body, checks whether the type given as template argument is a model of the HDS concept described on the page <a class="el" href="hdsconcept.html">HDS concept definition</a>. <hr size="1"><address style="align: right;"><small>Generated on Tue Jun 12 02:11:13 2007 for HDSTL by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
+</body>
+</html>

Added: sandbox/SOC/2007/geometry/libs/hdstl/doc/html/hdsconcept.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/doc/html/hdsconcept.html 2007-06-12 02:15:39 EDT (Tue, 12 Jun 2007)
@@ -0,0 +1,63 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>HDSTL: HDS concept definition</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Files</li>
+ <li>Related Pages</li>
+ </ul></div>
+<h1><a class="anchor" name="hdsconcept">HDS concept definition</a></h1><h2><a class="anchor" name="refhdsconcept1">
+Definition</a></h2>
+This concept is the basic <code>HDSConcept</code>, which all the other <code>HDS</code> concepts refine. It contains a few requirements which are common to all the graph concepts. One should note that a model of <code>HDSConcept</code> is not required to be a model of <code>Assignable</code>, so algorithms should pass <code>HDS</code> objects by reference.<h2><a class="anchor" name="refhdsconcept2">
+Refinement of:</a></h2>
+This concept is not a refinement of another concept, in particular a model <code>HDS</code> of <code>HDSConcept</code> does <em>not</em> need to be <code>DefaultConstructible</code>, <code>CopyConstructible</code>, or <code>Assignable</code>.<h2><a class="anchor" name="refhdsconcept3">
+Notation</a></h2>
+<ul>
+<li><code>HDS</code> A type that is a model of <code>HDSConcept</code></li><li><code>hds</code> A non-modifiable instance of <code>HDS</code></li><li><code>h</code>,<code>g</code> Halfedge descriptors, of type <code>hds_traits&lt;HDS&gt;::halfedge_descriptor</code></li></ul>
+<h2><a class="anchor" name="refhdsconcept4">
+Associated types</a></h2>
+<ul>
+<li><code>hds_traits&lt;HDS&gt;::halfedge_descriptor</code>: must be <code>DefaultConstructible</code> and <code>CopyConstructible</code>, <code>EqualityComparable</code>, <code>Assignable</code>.</li></ul>
+<h2><a class="anchor" name="refhdsconcept5">
+Definitions</a></h2>
+<code>halfedge_descriptor</code> is a type that contains information to access the halfedge. Note that the halfedge descriptor type (accessible as a member of the <code>hds_traits&lt;HDS&gt;</code> type) is an opaque type. All that can be done to it is passing it to the function opposite and letting the hds use the information it contains to find the opposite halfedge. In particular, there is no guarantee that it is a pointer type.<h2><a class="anchor" name="refhdsconcept6">
+Valid Expressions</a></h2>
+The following expression must be valid and obey the syntactic requirement:<ul>
+<li><code>opposite(hds, h)</code> must return a value assignable to <code>h</code>.</li></ul>
+<h2><a class="anchor" name="refhdsconcept7">
+Expression Semantics</a></h2>
+The expressions semantics are as follows:<ul>
+<li><code>opposite(hds, h)</code> returns a descriptor to the halfedge opposite <code>h</code> in the data structure <code>hds</code>. Does not modify the state of either <code>hds</code> or <code>h</code>.</li></ul>
+<h2><a class="anchor" name="refhdsconcept8">
+Complexity guarantees</a></h2>
+<ul>
+<li><code>opposite(hds, h)</code>: Amortized constant time.</li></ul>
+<h2><a class="anchor" name="refhdsconcept9">
+Invariants</a></h2>
+Every valid halfedge descriptor <code>h</code> must have a valid opposite <code>g = opposite(hds, h)</code>, <em>distinct</em> from h, such that <code>opposite(hds, g)</code> returns <code>h</code>. (Hence, <code>opposite</code> is an involution.)<h2><a class="anchor" name="refhdsconcept10">
+Concept-checking class</a></h2>
+<div class="fragment"><pre class="fragment"> <span class="keyword">template</span> &lt;<span class="keyword">class</span> HDS&gt;
+ <span class="keyword">struct </span>HDSConcept {
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> hds_traits&lt;HDS&gt;::halfedge_descriptor halfedge_descriptor;
+ <span class="keywordtype">void</span> constraints() {
+ <span class="keyword">using namespace </span>boost;
+ function_requires&lt;DefaultConstructibleConcept&lt;halfedge_descriptor&gt; &gt;();
+ function_requires&lt;CopyConstructibleConcept&lt;halfedge_descriptor&gt; &gt;();
+ function_requires&lt;EqualityComparableConcept&lt;halfedge_descriptor&gt; &gt;();
+ function_requires&lt;AssignableConcept&lt;halfedge_descriptor&gt; &gt;();
+ h = opposite(hds,h);
+ const_constraints(hds);
+ }
+ <span class="keywordtype">void</span> const_constraints(HDS <span class="keyword">const</span>&amp; hds) {
+ h = opposite(hds,h);
+ }
+</pre></div> <hr size="1"><address style="align: right;"><small>Generated on Tue Jun 12 02:11:13 2007 for HDSTL by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
+</body>
+</html>

Added: sandbox/SOC/2007/geometry/libs/hdstl/doc/html/index.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/doc/html/index.html 2007-06-12 02:15:39 EDT (Tue, 12 Jun 2007)
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>HDSTL: Main Page</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+ <ul>
+ <li id="current">Main Page</li>
+ <li>Files</li>
+ <li>Related Pages</li>
+ </ul></div>
+<h1>HDSTL Documentation</h1>
+<p>
+<hr size="1"><address style="align: right;"><small>Generated on Tue Jun 12 02:11:13 2007 for HDSTL by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
+</body>
+</html>

Added: sandbox/SOC/2007/geometry/libs/hdstl/doc/html/pages.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/doc/html/pages.html 2007-06-12 02:15:39 EDT (Tue, 12 Jun 2007)
@@ -0,0 +1,26 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>HDSTL: Page Index</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Files</li>
+ <li id="current">Related Pages</li>
+ </ul></div>
+<h1>HDSTL Related Pages</h1>Here is a list of all related documentation pages:<ul>
+<li><a class="el" href="backwardhds.html">Backward HDS concept</a>
+
+<li><a class="el" href="forwardhds.html">Forward HDS concept</a>
+
+<li><a class="el" href="hdsconcept.html">HDS concept definition</a>
+
+</ul>
+<hr size="1"><address style="align: right;"><small>Generated on Tue Jun 12 02:11:13 2007 for HDSTL by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
+</body>
+</html>

Added: sandbox/SOC/2007/geometry/libs/hdstl/doc/html/tab_b.gif
==============================================================================
Binary file. No diff available.

Added: sandbox/SOC/2007/geometry/libs/hdstl/doc/html/tab_l.gif
==============================================================================
Binary file. No diff available.

Added: sandbox/SOC/2007/geometry/libs/hdstl/doc/html/tab_r.gif
==============================================================================
Binary file. No diff available.

Added: sandbox/SOC/2007/geometry/libs/hdstl/doc/html/tabs.css
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/doc/html/tabs.css 2007-06-12 02:15:39 EDT (Tue, 12 Jun 2007)
@@ -0,0 +1,102 @@
+/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */
+
+DIV.tabs
+{
+ float : left;
+ width : 100%;
+ background : url("tab_b.gif") repeat-x bottom;
+ margin-bottom : 4px;
+}
+
+DIV.tabs UL
+{
+ margin : 0px;
+ padding-left : 10px;
+ list-style : none;
+}
+
+DIV.tabs LI, DIV.tabs FORM
+{
+ display : inline;
+ margin : 0px;
+ padding : 0px;
+}
+
+DIV.tabs FORM
+{
+ float : right;
+}
+
+DIV.tabs A
+{
+ float : left;
+ background : url("tab_r.gif") no-repeat right top;
+ border-bottom : 1px solid #84B0C7;
+ font-size : x-small;
+ font-weight : bold;
+ text-decoration : none;
+}
+
+DIV.tabs A:hover
+{
+ background-position: 100% -150px;
+}
+
+DIV.tabs A:link, DIV.tabs A:visited,
+DIV.tabs A:active, DIV.tabs A:hover
+{
+ color: #1A419D;
+}
+
+DIV.tabs SPAN
+{
+ float : left;
+ display : block;
+ background : url("tab_l.gif") no-repeat left top;
+ padding : 5px 9px;
+ white-space : nowrap;
+}
+
+DIV.tabs INPUT
+{
+ float : right;
+ display : inline;
+ font-size : 1em;
+}
+
+DIV.tabs TD
+{
+ font-size : x-small;
+ font-weight : bold;
+ text-decoration : none;
+}
+
+
+
+/* Commented Backslash Hack hides rule from IE5-Mac \*/
+DIV.tabs SPAN {float : none;}
+/* End IE5-Mac hack */
+
+DIV.tabs A:hover SPAN
+{
+ background-position: 0% -150px;
+}
+
+DIV.tabs LI#current A
+{
+ background-position: 100% -150px;
+ border-width : 0px;
+}
+
+DIV.tabs LI#current SPAN
+{
+ background-position: 0% -150px;
+ padding-bottom : 6px;
+}
+
+DIV.nav
+{
+ background : none;
+ border : none;
+ border-bottom : 1px solid #84B0C7;
+}

Added: sandbox/SOC/2007/geometry/libs/hdstl/doc/latex/backward__hds__concept_8hpp.tex
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/doc/latex/backward__hds__concept_8hpp.tex 2007-06-12 02:15:39 EDT (Tue, 12 Jun 2007)
@@ -0,0 +1,20 @@
+\section{backward\_\-hds\_\-concept.hpp File Reference}
+\label{backward__hds__concept_8hpp}\index{backward_hds_concept.hpp@{backward\_\-hds\_\-concept.hpp}}
+Provide {\tt Backward\-HDS} concept definition and concept-checking class.
+
+
+
+\subsection{Detailed Description}
+Provide {\tt Backward\-HDS} concept definition and concept-checking class.
+
+This file provides a single class template that, when used with the following concept-checking utilities:
+
+\begin{Code}\begin{verbatim} boost::function_requires<BackwardHDSConcept<HDS> >();
+\end{verbatim}\end{Code}
+
+ inside a function body, or
+
+\begin{Code}\begin{verbatim} BOOST_CLASS_REQUIRE(HDS, boost::hdstl, BackwardHDSConcept);
+\end{verbatim}\end{Code}
+
+ inside a class body, checks whether the type given as template argument is a model of the HDS concept described on the page \doxyref{Backward HDS concept}{p.}{backwardhds}.
\ No newline at end of file

Added: sandbox/SOC/2007/geometry/libs/hdstl/doc/latex/backwardhds.tex
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/doc/latex/backwardhds.tex 2007-06-12 02:15:39 EDT (Tue, 12 Jun 2007)
@@ -0,0 +1,59 @@
+\section{Backward HDS concept}\label{backwardhds}
+\subsection{Definition}\label{backwardhds_refbackwardhds1}
+This concept refines the {\tt HDSConcept}, and specifies additional backward category to iterate over the {\tt HDS} data structure, which means clockwise movement around the facet and counter clockwise movement around the vertex. Possible backward categories are {\tt prev\_\-in\_\-facet}, {\tt prev\_\-at\_\-source}, and {\tt prev\_\-at\_\-target}. Once one of these categories are given all others can be accessed with the help of the {\tt opposite} of a halfedge (see the section \char`\"{}Invariants\char`\"{} below for the algebraic relations that must hold).\subsection{Refinement of}\label{backwardhds_refbackwardhds2}
+\begin{itemize}
+\item {\tt HDSConcept}\end{itemize}
+\subsection{Notation}\label{backwardhds_refbackwardhds3}
+\begin{itemize}
+\item {\tt HDS} A type that is a model of {\tt Backward\-HDSConcept}\item {\tt hds} A non-modifiable instance of {\tt HDS}\item {\tt h},{\tt g} Halfedge descriptors, of type {\tt hds\_\-traits$<$HDS$>$::halfedge\_\-descriptor}\end{itemize}
+\subsection{Associated types}\label{backwardhds_refbackwardhds4}
+\begin{itemize}
+\item {\tt hds\_\-traits$<$HDS$>$::halfedge\_\-descriptor}: from {\tt HDSConcept}.\item {\tt hds\_\-traits$<$HDS$>$::traversal\_\-category}: from {\tt HDSConcept}, with additional requirement that this type must be convertible to {\tt hdstl::backward\_\-traversal\_\-tag}.\item {\tt hds\_\-traits$<$HDS$>$::backward\_\-category}: defines the pointer type for backward iteration.\end{itemize}
+\subsection{Definitions}\label{backwardhds_refbackwardhds5}
+\begin{itemize}
+\item {\tt halfedge\_\-descriptor} is a type that contains information to access the halfedge. (See the {\tt HDS} concept or a full definition.)\item {\tt traversal\_\-category} is a type that contains information about the direction of the traversal, which is forward, backward or bidirectional. For this {\tt Backward\-HDS} concept, the {\tt traversal\_\-category} has to be convertible to the {\tt hdstl::backward\_\-traversal\_\-tag} type defined in {\tt $<$boost/hdstl.hpp$>$}.\item {\tt backward\_\-category} defines the primary accessor of the backward information for use by algorithms which desire the most direct access.\end{itemize}
+\subsection{Valid Expressions}\label{backwardhds_refbackwardhds6}
+In addition to the valid expressions of the {\tt HDS} concept:\begin{itemize}
+\item {\tt prev\_\-in\_\-facet(hds,h)} must return a value assignable to h.\item {\tt prev\_\-at\_\-source(hds,h)} must return a value assignable to h.\item {\tt prev\_\-at\_\-target(hds,h)} must return a value assignable to h.\end{itemize}
+\subsection{Expression Semantics}\label{backwardhds_refbackwardhds7}
+In addition to the expression semantics of the {\tt HDS} concept:\begin{itemize}
+\item {\tt prev\_\-in\_\-facet(hds,h)} returns a halfedge descriptor to the halfedge preceding {\tt h} in the adjacent facet cycle, when facet cycles are oriented in counter-clockwise order.\item {\tt prev\_\-at\_\-source(hds,h)} returns a halfedge descriptor to the halfedge preceding {\tt h} around the source vertex of {\tt h}, when halfedges are ordered around a given vertex in clockwise order.\item {\tt prev\_\-at\_\-target(hds,h)} returns a halfedge descriptor to the halfedge preceding {\tt h} around the target vertex of {\tt h}, when halfedges are ordered around a given vertex in clockwise order.\end{itemize}
+\subsection{Complexity guarantees}\label{backwardhds_refbackwardhds8}
+\begin{itemize}
+\item {\tt prev\_\-in\_\-facet(hds,h)}: amortized constant time.\item {\tt prev\_\-at\_\-source(hds,h)}: amortized constant time.\item {\tt prev\_\-at\_\-target(hds,h)}: amortized constant time.\end{itemize}
+\subsection{Invariants}\label{backwardhds_refbackwardhds9}
+The backward halfedge accessors are linked via the algebraic relations:\begin{itemize}
+\item {\tt prev\_\-in\_\-facet(hds,h)} == {\tt prev\_\-at\_\-target(opposite(hds,h))} == {\tt opposite(prev\_\-at\_\-source(hds,h))}\item {\tt prev\_\-at\_\-source(hds,h)} == {\tt opposite(prev\_\-in\_\-facet(hds,h))} == {\tt opposite(prev\_\-at\_\-target(opposite(hds,h)))}\item {\tt prev\_\-at\_\-target(hds,h)} == {\tt prev\_\-in\_\-facet(opposite(hds,h))} == {\tt opposite(prev\_\-at\_\-source(opposite(hds,h)))}\end{itemize}
+\subsection{Concept-checking class}\label{backwardhds_refbackwardhds10}
+
+
+\begin{Code}\begin{verbatim} template <class HDS>
+ struct BackwardHDSConcept {
+ typedef typename hds_traits<HDS>::halfedge_descriptor halfedge_descriptor;
+ typedef typename hds_traits<HDS>::traversal_category traversal_category;
+ typedef typename hds_traits<HDS>::backward_category backward_category;
+ void constraints() {
+ using namespace boost;
+ function_requires<HDSConcept<HDS> >();
+ function_requires<ConvertibleConcept<traversal_category,
+ hdstl::backward_traversal_tag> >();
+ const bool is_valid_storage_tag =
+ is_convertible<backward_category,prev_at_source_tag>::value ||
+ is_convertible<backward_category,prev_at_target_tag>::value ||
+ is_convertible<backward_category,prev_in_facet_tag>::value;
+ BOOST_STATIC_ASSERT( is_valid_storage_tag );
+
+ const_constraints(hds);
+ }
+ void const_constraints(HDS const& hds){
+ h = prev_in_facet(hds,h);
+ h = prev_at_source(hds,h);
+ h = prev_at_target(hds,h);
+ }
+ BackwardHDS hds;
+ halfedge_descriptor h;
+ halfedge_descriptor g;
+ };
+\end{verbatim}\end{Code}
+
+
\ No newline at end of file

Modified: sandbox/SOC/2007/geometry/libs/hdstl/doc/latex/doxygen.sty
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/doc/latex/doxygen.sty (original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/doc/latex/doxygen.sty 2007-06-12 02:15:39 EDT (Tue, 12 Jun 2007)
@@ -10,8 +10,8 @@
         {\fancyplain{}{\bfseries\rightmark}}
 \rhead[\fancyplain{}{\bfseries\leftmark}]
         {\fancyplain{}{\bfseries\thepage}}
-\rfoot[\fancyplain{}{\bfseries\scriptsize Generated on Tue Jun 12 01:53:57 2007 for HDSTL by Doxygen }]{}
-\lfoot[]{\fancyplain{}{\bfseries\scriptsize Generated on Tue Jun 12 01:53:57 2007 for HDSTL by Doxygen }}
+\rfoot[\fancyplain{}{\bfseries\scriptsize Generated on Tue Jun 12 02:11:13 2007 for HDSTL by Doxygen }]{}
+\lfoot[]{\fancyplain{}{\bfseries\scriptsize Generated on Tue Jun 12 02:11:13 2007 for HDSTL by Doxygen }}
 \cfoot{}
 \newenvironment{Code}
 {\footnotesize}

Added: sandbox/SOC/2007/geometry/libs/hdstl/doc/latex/files.tex
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/doc/latex/files.tex 2007-06-12 02:15:39 EDT (Tue, 12 Jun 2007)
@@ -0,0 +1,6 @@
+\section{HDSTL File List}
+Here is a list of all files with brief descriptions:\begin{CompactList}
+\item\contentsline{section}{\bf{backward\_\-hds\_\-concept.hpp} (Provide {\tt Backward\-HDS} concept definition and concept-checking class )}{\pageref{backward__hds__concept_8hpp}}{}
+\item\contentsline{section}{\bf{forward\_\-hds\_\-concept.hpp} (Provide {\tt Forward\-HDS} concept definition and concept-checking class )}{\pageref{forward__hds__concept_8hpp}}{}
+\item\contentsline{section}{\bf{hds\_\-concept.hpp} (Provide {\tt HDS} concept definition and concept-checking class )}{\pageref{hds__concept_8hpp}}{}
+\end{CompactList}

Added: sandbox/SOC/2007/geometry/libs/hdstl/doc/latex/forward__hds__concept_8hpp.tex
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/doc/latex/forward__hds__concept_8hpp.tex 2007-06-12 02:15:39 EDT (Tue, 12 Jun 2007)
@@ -0,0 +1,20 @@
+\section{forward\_\-hds\_\-concept.hpp File Reference}
+\label{forward__hds__concept_8hpp}\index{forward_hds_concept.hpp@{forward\_\-hds\_\-concept.hpp}}
+Provide {\tt Forward\-HDS} concept definition and concept-checking class.
+
+
+
+\subsection{Detailed Description}
+Provide {\tt Forward\-HDS} concept definition and concept-checking class.
+
+This file provides a single class template that, when used with the following concept-checking utilities:
+
+\begin{Code}\begin{verbatim} boost::function_requires<ForwardHDSConcept<HDS> >();
+\end{verbatim}\end{Code}
+
+ inside a function body, or
+
+\begin{Code}\begin{verbatim} BOOST_CLASS_REQUIRE(HDS, boost::hdstl, ForwardHDSConcept);
+\end{verbatim}\end{Code}
+
+ inside a class body, checks whether the type given as template argument is a model of the HDS concept described on the page \doxyref{Forward HDS concept}{p.}{forwardhds}.
\ No newline at end of file

Added: sandbox/SOC/2007/geometry/libs/hdstl/doc/latex/forwardhds.tex
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/doc/latex/forwardhds.tex 2007-06-12 02:15:39 EDT (Tue, 12 Jun 2007)
@@ -0,0 +1,59 @@
+\section{Forward HDS concept}\label{forwardhds}
+\subsection{Definition}\label{forwardhds_refforwardhds1}
+This concept refines the {\tt HDSConcept}, and specifies additional forward category to iterate over the {\tt HDS} data structure, which means clockwise movement around the facet and counter clockwise movement around the vertex. Possible forward categories are {\tt next\_\-in\_\-facet}, {\tt next\_\-at\_\-source}, and {\tt next\_\-at\_\-target}. Once one of these categories are given all others can be accessed with the help of the {\tt opposite} of a halfedge (see the section \char`\"{}Invariants\char`\"{} below for the algebraic relations that must hold).\subsection{Refinement of}\label{forwardhds_refforwardhds2}
+\begin{itemize}
+\item {\tt HDSConcept}\end{itemize}
+\subsection{Notation}\label{forwardhds_refforwardhds3}
+\begin{itemize}
+\item {\tt HDS} A type that is a model of {\tt Forward\-HDSConcept}\item {\tt hds} A non-modifiable instance of {\tt HDS}\item {\tt h},{\tt g} Halfedge descriptors, of type {\tt hds\_\-traits$<$HDS$>$::halfedge\_\-descriptor}\end{itemize}
+\subsection{Associated types}\label{forwardhds_refforwardhds4}
+\begin{itemize}
+\item {\tt hds\_\-traits$<$HDS$>$::halfedge\_\-descriptor}: from {\tt HDSConcept}.\item {\tt hds\_\-traits$<$HDS$>$::traversal\_\-category}: from {\tt HDSConcept}, with additional requirement that this type must be convertible to {\tt hdstl::forward\_\-traversal\_\-tag}.\item {\tt hds\_\-traits$<$HDS$>$::forward\_\-category}: defines the pointer type for forward iteration.\end{itemize}
+\subsection{Definitions}\label{forwardhds_refforwardhds5}
+\begin{itemize}
+\item {\tt halfedge\_\-descriptor} is a type that contains information to access the halfedge. (See the {\tt HDS} concept or a full definition.)\item {\tt traversal\_\-category} is a type that contains information about the direction of the traversal, which is forward, forward or bidirectional. For this {\tt Forward\-HDS} concept, the {\tt traversal\_\-category} has to be convertible to the {\tt hdstl::forward\_\-traversal\_\-tag} type defined in {\tt $<$boost/hdstl.hpp$>$}.\item {\tt forward\_\-category} defines the primary accessor of the forward information for use by algorithms which desire the most direct access.\end{itemize}
+\subsection{Valid Expressions}\label{forwardhds_refforwardhds6}
+In addition to the valid expressions of the {\tt HDS} concept:\begin{itemize}
+\item {\tt next\_\-in\_\-facet(hds,h)} must return a value assignable to h.\item {\tt next\_\-at\_\-source(hds,h)} must return a value assignable to h.\item {\tt next\_\-at\_\-target(hds,h)} must return a value assignable to h.\end{itemize}
+\subsection{Expression Semantics}\label{forwardhds_refforwardhds7}
+In addition to the expression semantics of the {\tt HDS} concept:\begin{itemize}
+\item {\tt next\_\-in\_\-facet(hds,h)} returns a halfedge descriptor to the halfedge preceding {\tt h} in the adjacent facet cycle, when facet cycles are oriented in counter-clockwise order.\item {\tt next\_\-at\_\-source(hds,h)} returns a halfedge descriptor to the halfedge preceding {\tt h} around the source vertex of {\tt h}, when halfedges are ordered around a given vertex in clockwise order.\item {\tt next\_\-at\_\-target(hds,h)} returns a halfedge descriptor to the halfedge preceding {\tt h} around the target vertex of {\tt h}, when halfedges are ordered around a given vertex in clockwise order.\end{itemize}
+\subsection{Complexity guarantees}\label{forwardhds_refforwardhds8}
+\begin{itemize}
+\item {\tt next\_\-in\_\-facet(hds,h)}: amortized constant time.\item {\tt next\_\-at\_\-source(hds,h)}: amortized constant time.\item {\tt next\_\-at\_\-target(hds,h)}: amortized constant time.\end{itemize}
+\subsection{Invariants}\label{forwardhds_refforwardhds9}
+The forward halfedge accessors are linked via the algebraic relations:\begin{itemize}
+\item {\tt next\_\-in\_\-facet(hds,h)} == {\tt next\_\-at\_\-source(opposite(hds,h))} == {\tt opposite(next\_\-at\_\-target(hds,h))}\item {\tt next\_\-at\_\-source(hds,h)} == {\tt next\_\-in\_\-facet(opposite(hds,h))} == {\tt opposite(next\_\-at\_\-target(opposite(hds,h)))}\item {\tt next\_\-at\_\-target(hds,h)} == {\tt opposite(next\_\-in\_\-facet(hds,h))} == {\tt opposite(next\_\-at\_\-source(opposite(hds,h)))}\end{itemize}
+\subsection{Concept-checking class}\label{forwardhds_refforwardhds10}
+
+
+\begin{Code}\begin{verbatim} template <class HDS>
+ struct ForwardHDSConcept {
+ typedef typename hds_traits<HDS>::halfedge_descriptor halfedge_descriptor;
+ typedef typename hds_traits<HDS>::traversal_category traversal_category;
+ typedef typename hds_traits<HDS>::forward_category forward_category;
+ void constraints() {
+ using namespace boost;
+ function_requires<HDSConcept<HDS> >();
+ function_requires<ConvertibleConcept<traversal_category,
+ hdstl::forward_traversal_tag> >();
+ const bool is_valid_storage_tag =
+ is_convertible<forward_category,next_at_source_tag>::value ||
+ is_convertible<forward_category,next_at_target_tag>::value ||
+ is_convertible<forward_category,next_in_facet_tag>::value;
+ BOOST_STATIC_ASSERT( is_valid_storage_tag );
+
+ const_constraints(hds);
+ }
+ void const_constraints(HDS const& hds){
+ h = next_in_facet(hds,h);
+ h = next_at_source(hds,h);
+ h = next_at_target(hds,h);
+ }
+ ForwardHDS hds;
+ halfedge_descriptor h;
+ halfedge_descriptor g;
+ };
+\end{verbatim}\end{Code}
+
+
\ No newline at end of file

Added: sandbox/SOC/2007/geometry/libs/hdstl/doc/latex/hds__concept_8hpp.tex
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/doc/latex/hds__concept_8hpp.tex 2007-06-12 02:15:39 EDT (Tue, 12 Jun 2007)
@@ -0,0 +1,21 @@
+\section{hds\_\-concept.hpp File Reference}
+\label{hds__concept_8hpp}\index{hds_concept.hpp@{hds\_\-concept.hpp}}
+Provide {\tt HDS} concept definition and concept-checking class.
+
+{\tt \#include $<$boost/concepts.h$>$}\par
+
+
+\subsection{Detailed Description}
+Provide {\tt HDS} concept definition and concept-checking class.
+
+This file provides a single class template that, when used with the following concept-checking utilities:
+
+\begin{Code}\begin{verbatim} boost::function_requires<HDSConcept<HDS> >();
+\end{verbatim}\end{Code}
+
+ inside a function body, or
+
+\begin{Code}\begin{verbatim} BOOST_CLASS_REQUIRE(HDS, boost::hdstl, HDSConcept);
+\end{verbatim}\end{Code}
+
+ inside a class body, checks whether the type given as template argument is a model of the HDS concept described on the page \doxyref{HDS concept definition}{p.}{hdsconcept}.
\ No newline at end of file

Added: sandbox/SOC/2007/geometry/libs/hdstl/doc/latex/hdsconcept.tex
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/doc/latex/hdsconcept.tex 2007-06-12 02:15:39 EDT (Tue, 12 Jun 2007)
@@ -0,0 +1,41 @@
+\section{HDS concept definition}\label{hdsconcept}
+\subsection{Definition}\label{hdsconcept_refhdsconcept1}
+This concept is the basic {\tt HDSConcept}, which all the other {\tt HDS} concepts refine. It contains a few requirements which are common to all the graph concepts. One should note that a model of {\tt HDSConcept} is not required to be a model of {\tt Assignable}, so algorithms should pass {\tt HDS} objects by reference.\subsection{Refinement of:}\label{hdsconcept_refhdsconcept2}
+This concept is not a refinement of another concept, in particular a model {\tt HDS} of {\tt HDSConcept} does {\em not\/} need to be {\tt Default\-Constructible}, {\tt Copy\-Constructible}, or {\tt Assignable}.\subsection{Notation}\label{hdsconcept_refhdsconcept3}
+\begin{itemize}
+\item {\tt HDS} A type that is a model of {\tt HDSConcept}\item {\tt hds} A non-modifiable instance of {\tt HDS}\item {\tt h},{\tt g} Halfedge descriptors, of type {\tt hds\_\-traits$<$HDS$>$::halfedge\_\-descriptor}\end{itemize}
+\subsection{Associated types}\label{hdsconcept_refhdsconcept4}
+\begin{itemize}
+\item {\tt hds\_\-traits$<$HDS$>$::halfedge\_\-descriptor}: must be {\tt Default\-Constructible} and {\tt Copy\-Constructible}, {\tt Equality\-Comparable}, {\tt Assignable}.\end{itemize}
+\subsection{Definitions}\label{hdsconcept_refhdsconcept5}
+{\tt halfedge\_\-descriptor} is a type that contains information to access the halfedge. Note that the halfedge descriptor type (accessible as a member of the {\tt hds\_\-traits$<$HDS$>$} type) is an opaque type. All that can be done to it is passing it to the function opposite and letting the hds use the information it contains to find the opposite halfedge. In particular, there is no guarantee that it is a pointer type.\subsection{Valid Expressions}\label{hdsconcept_refhdsconcept6}
+The following expression must be valid and obey the syntactic requirement:\begin{itemize}
+\item {\tt opposite(hds, h)} must return a value assignable to {\tt h}.\end{itemize}
+\subsection{Expression Semantics}\label{hdsconcept_refhdsconcept7}
+The expressions semantics are as follows:\begin{itemize}
+\item {\tt opposite(hds, h)} returns a descriptor to the halfedge opposite {\tt h} in the data structure {\tt hds}. Does not modify the state of either {\tt hds} or {\tt h}.\end{itemize}
+\subsection{Complexity guarantees}\label{hdsconcept_refhdsconcept8}
+\begin{itemize}
+\item {\tt opposite(hds, h)}: Amortized constant time.\end{itemize}
+\subsection{Invariants}\label{hdsconcept_refhdsconcept9}
+Every valid halfedge descriptor {\tt h} must have a valid opposite {\tt g = opposite(hds, h)}, {\em distinct\/} from h, such that {\tt opposite(hds, g)} returns {\tt h}. (Hence, {\tt opposite} is an involution.)\subsection{Concept-checking class}\label{hdsconcept_refhdsconcept10}
+
+
+\begin{Code}\begin{verbatim} template <class HDS>
+ struct HDSConcept {
+ typedef typename hds_traits<HDS>::halfedge_descriptor halfedge_descriptor;
+ void constraints() {
+ using namespace boost;
+ function_requires<DefaultConstructibleConcept<halfedge_descriptor> >();
+ function_requires<CopyConstructibleConcept<halfedge_descriptor> >();
+ function_requires<EqualityComparableConcept<halfedge_descriptor> >();
+ function_requires<AssignableConcept<halfedge_descriptor> >();
+ h = opposite(hds,h);
+ const_constraints(hds);
+ }
+ void const_constraints(HDS const& hds) {
+ h = opposite(hds,h);
+ }
+\end{verbatim}\end{Code}
+
+
\ No newline at end of file

Added: sandbox/SOC/2007/geometry/libs/hdstl/doc/latex/pages.tex
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/doc/latex/pages.tex 2007-06-12 02:15:39 EDT (Tue, 12 Jun 2007)
@@ -0,0 +1,9 @@
+\section{HDSTL Related Pages}
+Here is a list of all related documentation pages:\begin{CompactList}
+\item \contentsline{section}{Backward HDS concept}{\pageref{backwardhds}}{}
+
+\item \contentsline{section}{Forward HDS concept}{\pageref{forwardhds}}{}
+
+\item \contentsline{section}{HDS concept definition}{\pageref{hdsconcept}}{}
+
+\end{CompactList}

Added: sandbox/SOC/2007/geometry/libs/hdstl/doc/latex/refman.tex
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/doc/latex/refman.tex 2007-06-12 02:15:39 EDT (Tue, 12 Jun 2007)
@@ -0,0 +1,43 @@
+\documentclass[a4paper]{book}
+\usepackage{a4wide}
+\usepackage{makeidx}
+\usepackage{fancyhdr}
+\usepackage{graphicx}
+\usepackage{multicol}
+\usepackage{float}
+\usepackage{textcomp}
+\usepackage{alltt}
+\usepackage{doxygen}
+\makeindex
+\setcounter{tocdepth}{1}
+\renewcommand{\footrulewidth}{0.4pt}
+\begin{document}
+\begin{titlepage}
+\vspace*{7cm}
+\begin{center}
+{\Large HDSTL Reference Manual}\\
+\vspace*{1cm}
+{\large Generated by Doxygen 1.4.7}\\
+\vspace*{0.5cm}
+{\small Tue Jun 12 02:11:13 2007}\\
+\end{center}
+\end{titlepage}
+\clearemptydoublepage
+\pagenumbering{roman}
+\tableofcontents
+\clearemptydoublepage
+\pagenumbering{arabic}
+\chapter{HDSTL File Index}
+\input{files}
+\chapter{HDSTL Page Index}
+\input{pages}
+\chapter{HDSTL File Documentation}
+\input{backward__hds__concept_8hpp}
+\include{forward__hds__concept_8hpp}
+\include{hds__concept_8hpp}
+\chapter{HDSTL Page Documentation}
+\input{backwardhds}
+\include{forwardhds}
+\include{hdsconcept}
+\printindex
+\end{document}

Modified: sandbox/SOC/2007/geometry/libs/hdstl/tools/make_doc.sh
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/tools/make_doc.sh (original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/tools/make_doc.sh 2007-06-12 02:15:39 EDT (Tue, 12 Jun 2007)
@@ -4,5 +4,5 @@
 # HDSTL_ROOT= libs/hdstl
 
 foreach file in $*
- $HDSTL_ROOT/tools/doc.pl $file >! $HDSTL_ROOT/doxy/`basename $file`
+ $HDSTL_ROOT/tools/doc.pl $file >! $HDSTL_ROOT/dev/doxy/`basename $file`
 end


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk