diff options
author | unknown <niruc@NIRUC-M6600.redmond.corp.microsoft.com> | 2013-04-02 21:23:16 +0400 |
---|---|---|
committer | unknown <niruc@NIRUC-M6600.redmond.corp.microsoft.com> | 2013-04-02 21:23:16 +0400 |
commit | 11cb4f2f6c799a33e88df1152e3c03672ba37d95 (patch) | |
tree | 8b8b5a188df1d4e7333eee5a8556e14204bca3f4 /vowpalwabbit/vwdll.cpp | |
parent | 3b7ebda4c71914b792f9769940ad7fbafefa5ce4 (diff) |
fix bug on passing vw as struct
Diffstat (limited to 'vowpalwabbit/vwdll.cpp')
-rw-r--r-- | vowpalwabbit/vwdll.cpp | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/vowpalwabbit/vwdll.cpp b/vowpalwabbit/vwdll.cpp index e8fcf486..5e0b6d2f 100644 --- a/vowpalwabbit/vwdll.cpp +++ b/vowpalwabbit/vwdll.cpp @@ -30,11 +30,10 @@ extern "C" VW_DLL_MEMBER VW_HANDLE VW_CALLING_CONV VW_InitializeA(const char * pstrArgs) { - std::auto_ptr<vw> inst(new vw); string s(pstrArgs); - *(inst.get()) = VW::initialize(s); - initialize_parser_datastructures(*(inst.get())); - return static_cast<VW_HANDLE>(inst.release()); + vw* all = VW::initialize(s); + initialize_parser_datastructures(*all); + return static_cast<VW_HANDLE>(all); } VW_DLL_MEMBER void VW_CALLING_CONV VW_Finish(VW_HANDLE handle) @@ -50,6 +49,7 @@ extern "C" } else release_parser_datastructures(*pointer); + VW::finish(*pointer); delete pointer; } @@ -78,6 +78,25 @@ extern "C" return static_cast<VW_EXAMPLE>(VW::read_example(*pointer, const_cast<char*>(line))); } + VW_DLL_MEMBER void VW_CALLING_CONV VW_StartParser(VW_HANDLE handle, bool do_init) + { + vw * pointer = static_cast<vw*>(handle); + VW::start_parser(*pointer, do_init); + } + + VW_DLL_MEMBER void VW_CALLING_CONV VW_EndParser(VW_HANDLE handle) + { + vw * pointer = static_cast<vw*>(handle); + VW::end_parser(*pointer); + } + + VW_DLL_MEMBER VW_EXAMPLE VW_CALLING_CONV VW_GetExample(VW_HANDLE handle) + { + vw * pointer = static_cast<vw*>(handle); + parser * parser_pointer = static_cast<parser *>(pointer->p); + return static_cast<VW_EXAMPLE>(VW::get_example(parser_pointer)); + } + VW_DLL_MEMBER void VW_CALLING_CONV VW_FinishExample(VW_HANDLE handle, VW_EXAMPLE e) { vw * pointer = static_cast<vw*>(handle); |