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

#ifndef {{"_".join(config.protocol.namespace)}}_Collections_h
#define {{"_".join(config.protocol.namespace)}}_Collections_h

#include {{format_include(config.protocol.package, "Forward")}}
#include <cstddef>

#if defined(__APPLE__) && !defined(_LIBCPP_VERSION)
#include <map>
#include <set>

{% for namespace in config.protocol.namespace %}
namespace {{namespace}} {
{% endfor %}

template <class Key, class T> using HashMap = std::map<Key, T>;
template <class Key> using HashSet = std::set<Key>;

{% for namespace in config.protocol.namespace %}
} // namespace {{namespace}}
{% endfor %}

#else
#include <unordered_map>
#include <unordered_set>

{% for namespace in config.protocol.namespace %}
namespace {{namespace}} {
{% endfor %}

template <class Key, class T> using HashMap = std::unordered_map<Key, T>;
template <class Key> using HashSet = std::unordered_set<Key>;

{% for namespace in config.protocol.namespace %}
} // namespace {{namespace}}
{% endfor %}

#endif // defined(__APPLE__) && !defined(_LIBCPP_VERSION)

#endif // !defined({{"_".join(config.protocol.namespace)}}_Collections_h)
