Vowpal Wabbit
search_hooktask.cc
Go to the documentation of this file.
1 /*
2 Copyright (c) by respective owners including Yahoo!, Microsoft, and
3 individual contributors. All rights reserved. Released under a BSD (revised)
4 license as described in the file LICENSE.
5  */
6 #include "search_hooktask.h"
7 
8 using namespace VW::config;
9 
10 // this is used for the C++ library and python library hook; hopefully
11 // it can be used for any foreign library too!
12 namespace HookTask
13 {
15 
16 void initialize(Search::search& sch, size_t& num_actions, options_i& arg)
17 {
18  task_data* td = new task_data;
19  td->run_f = nullptr;
20  td->run_setup_f = nullptr;
21  td->run_takedown_f = nullptr;
22  td->run_object = nullptr;
23  td->setup_object = nullptr;
24  td->takedown_object = nullptr;
25  td->delete_run_object = nullptr;
26  td->delete_extra_data = nullptr;
27  td->num_actions = num_actions;
28  td->arg = &arg;
29  sch.set_task_data<task_data>(td);
30 }
31 
33 {
34  task_data* td = sch.get_task_data<task_data>();
35  if (td->delete_run_object)
36  {
37  if (td->run_object)
39  if (td->setup_object)
41  if (td->takedown_object)
43  }
44  if (td->delete_extra_data)
45  td->delete_extra_data(*td);
46  delete td;
47 }
48 
49 void run(Search::search& sch, multi_ex& /*ec*/)
50 {
51  task_data* td = sch.get_task_data<task_data>();
52  if (td->run_f)
53  td->run_f(sch);
54  else
55  std::cerr << "warning: HookTask::structured_predict called before hook is set" << std::endl;
56 }
57 
58 void run_setup(Search::search& sch, multi_ex& /*ec*/)
59 {
60  task_data* td = sch.get_task_data<task_data>();
61  if (td->run_setup_f)
62  td->run_setup_f(sch);
63 }
64 
66 {
67  task_data* td = sch.get_task_data<task_data>();
68  if (td->run_takedown_f)
69  td->run_takedown_f(sch);
70 }
71 } // namespace HookTask
void run(Search::search &sch, multi_ex &)
void run_takedown(Search::search &sch, multi_ex &)
void finish(vw &all, bool delete_all)
Definition: parse_args.cc:1823
Search::search_task task
void(* run_takedown_f)(Search::search &)
T * get_task_data()
Definition: search.h:89
void run_setup(Search::search &sch, multi_ex &)
void(* delete_extra_data)(task_data &)
vw * initialize(options_i &options, io_buf *model, bool skipModelLoad, trace_message_t trace_listener, void *trace_context)
Definition: parse_args.cc:1654
void(* run_f)(Search::search &)
std::vector< example * > multi_ex
Definition: example.h:122
void set_task_data(T *data)
Definition: search.h:84
VW::config::options_i * arg
void(* run_setup_f)(Search::search &)
void(* delete_run_object)(void *)