1 #ifndef VIENNACL_GENERATOR_FORWARDS_H
2 #define VIENNACL_GENERATOR_FORWARDS_H
77 default :
return "INVALID EXPRESSION";
96 template <
typename KeyT,
typename ValueT>
97 ValueT
const &
at(std::map<KeyT, ValueT>
const & map, KeyT
const & key)
99 typename std::map<KeyT, ValueT>::const_iterator it = map.find(key);
103 throw std::out_of_range(
"Generator: Key not found in map");
107 class kernel_generation_stream;
120 typedef std::pair<viennacl::scheduler::statement_node const *, node_type>
key_type;
126 inline std::string
generate(std::pair<std::string, std::string>
const & index,
int vector_element,
mapped_object const & s);
127 static std::string & append_kernel_arguments(std::set<std::string> & already_generated, std::string & str,
unsigned int vector_size,
mapped_object const & s);
132 , std::pair<std::string, std::string>
const & index
Definition: forwards.h:61
A stream class where the kernel sources are streamed to. Takes care of indentation of the sources...
Definition: utils.hpp:233
std::map< key_type, container_ptr_type > mapping_type
Definition: forwards.h:122
Definition: forwards.h:60
std::size_t vcl_size_t
Definition: forwards.h:58
expression_type
Definition: forwards.h:51
tools::shared_ptr< detail::mapped_object > container_ptr_type
Definition: forwards.h:121
Definition: forwards.h:114
expression_type_family
Definition: forwards.h:41
std::pair< viennacl::scheduler::statement_node const *, node_type > key_type
Definition: forwards.h:118
Base class for mapping viennacl datastructure to generator-friendly structures.
Definition: mapped_objects.hpp:41
Definition: forwards.h:59
Definition: forwards.h:54
Definition: forwards.h:58
ValueT const & at(std::map< KeyT, ValueT > const &map, KeyT const &key)
Emulation of C++11's .at() member for std::map<>
Definition: forwards.h:97
A class for holding meta information such as the type or the underlying scalar type of an expression ...
Definition: forwards.h:84
Definition: forwards.h:56
Definition: forwards.h:57
Definition: forwards.h:47
Implementation of a shared pointer class (cf. std::shared_ptr, boost::shared_ptr). Will be used until C++11 is widely available.
Definition: forwards.h:44
Definition: forwards.h:52
void generate_enqueue_statement(viennacl::scheduler::statement const &s, scheduler::statement_node const &root_node)
Generate and enqueue a statement plus root_node into the current queue.
Definition: generate.hpp:395
Definition: forwards.h:62
Definition: forwards.h:55
Definition: forwards.h:113
expression_key_type make_key() const
Definition: forwards.h:85
Definition: forwards.h:43
Provides the datastructures for dealing with a single statement such as 'x = y + z;'.
operation_node_type
Enumeration for identifying the possible operations.
Definition: forwards.h:61
expression_type type
Definition: forwards.h:91
node_type
Definition: forwards.h:112
bool operator==(expression_descriptor const &other) const
Definition: forwards.h:86
Definition: forwards.h:45
Definition: forwards.h:115
Definition: forwards.h:53
const char * expression_type_to_string(expression_type type)
Definition: forwards.h:65
Definition: forwards.h:48
Definition: forwards.h:42
std::pair< expression_type, vcl_size_t > expression_key_type
Definition: forwards.h:81
The main class for representing a statement such as x = inner_prod(y,z); at runtime.
Definition: forwards.h:447
std::string generate(std::pair< std::string, std::string > const &index, int vector_element, mapped_object const &s)
Definition: mapped_objects.hpp:325
vcl_size_t scalartype_size
Definition: forwards.h:92
expression_type_family type_family
Definition: forwards.h:90
Main datastructure for an node in the statement tree.
Definition: forwards.h:420
Definition: forwards.h:46