angel::c_graph_t Class Reference

C-graph type. More...

#include <angel_types.hpp>

List of all members.

Public Types

typedef pure_c_graph_t pure_graph_t
 Type of basic type from BGL.
typedef
pure_c_graph_t::vertex_descriptor 
vertex_t
 Vertex type.
typedef
pure_c_graph_t::edge_descriptor 
edge_t
 Edge type.
typedef
boost::graph_traits
< pure_c_graph_t >
::vertex_iterator 
vi_t
 Vertex iterator type.
typedef
boost::graph_traits
< pure_c_graph_t >
::edge_iterator 
ei_t
 Edge iterator type.
typedef
boost::graph_traits
< pure_c_graph_t >
::in_edge_iterator 
iei_t
 Iterator type of a vertex's incoming edges.
typedef
boost::graph_traits
< pure_c_graph_t >
::out_edge_iterator 
oei_t
 Iterator type of a vertex's outgoing edges.
typedef
boost::property_map
< pure_c_graph_t,
boost::edge_weight_t >
::const_type 
const_ew_t
 Type of property edge label for const c_graph_t.
typedef
boost::property_map
< pure_c_graph_t,
boost::edge_weight_t >
::type 
ew_t
 Type of property edge label for non-const c_graph_t.
typedef
boost::property_map
< pure_c_graph_t,
boost::edge_index_t >
::const_type 
const_eind_t
 Type of property edge index for const c_graph_t.
typedef
boost::property_map
< pure_c_graph_t,
boost::edge_index_t >
::type 
eind_t
 Type of property edge index for non-const c_graph_t.
typedef
boost::property_map
< pure_c_graph_t,
EdgeType >
::const_type 
const_etype_t
 Type of property edge isUnit for const c_graph_t.
typedef
boost::property_map
< pure_c_graph_t,
EdgeType >::type 
etype_t
 Type of property edge isUnit for non-const c_graph_t.

Public Member Functions

 c_graph_t ()
 Default constructor.
 c_graph_t (int V_, int X_, const std::vector< vertex_t > &deps)
 Constructor with vertex specification.
 c_graph_t (int X_, int Z_, int Y_)
 Constructor with vertex specification.
 c_graph_t (const c_graph_t &_g)
 Copy constructor.
c_graph_toperator= (const c_graph_t &_g)
 Assign operator.
void swap (c_graph_t &_g)
 Swap.
int x () const
 Number of independent variables.
void x (int x)
 Number of independent variables.
int y () const
 Number of dependent variables.
int v () const
 Number of variables.
int z () const
 Number of intermediate vertices.
enum vertex_type_t vertex_type (vertex_t ve) const
 Vertex type of v.
bool check () const
 Check consistency of graph.
bool check_initial () const
 Check consistency of initial graph.
void remove_dependents_with_successors ()
 Change dependent vertices with successor into intermediate vertices.
void clear_edges ()
 Removes edges explicitly.
void clear_graph ()
 Remove all vertices that are not connected to dependent and inpedendent vertices.

Public Attributes

int next_edge_number
 useful for insertion of new edges
std::vector< vertex_tdependents
 set of dependent vertices

Private Attributes

int X

Friends

int read_graph_eliad (const std::string &file_name, c_graph_t &cg, bool retry)
void stats2block (int inputs, int outputs, const std::vector< c_graph_t > &stats, c_graph_t &block)
 Build a block from a list of statements.
void block2loop (const c_graph_t &block, int loops, c_graph_t &loop)
 Generates a DAG that represents a loop over the block.
void unpack_graph (const graph_package_t &gp, c_graph_t &cg)
void read_graph_xaif_booster (const xaifBoosterCrossCountryInterface::LinearizedComputationalGraph &xg, c_graph_t &cg, std::vector< const xaifBoosterCrossCountryInterface::LinearizedComputationalGraphVertex * > &av, std::vector< edge_address_t > &ev)


Detailed Description

C-graph type.

Definition at line 79 of file angel_types.hpp.


Member Typedef Documentation

typedef pure_c_graph_t angel::c_graph_t::pure_graph_t

Type of basic type from BGL.

Definition at line 84 of file angel_types.hpp.

typedef pure_c_graph_t::vertex_descriptor angel::c_graph_t::vertex_t

Vertex type.

Definition at line 86 of file angel_types.hpp.

typedef pure_c_graph_t::edge_descriptor angel::c_graph_t::edge_t

Edge type.

Definition at line 88 of file angel_types.hpp.

typedef boost::graph_traits<pure_c_graph_t>::vertex_iterator angel::c_graph_t::vi_t

Vertex iterator type.

Definition at line 90 of file angel_types.hpp.

typedef boost::graph_traits<pure_c_graph_t>::edge_iterator angel::c_graph_t::ei_t

Edge iterator type.

