1 #ifndef VIENNACL_SCHEDULER_IO_HPP 
    2 #define VIENNACL_SCHEDULER_IO_HPP 
   39 #define VIENNACL_TRANSLATE_OP_TO_STRING(NAME)   case NAME: return #NAME; 
   98         return "OPERATION_INVALID_TYPE";
 
  105 #undef VIENNACL_TRANSLATE_OP_TO_STRING 
  107 #define VIENNACL_TRANSLATE_ELEMENT_TO_STRING(NAME, ELEMENT)   case NAME: ss << "(" << element.ELEMENT << ")"; return #NAME + ss.str(); 
  112     std::stringstream ss;
 
  117       return "COMPOSITE_OPERATION_FAMILY" + ss.str();
 
  123         ss << 
", HOST_SCALAR_TYPE ";
 
  142         ss << 
", DEVICE_SCALAR_TYPE";
 
  162       ss << 
", DENSE_VECTOR_TYPE ";
 
  184         ss << 
", DENSE_MATRIX_TYPE ";
 
  207       return "INVALID_TYPE_FAMILY";
 
  213 #undef VIENNACL_TRANSLATE_ELEMENT_TO_STRING 
  236     StatementNodeContainer 
const & nodes = s.
array();
 
  237     StatementNode 
const & current_node = nodes[node_index];
 
  242     os << 
"Node " << node_index << 
": " << current_node << std::endl;
 
  245       print_node(os, s, current_node.lhs.node_index, indent+1);
 
  248       print_node(os, s, current_node.rhs.node_index, indent+1);
 
statement_node_subtype subtype
This file provides the forward declarations for the main types used within ViennaCL. 
statement_node_type_family type_family
A class representing the 'data' for the LHS or RHS operand of the respective node. 
container_type const & array() const 
#define VIENNACL_TRANSLATE_OP_TO_STRING(NAME)
operation_node_type_family type_family
Struct for holding the type family as well as the type of an operation (could be addition, subtraction, norm, etc.) 
std::vector< value_type > container_type
std::string to_string(viennacl::scheduler::op_element op_elem)
Helper routine for converting the operation enums to string. 
#define VIENNACL_TRANSLATE_ELEMENT_TO_STRING(NAME, ELEMENT)
statement_node_numeric_type numeric_type
Provides the datastructures for dealing with a single statement such as 'x = y + z;'. 
void print_node(std::ostream &os, viennacl::scheduler::statement const &s, vcl_size_t node_index, vcl_size_t indent=0)
Recursive worker routine for printing a whole statement. 
std::ostream & operator<<(std::ostream &os, viennacl::scheduler::statement_node const &s_node)
Print a single statement_node. Non-recursive. 
The main class for representing a statement such as x = inner_prod(y,z); at runtime. 
Main datastructure for an node in the statement tree. 
Exception for the case the scheduler is unable to deal with the operation.