From 609042be2a9004d1e009a68660193648329b5fce Mon Sep 17 00:00:00 2001 From: Heiko Strathmann Date: Mon, 19 Feb 2018 13:27:59 +0000 Subject: [PATCH] move put_scalar to swig interface for good --- src/interfaces/swig/shogun.i | 30 +++++++++++++++++++++++++++--- src/shogun/base/SGObject.h | 26 -------------------------- 2 files changed, 27 insertions(+), 29 deletions(-) diff --git a/src/interfaces/swig/shogun.i b/src/interfaces/swig/shogun.i index 0d315a43354..88407aa7ba5 100644 --- a/src/interfaces/swig/shogun.i +++ b/src/interfaces/swig/shogun.i @@ -122,9 +122,33 @@ namespace shogun { -%template(put) CSGObject::put_scalar; -%template(put) CSGObject::put_scalar; -%template(put) CSGObject::put_scalar; + +%extend CSGObject +{ + template ::value>> + void put_scalar_dispatcher(const std::string& name, T value) + { + Tag tag_t(name); + Tag tag_int32(name); + Tag tag_int64(name); + Tag tag_float64(name); + + if ($self->has(tag_t)) + $self->put(tag_t, value); + else if ($self->has(tag_int32)) + $self->put(tag_int32, (int32_t)value); + else if ($self->has(tag_int64)) + $self->put(tag_int64, (int64_t)value); + else if ($self->has(tag_float64)) + $self->put(tag_float64, (float64_t)value); + else + $self->put(tag_t, value); + } +} + +%template(put) CSGObject::put_scalar_dispatcher; +%template(put) CSGObject::put_scalar_dispatcher; +%template(put) CSGObject::put_scalar_dispatcher; #ifndef SWIGJAVA diff --git a/src/shogun/base/SGObject.h b/src/shogun/base/SGObject.h index a640d509c97..67d3d37381f 100644 --- a/src/shogun/base/SGObject.h +++ b/src/shogun/base/SGObject.h @@ -426,32 +426,6 @@ class CSGObject template ::type>::value, T>::type> void put_vector_or_matrix(const std::string& name, T value); - /** Untyped setter for a scalar class parameter, identified by a name. - * Will attempt to convert passed scalar to appropriate type. - * - * @param name name of the parameter - * @param value value of the parameter - */ - template ::value>> - void put_scalar(const std::string& name, T value) - { - Tag tag_t(name); - Tag tag_int32(name); - Tag tag_int64(name); - Tag tag_float64(name); - - if (has(tag_t)) - put(tag_t, value); - else if (has(tag_int32)) - put(tag_int32, (int32_t)value); - else if (has(tag_int64)) - put(tag_int64, (int64_t)value); - else if (has(tag_float64)) - put(tag_float64, (float64_t)value); - else - put(tag_t, value); - } - /** Getter for a class parameter, identified by a Tag. * Throws an exception if the class does not have such a parameter. *