From 25811f833b663f8708daab193326fc9362300b74 Mon Sep 17 00:00:00 2001 From: Amit Kumar Gupta Date: Mon, 25 Aug 2014 08:08:59 +0000 Subject: [PATCH] Revert "Remove (mostly) unused C print functions in linear package" This reverts commit f9e41dec2860090e00dd1e0fb74c1beb79197ae5. --- linear_models/cfuncs.go | 14 ++++++++++++++ linear_models/liblinear.go | 1 + linear_models/liblinear_print.go | 27 +++++++++++++++++++++++++++ linear_models/liblinear_print_11.go | 16 ++++++++++++++++ 4 files changed, 58 insertions(+) create mode 100644 linear_models/cfuncs.go create mode 100644 linear_models/liblinear_print.go create mode 100644 linear_models/liblinear_print_11.go diff --git a/linear_models/cfuncs.go b/linear_models/cfuncs.go new file mode 100644 index 0000000..bde2f0a --- /dev/null +++ b/linear_models/cfuncs.go @@ -0,0 +1,14 @@ +// +build go1.2 + +package linear_models + +/* + +void libLinearPrintFunc(char *); + +void golearn_liblinear_print_func_cgo(char *c) { + libLinearPrintFunc(c); +} + +*/ +import "C" diff --git a/linear_models/liblinear.go b/linear_models/liblinear.go index e5d0682..0f627a2 100644 --- a/linear_models/liblinear.go +++ b/linear_models/liblinear.go @@ -59,6 +59,7 @@ func NewProblem(X [][]float64, y []float64, bias float64) *Problem { } func Train(prob *Problem, param *Parameter) *Model { + libLinearHookPrintFunc() // Sets up logging return &Model{C.train(&prob.c_prob, ¶m.c_param)} } diff --git a/linear_models/liblinear_print.go b/linear_models/liblinear_print.go new file mode 100644 index 0000000..f472a77 --- /dev/null +++ b/linear_models/liblinear_print.go @@ -0,0 +1,27 @@ +// +build go1.2 + +package linear_models + +/* +#cgo LDFLAGS: -llinear +#cgo CFLAGS: +#include + +typedef void (*print_func)(char *); +void golearn_liblinear_print_func_cgo(char *); +*/ +import "C" + +import ( + "fmt" + "unsafe" +) + +//export libLinearPrintFunc +func libLinearPrintFunc(str *C.char) { + fmt.Println(C.GoString(str)) +} + +func libLinearHookPrintFunc() { + C.set_print_string_function((C.print_func)(unsafe.Pointer(C.golearn_liblinear_print_func_cgo))) +} diff --git a/linear_models/liblinear_print_11.go b/linear_models/liblinear_print_11.go new file mode 100644 index 0000000..92616ce --- /dev/null +++ b/linear_models/liblinear_print_11.go @@ -0,0 +1,16 @@ +// +build go1.1 +// +build !go1.2 +// +build !go1.3 + +package linear_models + +import "C" + +//export libLinearPrintFunc +func libLinearPrintFunc(str *C.char) { + // Stubbed +} + +func libLinearHookPrintFunc() { + // Stubbed +}