Skip to content

Commit

Permalink
Fix AnyVisitor to expect const function arguments
Browse files Browse the repository at this point in the history
  • Loading branch information
vigsterkr committed Feb 22, 2018
1 parent 5adcfd3 commit 76b579f
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 30 deletions.
48 changes: 30 additions & 18 deletions src/shogun/base/SGObject.cpp
Expand Up @@ -852,27 +852,27 @@ class ToStringVisitor : public AnyVisitor
{
}

virtual void on(bool* v)
virtual void on(const bool* v)
{
stream() << (*v ? "true" : "false");
}
virtual void on(int32_t* v)
virtual void on(const int32_t* v)
{
stream() << *v;
}
virtual void on(int64_t* v)
virtual void on(const int64_t* v)
{
stream() << *v;
}
virtual void on(float* v)
virtual void on(const float* v)
{
stream() << *v;
}
virtual void on(double* v)
virtual void on(const double* v)
{
stream() << *v;
}
virtual void on(CSGObject** v)
virtual void on(const CSGObject** v)
{
if (*v)
{
Expand All @@ -883,29 +883,29 @@ class ToStringVisitor : public AnyVisitor
stream() << "null";
}
}
virtual void on(SGVector<int>*)
virtual void on(const SGVector<int>* v)
{
stream() << "[...]";
to_string(v);
}
virtual void on(SGVector<float>*)
virtual void on(const SGVector<float>* v)
{
stream() << "[...]";
to_string(v);
}
virtual void on(SGVector<double>*)
virtual void on(const SGVector<double>* v)
{
stream() << "[...]";
to_string(v);
}
virtual void on(SGMatrix<int>*)
virtual void on(const SGMatrix<int>* mat)
{
stream() << "[...]";
to_string(mat);
}
virtual void on(SGMatrix<float>*)
virtual void on(const SGMatrix<float>* mat)
{
stream() << "[...]";
to_string(mat);
}
virtual void on(SGMatrix<double>* mat)
virtual void on(const SGMatrix<double>* mat)
{
stream() << "Matrix(" << mat->num_rows << "," << mat->num_cols << ")";
to_string(mat);
}

private:
Expand All @@ -914,6 +914,18 @@ class ToStringVisitor : public AnyVisitor
return *m_stream;
}

template <class T>
void to_string(const SGMatrix<T>* m)
{
stream() << "Matrix<" << demangled_type<T>() << ">(" << m->num_rows << "," << m->num_cols << ")";
}

template <class T>
void to_string(const SGVector<T>* v)
{
stream() << "Vector<" << demangled_type<T>() << ">(" << v->vlen << ")";
}

private:
std::stringstream* m_stream;
};
Expand Down
24 changes: 12 additions & 12 deletions src/shogun/lib/any.h
Expand Up @@ -168,18 +168,18 @@ namespace shogun
public:
virtual ~AnyVisitor() = default;

virtual void on(bool*) = 0;
virtual void on(int32_t*) = 0;
virtual void on(int64_t*) = 0;
virtual void on(float*) = 0;
virtual void on(double*) = 0;
virtual void on(CSGObject**) = 0;
virtual void on(SGVector<int>*) = 0;
virtual void on(SGVector<float>*) = 0;
virtual void on(SGVector<double>*) = 0;
virtual void on(SGMatrix<int>*) = 0;
virtual void on(SGMatrix<float>*) = 0;
virtual void on(SGMatrix<double>*) = 0;
virtual void on(const bool*) = 0;
virtual void on(const int32_t*) = 0;
virtual void on(const int64_t*) = 0;
virtual void on(const float*) = 0;
virtual void on(const double*) = 0;
virtual void on(const CSGObject**) = 0;
virtual void on(const SGVector<int>*) = 0;
virtual void on(const SGVector<float>*) = 0;
virtual void on(const SGVector<double>*) = 0;
virtual void on(const SGMatrix<int>*) = 0;
virtual void on(const SGMatrix<float>*) = 0;
virtual void on(const SGMatrix<double>*) = 0;

void on(Empty*)
{
Expand Down

0 comments on commit 76b579f

Please sign in to comment.