Definition at line 92 of file angel_types.hpp.

typedef boost::graph_traits<pure_c_graph_t>::in_edge_iterator angel::c_graph_t::iei_t

Iterator type of a vertex's incoming edges.

Definition at line 94 of file angel_types.hpp.

typedef boost::graph_traits<pure_c_graph_t>::out_edge_iterator angel::c_graph_t::oei_t

Iterator type of a vertex's outgoing edges.

Definition at line 96 of file angel_types.hpp.

typedef boost::property_map<pure_c_graph_t, boost::edge_weight_t>::const_type angel::c_graph_t::const_ew_t

Type of property edge label for const c_graph_t.

Definition at line 98 of file angel_types.hpp.

typedef boost::property_map<pure_c_graph_t, boost::edge_weight_t>::type angel::c_graph_t::ew_t

Type of property edge label for non-const c_graph_t.

Definition at line 100 of file angel_types.hpp.

typedef boost::property_map<pure_c_graph_t, boost::edge_index_t>::const_type angel::c_graph_t::const_eind_t

Type of property edge index for const c_graph_t.

Definition at line 102 of file angel_types.hpp.

typedef boost::property_map<pure_c_graph_t, boost::edge_index_t>::type angel::c_graph_t::eind_t

Type of property edge index for non-const c_graph_t.

Definition at line 104 of file angel_types.hpp.

typedef boost::property_map<pure_c_graph_t, EdgeType>::const_type angel::c_graph_t::const_etype_t

Type of property edge isUnit for const c_graph_t.

Definition at line 106 of file angel_types.hpp.

typedef boost::property_map<pure_c_graph_t, EdgeType>::type angel::c_graph_t::etype_t

Type of property edge isUnit for non-const c_graph_t.

Definition at line 108 of file angel_types.hpp.


Constructor & Destructor Documentation

angel::c_graph_t::c_graph_t (  )  [inline]

Default constructor.

Definition at line 115 of file angel_types.hpp.

angel::c_graph_t::c_graph_t ( int  V_,
int  X_,
const std::vector< vertex_t > &  deps 
) [inline]

Constructor with vertex specification.

Parameters:
V_ number of all vertices
X_ number of independent vertices
deps set of dependent vertices

Definition at line 123 of file angel_types.hpp.

References dependents, and THROW_EXCEPT_MACRO.

angel::c_graph_t::c_graph_t ( int  X_,
int  Z_,
int  Y_ 
) [inline]

Constructor with vertex specification.

Parameters:
X_ number of independent vertices
Z_ number of intermediated vertices
Y_ number of dependent vertices, will be located at the end

Definition at line 140 of file angel_types.hpp.

References dependents.

angel::c_graph_t::c_graph_t ( const c_graph_t _g  )  [inline]

Copy constructor.

Definition at line 151 of file angel_types.hpp.


Member Function Documentation

c_graph_t& angel::c_graph_t::operator= ( const c_graph_t _g  )  [inline]

Assign operator.

Definition at line 156 of file angel_types.hpp.

References clear_edges(), dependents, next_edge_number, and X.

Here is the call graph for this function:

void angel::c_graph_t::swap ( c_graph_t _g  )  [inline]

Swap.

Definition at line 164 of file angel_types.hpp.

References dependents, next_edge_number, and X.

Referenced by angel::permutate_vertices(), angel::random_statement(), angel::read_graph_eliad(), angel::remove_parallel_edges(), and angel::stats2block().

int angel::c_graph_t::x (  )  const [inline]

Number of independent variables.

Definition at line 169 of file angel_types.hpp.

References X.

Referenced by angel::block2loop(), angel::fme_obj(), angel::in_out_path_lengths(), angel::independent_vertices_to_front(), angel::line_graph_t::line_graph_t(), angel::number_independent_vertices(), angel::operator==(), angel::ourLCG_to_angelLCG(), angel::permutate_vertices(), angel::remove_parallel_edges(), angel::rme_obj(), angel::stats2block(), and z().

void angel::c_graph_t::x ( int  x  )  [inline]

Number of independent variables.

Definition at line 170 of file angel_types.hpp.

References X.

int angel::c_graph_t::y (  )  const [inline]

Number of dependent variables.

Definition at line 171 of file angel_types.hpp.

References dependents.

Referenced by angel::block2loop(), angel::line_graph_t::line_graph_t(), angel::operator==(), and z().

int angel::c_graph_t::v (  )  const [inline]

Number of variables.

Definition at line 172 of file angel_types.hpp.

Referenced by angel::block2loop(), clear_graph(), angel::independent_vertices_to_front(), angel::minimal_markowitz_degree(), angel::operator==(), angel::permutate_vertices(), angel::remove_parallel_edges(), angel::stats2block(), angel::take_over_successors(), vertex_type(), and z().

