10 #ifndef _DIRECTORDISTANCE_H___
11 #define _DIRECTORDISTANCE_H___
13 #ifdef USE_SWIG_DIRECTORS
21 #define IGNORE_IN_CLASSLIST
26 CDirectorDistance(
bool is_external_features)
27 : CDistance(), external_features(is_external_features)
33 virtual ~CDirectorDistance()
38 virtual float64_t distance_function(int32_t x, int32_t y)
40 SG_ERROR(
"Distance function of Director Distance needs to be overridden.\n")
53 if (idx_a < 0 || idx_b <0)
56 if (!external_features)
59 return compute(idx_a, idx_b);
75 virtual float64_t distance_upper_bounded(int32_t idx_a, int32_t idx_b,
float64_t upper_bound)
89 return CDistance::get_distance_matrix_real(m, n, target);
99 virtual float32_t* get_distance_matrix_shortreal(int32_t &m, int32_t &n,
float32_t* target)
101 return CDistance::get_distance_matrix_shortreal(m, n, target);
113 virtual bool init(CFeatures* lhs, CFeatures* rhs)
115 if (this->parallel->get_num_threads()!=1)
117 SG_WARNING(
"Enforcing to use only one thread due to restrictions of directors\n")
118 this->parallel->set_num_threads(1);
120 return CDistance::init(lhs, rhs);
124 virtual
void cleanup()
133 virtual int32_t get_num_vec_lhs()
142 virtual int32_t get_num_vec_rhs()
151 virtual void set_num_vec_lhs(int32_t num)
160 virtual void set_num_vec_rhs(int32_t num)
169 virtual bool has_features()
171 if (!external_features)
178 virtual void remove_lhs_and_rhs()
184 virtual void remove_lhs()
190 virtual void remove_rhs()
217 virtual const char* get_name()
const {
return "DirectorDistance"; }
224 virtual void set_precompute_matrix(
bool flag)
233 virtual float64_t compute(int32_t x, int32_t y)
235 return distance_function(x, y);
240 bool external_features;