ViennaCL - The Vienna Computing Library  1.4.2
viennacl/generator/forwards.h
Go to the documentation of this file.
00001 #ifndef VIENNACL_GENERATOR_FORWARDS_H
00002 #define VIENNACL_GENERATOR_FORWARDS_H
00003 
00004 /* =========================================================================
00005    Copyright (c) 2010-2013, Institute for Microelectronics,
00006                             Institute for Analysis and Scientific Computing,
00007                             TU Wien.
00008    Portions of this software are copyright by UChicago Argonne, LLC.
00009 
00010                             -----------------
00011                   ViennaCL - The Vienna Computing Library
00012                             -----------------
00013 
00014    Project Head:    Karl Rupp                   rupp@iue.tuwien.ac.at
00015 
00016    (A list of authors and contributors can be found in the PDF manual)
00017 
00018    License:         MIT (X11), see file LICENSE in the base directory
00019 ============================================================================= */
00020 
00027 #include <string>
00028 #include "viennacl/forwards.h"
00029 
00030 namespace viennacl
00031 {
00032   namespace generator
00033   {
00034 
00035     template<class T>
00036     class operation_repeater;
00037 
00038     template<class LHS, class OP_TYPE, class RHS>
00039     class compound_node;
00040 
00041     template<class T>
00042     struct inner_prod_impl_t;
00043 
00044     struct prod_type;
00045 
00046     struct inner_prod_type;
00047 
00048     template<long VAL>
00049     class symbolic_constant;
00050 
00051     template<long VAL>
00052     class symbolic_constant_vector;
00053 
00054     template< unsigned int ID, typename SCALARTYPE, unsigned int ALIGNMENT = 1>
00055     class symbolic_vector;
00056 
00057     template<unsigned int ID,
00058              typename SCALARTYPE, class F = viennacl::row_major, unsigned int ALIGNMENT = 1>
00059     class symbolic_matrix;
00060 
00061     template<class REF>
00062     class tmp_symbolic_matrix;
00063 
00064     template<unsigned int ID,typename SCALARTYPE>
00065     class cpu_symbolic_scalar;
00066 
00067     template<unsigned int ID,typename SCALARTYPE>
00068     class gpu_symbolic_scalar;
00069 
00070     template<class Expr, class OP, class Assigned>
00071     struct MatVecToken;
00072 
00073     template<class Expr, class OP, class Assigned>
00074     struct MatMatToken;
00075 
00076     template<class Expr,unsigned int Step>
00077     struct InProdToken;
00078 
00079     template<class Expr>
00080     struct ArithmeticToken;
00081 
00082     template<class Bound_, class Operations_>
00083     struct repeater_impl;
00084 
00085 
00086     struct assign_type;
00087 
00088     struct add_type;
00089     struct inplace_add_type;
00090 
00091     struct sub_type;
00092     struct inplace_sub_type;
00093 
00094     struct scal_mul_type;
00095     struct inplace_scal_mul_type;
00096 
00097     struct scal_div_type;
00098     struct inplace_scal_div_type;
00099 
00100     struct inner_prod_type;
00101     struct prod_type;
00102 
00103     struct elementwise_prod_type;
00104     struct elementwise_div_type;
00105 
00106 namespace result_of{
00107     template<class T>
00108     struct is_inner_product_leaf;
00109 
00110     template<class T>
00111     struct is_inner_product_impl;
00112 }
00113 
00114   }
00115 }
00116 #endif
00117