Vowpal Wabbit
Public Member Functions | Private Member Functions | Private Attributes | List of all members
LEARNER::multi_example_handler< context_type > Class Template Reference

Public Member Functions

 multi_example_handler (const context_type context)
 
 ~multi_example_handler ()
 
void on_example (example *ec)
 

Private Member Functions

bool complete_multi_ex (example *ec)
 
bool try_complete_multi_ex (example *ec)
 

Private Attributes

context_type _context
 
multi_ex ec_seq
 

Detailed Description

template<typename context_type>
class LEARNER::multi_example_handler< context_type >

Definition at line 162 of file learner.cc.

Constructor & Destructor Documentation

◆ multi_example_handler()

template<typename context_type >
LEARNER::multi_example_handler< context_type >::multi_example_handler ( const context_type  context)
inline

Definition at line 195 of file learner.cc.

195 : _context(context) {}

◆ ~multi_example_handler()

template<typename context_type >
LEARNER::multi_example_handler< context_type >::~multi_example_handler ( )
inline

Definition at line 197 of file learner.cc.

198  {
199  if (!ec_seq.empty())
200  {
201  _context.template process<multi_ex, learn_multi_ex>(ec_seq);
202  }
203  }

Member Function Documentation

◆ complete_multi_ex()

template<typename context_type >
bool LEARNER::multi_example_handler< context_type >::complete_multi_ex ( example ec)
inlineprivate

Definition at line 165 of file learner.cc.

References LEARNER::example_is_newline_not_header(), VW::finish_example(), and example::l.

166  {
167  auto& master = _context.get_master();
168  const bool is_test_ec = master.p->lp.test_label(&ec->l);
169  const bool is_newline = (example_is_newline_not_header(*ec, master) && is_test_ec);
170  if (!is_newline)
171  {
172  ec_seq.push_back(ec);
173  }
174  else
175  {
176  VW::finish_example(master, *ec);
177  }
178  return is_newline;
179  }
void finish_example(vw &, example &)
Definition: parser.cc:881
polylabel l
Definition: example.h:57
bool example_is_newline_not_header(example &ec, vw &all)
Definition: learner.cc:68

◆ on_example()

template<typename context_type >
void LEARNER::multi_example_handler< context_type >::on_example ( example ec)
inline

Definition at line 205 of file learner.cc.

206  {
207  if (try_complete_multi_ex(ec))
208  {
209  _context.template process<multi_ex, learn_multi_ex>(ec_seq);
210  ec_seq.clear();
211  }
212  }
bool try_complete_multi_ex(example *ec)
Definition: learner.cc:181

◆ try_complete_multi_ex()

template<typename context_type >
bool LEARNER::multi_example_handler< context_type >::try_complete_multi_ex ( example ec)
inlineprivate

Definition at line 181 of file learner.cc.

References example::end_pass, example_predict::indices, LEARNER::is_save_cmd(), and v_array< T >::size().

182  {
183  if (ec->indices.size() > 1) // 1+ nonconstant feature. (most common case first)
184  return complete_multi_ex(ec);
185  else if (ec->end_pass)
186  _context.template process<example, end_pass>(*ec);
187  else if (is_save_cmd(ec))
188  _context.template process<example, save>(*ec);
189  else
190  return complete_multi_ex(ec);
191  return false;
192  }
v_array< namespace_index > indices
size_t size() const
Definition: v_array.h:68
bool is_save_cmd(example *ec)
Definition: learner.cc:84
bool complete_multi_ex(example *ec)
Definition: learner.cc:165
bool end_pass
Definition: example.h:77

Member Data Documentation

◆ _context

template<typename context_type >
context_type LEARNER::multi_example_handler< context_type >::_context
private

Definition at line 215 of file learner.cc.

◆ ec_seq

template<typename context_type >
multi_ex LEARNER::multi_example_handler< context_type >::ec_seq
private

Definition at line 216 of file learner.cc.


The documentation for this class was generated from the following file: