diff --git a/CMakeLists.txt b/CMakeLists.txt index e04c6733189b4bdeca59b5f2e76b9e128e2c5618..a959b134344966ba49bd9c8817253e295807570f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,7 +8,7 @@ project(flann) string(TOLOWER ${PROJECT_NAME} PROJECT_NAME_LOWER) include(${PROJECT_SOURCE_DIR}/cmake/flann_utils.cmake) -set(FLANN_VERSION 1.6.6) +set(FLANN_VERSION 1.6.7) DISSECT_VERSION() GET_OS_INFO() diff --git a/Makefile.dist b/Makefile.dist index 39839121423c9ba5093588498dfaf3e5edc8a5d6..46d5c302d3e2ac3046d8f459ffb5618dad331b35 100644 --- a/Makefile.dist +++ b/Makefile.dist @@ -1,4 +1,4 @@ -VER=1.6.6 +VER=1.6.7 dist-src: diff --git a/examples/flann_example.c b/examples/flann_example.c index 2b6f7d7729395dfcb0deeb3c4ba11f78deed874f..501143d6c1c99ddc4e77ef1f50f0507542a84cf0 100644 --- a/examples/flann_example.c +++ b/examples/flann_example.c @@ -91,7 +91,7 @@ int main(int argc, char** argv) p = DEFAULT_FLANN_PARAMETERS; p.algorithm = KDTREE; p.trees = 8; - p.log_level = LOG_INFO; + p.log_level = FLANN_LOG_INFO; p.checks = 64; printf("Computing index.\n"); diff --git a/src/cpp/CMakeLists.txt b/src/cpp/CMakeLists.txt index c290f57c4732cc09bfec3f18dc993be290265dbd..a26c607e6aec3ae83554451d3c029293fa6a5025 100644 --- a/src/cpp/CMakeLists.txt +++ b/src/cpp/CMakeLists.txt @@ -16,6 +16,7 @@ set_target_properties(flann_cpp_s PROPERTIES COMPILE_FLAGS -fPIC) if(CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_COMPILER_IS_GNUCC) add_library(flann_cpp SHARED "") + set_target_properties(flann_cpp PROPERTIES LINKER_LANGUAGE CXX) target_link_libraries(flann_cpp -Wl,-whole-archive flann_cpp_s -Wl,-no-whole-archive) else() add_library(flann_cpp SHARED ${CPP_SOURCES}) @@ -32,6 +33,7 @@ if (BUILD_C_BINDINGS) if(CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_COMPILER_IS_GNUCC) add_library(flann SHARED "") + set_target_properties(flann PROPERTIES LINKER_LANGUAGE CXX) target_link_libraries(flann -Wl,-whole-archive flann_s -Wl,-no-whole-archive) else() add_library(flann SHARED ${C_SOURCES}) diff --git a/src/cpp/flann/algorithms/autotuned_index.h b/src/cpp/flann/algorithms/autotuned_index.h index 9b8b6d743a29a6a7deea1ba817df4cea0366abfe..ab641a419be82883da91e87016eee314ef1d3821 100644 --- a/src/cpp/flann/algorithms/autotuned_index.h +++ b/src/cpp/flann/algorithms/autotuned_index.h @@ -144,7 +144,7 @@ class AutotunedIndex : public NNIndex /** * Index parameters */ - const AutotunedIndexParams& index_params; + const AutotunedIndexParams index_params; Distance distance; public: @@ -161,9 +161,11 @@ public: { if (bestIndex!=NULL) { delete bestIndex; + bestIndex = NULL; } if (bestParams!=NULL) { delete bestParams; + bestParams = NULL; } }; diff --git a/src/cpp/flann/algorithms/composite_index.h b/src/cpp/flann/algorithms/composite_index.h index 64b45b16dfad060399ece6c4407fc04f07edc66c..8fa4699e2b3aa51cd1020ca955e37084c011248c 100644 --- a/src/cpp/flann/algorithms/composite_index.h +++ b/src/cpp/flann/algorithms/composite_index.h @@ -102,7 +102,7 @@ class CompositeIndex : public NNIndex const Matrix dataset; - const IndexParams& index_params; + const CompositeIndexParams index_params; Distance distance; diff --git a/src/cpp/flann/algorithms/kdtree_index.h b/src/cpp/flann/algorithms/kdtree_index.h index 1fe0342cf4a42ce278fd1f2c34f45bbacab5a952..74bfae79b6fca40d9e87d16520a4c0691bc5d8ae 100644 --- a/src/cpp/flann/algorithms/kdtree_index.h +++ b/src/cpp/flann/algorithms/kdtree_index.h @@ -123,7 +123,7 @@ class KDTreeIndex : public NNIndex */ const Matrix dataset; - const IndexParams& index_params; + const KDTreeIndexParams index_params; size_t size_; size_t veclen_; @@ -421,7 +421,7 @@ private: /* If either list is empty, it means that all remaining features * are identical. Split in the middle to maintain a balanced tree. */ - if (lim1==cnt || lim2==0) index = count/2; + if (lim1==count || lim2==0) index = count/2; } diff --git a/src/cpp/flann/algorithms/kdtree_single_index.h b/src/cpp/flann/algorithms/kdtree_single_index.h index c1e6bffedf9bdcf4a5877517f34199911830ee6e..a37d68d0ee6733488149ad4e8b96990cb2c8c9cd 100644 --- a/src/cpp/flann/algorithms/kdtree_single_index.h +++ b/src/cpp/flann/algorithms/kdtree_single_index.h @@ -102,7 +102,7 @@ class KDTreeSingleIndex : public NNIndex */ const Matrix dataset; - const IndexParams& index_params; + const KDTreeSingleIndexParams index_params; size_t size_; size_t veclen_; diff --git a/src/cpp/flann/algorithms/kmeans_index.h b/src/cpp/flann/algorithms/kmeans_index.h index 1231f8b014ee414c3d1bf2acbe0f245f7d8ab49e..28711473d447341223a22851568e4db4e741340b 100644 --- a/src/cpp/flann/algorithms/kmeans_index.h +++ b/src/cpp/flann/algorithms/kmeans_index.h @@ -134,7 +134,7 @@ class KMeansIndex : public NNIndex */ const Matrix dataset; - const IndexParams& index_params; + const KMeansIndexParams index_params; /** * Number of features in the dataset. diff --git a/src/cpp/flann/algorithms/linear_index.h b/src/cpp/flann/algorithms/linear_index.h index 7c44ad07994adea920d91cf72a0cbd668cf4f532..34dc665db3d61a7067a0dd9f4d3fcaa25f0c16c1 100644 --- a/src/cpp/flann/algorithms/linear_index.h +++ b/src/cpp/flann/algorithms/linear_index.h @@ -66,7 +66,7 @@ class LinearIndex typedef typename Distance::ResultType DistanceType; const Matrix dataset; - const LinearIndexParams& index_params; + const LinearIndexParams index_params; Distance distance; diff --git a/src/cpp/flann/flann.cpp b/src/cpp/flann/flann.cpp index 6a3535742a737a8b7f178e78f6869d6ab7feaad2..f7816534850da1765f9072fa9b3bf1f03c71b829 100644 --- a/src/cpp/flann/flann.cpp +++ b/src/cpp/flann/flann.cpp @@ -44,7 +44,7 @@ EXPORTED struct FLANNParameters DEFAULT_FLANN_PARAMETERS = { 4, 4, 32, 11, CENTERS_RANDOM, 0.9, 0.01, 0, 0.1, - LOG_NONE, 0 + FLANN_LOG_NONE, 0 }; @@ -100,6 +100,7 @@ flann_index_t __flann_build_index(typename Distance::ElementType* dataset, int r *speedup = autotuned_index->getSpeedup(); } + delete params; return index; } catch (std::runtime_error& e) { @@ -620,9 +621,7 @@ int __flann_free_index(flann_index_t index_ptr, FLANNParameters* flann_params) throw FLANNException("Invalid index"); } Index* index = (Index*) index_ptr; - const IndexParams* index_params = index->getIndexParameters(); delete index; - delete index_params; return 0; } diff --git a/src/cpp/flann/general.h b/src/cpp/flann/general.h index da5cf2f73c39ce9d1e0c8b759599d70e4c315155..4cdff809143e126ddcdf3cf81bc3fdf9dac75887 100644 --- a/src/cpp/flann/general.h +++ b/src/cpp/flann/general.h @@ -53,11 +53,11 @@ enum flann_centers_init_t { }; enum flann_log_level_t { - LOG_NONE = 0, - LOG_FATAL = 1, - LOG_ERROR = 2, - LOG_WARN = 3, - LOG_INFO = 4 + FLANN_LOG_NONE = 0, + FLANN_LOG_FATAL = 1, + FLANN_LOG_ERROR = 2, + FLANN_LOG_WARN = 3, + FLANN_LOG_INFO = 4 }; enum flann_distance_t { diff --git a/src/cpp/flann/nn/ground_truth.h b/src/cpp/flann/nn/ground_truth.h index a4f9de35570affd39a7f07341a3e9dcc3fe07558..84aea38cf1f0cb0c3a52e01f30357307e23e804f 100644 --- a/src/cpp/flann/nn/ground_truth.h +++ b/src/cpp/flann/nn/ground_truth.h @@ -43,17 +43,18 @@ void find_nearest(const Matrix& dataset, typenam int skip = 0, Distance distance = Distance()) { typedef typename Distance::ElementType ElementType; + typedef typename Distance::ResultType DistanceType; int n = nn + skip; int* match = new int[n]; - ElementType* dists = new ElementType[n]; + DistanceType* dists = new DistanceType[n]; dists[0] = distance(dataset[0], query, dataset.cols); match[0] = 0; int dcnt = 1; for (size_t i=1;i > index(data, flann::AutotunedIndexParams(0.8,0.01,0,0.1)); // 80% precision start_timer("Building autotuned index...");