[FR] Provide public accessors to benchmark name and arguments #1551 (#1563)

* [FR] Provide public accessors to benchmark name and arguments #1551

* Update AUTHORS and CONTRIBUTORS

* Update benchmark_register.cc

* Fix lint formatting
diff --git a/AUTHORS b/AUTHORS
index b7b3b2e..bafecad 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -46,6 +46,7 @@
 Marcel Jacobse <mjacobse@uni-bremen.de>
 Matt Clarkson <mattyclarkson@gmail.com>
 Maxim Vafin <maxvafin@gmail.com>
+Mike Apodaca <gatorfax@gmail.com>
 MongoDB Inc.
 Nick Hutchinson <nshutchinson@gmail.com>
 Norman Heino <norman.heino@gmail.com>
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index 37b000a..56f03e2 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -67,6 +67,7 @@
 Marcel Jacobse <mjacobse@uni-bremen.de>
 Matt Clarkson <mattyclarkson@gmail.com>
 Maxim Vafin <maxvafin@gmail.com>
+Mike Apodaca <gatorfax@gmail.com>
 Nick Hutchinson <nshutchinson@gmail.com>
 Norman Heino <norman.heino@gmail.com>
 Oleksandr Sochka <sasha.sochka@gmail.com>
diff --git a/include/benchmark/benchmark.h b/include/benchmark/benchmark.h
index 783fcd8..3e7e1dc 100644
--- a/include/benchmark/benchmark.h
+++ b/include/benchmark/benchmark.h
@@ -1245,7 +1245,10 @@
   explicit Benchmark(const char* name);
   void SetName(const char* name);
 
+ public:
+  const char* GetName() const;
   int ArgsCnt() const;
+  const char* GetArgName(int arg) const;
 
  private:
   friend class BenchmarkFamilies;
diff --git a/src/benchmark_register.cc b/src/benchmark_register.cc
index eae2c32..4503dd1 100644
--- a/src/benchmark_register.cc
+++ b/src/benchmark_register.cc
@@ -470,6 +470,8 @@
 
 void Benchmark::SetName(const char* name) { name_ = name; }
 
+const char* Benchmark::GetName() const { return name_.c_str(); }
+
 int Benchmark::ArgsCnt() const {
   if (args_.empty()) {
     if (arg_names_.empty()) return -1;
@@ -478,6 +480,12 @@
   return static_cast<int>(args_.front().size());
 }
 
+const char* Benchmark::GetArgName(int arg) const {
+  BM_CHECK_GE(arg, 0);
+  BM_CHECK_LT(arg, static_cast<int>(arg_names_.size()));
+  return arg_names_[arg].c_str();
+}
+
 TimeUnit Benchmark::GetTimeUnit() const {
   return use_default_time_unit_ ? GetDefaultTimeUnit() : time_unit_;
 }