• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1  /***********************************************************************
2   * Software License Agreement (BSD License)
3   *
4   * Copyright 2008-2011  Marius Muja (mariusm@cs.ubc.ca). All rights reserved.
5   * Copyright 2008-2011  David G. Lowe (lowe@cs.ubc.ca). All rights reserved.
6   *
7   * Redistribution and use in source and binary forms, with or without
8   * modification, are permitted provided that the following conditions
9   * are met:
10   *
11   * 1. Redistributions of source code must retain the above copyright
12   *    notice, this list of conditions and the following disclaimer.
13   * 2. Redistributions in binary form must reproduce the above copyright
14   *    notice, this list of conditions and the following disclaimer in the
15   *    documentation and/or other materials provided with the distribution.
16   *
17   * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18   * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20   * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21   * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22   * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23   * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24   * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25   * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26   * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27   *************************************************************************/
28  
29  
30  #ifndef OPENCV_FLANN_DEFINES_H_
31  #define OPENCV_FLANN_DEFINES_H_
32  
33  #include "config.h"
34  
35  #ifdef FLANN_EXPORT
36  #undef FLANN_EXPORT
37  #endif
38  #ifdef WIN32
39  /* win32 dll export/import directives */
40   #ifdef FLANN_EXPORTS
41    #define FLANN_EXPORT __declspec(dllexport)
42   #elif defined(FLANN_STATIC)
43    #define FLANN_EXPORT
44   #else
45    #define FLANN_EXPORT __declspec(dllimport)
46   #endif
47  #else
48  /* unix needs nothing */
49   #define FLANN_EXPORT
50  #endif
51  
52  
53  #ifdef FLANN_DEPRECATED
54  #undef FLANN_DEPRECATED
55  #endif
56  #ifdef __GNUC__
57  #define FLANN_DEPRECATED __attribute__ ((deprecated))
58  #elif defined(_MSC_VER)
59  #define FLANN_DEPRECATED __declspec(deprecated)
60  #else
61  #pragma message("WARNING: You need to implement FLANN_DEPRECATED for this compiler")
62  #define FLANN_DEPRECATED
63  #endif
64  
65  
66  #undef FLANN_PLATFORM_32_BIT
67  #undef FLANN_PLATFORM_64_BIT
68  #if defined __amd64__ || defined __x86_64__ || defined _WIN64 || defined _M_X64
69  #define FLANN_PLATFORM_64_BIT
70  #else
71  #define FLANN_PLATFORM_32_BIT
72  #endif
73  
74  
75  #undef FLANN_ARRAY_LEN
76  #define FLANN_ARRAY_LEN(a) (sizeof(a)/sizeof(a[0]))
77  
78  namespace cvflann {
79  
80  /* Nearest neighbour index algorithms */
81  enum flann_algorithm_t
82  {
83      FLANN_INDEX_LINEAR = 0,
84      FLANN_INDEX_KDTREE = 1,
85      FLANN_INDEX_KMEANS = 2,
86      FLANN_INDEX_COMPOSITE = 3,
87      FLANN_INDEX_KDTREE_SINGLE = 4,
88      FLANN_INDEX_HIERARCHICAL = 5,
89      FLANN_INDEX_LSH = 6,
90      FLANN_INDEX_SAVED = 254,
91      FLANN_INDEX_AUTOTUNED = 255,
92  
93      // deprecated constants, should use the FLANN_INDEX_* ones instead
94      LINEAR = 0,
95      KDTREE = 1,
96      KMEANS = 2,
97      COMPOSITE = 3,
98      KDTREE_SINGLE = 4,
99      SAVED = 254,
100      AUTOTUNED = 255
101  };
102  
103  
104  
105  enum flann_centers_init_t
106  {
107      FLANN_CENTERS_RANDOM = 0,
108      FLANN_CENTERS_GONZALES = 1,
109      FLANN_CENTERS_KMEANSPP = 2,
110      FLANN_CENTERS_GROUPWISE = 3,
111  
112      // deprecated constants, should use the FLANN_CENTERS_* ones instead
113      CENTERS_RANDOM = 0,
114      CENTERS_GONZALES = 1,
115      CENTERS_KMEANSPP = 2
116  };
117  
118  enum flann_log_level_t
119  {
120      FLANN_LOG_NONE = 0,
121      FLANN_LOG_FATAL = 1,
122      FLANN_LOG_ERROR = 2,
123      FLANN_LOG_WARN = 3,
124      FLANN_LOG_INFO = 4
125  };
126  
127  enum flann_distance_t
128  {
129      FLANN_DIST_EUCLIDEAN = 1,
130      FLANN_DIST_L2 = 1,
131      FLANN_DIST_MANHATTAN = 2,
132      FLANN_DIST_L1 = 2,
133      FLANN_DIST_MINKOWSKI = 3,
134      FLANN_DIST_MAX   = 4,
135      FLANN_DIST_HIST_INTERSECT   = 5,
136      FLANN_DIST_HELLINGER = 6,
137      FLANN_DIST_CHI_SQUARE = 7,
138      FLANN_DIST_CS         = 7,
139      FLANN_DIST_KULLBACK_LEIBLER  = 8,
140      FLANN_DIST_KL                = 8,
141      FLANN_DIST_HAMMING          = 9,
142  
143      // deprecated constants, should use the FLANN_DIST_* ones instead
144      EUCLIDEAN = 1,
145      MANHATTAN = 2,
146      MINKOWSKI = 3,
147      MAX_DIST   = 4,
148      HIST_INTERSECT   = 5,
149      HELLINGER = 6,
150      CS         = 7,
151      KL         = 8,
152      KULLBACK_LEIBLER  = 8
153  };
154  
155  enum flann_datatype_t
156  {
157      FLANN_INT8 = 0,
158      FLANN_INT16 = 1,
159      FLANN_INT32 = 2,
160      FLANN_INT64 = 3,
161      FLANN_UINT8 = 4,
162      FLANN_UINT16 = 5,
163      FLANN_UINT32 = 6,
164      FLANN_UINT64 = 7,
165      FLANN_FLOAT32 = 8,
166      FLANN_FLOAT64 = 9
167  };
168  
169  enum
170  {
171      FLANN_CHECKS_UNLIMITED = -1,
172      FLANN_CHECKS_AUTOTUNED = -2
173  };
174  
175  }
176  
177  #endif /* OPENCV_FLANN_DEFINES_H_ */
178