Vowpal Wabbit
vwdll.cpp
Go to the documentation of this file.
1 #include <memory>
2 #include <codecvt>
3 #include <locale>
4 #include <string>
5 
6 #include "vwdll.h"
7 #include "parser.h"
8 #include "simple_label.h"
9 #include "parse_args.h"
10 #include "vw.h"
11 
12 // This interface now provides "wide" functions for compatibility with .NET interop
13 // The default functions assume a wide (16 bit char pointer) that is converted to a utf8-string and passed to
14 // a function which takes a narrow (8 bit char pointer) function. Both are exposed in the c/c++ API
15 // so that programs using 8 bit wide characters can use the direct call without conversion and
16 // programs using 16 bit characters can use the default wide versions of the functions.
17 // "Ansi versions (FcnA instead of Fcn) have only been written for functions which handle strings.
18 
19 // a future optimization would be to write an inner version of hash feature which either hashed the
20 // wide string directly (and live with the different hash values) or incorporate the UTF-16 to UTF-8 conversion
21 // in the hashing to avoid allocating an intermediate string.
22 
23 #if _MSC_VER >= 1900
24 // VS 2015 Bug: https://social.msdn.microsoft.com/Forums/en-US/8f40dcd8-c67f-4eba-9134-a19b9178e481/vs-2015-rc-linker-stdcodecvt-error?forum=vcgeneral
25 std::string utf16_to_utf8(std::u16string utf16_string)
26 {
27  std::wstring_convert<std::codecvt_utf8_utf16<int16_t>, int16_t> convert;
28  auto p = reinterpret_cast<const int16_t *>(utf16_string.data());
29  return convert.to_bytes(p, p + utf16_string.size());
30 }
31 
32 #else
33 std::string utf16_to_utf8(std::u16string utf16_string)
34 {
35  std::wstring_convert<std::codecvt_utf8_utf16<char16_t>, char16_t> convert;
36  return convert.to_bytes(utf16_string);
37 }
38 #endif
39 
40 extern "C"
41 { using namespace std;
42 
43 #ifdef USE_CODECVT
44  VW_DLL_MEMBER VW_HANDLE VW_CALLING_CONV VW_Initialize(const char16_t * pstrArgs)
45 { return VW_InitializeA(utf16_to_utf8(pstrArgs).c_str());
46 }
47 
48 VW_DLL_MEMBER VW_HANDLE VW_CALLING_CONV VW_InitializeEscaped(const char16_t* pstrArgs)
49 {
50  return VW_InitializeEscapedA(utf16_to_utf8(pstrArgs).c_str());
51 }
52 #endif
53 
54 
56 { string s(pstrArgs);
57  vw* all = VW::initialize(s);
58  return static_cast<VW_HANDLE>(all);
59 }
60 
62 {
63  std::string s(pstrArgs);
64  auto all = VW::initialize_escaped(s);
65  return static_cast<VW_HANDLE>(all);
66 }
67 
69 {
70  string s(extraArgs);
71  vw* origmodel = static_cast<vw*>(handle);
72  vw* newmodel = VW::seed_vw_model(origmodel, s);
73  return static_cast<VW_HANDLE>(newmodel);
74 }
75 
77 { vw * pointer = static_cast<vw*>(handle);
78  if (pointer->numpasses > 1)
79  { adjust_used_index(*pointer);
80  pointer->do_reset_source = true;
81  VW::start_parser(*pointer);
82  LEARNER::generic_driver(*pointer);
83  VW::end_parser(*pointer);
84  }
85 }
86 
88 { vw * pointer = static_cast<vw*>(handle);
89  VW::finish(*pointer);
90 }
91 
93 { vw * pointer = static_cast<vw*>(handle);
94  VW::primitive_feature_space * f = reinterpret_cast<VW::primitive_feature_space*>( features );
95  return static_cast<VW_EXAMPLE>(VW::import_example(*pointer, label, f, len));
96 }
97 
99 {
100  return static_cast<VW_FEATURE_SPACE>(new VW::primitive_feature_space[len]);
101 }
102 
104 {
105  VW::primitive_feature_space* f = reinterpret_cast<VW::primitive_feature_space*>(first);
106  return static_cast<VW_FEATURE_SPACE>(&f[index]);
107 }
108 
110 { vw* pointer = static_cast<vw*>(handle);
111  example* ex = static_cast<example*>(e);
112  return static_cast<VW_FEATURE_SPACE>(VW::export_example(*pointer, ex, *plen));
113 }
114 
116 { VW::primitive_feature_space * f = reinterpret_cast<VW::primitive_feature_space*>( features );
117  VW::releaseFeatureSpace(f, len);
118 }
119 #ifdef USE_CODECVT
120 VW_DLL_MEMBER VW_EXAMPLE VW_CALLING_CONV VW_ReadExample(VW_HANDLE handle, const char16_t * line)
121 { return VW_ReadExampleA(handle, utf16_to_utf8(line).c_str());
122 }
123 #endif
125 { vw * pointer = static_cast<vw*>(handle);
126  // BUGBUG: I really dislike this const_cast. should VW really change the input string?
127  return static_cast<VW_EXAMPLE>(VW::read_example(*pointer, const_cast<char*>(line)));
128 }
129 
131 { vw * pointer = static_cast<vw*>(handle);
132  VW::start_parser(*pointer);
133 }
134 
136 { vw * pointer = static_cast<vw*>(handle);
137  VW::end_parser(*pointer);
138 }
139 
141 { vw * pointer = static_cast<vw*>(handle);
142  parser * parser_pointer = static_cast<parser *>(pointer->p);
143  return static_cast<VW_EXAMPLE>(VW::get_example(parser_pointer));
144 }
145 
147 { return VW::get_label(static_cast<example*>(e));
148 }
149 
151 { return VW::get_topic_prediction(static_cast<example*>(e), i);
152 }
153 
155 { return VW::get_importance(static_cast<example*>(e));
156 }
157 
159 { return VW::get_initial(static_cast<example*>(e));
160 }
161 
163 { return VW::get_prediction(static_cast<example*>(e));
164 }
165 
167 { return VW::get_cost_sensitive_prediction(static_cast<example*>(e));
168 }
169 
171 { return VW::get_multilabel_predictions(static_cast<example*>(e), *plen);
172 }
173 
175 { return VW::get_tag_length(static_cast<example*>(e));
176 }
177 
179 { return VW::get_tag(static_cast<example*>(e));
180 }
181 
183 { return VW::get_feature_number(static_cast<example*>(e));
184 }
185 
187 { return VW::get_confidence(static_cast<example*>(e));
188 }
189 
190 VW_DLL_MEMBER size_t VW_CALLING_CONV VW_SetFeatureSpace(VW_HANDLE handle, VW_FEATURE_SPACE feature_space, const char* name)
191 { VW::primitive_feature_space* f = reinterpret_cast<VW::primitive_feature_space*>(feature_space);
192  f->name = *name;
193  return VW_HashSpaceA(handle, name);
194 }
195 
196 VW_DLL_MEMBER void VW_CALLING_CONV VW_InitFeatures(VW_FEATURE_SPACE feature_space, size_t features_count)
197 {
198  VW::primitive_feature_space* fs = reinterpret_cast<VW::primitive_feature_space*>(feature_space);
199  VW::init_features(*fs, features_count);
200 }
201 
203 {
204  VW::primitive_feature_space* fs = reinterpret_cast<VW::primitive_feature_space*>(feature_space);
205  return &(fs->fs[index]);
206 }
207 
208 VW_DLL_MEMBER void VW_CALLING_CONV VW_SetFeature(VW_FEATURE_SPACE feature_space, size_t index, size_t feature_hash, float value)
209 {
210  VW::primitive_feature_space* fs = reinterpret_cast<VW::primitive_feature_space*>(feature_space);
211  VW::set_feature(*fs, index, feature_hash, value);
212 }
213 
215 { vw* pointer = static_cast<vw*>(handle);
216  return VW::get_features(*pointer, static_cast<example*>(e), *plen);
217 }
218 
220 { VW::return_features(static_cast<feature*>(f));
221 }
223 { vw * pointer = static_cast<vw*>(handle);
224  VW::finish_example(*pointer, *(static_cast<example*>(e)));
225 }
226 #ifdef USE_CODECVT
227 VW_DLL_MEMBER size_t VW_CALLING_CONV VW_HashSpace(VW_HANDLE handle, const char16_t * s)
228 { return VW_HashSpaceA(handle, utf16_to_utf8(s).c_str());
229 }
230 
231 VW_DLL_MEMBER size_t VW_CALLING_CONV VW_HashSpaceStatic(const char16_t * s, const char16_t * h)
232 { return VW_HashSpaceStaticA(utf16_to_utf8(s).c_str(), utf16_to_utf8(h).c_str());
233 }
234 #endif
235 VW_DLL_MEMBER size_t VW_CALLING_CONV VW_HashSpaceA(VW_HANDLE handle, const char * s)
236 { vw * pointer = static_cast<vw*>(handle);
237  string str(s);
238  return VW::hash_space(*pointer, str);
239 }
240 
241 VW_DLL_MEMBER size_t VW_CALLING_CONV VW_HashSpaceStaticA(const char * s, const char* h = "strings")
242 { string str(s);
243  string hash(h);
244  return VW::hash_space_static(str, hash);
245 }
246 
247 #ifdef USE_CODECVT
248 VW_DLL_MEMBER size_t VW_CALLING_CONV VW_HashFeature(VW_HANDLE handle, const char16_t* s, size_t u)
249 { return VW_HashFeatureA(handle, utf16_to_utf8(s).c_str(),u);
250 }
251 
252 VW_DLL_MEMBER size_t VW_CALLING_CONV VW_HashFeatureStatic(const char16_t * s, size_t u, const char16_t * h, unsigned int num_bits)
253 { return VW_HashFeatureStaticA(utf16_to_utf8(s).c_str(), u, utf16_to_utf8(h).c_str(), num_bits);
254 }
255 #endif
256 
257 VW_DLL_MEMBER size_t VW_CALLING_CONV VW_HashFeatureA(VW_HANDLE handle, const char * s, size_t u)
258 { vw * pointer = static_cast<vw*>(handle);
259  string str(s);
260  return VW::hash_feature(*pointer, str, u);
261 }
262 
263 VW_DLL_MEMBER size_t VW_CALLING_CONV VW_HashFeatureStaticA(const char * s, size_t u, const char * h = "strings", unsigned int num_bits = 18)
264 { string str(s);
265  string hash(h);
266  return VW::hash_feature_static(str, u, hash, num_bits);
267 }
268 
269 VW_DLL_MEMBER void VW_CALLING_CONV VW_AddLabel(VW_EXAMPLE e, float label, float weight, float base)
270 { example* ex = static_cast<example*>(e);
271  return VW::add_label(ex, label, weight, base);
272 }
273 
275 { vw * pointer = static_cast<vw*>(handle);
276  example* ex = static_cast<example*>(e);
277  VW::parse_example_label(*pointer, *ex, label);
278 }
279 
281 { vw * pointer = static_cast<vw*>(handle);
282  example * ex = static_cast<example*>(e);
283  pointer->learn(*ex);
284  return VW::get_prediction(ex);
285 }
286 
288 { example * ex = static_cast<example*>(e);
289  return VW::get_action_score(ex, i);
290 }
291 
293 { example * ex = static_cast<example*>(e);
294  return VW::get_action_score_length(ex);
295 }
296 
298 { vw * pointer = static_cast<vw*>(handle);
299  example * ex = static_cast<example*>(e);
300  LEARNER::as_singleline(pointer->l)->predict(*ex);
301  //BUG: The below method may return garbage as it assumes a certain structure for ex->ld
302  //which may not be the actual one used (e.g., for cost-sensitive multi-class learning)
303  return VW::get_prediction(ex);
304 }
305 
307 { vw * pointer = static_cast<vw*>(handle);
308  example * ex = static_cast<example*>(e);
309  LEARNER::as_singleline(pointer->l)->predict(*ex);
311 }
312 
313 VW_DLL_MEMBER float VW_CALLING_CONV VW_Get_Weight(VW_HANDLE handle, size_t index, size_t offset)
314 { vw* pointer = static_cast<vw*>(handle);
315  return VW::get_weight(*pointer, (uint32_t) index, (uint32_t) offset);
316 }
317 
318 VW_DLL_MEMBER void VW_CALLING_CONV VW_Set_Weight(VW_HANDLE handle, size_t index, size_t offset, float value)
319 { vw* pointer = static_cast<vw*>(handle);
320  return VW::set_weight(*pointer, (uint32_t) index, (uint32_t)offset, value);
321 }
322 
324 { vw* pointer = static_cast<vw*>(handle);
325  return VW::num_weights(*pointer);
326 }
327 
329 { vw* pointer = static_cast<vw*>(handle);
330  return VW::get_stride(*pointer);
331 }
332 
334 { vw* pointer = static_cast<vw*>(handle);
335 
336  string name = pointer->final_regressor_name;
337  if (name.empty())
338  { return;
339  }
340 
341  return VW::save_predictor(*pointer, name);
342 }
343 
344 
345 class memory_io_buf : public io_buf
346 {
347 public:
348  memory_io_buf() : readOffset(0) {
349  files.push_back(-1); // this is a hack because buf will do nothing if files is empty
350  }
351 
352  virtual ssize_t write_file(int file, const void* buf, size_t nbytes) {
353  auto byteBuf = reinterpret_cast<const char*>(buf);
354  data.insert(data.end(), &byteBuf[0], &byteBuf[nbytes]);
355  return nbytes;
356  }
357 
358  virtual ssize_t read_file(int f, void* buf, size_t nbytes) {
359  nbytes = min(nbytes, data.size()-readOffset);
360  copy(data.data()+readOffset, data.data()+readOffset+nbytes, reinterpret_cast<char *>(buf));
361  readOffset += nbytes;
362  return nbytes;
363  }
364 
365  virtual bool close_file() {
366  if (files.size() > 0) {
367  files.pop();
368  return true;
369  }
370  return false;
371  }
372 
373  char* GetDataPointer() {
374  return data.data();
375  }
376 
377  size_t GetDataSize() const {
378  return data.size();
379  }
380 
381 private:
382  vector<char> data;
383  size_t readOffset;
384 };
385 
386 VW_DLL_MEMBER VW_HANDLE VW_CALLING_CONV VW_InitializeWithModel(const char * pstrArgs, const char * modelData, size_t modelDataSize)
387 {
388  unique_ptr<memory_io_buf> buf(new memory_io_buf);
389  buf->write_file(-1, modelData, modelDataSize);
390 
391  vw* all = VW::initialize(string(pstrArgs), buf.get());
392  return static_cast<VW_HANDLE>(all);
393 }
394 
395 VW_DLL_MEMBER VW_HANDLE VW_CALLING_CONV VW_InitializeWithModelEscaped(const char * pstrArgs, const char * modelData, size_t modelDataSize)
396 {
397  std::unique_ptr<memory_io_buf> buf(new memory_io_buf());
398  buf->write_file(-1, modelData, modelDataSize);
399 
400  auto all = VW::initialize_escaped(std::string(pstrArgs), buf.get());
401  return static_cast<VW_HANDLE>(all);
402 }
403 
404 VW_DLL_MEMBER void VW_CALLING_CONV VW_CopyModelData(VW_HANDLE handle, VW_IOBUF* outputBufferHandle, char** outputData, size_t* outputSize) {
405  vw* pointer = static_cast<vw*>(handle);
406 
407  memory_io_buf* buf = new(memory_io_buf);
408  VW::save_predictor(*pointer, *buf);
409 
410  *outputBufferHandle = buf;
411  *outputSize = buf->GetDataSize();
412  *outputData = buf->GetDataPointer();
413 }
414 
416  delete static_cast<memory_io_buf*>(bufferHandle);
417 }
418 
419 }
void return_features(feature *f)
Definition: example.cc:137
vw * seed_vw_model(vw *vw_model, const std::string extra_args, trace_message_t trace_listener, void *trace_context)
Definition: parse_args.cc:1765
VW_DLL_MEMBER float VW_CALLING_CONV VW_GetInitial(VW_EXAMPLE e)
Definition: vwdll.cpp:158
void learn(example &)
Definition: global_data.cc:137
VW_DLL_MEMBER float VW_CALLING_CONV VW_GetLabel(VW_EXAMPLE e)
Definition: vwdll.cpp:146
void parse_example_label(vw &all, example &ec, std::string label)
Definition: parser.cc:846
VW_DLL_MEMBER VW_EXAMPLE VW_CALLING_CONV VW_GetExample(VW_HANDLE handle)
Definition: vwdll.cpp:140
void * VW_FEATURE
Definition: vwdll.h:58
void predict(E &ec, size_t i=0)
Definition: learner.h:169
void * VW_IOBUF
Definition: vwdll.h:59
VW_DLL_MEMBER float VW_CALLING_CONV VW_GetConfidence(VW_EXAMPLE e)
Definition: vwdll.cpp:186
VW_DLL_MEMBER VW_FEATURE_SPACE VW_CALLING_CONV VW_ExportExample(VW_HANDLE handle, VW_EXAMPLE e, size_t *plen)
Definition: vwdll.cpp:109
VW_DLL_MEMBER VW_FEATURE VW_CALLING_CONV VW_GetFeatures(VW_HANDLE handle, VW_EXAMPLE e, size_t *plen)
Definition: vwdll.cpp:214
VW_DLL_MEMBER VW_HANDLE VW_CALLING_CONV VW_InitializeEscapedA(const char *pstrArgs)
Definition: vwdll.cpp:61
VW_DLL_MEMBER size_t VW_CALLING_CONV VW_SetFeatureSpace(VW_HANDLE handle, VW_FEATURE_SPACE feature_space, const char *name)
Definition: vwdll.cpp:190
VW_DLL_MEMBER float VW_CALLING_CONV VW_PredictCostSensitive(VW_HANDLE handle, VW_EXAMPLE e)
Definition: vwdll.cpp:306
void generic_driver(ready_examples_queue &examples, context_type &context)
Definition: learner.cc:253
uint32_t get_stride(vw &all)
Definition: vw.h:189
VW_DLL_MEMBER void VW_CALLING_CONV VW_InitFeatures(VW_FEATURE_SPACE feature_space, size_t features_count)
Definition: vwdll.cpp:196
VW_DLL_MEMBER size_t VW_CALLING_CONV VW_Get_Stride(VW_HANDLE handle)
Definition: vwdll.cpp:328
float get_confidence(example *ec)
Definition: parser.cc:954
float get_importance(example *ec)
Definition: parser.cc:915
const char * get_tag(example *ec)
Definition: parser.cc:950
VW_DLL_MEMBER size_t VW_CALLING_CONV VW_HashFeatureStaticA(const char *s, size_t u, const char *h="strings", unsigned int num_bits=18)
Definition: vwdll.cpp:263
example * get_example(parser *p)
Definition: parser.cc:909
void set_feature(primitive_feature_space &fs, size_t index, uint64_t feature_hash, float value)
Definition: vw.h:197
VW_DLL_MEMBER void VW_CALLING_CONV VW_SaveModel(VW_HANDLE handle)
Definition: vwdll.cpp:333
void * VW_FEATURE_SPACE
Definition: vwdll.h:57
the core definition of a set of features.
VW_DLL_MEMBER void VW_CALLING_CONV VW_ReturnFeatures(VW_FEATURE f)
Definition: vwdll.cpp:219
uint64_t hash_feature_static(const std::string &s, uint64_t u, const std::string &h, uint32_t num_bits)
Definition: vw.h:160
VW_DLL_MEMBER void VW_CALLING_CONV VW_ReleaseFeatureSpace(VW_FEATURE_SPACE features, size_t len)
Definition: vwdll.cpp:115
VW_DLL_MEMBER VW_HANDLE VW_CALLING_CONV VW_SeedWithModel(VW_HANDLE handle, const char *extraArgs)
Definition: vwdll.cpp:68
VW_DLL_MEMBER const char *VW_CALLING_CONV VW_GetTag(VW_EXAMPLE e)
Definition: vwdll.cpp:178
VW_DLL_MEMBER void VW_CALLING_CONV VW_Set_Weight(VW_HANDLE handle, size_t index, size_t offset, float value)
Definition: vwdll.cpp:318
VW_DLL_MEMBER void VW_CALLING_CONV VW_AddStringLabel(VW_HANDLE handle, VW_EXAMPLE e, const char *label)
Definition: vwdll.cpp:274
void save_predictor(vw &all, std::string reg_name)
void finish(vw &all, bool delete_all)
Definition: parse_args.cc:1823
size_t GetDataSize() const
Definition: vwdll.cpp:377
VW_DLL_MEMBER float VW_CALLING_CONV VW_GetImportance(VW_EXAMPLE e)
Definition: vwdll.cpp:154
virtual ssize_t read_file(int f, void *buf, size_t nbytes)
Definition: vwdll.cpp:358
VW_DLL_MEMBER VW_FEATURE_SPACE VW_CALLING_CONV VW_InitializeFeatureSpaces(size_t len)
Definition: vwdll.cpp:98
VW_DLL_MEMBER VW_HANDLE VW_CALLING_CONV VW_InitializeA(const char *pstrArgs)
Definition: vwdll.cpp:55
VW_DLL_MEMBER VW_EXAMPLE VW_CALLING_CONV VW_ReadExampleA(VW_HANDLE handle, const char *line)
Definition: vwdll.cpp:124
VW_DLL_MEMBER VW_EXAMPLE VW_CALLING_CONV VW_ImportExample(VW_HANDLE handle, const char *label, VW_FEATURE_SPACE features, size_t len)
Definition: vwdll.cpp:92
parser * p
Definition: global_data.h:377
single_learner * as_singleline(learner< T, E > *l)
Definition: learner.h:476
VW_DLL_MEMBER size_t VW_CALLING_CONV VW_HashSpaceStaticA(const char *s, const char *h="strings")
Definition: vwdll.cpp:241
feature * get_features(vw &all, example *ec, size_t &feature_map_len)
Definition: example.cc:125
VW_DLL_MEMBER size_t VW_CALLING_CONV VW_GetFeatureNumber(VW_EXAMPLE e)
Definition: vwdll.cpp:182
VW_DLL_MEMBER VW_FEATURE_SPACE VW_CALLING_CONV VW_GetFeatureSpace(VW_FEATURE_SPACE first, size_t index)
Definition: vwdll.cpp:103
primitive_feature_space * export_example(vw &all, example *ec, size_t &len)
Definition: parser.cc:812
example * import_example(vw &all, const std::string &label, primitive_feature_space *features, size_t len)
Definition: parser.cc:791
char * GetDataPointer()
Definition: vwdll.cpp:373
void start_parser(vw &all)
Definition: parser.cc:974
VW_DLL_MEMBER size_t VW_CALLING_CONV VW_Num_Weights(VW_HANDLE handle)
Definition: vwdll.cpp:323
void add_label(example *ec, float label, float weight, float base)
Definition: parser.cc:784
VW_DLL_MEMBER void VW_CALLING_CONV VW_Finish_Passes(VW_HANDLE handle)
Definition: vwdll.cpp:76
VW_DLL_MEMBER float VW_CALLING_CONV VW_Get_Weight(VW_HANDLE handle, size_t index, size_t offset)
Definition: vwdll.cpp:313
VW_DLL_MEMBER VW_HANDLE VW_CALLING_CONV VW_InitializeWithModel(const char *pstrArgs, const char *modelData, size_t modelDataSize)
Definition: vwdll.cpp:386
std::string utf16_to_utf8(std::u16string utf16_string)
Definition: vwdll.cpp:33
float get_weight(vw &all, uint32_t index, uint32_t offset)
Definition: vw.h:177
VW_DLL_MEMBER void *VW_CALLING_CONV VW_GetMultilabelPredictions(VW_EXAMPLE e, size_t *plen)
Definition: vwdll.cpp:170
VW_DLL_MEMBER float VW_CALLING_CONV VW_GetTopicPrediction(VW_EXAMPLE e, size_t i)
Definition: vwdll.cpp:150
void init_features(primitive_feature_space &fs, size_t features_count)
Definition: vw.h:191
VW_DLL_MEMBER VW_FEATURE VW_CALLING_CONV VW_GetFeature(VW_FEATURE_SPACE feature_space, size_t index)
Definition: vwdll.cpp:202
VW_DLL_MEMBER void VW_CALLING_CONV VW_SetFeature(VW_FEATURE_SPACE feature_space, size_t index, size_t feature_hash, float value)
Definition: vwdll.cpp:208
VW_DLL_MEMBER void VW_CALLING_CONV VW_StartParser(VW_HANDLE handle)
Definition: vwdll.cpp:130
VW_DLL_MEMBER void VW_CALLING_CONV VW_Finish(VW_HANDLE handle)
Definition: vwdll.cpp:87
void end_parser(vw &all)
Definition: parser.cc:1007
float get_initial(example *ec)
Definition: parser.cc:917
size_t get_tag_length(example *ec)
Definition: parser.cc:948
void set_weight(vw &all, uint32_t index, uint32_t offset, float value)
Definition: vw.h:182
unsigned char name
Definition: vw.h:66
vw * initialize(options_i &options, io_buf *model, bool skipModelLoad, trace_message_t trace_listener, void *trace_context)
Definition: parse_args.cc:1654
VW_DLL_MEMBER size_t VW_CALLING_CONV VW_HashFeatureA(VW_HANDLE handle, const char *s, size_t u)
Definition: vwdll.cpp:257
float get_prediction(example *ec)
Definition: parser.cc:919
virtual ssize_t write_file(int file, const void *buf, size_t nbytes)
Definition: vwdll.cpp:352
Definition: io_buf.h:54
VW_DLL_MEMBER void VW_CALLING_CONV VW_FinishExample(VW_HANDLE handle, VW_EXAMPLE e)
Definition: vwdll.cpp:222
void finish_example(vw &, example &)
Definition: parser.cc:881
VW_DLL_MEMBER size_t VW_CALLING_CONV VW_HashSpaceA(VW_HANDLE handle, const char *s)
Definition: vwdll.cpp:235
VW_DLL_MEMBER float VW_CALLING_CONV VW_GetActionScore(VW_EXAMPLE e, size_t i)
Definition: vwdll.cpp:287
float get_action_score(example *ec, size_t i)
Definition: parser.cc:932
#define VW_DLL_MEMBER
Definition: vwdll.h:38
size_t numpasses
Definition: global_data.h:451
VW_DLL_MEMBER void VW_CALLING_CONV VW_EndParser(VW_HANDLE handle)
Definition: vwdll.cpp:135
float weight
size_t readOffset
Definition: vwdll.cpp:383
size_t get_feature_number(example *ec)
Definition: parser.cc:952
VW_DLL_MEMBER float VW_CALLING_CONV VW_GetPrediction(VW_EXAMPLE e)
Definition: vwdll.cpp:162
void * VW_EXAMPLE
Definition: vwdll.h:55
VW_DLL_MEMBER float VW_CALLING_CONV VW_Learn(VW_HANDLE handle, VW_EXAMPLE e)
Definition: vwdll.cpp:280
vw * initialize_escaped(std::string const &s, io_buf *model, bool skipModelLoad, trace_message_t trace_listener, void *trace_context)
Definition: parse_args.cc:1731
VW_DLL_MEMBER size_t VW_CALLING_CONV VW_GetTagLength(VW_EXAMPLE e)
Definition: vwdll.cpp:174
void adjust_used_index(vw &)
Definition: parser.cc:968
example * read_example(vw &all, char *example_line)
Definition: parser.cc:761
VW_DLL_MEMBER float VW_CALLING_CONV VW_Predict(VW_HANDLE handle, VW_EXAMPLE e)
Definition: vwdll.cpp:297
float get_cost_sensitive_prediction(example *ec)
Definition: parser.cc:921
LEARNER::base_learner * l
Definition: global_data.h:383
bool do_reset_source
Definition: global_data.h:498
uint64_t hash_feature(vw &all, const std::string &s, uint64_t u)
Definition: vw.h:153
uint64_t hash_space(vw &all, const std::string &s)
Definition: vw.h:138
VW_DLL_MEMBER void VW_CALLING_CONV VW_FreeIOBuf(VW_IOBUF bufferHandle)
Definition: vwdll.cpp:415
void * VW_HANDLE
Definition: vwdll.h:54
VW_DLL_MEMBER size_t VW_CALLING_CONV VW_GetActionScoreLength(VW_EXAMPLE e)
Definition: vwdll.cpp:292
uint32_t convert(size_t number)
Definition: cache.cc:211
Definition: parser.h:38
VW_DLL_MEMBER void VW_CALLING_CONV VW_CopyModelData(VW_HANDLE handle, VW_IOBUF *outputBufferHandle, char **outputData, size_t *outputSize)
Definition: vwdll.cpp:404
virtual bool close_file()
Definition: vwdll.cpp:365
uint64_t hash_space_static(const std::string &s, const std::string &hash)
Definition: vw.h:145
#define VW_CALLING_CONV
Definition: vwdll.h:22
uint32_t num_weights(vw &all)
Definition: vw.h:187
float get_label(example *ec)
Definition: parser.cc:913
VW_DLL_MEMBER void VW_CALLING_CONV VW_AddLabel(VW_EXAMPLE e, float label, float weight, float base)
Definition: vwdll.cpp:269
std::string final_regressor_name
Definition: global_data.h:535
uint32_t * get_multilabel_predictions(example *ec, size_t &len)
Definition: parser.cc:925
float get_topic_prediction(example *ec, size_t i)
Definition: parser.cc:911
vector< char > data
Definition: vwdll.cpp:382
VW_DLL_MEMBER float VW_CALLING_CONV VW_GetCostSensitivePrediction(VW_EXAMPLE e)
Definition: vwdll.cpp:166
size_t get_action_score_length(example *ec)
Definition: parser.cc:946
VW_DLL_MEMBER VW_HANDLE VW_CALLING_CONV VW_InitializeWithModelEscaped(const char *pstrArgs, const char *modelData, size_t modelDataSize)
Definition: vwdll.cpp:395
float f
Definition: cache.cc:40
void releaseFeatureSpace(primitive_feature_space *features, size_t len)
Definition: parser.cc:840