Cinder

  • Main Page
  • Related Pages
  • Modules
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

include/opencv2/flann/matrix.h

Go to the documentation of this file.
00001 /***********************************************************************
00002  * Software License Agreement (BSD License)
00003  *
00004  * Copyright 2008-2009  Marius Muja (mariusm@cs.ubc.ca). All rights reserved.
00005  * Copyright 2008-2009  David G. Lowe (lowe@cs.ubc.ca). All rights reserved.
00006  *
00007  * THE BSD LICENSE
00008  *
00009  * Redistribution and use in source and binary forms, with or without
00010  * modification, are permitted provided that the following conditions
00011  * are met:
00012  *
00013  * 1. Redistributions of source code must retain the above copyright
00014  *    notice, this list of conditions and the following disclaimer.
00015  * 2. Redistributions in binary form must reproduce the above copyright
00016  *    notice, this list of conditions and the following disclaimer in the
00017  *    documentation and/or other materials provided with the distribution.
00018  *
00019  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
00020  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
00021  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
00022  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
00023  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
00024  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
00025  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
00026  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
00027  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
00028  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00029  *************************************************************************/
00030 
00031 #ifndef _OPENCV_DATASET_H_
00032 #define _OPENCV_DATASET_H_
00033 
00034 #include <stdio.h>
00035 
00036 #include "opencv2/flann/general.h"
00037 
00038 
00039 namespace cvflann 
00040 {
00041 
00046 template <typename T>
00047 class Matrix {
00048 public:
00049     size_t rows;
00050     size_t cols;
00051     T* data;
00052 
00053     Matrix() : rows(0), cols(0), data(NULL)
00054     {
00055     }
00056 
00057     Matrix(T* data_, long rows_, long cols_) :
00058          rows(rows_), cols(cols_), data(data_)
00059     {
00060     }
00061 
00065     void release()
00066     {
00067         if (data!=NULL) delete[] data;
00068     }
00069 
00070     ~Matrix()
00071     {
00072     }
00073 
00077     T* operator[](size_t index)
00078     {
00079         return data+index*cols;
00080     }
00081 
00082     T* operator[](size_t index) const
00083     {
00084         return data+index*cols;
00085     }
00086 };
00087 
00088 
00089 class UntypedMatrix
00090 {
00091 public:
00092     size_t rows;
00093     size_t cols;
00094     void* data;
00095     flann_datatype_t type;
00096 
00097     UntypedMatrix(void* data_, long rows_, long cols_) :
00098          rows(rows_), cols(cols_), data(data_)
00099     {
00100     }
00101 
00102     ~UntypedMatrix()
00103     {
00104     }
00105 
00106 
00107     template<typename T>
00108     Matrix<T> as()
00109     {
00110         return Matrix<T>((T*)data, rows, cols);
00111     }
00112 };
00113 
00114 
00115 
00116 } // namespace cvflann
00117 
00118 #endif //_OPENCV_DATASET_H_