blob: c85997e3908e9bfc523cc55e9c02f68291e5c701 [file] [edit]
#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