Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/moses-smt/vowpal_wabbit.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'vowpalwabbit/learner.h')
-rw-r--r--vowpalwabbit/learner.h76
1 files changed, 38 insertions, 38 deletions
diff --git a/vowpalwabbit/learner.h b/vowpalwabbit/learner.h
index 46f8222e..7cef426f 100644
--- a/vowpalwabbit/learner.h
+++ b/vowpalwabbit/learner.h
@@ -10,7 +10,7 @@ license as described in the file LICENSE.
using namespace std;
struct vw;
-void return_simple_example(vw& all, void*, example* ec);
+void return_simple_example(vw& all, void*, example& ec);
namespace LEARNER
{
@@ -34,9 +34,9 @@ namespace LEARNER
struct learn_data {
void* data;
learner* base;
- void (*learn_f)(void* data, learner& base, example*);
- void (*predict_f)(void* data, learner& base, example*);
- void (*update_f)(void* data, learner& base, example*);
+ void (*learn_f)(void* data, learner& base, example&);
+ void (*predict_f)(void* data, learner& base, example&);
+ void (*update_f)(void* data, learner& base, example&);
};
struct save_load_data{
@@ -48,13 +48,13 @@ namespace LEARNER
struct finish_example_data{
void* data;
learner* base;
- void (*finish_example_f)(vw&, void* data, example*);
+ void (*finish_example_f)(vw&, void* data, example&);
};
void generic_driver(vw* all);
inline void generic_sl(void*, io_buf&, bool, bool) {}
- inline void generic_learner(void* data, learner& base, example*)
+ inline void generic_learner(void* data, learner& base, example&)
{ cout << "calling generic learner\n";}
inline void generic_func(void* data) {}
@@ -62,25 +62,25 @@ namespace LEARNER
const learn_data generic_learn_fd = {NULL, NULL, generic_learner, NULL, NULL};
const func_data generic_func_fd = {NULL, NULL, generic_func};
- template<class R, void (*T)(R*, learner& base, example* ec)>
- inline void tlearn(void* d, learner& base, example* ec)
- { T((R*)d, base, ec); }
+ template<class R, void (*T)(R&, learner& base, example& ec)>
+ inline void tlearn(void* d, learner& base, example& ec)
+ { T(*(R*)d, base, ec); }
- template<class R, void (*T)(R*, io_buf& io, bool read, bool text)>
+ template<class R, void (*T)(R&, io_buf& io, bool read, bool text)>
inline void tsl(void* d, io_buf& io, bool read, bool text)
- { T((R*)d, io, read, text); }
+ { T(*(R*)d, io, read, text); }
- template<class R, void (*T)(R*)>
- inline void tfunc(void* d) { T((R*)d); }
+ template<class R, void (*T)(R&)>
+ inline void tfunc(void* d) { T(*(R*)d); }
- template<class R, void (*T)(vw& all, R*, example*)>
- inline void tend_example(vw& all, void* d, example* ec)
- { T(all, (R*)d, ec); }
+ template<class R, void (*T)(vw& all, R&, example&)>
+ inline void tend_example(vw& all, void* d, example& ec)
+ { T(all, *(R*)d, ec); }
- template <class T, void (*learn)(T* data, learner& base, example*), void (*predict)(T* data, learner& base, example*)>
+ template <class T, void (*learn)(T* data, learner& base, example&), void (*predict)(T* data, learner& base, example&)>
struct learn_helper {
- void (*learn_f)(void* data, learner& base, example*);
- void (*predict_f)(void* data, learner& base, example*);
+ void (*learn_f)(void* data, learner& base, example&);
+ void (*predict_f)(void* data, learner& base, example&);
learn_helper()
{ learn_f = tlearn<T,learn>;
@@ -103,38 +103,38 @@ public:
size_t increment;
//called once for each example. Must work under reduction.
- inline void learn(example* ec, size_t i=0)
+ inline void learn(example& ec, size_t i=0)
{
- ec->ft_offset += (uint32_t)(increment*i);
+ ec.ft_offset += (uint32_t)(increment*i);
learn_fd.learn_f(learn_fd.data, *learn_fd.base, ec);
- ec->ft_offset -= (uint32_t)(increment*i);
+ ec.ft_offset -= (uint32_t)(increment*i);
}
- template <class T, void (*u)(T* data, learner& base, example*)>
+ template <class T, void (*u)(T& data, learner& base, example&)>
inline void set_learn()
{
learn_fd.learn_f = tlearn<T,u>;
learn_fd.update_f = tlearn<T,u>;
}
- inline void predict(example* ec, size_t i=0)
+ inline void predict(example& ec, size_t i=0)
{
- ec->ft_offset += (uint32_t)(increment*i);
+ ec.ft_offset += (uint32_t)(increment*i);
learn_fd.predict_f(learn_fd.data, *learn_fd.base, ec);
- ec->ft_offset -= (uint32_t)(increment*i);
+ ec.ft_offset -= (uint32_t)(increment*i);
}
- template <class T, void (*u)(T* data, learner& base, example*)>
+ template <class T, void (*u)(T& data, learner& base, example&)>
inline void set_predict()
{
learn_fd.predict_f = tlearn<T,u>;
}
- inline void update(example* ec, size_t i=0)
+ inline void update(example& ec, size_t i=0)
{
- ec->ft_offset += (uint32_t)(increment*i);
+ ec.ft_offset += (uint32_t)(increment*i);
learn_fd.update_f(learn_fd.data, *learn_fd.base, ec);
- ec->ft_offset -= (uint32_t)(increment*i);
+ ec.ft_offset -= (uint32_t)(increment*i);
}
- template <class T, void (*u)(T* data, learner& base, example*)>
+ template <class T, void (*u)(T& data, learner& base, example&)>
inline void set_update()
{
learn_fd.update_f = tlearn<T,u>;
@@ -142,14 +142,14 @@ public:
//called anytime saving or loading needs to happen. Autorecursive.
inline void save_load(io_buf& io, bool read, bool text) { save_load_fd.save_load_f(save_load_fd.data, io, read, text); if (save_load_fd.base) save_load_fd.base->save_load(io, read, text); }
- template <class T, void (*sl)(T*, io_buf&, bool, bool)>
+ template <class T, void (*sl)(T&, io_buf&, bool, bool)>
inline void set_save_load()
{ save_load_fd.save_load_f = tsl<T,sl>;
save_load_fd.data = learn_fd.data;
save_load_fd.base = learn_fd.base;}
//called to clean up state. Autorecursive.
- template <class T, void (*f)(T*)>
+ template <class T, void (*f)(T&)>
void set_finish() { finisher_fd = tuple_dbf(learn_fd.data,learn_fd.base, tfunc<T, f>); }
inline void finish()
{
@@ -164,24 +164,24 @@ public:
void end_pass(){
end_pass_fd.func(end_pass_fd.data);
if (end_pass_fd.base) end_pass_fd.base->end_pass(); }//autorecursive
- template <class T, void (*f)(T*)>
+ template <class T, void (*f)(T&)>
void set_end_pass() {end_pass_fd = tuple_dbf(learn_fd.data, learn_fd.base, tfunc<T,f>);}
//called after parsing of examples is complete. Autorecursive.
void end_examples()
{ end_examples_fd.func(end_examples_fd.data);
if (end_examples_fd.base) end_examples_fd.base->end_examples(); }
- template <class T, void (*f)(T*)>
+ template <class T, void (*f)(T&)>
void set_end_examples() {end_examples_fd = tuple_dbf(learn_fd.data,learn_fd.base, tfunc<T,f>);}
//Called at the beginning by the driver. Explicitly not recursive.
void init_driver() { init_fd.func(init_fd.data);}
- template <class T, void (*f)(T*)>
+ template <class T, void (*f)(T&)>
void set_init_driver() { init_fd = tuple_dbf(learn_fd.data,learn_fd.base, tfunc<T,f>); }
//called after learn example for each example. Explicitly not recursive.
- inline void finish_example(vw& all, example* ec) { finish_example_fd.finish_example_f(all, finish_example_fd.data, ec);}
- template<class T, void (*f)(vw& all, T*, example*)>
+ inline void finish_example(vw& all, example& ec) { finish_example_fd.finish_example_f(all, finish_example_fd.data, ec);}
+ template<class T, void (*f)(vw& all, T&, example&)>
void set_finish_example()
{finish_example_fd.data = learn_fd.data;
finish_example_fd.finish_example_f = tend_example<T,f>;}