// Copyright 2018 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// The definitions corresponding to the declarations in this file are
// automatically generated by the build system.

#ifndef ZIRCON_SYSTEM_UTEST_FIDL_COMPILER_EXAMPLES_H_
#define ZIRCON_SYSTEM_UTEST_FIDL_COMPILER_EXAMPLES_H_

#include <map>
#include <string>

class Examples {
 public:
  // Map from filename to raw source code.
  static std::map<std::string, std::string>& map() { return map_; }

 private:
  static std::map<std::string, std::string> map_;
};

#endif  // ZIRCON_SYSTEM_UTEST_FIDL_COMPILER_EXAMPLES_H_