int angel::c_graph_t::z (  )  const [inline]

Number of intermediate vertices.

Definition at line 173 of file angel_types.hpp.

References v(), x(), and y().

Referenced by angel::operator==().

Here is the call graph for this function:

enum vertex_type_t angel::c_graph_t::vertex_type ( vertex_t  ve  )  const [inline]

Vertex type of v.

Definition at line 176 of file angel_types.hpp.

References angel::dead_vertex, angel::dependent, dependents, angel::independent, angel::intermediate, angel::undefined_vertex, v(), and X.

Referenced by angel::back_edge_elimination(), check(), check_initial(), angel::eliminatable_vertices(), angel::front_edge_elimination(), angel::remove_hoisting_vertices(), angel::remove_trivial_edges(), and angel::semi_eliminatable_vertices().

Here is the call graph for this function:

bool angel::c_graph_t::check (  )  const

Check consistency of graph.

Definition at line 22 of file angel_types.cpp.

References angel::dependent, angel::independent, vertex_type(), and angel::write_graph().

Referenced by check_initial().

Here is the call graph for this function:

bool angel::c_graph_t::check_initial (  )  const

Check consistency of initial graph.

Definition at line 55 of file angel_types.cpp.

References check(), angel::dependent, angel::independent, and vertex_type().

Referenced by angel::read_graph_eliad().

Here is the call graph for this function:

void angel::c_graph_t::remove_dependents_with_successors (  ) 

Change dependent vertices with successor into intermediate vertices.

Definition at line 71 of file angel_types.cpp.

References dependents.

void angel::c_graph_t::clear_edges (  )  [inline]

Removes edges explicitly.

Note:
It seems that BGL does not remove all edges in assignment.

Definition at line 192 of file angel_types.hpp.

Referenced by operator=().

void angel::c_graph_t::clear_graph (  ) 

Remove all vertices that are not connected to dependent and inpedendent vertices.

Definition at line 80 of file angel_types.cpp.

References dependents, angel::reachable_vertices(), angel::relevant_vertices(), v(), and X.

Referenced by angel::block2loop().

Here is the call graph for this function:


Friends And Related Function Documentation

int read_graph_eliad ( const std::string &  file_name,
c_graph_t cg,
bool  retry 
) [friend]

void stats2block ( int  inputs,
int  outputs,
const std::vector< c_graph_t > &  stats,
c_graph_t block 
) [friend]

Build a block from a list of statements.

Parameters:
inputs The number of the block's inputs
outputs The number of the block's outputs
stats List of statements
block The resulting block

void block2loop ( const c_graph_t block,
int  loops,
c_graph_t loop 
) [friend]

Generates a DAG that represents a loop over the block.

Parameters:
block The used block
loops The number of loops
loop The resulting loop DAG

void unpack_graph ( const graph_package_t &  gp,
c_graph_t cg 
) [friend]

void read_graph_xaif_booster ( const xaifBoosterCrossCountryInterface::LinearizedComputationalGraph &  xg,
c_graph_t cg,
std::vector< const xaifBoosterCrossCountryInterface::LinearizedComputationalGraphVertex * > &  av,
std::vector< edge_address_t > &  ev 
) [friend]


Member Data Documentation

int angel::c_graph_t::X [private]

Definition at line 81 of file angel_types.hpp.

Referenced by angel::block2loop(), clear_graph(), operator=(), angel::read_graph_eliad(), angel::read_graph_xaif_booster(), swap(), vertex_type(), and x().

int angel::c_graph_t::next_edge_number

useful for insertion of new edges

Definition at line 110 of file angel_types.hpp.

Referenced by angel::back_edge_elimination(), angel::block2loop(), angel::front_edge_elimination(), angel::multiply_edge_pair_directly(), operator=(), angel::pair_elim(), angel::pairElim_noJAE(), angel::postroute_edge_directly(), angel::postrouteEdge_noJAE(), angel::preroute_edge_directly(), angel::prerouteEdge_noJAE(), and swap().

std::vector<vertex_t> angel::c_graph_t::dependents

set of dependent vertices

Definition at line 112 of file angel_types.hpp.

Referenced by angel::block2loop(), c_graph_t(), clear_graph(), xaifBoosterCrossCountryInterface::compute_elimination_sequence_lsa_vertex(), angel::line_graph_t::line_graph_t(), angel::number_dependent_vertices(), operator=(), angel::operator==(), angel::ourLCG_to_angelLCG(), angel::permutate_vertices(), angel::read_graph_eliad(), angel::read_graph_xaif_booster(), remove_dependents_with_successors(), angel::remove_parallel_edges(), angel::stats2block(), swap(), angel::vertex_eliminatable(), vertex_type(), and y().


The documentation for this class was generated from the following files:
Generated on Wed Mar 11 10:34:35 2009 for angel by  doxygen 1.5.3