提交 c63f6dea 编写于 作者: M Marius Muja

Refactorings, replaced get_flann_datatype<T>() function with Datatype<Y> struct

上级 90de0b9f
......@@ -129,7 +129,7 @@ NNIndex<T>* load_saved_index(const Matrix<T>& dataset, const string& filename)
return NULL;
}
IndexHeader header = load_header(fin);
if (header.data_type!=get_flann_datatype<T>()) {
if (header.data_type!=Datatype<T>::type()) {
throw FLANNException("Datatype of saved index is different than of the one to be created.");
}
if (size_t(header.rows)!=dataset.rows || size_t(header.cols)!=dataset.cols) {
......
......@@ -28,7 +28,7 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*************************************************************************/
#include "logger.h"
#include "flann/util/logger.h"
#include <cstdio>
#include <cstdarg>
......
......@@ -33,15 +33,6 @@
namespace flann
{
template<> flann_datatype_t get_flann_datatype<char>() { return INT8; }
template<> flann_datatype_t get_flann_datatype<short>() { return INT16; }
template<> flann_datatype_t get_flann_datatype<int>() { return INT32; }
template<> flann_datatype_t get_flann_datatype<unsigned char>() { return UINT8; }
template<> flann_datatype_t get_flann_datatype<unsigned short>() { return UINT16; }
template<> flann_datatype_t get_flann_datatype<unsigned int>() { return UINT32; }
template<> flann_datatype_t get_flann_datatype<float>() { return FLOAT32; }
template<> flann_datatype_t get_flann_datatype<double>() { return FLOAT64; }
const char FLANN_SIGNATURE[] = "FLANN_INDEX";
const char FLANN_VERSION[] = "1.5.0";
......
......@@ -38,15 +38,16 @@
namespace flann
{
template <typename T> flann_datatype_t get_flann_datatype() { throw FLANNException("Unknown FLANN data type"); }
template<> flann_datatype_t get_flann_datatype<char>();
template<> flann_datatype_t get_flann_datatype<short>();
template<> flann_datatype_t get_flann_datatype<int>();
template<> flann_datatype_t get_flann_datatype<unsigned char>();
template<> flann_datatype_t get_flann_datatype<unsigned short>();
template<> flann_datatype_t get_flann_datatype<unsigned int>();
template<> flann_datatype_t get_flann_datatype<float>();
template<> flann_datatype_t get_flann_datatype<double>();
template <typename T> struct Datatype {};
template<> struct Datatype<char> { static flann_datatype_t type() { return INT8; } };
template<> struct Datatype<short> { static flann_datatype_t type() { return INT16; } };
template<> struct Datatype<int> { static flann_datatype_t type() { return INT32; } };
template<> struct Datatype<unsigned char> { static flann_datatype_t type() { return UINT8; } };
template<> struct Datatype<unsigned short> { static flann_datatype_t type() { return UINT16; } };
template<> struct Datatype<unsigned int> { static flann_datatype_t type() { return UINT32; } };
template<> struct Datatype<float> { static flann_datatype_t type() { return FLOAT32; } };
template<> struct Datatype<double> { static flann_datatype_t type() { return FLOAT64; } };
extern const char FLANN_SIGNATURE[];
......@@ -79,7 +80,7 @@ void save_header(FILE* stream, const NNIndex<ELEM_TYPE>& index)
strcpy(header.signature, FLANN_SIGNATURE);
memset(header.version, 0 , sizeof(header.version));
strcpy(header.version, FLANN_VERSION);
header.data_type = get_flann_datatype<ELEM_TYPE>();
header.data_type = Datatype<ELEM_TYPE>::type();
header.index_type = index.getType();
header.rows = index.size();
header.cols = index.veclen();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册