• Main Page
  • Namespaces
  • Data Structures
  • Files
  • File List
  • Globals

/data/development/ViennaCL/dev/viennacl/traits/handle.hpp

Go to the documentation of this file.
00001 #ifndef VIENNACL_TRAITS_HANDLE_HPP_
00002 #define VIENNACL_TRAITS_HANDLE_HPP_
00003 
00004 /* =========================================================================
00005    Copyright (c) 2010-2011, Institute for Microelectronics,
00006                             Institute for Analysis and Scientific Computing,
00007                             TU Wien.
00008 
00009                             -----------------
00010                   ViennaCL - The Vienna Computing Library
00011                             -----------------
00012 
00013    Project Head:    Karl Rupp                   rupp@iue.tuwien.ac.at
00014                
00015    (A list of authors and contributors can be found in the PDF manual)
00016 
00017    License:         MIT (X11), see file LICENSE in the base directory
00018 ============================================================================= */
00019 
00024 #include <string>
00025 #include <fstream>
00026 #include <sstream>
00027 #include "viennacl/forwards.h"
00028 
00029 #ifdef __APPLE__
00030 #include <OpenCL/cl.h>
00031 #else
00032 #include <CL/cl.h>
00033 #endif
00034 
00035 namespace viennacl
00036 {
00037   namespace traits
00038   {
00039     
00040     // Returns the OpenCL handle of a ViennaCL object
00041     template <typename T>
00042     viennacl::ocl::handle<cl_mem> handle(T & obj)
00043     {
00044       return obj.handle();
00045     }
00046 
00047     template <typename T>
00048     viennacl::ocl::handle<cl_mem> handle(viennacl::vector_range<T> & obj)
00049     {
00050       return handle(obj.get());
00051     }
00052 
00053     template <typename T>
00054     viennacl::ocl::handle<cl_mem> handle(viennacl::vector_range<T> const & obj)
00055     {
00056       return handle(obj.get());
00057     }
00058 
00059     template <typename T>
00060     viennacl::ocl::handle<cl_mem> handle(viennacl::matrix_range<T> & obj)
00061     {
00062       return handle(obj.get());
00063     }
00064 
00065     template <typename T>
00066     viennacl::ocl::handle<cl_mem> handle(viennacl::matrix_range<T> const & obj)
00067     {
00068       return handle(obj.get());
00069     }
00070 
00071   } //namespace traits
00072 } //namespace viennacl
00073     
00074 
00075 #endif

Generated on Fri Dec 30 2011 23:20:43 for ViennaCL - The Vienna Computing Library by  doxygen 1.7.1