print_doc.hpp
Go to the documentation of this file.
1 
13 #ifndef MLPACK_BINDINGS_GO_PRINT_DOC_HPP
14 #define MLPACK_BINDINGS_GO_PRINT_DOC_HPP
15 
16 #include <mlpack/prereqs.hpp>
18 #include "get_go_type.hpp"
19 #include "camel_case.hpp"
20 
21 namespace mlpack {
22 namespace bindings {
23 namespace go {
24 
37 template<typename T>
38 void PrintDoc(const util::ParamData& d,
39  const void* input,
40  void* /* output */)
41 {
42  const size_t indent = *((size_t*) input);
43  std::ostringstream oss;
44  oss << " - ";
45  oss << CamelCase(d.name) << " (";
46  oss << GetGoType<typename std::remove_pointer<T>::type>(d) << "): "
47  << d.desc;
48 
49  // Print a default, if possible.
50  if (!d.required)
51  {
52  if (d.cppType == "std::string")
53  {
54  oss << " Default value '" << boost::any_cast<std::string>(d.value)
55  << "'.";
56  }
57  else if (d.cppType == "double")
58  {
59  oss << " Default value " << boost::any_cast<double>(d.value) << ".";
60  }
61  else if (d.cppType == "int")
62  {
63  oss << " Default value " << boost::any_cast<int>(d.value) << ".";
64  }
65  }
66 
67  std::cout << util::HyphenateString(oss.str(), indent + 4);
68 }
69 
70 } // namespace go
71 } // namespace bindings
72 } // namespace mlpack
73 
74 #endif
std::string CamelCase(std::string s)
Given an snake_case like, e.g., "logistic_regression", return CamelCase(e.g.
Definition: camel_case.hpp:24
boost::any value
The actual value that is held.
Definition: param_data.hpp:82
strip_type.hpp
Definition: add_to_po.hpp:21
The core includes that mlpack expects; standard C++ includes and Armadillo.
std::string desc
Description of this parameter, if any.
Definition: param_data.hpp:58
This structure holds all of the information about a single parameter, including its value (which is s...
Definition: param_data.hpp:52
if(BUILD_GO_BINDINGS) find_package(Go 1.11.0) if(NOT GO_FOUND) macro(add_go_binding name) endmacro() return() endif() find_package(Gonum) if(NOT GONUM_FOUND) macro(add_go_binding name) endmacro() endif() set(BINDING_SOURCES get_type.hpp get_param.hpp get_printable_param.hpp go_option.hpp mlpack/arma_util.h mlpack/arma_util.hpp mlpack/cli_util.h mlpack/cli_util.hpp print_class_defn.hpp print_cpp.cpp print_cpp.hpp print_defn_input.hpp print_defn_output.hpp print_doc.hpp print_doc_functions.hpp print_doc_functions_impl.hpp print_go.hpp print_go.cpp print_h.hpp print_h.cpp print_import_decl.hpp print_input_processing.hpp print_method_config.hpp print_method_init.hpp print_output_processing.hpp camel_case.hpp strip_type.hpp) set(CGO_SOURCES mlpack/arma_util.go mlpack/cli_util.go mlpack/doc.go) set(CAPI_SOURCES mlpack/capi/arma_util.cpp mlpack/capi/arma_util.h mlpack/capi/arma_util.hpp mlpack/capi/cli_util.cpp mlpack/capi/cli_util.h mlpack/capi/cli_util.hpp) set(UTIL_SOURCES mlpack/capi/arma_util.cpp mlpack/capi/cli_util.cpp) set(TEST_SOURCES tests/go_binding_test.go) add_custom_target(go ALL DEPENDS mlpack) add_custom_target(go_copy ALL DEPENDS mlpack) if(BUILD_TESTS) foreach(test_file $
Definition: CMakeLists.txt:1
std::string name
Name of this parameter.
Definition: param_data.hpp:56
bool required
True if this option is required.
Definition: param_data.hpp:71
std::string HyphenateString(const std::string &str, int padding)
 * Hyphenate a string or split it onto multiple 80-character lines, with some  * amount of padding on...
std::string cppType
The true name of the type, as it would be written in C++.
Definition: param_data.hpp:84
void PrintDoc(const util::ParamData &d, const void *input, void *)
Print the docstring documentation for a given parameter.
Definition: print_doc.hpp:38