1/*M/////////////////////////////////////////////////////////////////////////////////////// 2// 3// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. 4// 5// By downloading, copying, installing or using the software you agree to this license. 6// If you do not agree to this license, do not download, install, 7// copy or use the software. 8// 9// 10// License Agreement 11// For Open Source Computer Vision Library 12// 13// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. 14// Copyright (C) 2009, Willow Garage Inc., all rights reserved. 15// Copyright (C) 2013, OpenCV Foundation, all rights reserved. 16// Third party copyrights are property of their respective owners. 17// 18// Redistribution and use in source and binary forms, with or without modification, 19// are permitted provided that the following conditions are met: 20// 21// * Redistribution's of source code must retain the above copyright notice, 22// this list of conditions and the following disclaimer. 23// 24// * Redistribution's in binary form must reproduce the above copyright notice, 25// this list of conditions and the following disclaimer in the documentation 26// and/or other materials provided with the distribution. 27// 28// * The name of the copyright holders may not be used to endorse or promote products 29// derived from this software without specific prior written permission. 30// 31// This software is provided by the copyright holders and contributors "as is" and 32// any express or implied warranties, including, but not limited to, the implied 33// warranties of merchantability and fitness for a particular purpose are disclaimed. 34// In no event shall the Intel Corporation or contributors be liable for any direct, 35// indirect, incidental, special, exemplary, or consequential damages 36// (including, but not limited to, procurement of substitute goods or services; 37// loss of use, data, or profits; or business interruption) however caused 38// and on any theory of liability, whether in contract, strict liability, 39// or tort (including negligence or otherwise) arising in any way out of 40// the use of this software, even if advised of the possibility of such damage. 41// 42//M*/ 43 44#pragma once 45 46#ifndef __OPENCV_CUDEV_PTR2D_CONSTANT_HPP__ 47#define __OPENCV_CUDEV_PTR2D_CONSTANT_HPP__ 48 49#include "../common.hpp" 50#include "traits.hpp" 51 52namespace cv { namespace cudev { 53 54//! @addtogroup cudev 55//! @{ 56 57template <typename T> struct ConstantPtr 58{ 59 typedef T value_type; 60 typedef int index_type; 61 62 T value; 63 64 __device__ __forceinline__ T operator ()(int, int) const { return value; } 65}; 66 67template <typename T> struct ConstantPtrSz : ConstantPtr<T> 68{ 69 int rows, cols; 70}; 71 72template <typename T> 73__host__ ConstantPtr<T> constantPtr(T value) 74{ 75 ConstantPtr<T> p; 76 p.value = value; 77 return p; 78} 79 80template <typename T> ConstantPtrSz<T> 81__host__ constantPtr(T value, int rows, int cols) 82{ 83 ConstantPtrSz<T> p; 84 p.value = value; 85 p.rows = rows; 86 p.cols = cols; 87 return p; 88} 89 90template <typename T> struct PtrTraits< ConstantPtrSz<T> > : PtrTraitsBase< ConstantPtrSz<T>, ConstantPtr<T> > 91{ 92}; 93 94//! @} 95 96}} 97 98#endif 99