| #include "rust_api.h" |
| |
| #include <string> |
| |
| namespace benchmark { |
| namespace rust_api { |
| |
| void RegisterBenchmark(rust::Str name, rust::Fn<void(benchmark::State&)> func); |
| void Initialize(int* argc, size_t argv); |
| void SkipWithError(benchmark::State& state, rust::Str msg); |
| |
| void RegisterBenchmark(rust::Str name, rust::Fn<void(benchmark::State&)> func) { |
| ::benchmark::RegisterBenchmark(std::string(name).c_str(), |
| [func](benchmark::State& st) { func(st); }); |
| } |
| |
| void Initialize(int* argc, size_t argv) { |
| char** argv_ptr = reinterpret_cast<char**>(argv); |
| if (argc != nullptr && *argc > 0 && argv_ptr != nullptr && |
| argv_ptr[0] != nullptr) { |
| static std::string executable_name; |
| executable_name = argv_ptr[0]; |
| argv_ptr[0] = executable_name.data(); |
| } |
| ::benchmark::Initialize(argc, argv_ptr); |
| } |
| |
| void SkipWithError(benchmark::State& state, rust::Str msg) { |
| state.SkipWithError(std::string(msg).c_str()); |
| } |
| |
| } // namespace rust_api |
| } // namespace benchmark |