<!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::Variable 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_1Variable.html">Variable</a> </div> </div> <div class="contents"> <h1>Parma_Polyhedra_Library::Variable Class Reference<br/> <small> [<a class="el" href="group__PPL__CXX__interface.html">C++ Language Interface</a>]</small> </h1><!-- doxytag: class="Parma_Polyhedra_Library::Variable" --> <p>A dimension of the vector space. <a href="#_details">More...</a></p> <p><code>#include <ppl.hh></code></p> <p><a href="classParma__Polyhedra__Library_1_1Variable-members.html">List of all members.</a></p> <table border="0" cellpadding="0" cellspacing="0"> <tr><td colspan="2"><h2>Classes</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structParma__Polyhedra__Library_1_1Variable_1_1Compare.html">Compare</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Binary predicate defining the total ordering on variables. <a href="structParma__Polyhedra__Library_1_1Variable_1_1Compare.html#_details">More...</a><br/></td></tr> <tr><td colspan="2"><h2>Public Types</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab80d28775828a4ee502fab82ba1a278c"></a><!-- doxytag: member="Parma_Polyhedra_Library::Variable::output_function_type" ref="ab80d28775828a4ee502fab82ba1a278c" args="(std::ostream &s, const Variable &v)" --> typedef void </td><td class="memItemRight" valign="bottom"><a class="el" href="classParma__Polyhedra__Library_1_1Variable.html#ab80d28775828a4ee502fab82ba1a278c">output_function_type</a> (std::ostream &s, const <a class="el" href="classParma__Polyhedra__Library_1_1Variable.html">Variable</a> &v)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Type of output functions. <br/></td></tr> <tr><td colspan="2"><h2>Public Member Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classParma__Polyhedra__Library_1_1Variable.html#a8dfe38ded52523b20209cce599411c4c">Variable</a> (<a class="el" href="group__PPL__CXX__interface.html#ga853432469169b07e42c557e1d6d144de">dimension_type</a> i)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Builds the variable corresponding to the Cartesian axis of index <code>i</code>. <a href="#a8dfe38ded52523b20209cce599411c4c"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abb6a26c12f7bdee7504d577ca81992e0"></a><!-- doxytag: member="Parma_Polyhedra_Library::Variable::id" ref="abb6a26c12f7bdee7504d577ca81992e0" 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_1Variable.html#abb6a26c12f7bdee7504d577ca81992e0">id</a> () const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the index of the Cartesian axis associated to the variable. <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><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_1Variable.html#a44e2225e59844067e005297572cd9ca5">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>. <a href="#a44e2225e59844067e005297572cd9ca5"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7102c6fe85d4c8e6939d29a047becbdb"></a><!-- doxytag: member="Parma_Polyhedra_Library::Variable::total_memory_in_bytes" ref="a7102c6fe85d4c8e6939d29a047becbdb" 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_1Variable.html#a7102c6fe85d4c8e6939d29a047becbdb">total_memory_in_bytes</a> () const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns 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="a49b4a338d3d82bfb7a404ea87481fc4d"></a><!-- doxytag: member="Parma_Polyhedra_Library::Variable::external_memory_in_bytes" ref="a49b4a338d3d82bfb7a404ea87481fc4d" 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_1Variable.html#a49b4a338d3d82bfb7a404ea87481fc4d">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"><a class="anchor" id="aed0f237309569c2bfbf9e6f60740974e"></a><!-- doxytag: member="Parma_Polyhedra_Library::Variable::OK" ref="aed0f237309569c2bfbf9e6f60740974e" args="() const " --> bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classParma__Polyhedra__Library_1_1Variable.html#aed0f237309569c2bfbf9e6f60740974e">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 colspan="2"><h2>Static Public Member Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa5f2c0410e128e2f082d761ef36820da"></a><!-- doxytag: member="Parma_Polyhedra_Library::Variable::max_space_dimension" ref="aa5f2c0410e128e2f082d761ef36820da" 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_1Variable.html#aa5f2c0410e128e2f082d761ef36820da">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_1Variable.html" title="A dimension of the vector space.">Variable</a> can handle. <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5012c55d8fdb1420b80a3bfbe5a5b843"></a><!-- doxytag: member="Parma_Polyhedra_Library::Variable::set_output_function" ref="a5012c55d8fdb1420b80a3bfbe5a5b843" args="(output_function_type *p)" --> static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classParma__Polyhedra__Library_1_1Variable.html#a5012c55d8fdb1420b80a3bfbe5a5b843">set_output_function</a> (<a class="el" href="classParma__Polyhedra__Library_1_1Variable.html#ab80d28775828a4ee502fab82ba1a278c">output_function_type</a> *p)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the output function to be used for printing <a class="el" href="classParma__Polyhedra__Library_1_1Variable.html" title="A dimension of the vector space.">Variable</a> objects. <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a75683687bda865c93db529b76271bed2"></a><!-- doxytag: member="Parma_Polyhedra_Library::Variable::get_output_function" ref="a75683687bda865c93db529b76271bed2" args="()" --> static <a class="el" href="classParma__Polyhedra__Library_1_1Variable.html#ab80d28775828a4ee502fab82ba1a278c">output_function_type</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classParma__Polyhedra__Library_1_1Variable.html#a75683687bda865c93db529b76271bed2">get_output_function</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the pointer to the current output function. <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_1Variable.html#a56a9fd5bee6f87ae9079aed0bc3de31a">operator<<</a> (std::ostream &s, const <a class="el" href="classParma__Polyhedra__Library_1_1Variable.html">Variable</a> &v)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Output operator. <a href="#a56a9fd5bee6f87ae9079aed0bc3de31a"></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_1Variable.html#ad71d7986fdfd19215fc87726ebacf555">less</a> (<a class="el" href="classParma__Polyhedra__Library_1_1Variable.html">Variable</a> v, <a class="el" href="classParma__Polyhedra__Library_1_1Variable.html">Variable</a> w)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Defines a total ordering on variables. <a href="#ad71d7986fdfd19215fc87726ebacf555"></a><br/></td></tr> </table> <hr/><a name="_details"></a><h2>Detailed Description</h2> <p>A dimension of the vector space. </p> <p>An object of the class <a class="el" href="classParma__Polyhedra__Library_1_1Variable.html" title="A dimension of the vector space.">Variable</a> represents a dimension of the space, that is one of the Cartesian axes. Variables are used as basic blocks in order to build more complex linear expressions. Each variable is identified by a non-negative integer, representing the index of the corresponding Cartesian axis (the first axis has index 0). The space dimension of a variable is the dimension of the vector space made by all the Cartesian axes having an index less than or equal to that of the considered variable; thus, if a variable has index <img class="formulaInl" alt="$i$" src="form_158.png"/>, its space dimension is <img class="formulaInl" alt="$i+1$" src="form_483.png"/>.</p> <p>Note that the ``meaning'' of an object of the class <a class="el" href="classParma__Polyhedra__Library_1_1Variable.html" title="A dimension of the vector space.">Variable</a> is completely specified by the integer index provided to its constructor: be careful not to be mislead by C++ language variable names. For instance, in the following example the linear expressions <code>e1</code> and <code>e2</code> are equivalent, since the two variables <code>x</code> and <code>z</code> denote the same Cartesian axis. </p> <div class="fragment"><pre class="fragment"> <a class="code" href="classParma__Polyhedra__Library_1_1Variable.html#a8dfe38ded52523b20209cce599411c4c" title="Builds the variable corresponding to the Cartesian axis of index i.">Variable</a> x(0); <a class="code" href="classParma__Polyhedra__Library_1_1Variable.html#a8dfe38ded52523b20209cce599411c4c" title="Builds the variable corresponding to the Cartesian axis of index i.">Variable</a> y(1); <a class="code" href="classParma__Polyhedra__Library_1_1Variable.html#a8dfe38ded52523b20209cce599411c4c" title="Builds the variable corresponding to the Cartesian axis of index i.">Variable</a> z(0); Linear_Expression e1 = x + y; Linear_Expression e2 = y + z; </pre></div> <hr/><h2>Constructor & Destructor Documentation</h2> <a class="anchor" id="a8dfe38ded52523b20209cce599411c4c"></a><!-- doxytag: member="Parma_Polyhedra_Library::Variable::Variable" ref="a8dfe38ded52523b20209cce599411c4c" args="(dimension_type i)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">Parma_Polyhedra_Library::Variable::Variable </td> <td>(</td> <td class="paramtype"><a class="el" href="group__PPL__CXX__interface.html#ga853432469169b07e42c557e1d6d144de">dimension_type</a> </td> <td class="paramname"> <em>i</em></td> <td> ) </td> <td><code> [inline, explicit]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Builds the variable corresponding to the Cartesian axis of index <code>i</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::length_error</em> </td><td>Thrown if <code>i+1</code> exceeds <code><a class="el" href="classParma__Polyhedra__Library_1_1Variable.html#aa5f2c0410e128e2f082d761ef36820da" title="Returns the maximum space dimension a Variable can handle.">Variable::max_space_dimension()</a></code>. </td></tr> </table> </dd> </dl> </div> </div> <hr/><h2>Member Function Documentation</h2> <a class="anchor" id="a44e2225e59844067e005297572cd9ca5"></a><!-- doxytag: member="Parma_Polyhedra_Library::Variable::space_dimension" ref="a44e2225e59844067e005297572cd9ca5" args="() const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="group__PPL__CXX__interface.html#ga853432469169b07e42c557e1d6d144de">dimension_type</a> Parma_Polyhedra_Library::Variable::space_dimension </td> <td>(</td> <td class="paramname"></td> <td> ) </td> <td> const<code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Returns the dimension of the vector space enclosing <code>*this</code>. </p> <p>The returned value is <code><a class="el" href="classParma__Polyhedra__Library_1_1Variable.html#abb6a26c12f7bdee7504d577ca81992e0" title="Returns the index of the Cartesian axis associated to the variable.">id()</a>+1</code>. </p> </div> </div> <hr/><h2>Friends And Related Function Documentation</h2> <a class="anchor" id="a56a9fd5bee6f87ae9079aed0bc3de31a"></a><!-- doxytag: member="Parma_Polyhedra_Library::Variable::operator<<" ref="a56a9fd5bee6f87ae9079aed0bc3de31a" args="(std::ostream &s, const Variable &v)" --> <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_1Variable.html">Variable</a> & </td> <td class="paramname"> <em>v</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="ad71d7986fdfd19215fc87726ebacf555"></a><!-- doxytag: member="Parma_Polyhedra_Library::Variable::less" ref="ad71d7986fdfd19215fc87726ebacf555" args="(Variable v, Variable w)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool less </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> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="classParma__Polyhedra__Library_1_1Variable.html">Variable</a> </td> <td class="paramname"> <em>w</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>Defines a total ordering on variables. </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>