<!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 Page</span></a></li> <li><a href="pages.html"><span>Related 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 List</span></a></li> <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> <li><a href="functions.html"><span>Class 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 <ppl.hh></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 </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"> </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 &g)" --> </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> &g)</td></tr> <tr><td class="mdescLeft"> </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="()" --> </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"> </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 &g)" --> <a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html">Grid_Generator</a> & </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> &g)</td></tr> <tr><td class="mdescLeft"> </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 &g)" --> <a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html">Grid_Generator</a> & </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> &g)</td></tr> <tr><td class="mdescLeft"> </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> </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"> </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> </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"> </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 </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"> </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 </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"> </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 </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"> </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 </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"> </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 </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"> </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 </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"> </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 </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"> </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> </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"> </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> </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"> </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 </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> &y) const </td></tr> <tr><td class="mdescLeft"> </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 &y) const " --> bool </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> &y) const </td></tr> <tr><td class="mdescLeft"> </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 &gg) const " --> bool </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> &gg) const </td></tr> <tr><td class="mdescLeft"> </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 </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"> </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 </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"> </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 &s) const " --> void </td><td class="memItemRight" valign="bottom"><a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#a77123fc17c8bc6d59a76802c0592a2c6">ascii_dump</a> (std::ostream &s) const </td></tr> <tr><td class="mdescLeft"> </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 </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"> </td><td class="mdescRight">Prints <code>*this</code> to <code>std::cerr</code> using <code>operator<<</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 &s)" --> bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#a58b86510b9c4dc05004c0fc01622430b">ascii_load</a> (std::istream &s)</td></tr> <tr><td class="mdescLeft"> </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&) 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 </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"> </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 &y)" --> void </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> &y)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Swaps <code>*this</code> with <code>y</code>. <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </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> &y)</td></tr> <tr><td class="mdescLeft"> </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> </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> &e)</td></tr> <tr><td class="mdescLeft"> </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> </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> &e=Linear_Expression::zero(), Coefficient_traits::const_reference d=Coefficient_one())</td></tr> <tr><td class="mdescLeft"> </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> </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> &e=Linear_Expression::zero(), Coefficient_traits::const_reference d=Coefficient_one())</td></tr> <tr><td class="mdescLeft"> </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> </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"> </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 </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"> </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 </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"> </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> & </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"> </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 & </td><td class="memItemRight" valign="bottom"><a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#a082a74ad0ce931ec2e517bf0f009daa2">operator<<</a> (std::ostream &s, const <a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html">Grid_Generator</a> &g)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Output operator. <a href="#a082a74ad0ce931ec2e517bf0f009daa2"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </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> &x, <a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html">Parma_Polyhedra_Library::Grid_Generator</a> &y)</td></tr> <tr><td class="mdescLeft"> </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 </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> &x, const <a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html">Grid_Generator</a> &y)</td></tr> <tr><td class="mdescLeft"> </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 </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> &x, const <a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html">Grid_Generator</a> &y)</td></tr> <tr><td class="mdescLeft"> </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 & </td><td class="memItemRight" valign="bottom"><a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#a6fb154017052c68b63121cef49c568ce">operator<<</a> (std::ostream &s, const <a class="el" href="classParma__Polyhedra__Library_1_1Grid__Generator.html#a10e7c95784e356487a6a6263a89cec66">Grid_Generator::Type</a> &t)</td></tr> <tr><td class="mdescLeft"> </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 << <span class="stringliteral">"Grid point g1: "</span> << g1 << 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-- > 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 << <span class="stringliteral">"Parameter g2: "</span> << g2 << endl; } <span class="keywordflow">else</span> cout << <span class="stringliteral">"Grid Generator g1 is not a grid point."</span> << 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> </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> </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> </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 &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> & </td> <td class="paramname"> <em>e</em></td> <td> ) </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& 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> </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 &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> & </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 </td> <td class="paramname"> <em>d</em> = <code>Coefficient_one()</code></td><td> </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>& 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> </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 &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> & </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 </td> <td class="paramname"> <em>d</em> = <code>Coefficient_one()</code></td><td> </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>& 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> </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> </td> <td class="paramname"> <em>v</em></td> <td> ) </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> </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> ) </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> </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 &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> & </td> <td class="paramname"> <em>y</em></td> <td> ) </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 &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> & </td> <td class="paramname"> <em>y</em></td> <td> ) </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<<" ref="a082a74ad0ce931ec2e517bf0f009daa2" args="(std::ostream &s, const Grid_Generator &g)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">std::ostream & operator<< </td> <td>(</td> <td class="paramtype">std::ostream & </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> & </td> <td class="paramname"> <em>g</em></td><td> </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 &x, Parma_Polyhedra_Library::Grid_Generator &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> & </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> & </td> <td class="paramname"> <em>y</em></td><td> </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 &x, const Grid_Generator &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> & </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> & </td> <td class="paramname"> <em>y</em></td><td> </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 &x, const Grid_Generator &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> & </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> & </td> <td class="paramname"> <em>y</em></td><td> </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<<" ref="a6fb154017052c68b63121cef49c568ce" args="(std::ostream &s, const Grid_Generator::Type &t)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">std::ostream & operator<< </td> <td>(</td> <td class="paramtype">std::ostream & </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> & </td> <td class="paramname"> <em>t</em></td><td> </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 <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address> </body> </html>