Sophie

Sophie

distrib > * > cooker > x86_64 > by-pkgid > 6821ecc3db154939da2f564d5e6d1885 > files > 55

ppl-docs-0.11.2-1.x86_64.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>PPL: Parma_Polyhedra_Library::Grid_Generator Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="pages.html"><span>Related&nbsp;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>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
      <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
    </ul>
  </div>
  <div class="navpath"><a class="el" href="namespaceParma__Polyhedra__Library.html">Parma_Polyhedra_Library</a>::<a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html">Grid_Generator</a>
  </div>
</div>
<div class="contents">
<h1>Parma_Polyhedra_Library::Grid_Generator Class Reference<br/>
<small>
[<a class="el" href="group__PPL__CXX__interface.html">C++ Language Interface</a>]</small>
</h1><!-- doxytag: class="Parma_Polyhedra_Library::Grid_Generator" --><!-- doxytag: inherits="Parma_Polyhedra_Library::Generator" -->
<p>A grid line, parameter or grid point.  
<a href="#_details">More...</a></p>

<p><code>#include &lt;ppl.hh&gt;</code></p>

<p>Inherits <a class="el" href="classParma__Polyhedra__Library_1_1Generator.html">Parma_Polyhedra_Library::Generator</a>.</p>

<p><a href="classParma__Polyhedra__Library_1_1Grid__Generator-members.html">List of all members.</a></p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Public Types</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#a10e7c95784e356487a6a6263a89cec66">Type</a> { <a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#a10e7c95784e356487a6a6263a89cec66ae9cf46c5e08ead7689807e1c8ba30642">LINE</a>, 
<a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#a10e7c95784e356487a6a6263a89cec66a4ac3b90df83c2e43249ccfa2702640de">PARAMETER</a>, 
<a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#a10e7c95784e356487a6a6263a89cec66a25b86c6f0633416506503de2bf693876">POINT</a>
 }</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>The generator type. </p>
 <a href="classParma__Polyhedra__Library_1_1Grid__Generator.html#a10e7c95784e356487a6a6263a89cec66">More...</a><br/></td></tr>
