// WARNING: This file is machine generated by fidlgen.

#pragma once

#include <test/inheritance/cpp/fidl.h>
namespace test {
namespace inheritance {
namespace testing {
class super_TestBase : public ::test::inheritance::super {
 public:
  virtual ~super_TestBase() {}
  virtual void NotImplemented_(const std::string& name) = 0;
  void foo(::std::string s, fooCallback callback) override {
    NotImplemented_("foo");
  }
};

class sub_TestBase : public ::test::inheritance::sub {
 public:
  virtual ~sub_TestBase() {}
  virtual void NotImplemented_(const std::string& name) = 0;
  void foo(::std::string s, fooCallback callback) override {
    NotImplemented_("foo");
  }
};
}  // namespace testing
}  // namespace inheritance
}  // namespace test
