blob: 9ce2373a8cb84ce5ddfba6227c2e4f51c85aad9b [file] [log] [blame]
// Copyright 2014 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "common/PackedEnums.h"
#include <EGL/egl.h>
#include <map>
#include <vector>
namespace egl
class AttributeMap final
AttributeMap(const AttributeMap &other);
void insert(EGLAttrib key, EGLAttrib value);
bool contains(EGLAttrib key) const;
EGLAttrib get(EGLAttrib key) const;
EGLAttrib get(EGLAttrib key, EGLAttrib defaultValue) const;
EGLint getAsInt(EGLAttrib key) const;
EGLint getAsInt(EGLAttrib key, EGLint defaultValue) const;
template <typename PackedEnumT>
PackedEnumT getAsPackedEnum(EGLAttrib key) const
return FromEGLenum<PackedEnumT>(static_cast<EGLenum>(get(key)));
template <typename PackedEnumT>
PackedEnumT getAsPackedEnum(EGLAttrib key, PackedEnumT defaultValue) const
auto iter = mAttributes.find(key);
return (mAttributes.find(key) != mAttributes.end())
? FromEGLenum<PackedEnumT>(static_cast<EGLenum>(iter->second))
: defaultValue;
bool isEmpty() const;
std::vector<EGLint> toIntVector() const;
typedef std::map<EGLAttrib, EGLAttrib>::const_iterator const_iterator;
const_iterator begin() const;
const_iterator end() const;
static AttributeMap CreateFromIntArray(const EGLint *attributes);
static AttributeMap CreateFromAttribArray(const EGLAttrib *attributes);
std::map<EGLAttrib, EGLAttrib> mAttributes;
} // namespace egl