<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab1db3272b7beca7b1d9d17f23d22ecbd"></a><!-- doxytag: member="Parma_Polyhedra_Library::Grid_Generator::Grid_Generator" ref="ab1db3272b7beca7b1d9d17f23d22ecbd" args="(const Grid_Generator &amp;g)" -->
&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#ab1db3272b7beca7b1d9d17f23d22ecbd">Grid_Generator</a> (const <a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html">Grid_Generator</a> &amp;g)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Ordinary copy constructor. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a00017ad58d66a7948b0355b3e02c750b"></a><!-- doxytag: member="Parma_Polyhedra_Library::Grid_Generator::~Grid_Generator" ref="a00017ad58d66a7948b0355b3e02c750b" args="()" -->
&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#a00017ad58d66a7948b0355b3e02c750b">~Grid_Generator</a> ()</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destructor. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1177f236d8c66c01bbb43b37ff90bc7d"></a><!-- doxytag: member="Parma_Polyhedra_Library::Grid_Generator::operator=" ref="a1177f236d8c66c01bbb43b37ff90bc7d" args="(const Grid_Generator &amp;g)" -->
<a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html">Grid_Generator</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#a1177f236d8c66c01bbb43b37ff90bc7d">operator=</a> (const <a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html">Grid_Generator</a> &amp;g)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Assignment operator. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac05ff6bef376a2835adbb0ca123a8e79"></a><!-- doxytag: member="Parma_Polyhedra_Library::Grid_Generator::operator=" ref="ac05ff6bef376a2835adbb0ca123a8e79" args="(const Generator &amp;g)" -->
<a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html">Grid_Generator</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#ac05ff6bef376a2835adbb0ca123a8e79">operator=</a> (const <a class="el" href="classParma__Polyhedra__Library_1_1Generator.html">Generator</a> &amp;g)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Assignment operator. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a60d9658ef91fbd3a1b0064253246f36b"></a><!-- doxytag: member="Parma_Polyhedra_Library::Grid_Generator::space_dimension" ref="a60d9658ef91fbd3a1b0064253246f36b" args="() const " -->
<a class="el" href="group__PPL__CXX__interface.html#ga853432469169b07e42c557e1d6d144de">dimension_type</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#a60d9658ef91fbd3a1b0064253246f36b">space_dimension</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the dimension of the vector space enclosing <code>*this</code>. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1aabacaac0806d617f53db4b34b3349e"></a><!-- doxytag: member="Parma_Polyhedra_Library::Grid_Generator::type" ref="a1aabacaac0806d617f53db4b34b3349e" args="() const " -->
<a class="el" href="classParma__Polyhedra__Library_1_1Generator.html#a55b76ba0041601d8da38ab5ad619eed5">Type</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#a1aabacaac0806d617f53db4b34b3349e">type</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the generator type of <code>*this</code>. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2a0bc130f7cf6a0678ee3b982fcc7ab6"></a><!-- doxytag: member="Parma_Polyhedra_Library::Grid_Generator::is_line" ref="a2a0bc130f7cf6a0678ee3b982fcc7ab6" args="() const " -->
bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#a2a0bc130f7cf6a0678ee3b982fcc7ab6">is_line</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns <code>true</code> if and only if <code>*this</code> is a line. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a41227446c918730e97998799bfe04da6"></a><!-- doxytag: member="Parma_Polyhedra_Library::Grid_Generator::is_parameter" ref="a41227446c918730e97998799bfe04da6" args="() const " -->
bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#a41227446c918730e97998799bfe04da6">is_parameter</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns <code>true</code> if and only if <code>*this</code> is a parameter. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a76fce1702224700691a26cf5e780a1dd"></a><!-- doxytag: member="Parma_Polyhedra_Library::Grid_Generator::is_line_or_parameter" ref="a76fce1702224700691a26cf5e780a1dd" args="() const " -->
bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#a76fce1702224700691a26cf5e780a1dd">is_line_or_parameter</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns <code>true</code> if and only if <code>*this</code> is a line or a parameter. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac915c8d26a7dbcdbbd0c4985ec5b7d4b"></a><!-- doxytag: member="Parma_Polyhedra_Library::Grid_Generator::is_point" ref="ac915c8d26a7dbcdbbd0c4985ec5b7d4b" args="() const " -->
bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#ac915c8d26a7dbcdbbd0c4985ec5b7d4b">is_point</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns <code>true</code> if and only if <code>*this</code> is a point. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a811f6f947785240bcb76bfca023fed17"></a><!-- doxytag: member="Parma_Polyhedra_Library::Grid_Generator::is_parameter_or_point" ref="a811f6f947785240bcb76bfca023fed17" args="() const " -->
bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#a811f6f947785240bcb76bfca023fed17">is_parameter_or_point</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns <code>true</code> if and only if <code>*this</code> row represents a parameter or a point. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">Coefficient_traits::const_reference&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#af4e7705af87f5eb64d2ebdc60cd7a36e">coefficient</a> (<a class="el" href="classParma__Polyhedra__Library_1_1Variable.html">Variable</a> v) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the coefficient of <code>v</code> in <code>*this</code>.  <a href="#af4e7705af87f5eb64d2ebdc60cd7a36e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">Coefficient_traits::const_reference&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#acdc0aeddab3d98e336719f42e6e5b06c">divisor</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the divisor of <code>*this</code>.  <a href="#acdc0aeddab3d98e336719f42e6e5b06c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a13419c5d820bde20af5eabd23e479ec8"></a><!-- doxytag: member="Parma_Polyhedra_Library::Grid_Generator::total_memory_in_bytes" ref="a13419c5d820bde20af5eabd23e479ec8" args="() const " -->
<a class="el" href="group__PPL__CXX__interface.html#ga760aa1f95d13e389ec6eb33fdbf88783">memory_size_type</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#a13419c5d820bde20af5eabd23e479ec8">total_memory_in_bytes</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns a lower bound to the total size in bytes of the memory occupied by <code>*this</code>. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac3e03bc2df621903d136c689c38bdb6f"></a><!-- doxytag: member="Parma_Polyhedra_Library::Grid_Generator::external_memory_in_bytes" ref="ac3e03bc2df621903d136c689c38bdb6f" args="() const " -->
<a class="el" href="group__PPL__CXX__interface.html#ga760aa1f95d13e389ec6eb33fdbf88783">memory_size_type</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#ac3e03bc2df621903d136c689c38bdb6f">external_memory_in_bytes</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the size in bytes of the memory managed by <code>*this</code>. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#aba6b40a4b9708e94d6cd10f54144ed70">is_equivalent_to</a> (const <a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html">Grid_Generator</a> &amp;y) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns <code>true</code> if and only if <code>*this</code> and <code>y</code> are equivalent generators.  <a href="#aba6b40a4b9708e94d6cd10f54144ed70"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1f0828932daf26d10e94120c1f4a4d6b"></a><!-- doxytag: member="Parma_Polyhedra_Library::Grid_Generator::is_equal_to" ref="a1f0828932daf26d10e94120c1f4a4d6b" args="(const Grid_Generator &amp;y) const " -->
bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#a1f0828932daf26d10e94120c1f4a4d6b">is_equal_to</a> (const <a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html">Grid_Generator</a> &amp;y) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns <code>true</code> if <code>*this</code> is exactly equal to <code>y</code>. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a68e8cef74c6b4b5a56e2c791f41566e4"></a><!-- doxytag: member="Parma_Polyhedra_Library::Grid_Generator::is_equal_at_dimension" ref="a68e8cef74c6b4b5a56e2c791f41566e4" args="(dimension_type dim, const Grid_Generator &amp;gg) const " -->
bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#a68e8cef74c6b4b5a56e2c791f41566e4">is_equal_at_dimension</a> (<a class="el" href="group__PPL__CXX__interface.html#ga853432469169b07e42c557e1d6d144de">dimension_type</a> dim, const <a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html">Grid_Generator</a> &amp;gg) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns <code>true</code> if <code>*this</code> is equal to <code>gg</code> in dimension <code>dim</code>. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a77a904793c99cfb1d61fadd277d59471"></a><!-- doxytag: member="Parma_Polyhedra_Library::Grid_Generator::all_homogeneous_terms_are_zero" ref="a77a904793c99cfb1d61fadd277d59471" args="() const " -->
bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#a77a904793c99cfb1d61fadd277d59471">all_homogeneous_terms_are_zero</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns <code>true</code> if and only if all the homogeneous terms of <code>*this</code> are <img class="formulaInl" alt="$0$" src="form_400.png"/>. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a164c38a51c8718e6ac3a3f3e4af77bf0"></a><!-- doxytag: member="Parma_Polyhedra_Library::Grid_Generator::ascii_dump" ref="a164c38a51c8718e6ac3a3f3e4af77bf0" args="() const " -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#a164c38a51c8718e6ac3a3f3e4af77bf0">ascii_dump</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Writes to <code>std::cerr</code> an ASCII representation of <code>*this</code>. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a77123fc17c8bc6d59a76802c0592a2c6"></a><!-- doxytag: member="Parma_Polyhedra_Library::Grid_Generator::ascii_dump" ref="a77123fc17c8bc6d59a76802c0592a2c6" args="(std::ostream &amp;s) const " -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#a77123fc17c8bc6d59a76802c0592a2c6">ascii_dump</a> (std::ostream &amp;s) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Writes to <code>s</code> an ASCII representation of <code>*this</code>. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0f19da4c46bb8b3be01875eff4c00538"></a><!-- doxytag: member="Parma_Polyhedra_Library::Grid_Generator::print" ref="a0f19da4c46bb8b3be01875eff4c00538" args="() const " -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#a0f19da4c46bb8b3be01875eff4c00538">print</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Prints <code>*this</code> to <code>std::cerr</code> using <code>operator&lt;&lt;</code>. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a58b86510b9c4dc05004c0fc01622430b"></a><!-- doxytag: member="Parma_Polyhedra_Library::Grid_Generator::ascii_load" ref="a58b86510b9c4dc05004c0fc01622430b" args="(std::istream &amp;s)" -->
bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#a58b86510b9c4dc05004c0fc01622430b">ascii_load</a> (std::istream &amp;s)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Loads from <code>s</code> an ASCII representation (as produced by <a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#a77123fc17c8bc6d59a76802c0592a2c6" title="Writes to s an ASCII representation of *this.">ascii_dump(std::ostream&amp;) const</a>) and sets <code>*this</code> accordingly. Returns <code>true</code> if successful, <code>false</code> otherwise. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a081718c23b5785da17c63ffec13536cc"></a><!-- doxytag: member="Parma_Polyhedra_Library::Grid_Generator::OK" ref="a081718c23b5785da17c63ffec13536cc" args="() const " -->
bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#a081718c23b5785da17c63ffec13536cc">OK</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Checks if all the invariants are satisfied. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0fafb66fa4df451fd3e2f0392329f27b"></a><!-- doxytag: member="Parma_Polyhedra_Library::Grid_Generator::swap" ref="a0fafb66fa4df451fd3e2f0392329f27b" args="(Grid_Generator &amp;y)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#a0fafb66fa4df451fd3e2f0392329f27b">swap</a> (<a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html">Grid_Generator</a> &amp;y)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Swaps <code>*this</code> with <code>y</code>. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#ae1887d907ab06bddeaa2682bdf94d268">coefficient_swap</a> (<a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html">Grid_Generator</a> &amp;y)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Swaps <code>*this</code> with <code>y</code>, leaving <code>*this</code> with the original capacity.  <a href="#ae1887d907ab06bddeaa2682bdf94d268"></a><br/></td></tr>
<tr><td colspan="2"><h2>Static Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html">Grid_Generator</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#aedf9116549ffcced7a39f4596e65e5d0">grid_line</a> (const <a class="el" href="classParma__Polyhedra__Library_1_1Linear__Expression.html">Linear_Expression</a> &amp;e)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the line of direction <code>e</code>.  <a href="#aedf9116549ffcced7a39f4596e65e5d0"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html">Grid_Generator</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#ac061731c4fec7f60c48e02ed9806b4bb">parameter</a> (const <a class="el" href="classParma__Polyhedra__Library_1_1Linear__Expression.html">Linear_Expression</a> &amp;e=Linear_Expression::zero(), Coefficient_traits::const_reference d=Coefficient_one())</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the parameter of direction <code>e</code> and size <code>e/d</code>.  <a href="#ac061731c4fec7f60c48e02ed9806b4bb"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html">Grid_Generator</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#a065895a1428f9dc6b3002818686eff0f">grid_point</a> (const <a class="el" href="classParma__Polyhedra__Library_1_1Linear__Expression.html">Linear_Expression</a> &amp;e=Linear_Expression::zero(), Coefficient_traits::const_reference d=Coefficient_one())</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the point at <code>e</code> / <code>d</code>.  <a href="#a065895a1428f9dc6b3002818686eff0f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac74dafaa0b06e9cd3d15ea0d2af1b213"></a><!-- doxytag: member="Parma_Polyhedra_Library::Grid_Generator::max_space_dimension" ref="ac74dafaa0b06e9cd3d15ea0d2af1b213" args="()" -->
static <a class="el" href="group__PPL__CXX__interface.html#ga853432469169b07e42c557e1d6d144de">dimension_type</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#ac74dafaa0b06e9cd3d15ea0d2af1b213">max_space_dimension</a> ()</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the maximum space dimension a <a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html" title="A grid line, parameter or grid point.">Grid_Generator</a> can handle. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a041afb1a2cc7277572fb7235cf08cf64"></a><!-- doxytag: member="Parma_Polyhedra_Library::Grid_Generator::initialize" ref="a041afb1a2cc7277572fb7235cf08cf64" args="()" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#a041afb1a2cc7277572fb7235cf08cf64">initialize</a> ()</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initializes the class. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae94a99f8e8d290b5791baa01fd540a14"></a><!-- doxytag: member="Parma_Polyhedra_Library::Grid_Generator::finalize" ref="ae94a99f8e8d290b5791baa01fd540a14" args="()" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#ae94a99f8e8d290b5791baa01fd540a14">finalize</a> ()</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Finalizes the class. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af00dd6aeffc847b73a3aee11d6d169b6"></a><!-- doxytag: member="Parma_Polyhedra_Library::Grid_Generator::zero_dim_point" ref="af00dd6aeffc847b73a3aee11d6d169b6" args="()" -->
static const <a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html">Grid_Generator</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#af00dd6aeffc847b73a3aee11d6d169b6">zero_dim_point</a> ()</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the origin of the zero-dimensional space <img class="formulaInl" alt="$\Rset^0$" src="form_175.png"/>. <br/></td></tr>
<tr><td colspan="2"><h2>Related Functions</h2></td></tr>
<tr><td colspan="2"><p>(Note that these are not member functions.) </p>
<br/><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#a082a74ad0ce931ec2e517bf0f009daa2">operator&lt;&lt;</a> (std::ostream &amp;s, const <a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html">Grid_Generator</a> &amp;g)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Output operator.  <a href="#a082a74ad0ce931ec2e517bf0f009daa2"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#a1a15765e7fd1f486a9ee12a061dc4c76">swap</a> (<a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html">Parma_Polyhedra_Library::Grid_Generator</a> &amp;x, <a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html">Parma_Polyhedra_Library::Grid_Generator</a> &amp;y)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Specializes <code>std::swap</code>.  <a href="#a1a15765e7fd1f486a9ee12a061dc4c76"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#a3075c67d9868fc0b483db13256fb4e0c">operator==</a> (const <a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html">Grid_Generator</a> &amp;x, const <a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html">Grid_Generator</a> &amp;y)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns <code>true</code> if and only if <code>x</code> is equivalent to <code>y</code>.  <a href="#a3075c67d9868fc0b483db13256fb4e0c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#a8ab7b9abebd48fe0ad129a237338aa96">operator!=</a> (const <a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html">Grid_Generator</a> &amp;x, const <a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html">Grid_Generator</a> &amp;y)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns <code>true</code> if and only if <code>x</code> is not equivalent to <code>y</code>.  <a href="#a8ab7b9abebd48fe0ad129a237338aa96"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#a6fb154017052c68b63121cef49c568ce">operator&lt;&lt;</a> (std::ostream &amp;s, const <a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#a10e7c95784e356487a6a6263a89cec66">Grid_Generator::Type</a> &amp;t)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Output operator.  <a href="#a6fb154017052c68b63121cef49c568ce"></a><br/></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>A grid line, parameter or grid point. </p>
<p>An object of the class <a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html" title="A grid line, parameter or grid point.">Grid_Generator</a> is one of the following:</p>
<ul>
<li>a grid_line <img class="formulaInl" alt="$\vect{l} = (a_0, \ldots, a_{n-1})^\transpose$" src="form_500.png"/>;</li>
</ul>
<ul>
<li>a parameter <img class="formulaInl" alt="$\vect{q} = (\frac{a_0}{d}, \ldots, \frac{a_{n-1}}{d})^\transpose$" src="form_527.png"/>;</li>
</ul>
<ul>
<li>a grid_point <img class="formulaInl" alt="$\vect{p} = (\frac{a_0}{d}, \ldots, \frac{a_{n-1}}{d})^\transpose$" src="form_502.png"/>;</li>
</ul>
<p>where <img class="formulaInl" alt="$n$" src="form_0.png"/> is the dimension of the space and, for grid_points and parameters, <img class="formulaInl" alt="$d > 0$" src="form_504.png"/> is the divisor.</p>
<dl class="user"><dt><b>How to build a grid generator.</b></dt><dd>Each type of generator is built by applying the corresponding function (<code>grid_line</code>, <code>parameter</code> or <code>grid_point</code>) to a linear expression; the space dimension of the generator is defined as the space dimension of the corresponding linear expression. Linear expressions used to define a generator should be homogeneous (any constant term will be simply ignored). When defining grid points and parameters, an optional Coefficient argument can be used as a common <em>divisor</em> for all the coefficients occurring in the provided linear expression; the default value for this argument is 1.</dd></dl>
<dl class="user"><dt><b></b></dt><dd>In all the following examples it is assumed that variables <code>x</code>, <code>y</code> and <code>z</code> are defined as follows: <div class="fragment"><pre class="fragment">  Variable x(0);
  Variable y(1);
  Variable z(2);
</pre></div></dd></dl>
<dl class="user"><dt><b>Example 1</b></dt><dd>The following code builds a grid line with direction <img class="formulaInl" alt="$x-y-z$" src="form_505.png"/> and having space dimension <img class="formulaInl" alt="$3$" src="form_487.png"/>: <div class="fragment"><pre class="fragment">  <a class="code" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#ab1db3272b7beca7b1d9d17f23d22ecbd" title="Ordinary copy constructor.">Grid_Generator</a> l = <a class="code" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#aedf9116549ffcced7a39f4596e65e5d0" title="Returns the line of direction e.">grid_line</a>(x - y - z);
</pre></div> By definition, the origin of the space is not a line, so that the following code throws an exception: <div class="fragment"><pre class="fragment">  <a class="code" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#ab1db3272b7beca7b1d9d17f23d22ecbd" title="Ordinary copy constructor.">Grid_Generator</a> l = <a class="code" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#aedf9116549ffcced7a39f4596e65e5d0" title="Returns the line of direction e.">grid_line</a>(0*x);
</pre></div></dd></dl>
<dl class="user"><dt><b>Example 2</b></dt><dd>The following code builds the parameter as the vector <img class="formulaInl" alt="$\vect{p} = (1, -1, -1)^\transpose \in \Rset^3$" src="form_528.png"/> which has the same direction as the line in Example 1: <div class="fragment"><pre class="fragment">  <a class="code" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#ab1db3272b7beca7b1d9d17f23d22ecbd" title="Ordinary copy constructor.">Grid_Generator</a> q = <a class="code" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#ac061731c4fec7f60c48e02ed9806b4bb" title="Returns the parameter of direction e and size e/d.">parameter</a>(x - y - z);
</pre></div> Note that, unlike lines, for parameters, the length as well as the direction of the vector represented by the code is significant. Thus <code>q</code> is <em>not</em> the same as the parameter <code>q1</code> defined by <div class="fragment"><pre class="fragment">  <a class="code" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#ab1db3272b7beca7b1d9d17f23d22ecbd" title="Ordinary copy constructor.">Grid_Generator</a> q1 = <a class="code" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#ac061731c4fec7f60c48e02ed9806b4bb" title="Returns the parameter of direction e and size e/d.">parameter</a>(2x - 2y - 2z);
</pre></div> By definition, the origin of the space is not a parameter, so that the following code throws an exception: <div class="fragment"><pre class="fragment">  <a class="code" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#ab1db3272b7beca7b1d9d17f23d22ecbd" title="Ordinary copy constructor.">Grid_Generator</a> q = <a class="code" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#ac061731c4fec7f60c48e02ed9806b4bb" title="Returns the parameter of direction e and size e/d.">parameter</a>(0*x);
</pre></div></dd></dl>
<dl class="user"><dt><b>Example 3</b></dt><dd>The following code builds the grid point <img class="formulaInl" alt="$\vect{p} = (1, 0, 2)^\transpose \in \Rset^3$" src="form_506.png"/>: <div class="fragment"><pre class="fragment">  <a class="code" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#ab1db3272b7beca7b1d9d17f23d22ecbd" title="Ordinary copy constructor.">Grid_Generator</a> p = <a class="code" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#a065895a1428f9dc6b3002818686eff0f" title="Returns the point at e / d.">grid_point</a>(1*x + 0*y + 2*z);
</pre></div> The same effect can be obtained by using the following code: <div class="fragment"><pre class="fragment">  <a class="code" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#ab1db3272b7beca7b1d9d17f23d22ecbd" title="Ordinary copy constructor.">Grid_Generator</a> p = <a class="code" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#a065895a1428f9dc6b3002818686eff0f" title="Returns the point at e / d.">grid_point</a>(x + 2*z);
</pre></div> Similarly, the origin <img class="formulaInl" alt="$\vect{0} \in \Rset^3$" src="form_507.png"/> can be defined using either one of the following lines of code: <div class="fragment"><pre class="fragment">  <a class="code" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#ab1db3272b7beca7b1d9d17f23d22ecbd" title="Ordinary copy constructor.">Grid_Generator</a> origin3 = <a class="code" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#a065895a1428f9dc6b3002818686eff0f" title="Returns the point at e / d.">grid_point</a>(0*x + 0*y + 0*z);
  <a class="code" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#ab1db3272b7beca7b1d9d17f23d22ecbd" title="Ordinary copy constructor.">Grid_Generator</a> origin3_alt = <a class="code" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#a065895a1428f9dc6b3002818686eff0f" title="Returns the point at e / d.">grid_point</a>(0*z);
</pre></div> Note however that the following code would have defined a different point, namely <img class="formulaInl" alt="$\vect{0} \in \Rset^2$" src="form_508.png"/>: <div class="fragment"><pre class="fragment">  <a class="code" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#ab1db3272b7beca7b1d9d17f23d22ecbd" title="Ordinary copy constructor.">Grid_Generator</a> origin2 = <a class="code" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#a065895a1428f9dc6b3002818686eff0f" title="Returns the point at e / d.">grid_point</a>(0*y);
</pre></div> The following two lines of code both define the only grid point having space dimension zero, namely <img class="formulaInl" alt="$\vect{0} \in \Rset^0$" src="form_509.png"/>. In the second case we exploit the fact that the first argument of the function <code>point</code> is optional. <div class="fragment"><pre class="fragment">  <a class="code" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#ab1db3272b7beca7b1d9d17f23d22ecbd" title="Ordinary copy constructor.">Grid_Generator</a> origin0 = <a class="code" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#af00dd6aeffc847b73a3aee11d6d169b6" title="Returns the origin of the zero-dimensional space .">Generator::zero_dim_point</a>();
  <a class="code" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#ab1db3272b7beca7b1d9d17f23d22ecbd" title="Ordinary copy constructor.">Grid_Generator</a> origin0_alt = <a class="code" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#a065895a1428f9dc6b3002818686eff0f" title="Returns the point at e / d.">grid_point</a>();
</pre></div></dd></dl>
<dl class="user"><dt><b>Example 4</b></dt><dd>The grid point <img class="formulaInl" alt="$\vect{p}$" src="form_510.png"/> specified in Example 3 above can also be obtained with the following code, where we provide a non-default value for the second argument of the function <code>grid_point</code> (the divisor): <div class="fragment"><pre class="fragment">  <a class="code" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#ab1db3272b7beca7b1d9d17f23d22ecbd" title="Ordinary copy constructor.">Grid_Generator</a> p = <a class="code" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#a065895a1428f9dc6b3002818686eff0f" title="Returns the point at e / d.">grid_point</a>(2*x + 0*y + 4*z, 2);
</pre></div> Obviously, the divisor can be used to specify points having some non-integer (but rational) coordinates. For instance, the grid point <img class="formulaInl" alt="$\vect{p1} = (-1.5, 3.2, 2.1)^\transpose \in \Rset^3$" src="form_529.png"/> can be specified by the following code: <div class="fragment"><pre class="fragment">  <a class="code" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#ab1db3272b7beca7b1d9d17f23d22ecbd" title="Ordinary copy constructor.">Grid_Generator</a> p1 = <a class="code" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#a065895a1428f9dc6b3002818686eff0f" title="Returns the point at e / d.">grid_point</a>(-15*x + 32*y + 21*z, 10);
</pre></div> If a zero divisor is provided, an exception is thrown.</dd></dl>
<dl class="user"><dt><b>Example 5</b></dt><dd>Parameters, like grid points can have a divisor. For instance, the parameter <img class="formulaInl" alt="$\vect{q} = (1, 0, 2)^\transpose \in \Rset^3$" src="form_530.png"/> can be defined: <div class="fragment"><pre class="fragment">  <a class="code" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#ab1db3272b7beca7b1d9d17f23d22ecbd" title="Ordinary copy constructor.">Grid_Generator</a> q = <a class="code" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#ac061731c4fec7f60c48e02ed9806b4bb" title="Returns the parameter of direction e and size e/d.">parameter</a>(2*x + 0*y + 4*z, 2);
</pre></div> Also, the divisor can be used to specify parameters having some non-integer (but rational) coordinates. For instance, the parameter <img class="formulaInl" alt="$\vect{q} = (-1.5, 3.2, 2.1)^\transpose \in \Rset^3$" src="form_511.png"/> can be defined: <div class="fragment"><pre class="fragment">  <a class="code" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#ab1db3272b7beca7b1d9d17f23d22ecbd" title="Ordinary copy constructor.">Grid_Generator</a> q = <a class="code" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#ac061731c4fec7f60c48e02ed9806b4bb" title="Returns the parameter of direction e and size e/d.">parameter</a>(-15*x + 32*y + 21*z, 10);
</pre></div> If a zero divisor is provided, an exception is thrown.</dd></dl>
<dl class="user"><dt><b>How to inspect a grid generator</b></dt><dd>Several methods are provided to examine a grid generator and extract all the encoded information: its space dimension, its type and the value of its integer coefficients and the value of the denominator.</dd></dl>
<dl class="user"><dt><b>Example 6</b></dt><dd>The following code shows how it is possible to access each single coefficient of a grid generator. If <code>g1</code> is a grid point having coordinates <img class="formulaInl" alt="$(a_0, \ldots, a_{n-1})^\transpose$" src="form_513.png"/>, we construct the parameter <code>g2</code> having coordinates <img class="formulaInl" alt="$(a_0, 2 a_1, \ldots, (i+1)a_i, \ldots, n a_{n-1})^\transpose$" src="form_514.png"/>. <div class="fragment"><pre class="fragment">  <span class="keywordflow">if</span> (g1.is_point()) {
    cout &lt;&lt; <span class="stringliteral">&quot;Grid point g1: &quot;</span> &lt;&lt; g1 &lt;&lt; endl;
    Linear_Expression e;
    <span class="keywordflow">for</span> (<a class="code" href="group__PPL__CXX__interface.html#ga853432469169b07e42c557e1d6d144de" title="An unsigned integral type for representing space dimensions.">dimension_type</a> i = g1.space_dimension(); i-- &gt; 0; )
      e += (i + 1) * g1.coefficient(Variable(i)) * Variable(i);
    <a class="code" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#ab1db3272b7beca7b1d9d17f23d22ecbd" title="Ordinary copy constructor.">Grid_Generator</a> g2 = <a class="code" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#ac061731c4fec7f60c48e02ed9806b4bb" title="Returns the parameter of direction e and size e/d.">parameter</a>(e, g1.divisor());
    cout &lt;&lt; <span class="stringliteral">&quot;Parameter g2: &quot;</span> &lt;&lt; g2 &lt;&lt; endl;
  }
  <span class="keywordflow">else</span>
    cout &lt;&lt; <span class="stringliteral">&quot;Grid Generator g1 is not a grid point.&quot;</span> &lt;&lt; endl;
</pre></div> Therefore, for the grid point <div class="fragment"><pre class="fragment">  <a class="code" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#ab1db3272b7beca7b1d9d17f23d22ecbd" title="Ordinary copy constructor.">Grid_Generator</a> g1 = <a class="code" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#a065895a1428f9dc6b3002818686eff0f" title="Returns the point at e / d.">grid_point</a>(2*x - y + 3*z, 2);
</pre></div> we would obtain the following output: <div class="fragment"><pre class="fragment">  Grid <a class="code" href="classParma__Polyhedra__Library_1_1Generator.html#a6b8dae6436867a53e27720ee211f1cc7" title="Returns the point at e / d.">point</a> g1: p((2*A - B + 3*C)/2)
  Parameter g2: <a class="code" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#ac061731c4fec7f60c48e02ed9806b4bb" title="Returns the parameter of direction e and size e/d.">parameter</a>((2*A - 2*B + 9*C)/2)
</pre></div> When working with grid points and parameters, be careful not to confuse the notion of <em>coefficient</em> with the notion of <em>coordinate</em>: these are equivalent only when the divisor is 1. </dd></dl>
<hr/><h2>Member Enumeration Documentation</h2>
<a class="anchor" id="a10e7c95784e356487a6a6263a89cec66"></a><!-- doxytag: member="Parma_Polyhedra_Library::Grid_Generator::Type" ref="a10e7c95784e356487a6a6263a89cec66" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#a10e7c95784e356487a6a6263a89cec66">Parma_Polyhedra_Library::Grid_Generator::Type</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>The generator type. </p>
<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" id="a10e7c95784e356487a6a6263a89cec66ae9cf46c5e08ead7689807e1c8ba30642"></a><!-- doxytag: member="LINE" ref="a10e7c95784e356487a6a6263a89cec66ae9cf46c5e08ead7689807e1c8ba30642" args="" -->LINE</em>&nbsp;</td><td>
<p>The generator is a grid line. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a10e7c95784e356487a6a6263a89cec66a4ac3b90df83c2e43249ccfa2702640de"></a><!-- doxytag: member="PARAMETER" ref="a10e7c95784e356487a6a6263a89cec66a4ac3b90df83c2e43249ccfa2702640de" args="" -->PARAMETER</em>&nbsp;</td><td>
<p>The generator is a parameter. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a10e7c95784e356487a6a6263a89cec66a25b86c6f0633416506503de2bf693876"></a><!-- doxytag: member="POINT" ref="a10e7c95784e356487a6a6263a89cec66a25b86c6f0633416506503de2bf693876" args="" -->POINT</em>&nbsp;</td><td>
<p>The generator is a grid point. </p>
</td></tr>
</table>
</dd>
</dl>

<p>Reimplemented from <a class="el" href="classParma__Polyhedra__Library_1_1Generator.html#a55b76ba0041601d8da38ab5ad619eed5">Parma_Polyhedra_Library::Generator</a>.</p>

</div>
</div>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="aedf9116549ffcced7a39f4596e65e5d0"></a><!-- doxytag: member="Parma_Polyhedra_Library::Grid_Generator::grid_line" ref="aedf9116549ffcced7a39f4596e65e5d0" args="(const Linear_Expression &amp;e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html">Grid_Generator</a> grid_line </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classParma__Polyhedra__Library_1_1Linear__Expression.html">Linear_Expression</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>e</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns the line of direction <code>e</code>. </p>
<p>Shorthand for <a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html" title="A grid line, parameter or grid point.">Grid_Generator</a> <a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#aedf9116549ffcced7a39f4596e65e5d0" title="Returns the line of direction e.">Grid_Generator::grid_line(const Linear_Expression&amp; e)</a>.</p>
<dl><dt><b>Exceptions:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>std::invalid_argument</em>&nbsp;</td><td>Thrown if the homogeneous part of <code>e</code> represents the origin of the vector space.</td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ac061731c4fec7f60c48e02ed9806b4bb"></a><!-- doxytag: member="Parma_Polyhedra_Library::Grid_Generator::parameter" ref="ac061731c4fec7f60c48e02ed9806b4bb" args="(const Linear_Expression &amp;e=Linear_Expression::zero(), Coefficient_traits::const_reference d=Coefficient_one())" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html">Grid_Generator</a> parameter </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classParma__Polyhedra__Library_1_1Linear__Expression.html">Linear_Expression</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>e</em> = <code>Linear_Expression::zero()</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Coefficient_traits::const_reference&nbsp;</td>
          <td class="paramname"> <em>d</em> = <code>Coefficient_one()</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns the parameter of direction <code>e</code> and size <code>e/d</code>. </p>
<p>Shorthand for <a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html" title="A grid line, parameter or grid point.">Grid_Generator</a> <a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#ac061731c4fec7f60c48e02ed9806b4bb" title="Returns the parameter of direction e and size e/d.">Grid_Generator::parameter</a>(const <a class="el" href="classParma__Polyhedra__Library_1_1Linear__Expression.html" title="A linear expression.">Linear_Expression</a>&amp; e, Coefficient_traits::const_reference d).</p>
<p>Both <code>e</code> and <code>d</code> are optional arguments, with default values <a class="el" href="classParma__Polyhedra__Library_1_1Linear__Expression.html#a6f8cd8fbee64faaa5e47c8e41ba7662e" title="Returns the (zero-dimension space) constant 0.">Linear_Expression::zero()</a> and <a class="el" href="namespaceParma__Polyhedra__Library.html#a66438955854cf73ddaf27a40a69fec7b" title="Returns a const reference to a Coefficient with value 1.">Coefficient_one()</a>, respectively.</p>
<dl><dt><b>Exceptions:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>std::invalid_argument</em>&nbsp;</td><td>Thrown if <code>d</code> is zero.</td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a065895a1428f9dc6b3002818686eff0f"></a><!-- doxytag: member="Parma_Polyhedra_Library::Grid_Generator::grid_point" ref="a065895a1428f9dc6b3002818686eff0f" args="(const Linear_Expression &amp;e=Linear_Expression::zero(), Coefficient_traits::const_reference d=Coefficient_one())" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html">Grid_Generator</a> grid_point </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classParma__Polyhedra__Library_1_1Linear__Expression.html">Linear_Expression</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>e</em> = <code>Linear_Expression::zero()</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Coefficient_traits::const_reference&nbsp;</td>
          <td class="paramname"> <em>d</em> = <code>Coefficient_one()</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns the point at <code>e</code> / <code>d</code>. </p>
<p>Shorthand for <a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html" title="A grid line, parameter or grid point.">Grid_Generator</a> <a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#a065895a1428f9dc6b3002818686eff0f" title="Returns the point at e / d.">Grid_Generator::grid_point</a>(const <a class="el" href="classParma__Polyhedra__Library_1_1Linear__Expression.html" title="A linear expression.">Linear_Expression</a>&amp; e, Coefficient_traits::const_reference d).</p>
<p>Both <code>e</code> and <code>d</code> are optional arguments, with default values <a class="el" href="classParma__Polyhedra__Library_1_1Linear__Expression.html#a6f8cd8fbee64faaa5e47c8e41ba7662e" title="Returns the (zero-dimension space) constant 0.">Linear_Expression::zero()</a> and <a class="el" href="namespaceParma__Polyhedra__Library.html#a66438955854cf73ddaf27a40a69fec7b" title="Returns a const reference to a Coefficient with value 1.">Coefficient_one()</a>, respectively.</p>
<dl><dt><b>Exceptions:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>std::invalid_argument</em>&nbsp;</td><td>Thrown if <code>d</code> is zero.</td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="af4e7705af87f5eb64d2ebdc60cd7a36e"></a><!-- doxytag: member="Parma_Polyhedra_Library::Grid_Generator::coefficient" ref="af4e7705af87f5eb64d2ebdc60cd7a36e" args="(Variable v) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Coefficient_traits::const_reference Parma_Polyhedra_Library::Grid_Generator::coefficient </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classParma__Polyhedra__Library_1_1Variable.html">Variable</a>&nbsp;</td>
          <td class="paramname"> <em>v</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns the coefficient of <code>v</code> in <code>*this</code>. </p>
<dl><dt><b>Exceptions:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>std::invalid_argument</em>&nbsp;</td><td>Thrown if the index of <code>v</code> is greater than or equal to the space dimension of <code>*this</code>. </td></tr>
  </table>
  </dd>
</dl>

<p>Reimplemented from <a class="el" href="classParma__Polyhedra__Library_1_1Generator.html#afceefab91d648d188e42e5a75a3a977e">Parma_Polyhedra_Library::Generator</a>.</p>

</div>
</div>
<a class="anchor" id="acdc0aeddab3d98e336719f42e6e5b06c"></a><!-- doxytag: member="Parma_Polyhedra_Library::Grid_Generator::divisor" ref="acdc0aeddab3d98e336719f42e6e5b06c" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Coefficient_traits::const_reference Parma_Polyhedra_Library::Grid_Generator::divisor </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns the divisor of <code>*this</code>. </p>
<dl><dt><b>Exceptions:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>std::invalid_argument</em>&nbsp;</td><td>Thrown if <code>*this</code> is a line. </td></tr>
  </table>
  </dd>
</dl>

<p>Reimplemented from <a class="el" href="classParma__Polyhedra__Library_1_1Generator.html#aeff190ba56f86d3425859043689d499a">Parma_Polyhedra_Library::Generator</a>.</p>

</div>
</div>
<a class="anchor" id="aba6b40a4b9708e94d6cd10f54144ed70"></a><!-- doxytag: member="Parma_Polyhedra_Library::Grid_Generator::is_equivalent_to" ref="aba6b40a4b9708e94d6cd10f54144ed70" args="(const Grid_Generator &amp;y) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool Parma_Polyhedra_Library::Grid_Generator::is_equivalent_to </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html">Grid_Generator</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>y</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns <code>true</code> if and only if <code>*this</code> and <code>y</code> are equivalent generators. </p>
<p>Generators having different space dimensions are not equivalent. </p>

</div>
</div>
<a class="anchor" id="ae1887d907ab06bddeaa2682bdf94d268"></a><!-- doxytag: member="Parma_Polyhedra_Library::Grid_Generator::coefficient_swap" ref="ae1887d907ab06bddeaa2682bdf94d268" args="(Grid_Generator &amp;y)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Parma_Polyhedra_Library::Grid_Generator::coefficient_swap </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html">Grid_Generator</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>y</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Swaps <code>*this</code> with <code>y</code>, leaving <code>*this</code> with the original capacity. </p>
<p>All elements up to and including the last element of the smaller of <code>*this</code> and <code>y</code> are swapped. The parameter divisor element of <code>y</code> is swapped with the divisor element of <code>*this</code>. </p>

</div>
</div>
<hr/><h2>Friends And Related Function Documentation</h2>
<a class="anchor" id="a082a74ad0ce931ec2e517bf0f009daa2"></a><!-- doxytag: member="Parma_Polyhedra_Library::Grid_Generator::operator&lt;&lt;" ref="a082a74ad0ce931ec2e517bf0f009daa2" args="(std::ostream &amp;s, const Grid_Generator &amp;g)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">std::ostream &amp; operator&lt;&lt; </td>
          <td>(</td>
          <td class="paramtype">std::ostream &amp;&nbsp;</td>
          <td class="paramname"> <em>s</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html">Grid_Generator</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>g</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [related]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Output operator. </p>

</div>
</div>
<a class="anchor" id="a1a15765e7fd1f486a9ee12a061dc4c76"></a><!-- doxytag: member="Parma_Polyhedra_Library::Grid_Generator::swap" ref="a1a15765e7fd1f486a9ee12a061dc4c76" args="(Parma_Polyhedra_Library::Grid_Generator &amp;x, Parma_Polyhedra_Library::Grid_Generator &amp;y)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void swap </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html">Parma_Polyhedra_Library::Grid_Generator</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html">Parma_Polyhedra_Library::Grid_Generator</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>y</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [related]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Specializes <code>std::swap</code>. </p>

</div>
</div>
<a class="anchor" id="a3075c67d9868fc0b483db13256fb4e0c"></a><!-- doxytag: member="Parma_Polyhedra_Library::Grid_Generator::operator==" ref="a3075c67d9868fc0b483db13256fb4e0c" args="(const Grid_Generator &amp;x, const Grid_Generator &amp;y)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool operator== </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html">Grid_Generator</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html">Grid_Generator</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>y</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [related]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns <code>true</code> if and only if <code>x</code> is equivalent to <code>y</code>. </p>

</div>
</div>
<a class="anchor" id="a8ab7b9abebd48fe0ad129a237338aa96"></a><!-- doxytag: member="Parma_Polyhedra_Library::Grid_Generator::operator!=" ref="a8ab7b9abebd48fe0ad129a237338aa96" args="(const Grid_Generator &amp;x, const Grid_Generator &amp;y)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool operator!= </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html">Grid_Generator</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html">Grid_Generator</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>y</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [related]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns <code>true</code> if and only if <code>x</code> is not equivalent to <code>y</code>. </p>

</div>
</div>
<a class="anchor" id="a6fb154017052c68b63121cef49c568ce"></a><!-- doxytag: member="Parma_Polyhedra_Library::Grid_Generator::operator&lt;&lt;" ref="a6fb154017052c68b63121cef49c568ce" args="(std::ostream &amp;s, const Grid_Generator::Type &amp;t)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">std::ostream &amp; operator&lt;&lt; </td>
          <td>(</td>
          <td class="paramtype">std::ostream &amp;&nbsp;</td>
          <td class="paramname"> <em>s</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#a10e7c95784e356487a6a6263a89cec66">Grid_Generator::Type</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>t</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [related]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Output operator. </p>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>ppl.hh</li>
</ul>
</div>
<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Feb 27 10:10:57 2011 for PPL by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>