// Copyright 2017 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 UI_GFX_EXTENSION_SET_H_
#define UI_GFX_EXTENSION_SET_H_

#include "base/containers/flat_set.h"
#include "base/strings/string_piece.h"
#include "ui/gfx/gfx_export.h"

namespace gfx {

using ExtensionSet = base::flat_set<base::StringPiece>;

GFX_EXPORT ExtensionSet
MakeExtensionSet(const base::StringPiece& extensions_string);

GFX_EXPORT bool HasExtension(const ExtensionSet& extension_set,
                             const base::StringPiece& extension);

template <size_t N>
inline bool HasExtension(const ExtensionSet& extension_set,
                         const char (&extension)[N]) {
  return HasExtension(extension_set, base::StringPiece(extension, N - 1));
}

GFX_EXPORT std::string MakeExtensionString(const ExtensionSet& extension_set);

}  // namespace gfx

#endif  // UI_GFX_EXTENSION_SET_H_
