Edit

kc3-lang/angle/src/libANGLE/AttributeMap.h

Branch :

  • Show log

    Commit

  • Author : Gert Wollny
    Date : 2021-02-12 09:29:11
    Hash : fb7a2445
    Message : libANGLE: Declare copy operator if copy constructor is defined If the copy constructor is defined then the copy assignment must also be defined, but we can use the default here. v2: Don't inline because the chromium-style errors out on this Bug: angleproject:4486 Change-Id: Iec0f63342244249da32b455b49a0b89b6558cab9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2690953 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>

  • src/libANGLE/AttributeMap.h
  • //
    // 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.
    //
    
    #ifndef LIBANGLE_ATTRIBUTEMAP_H_
    #define LIBANGLE_ATTRIBUTEMAP_H_
    
    #include "common/PackedEnums.h"
    
    #include <EGL/egl.h>
    
    #include <map>
    #include <vector>
    
    namespace egl
    {
    
    class AttributeMap final
    {
      public:
        AttributeMap();
        AttributeMap(const AttributeMap &other);
        AttributeMap &operator=(const AttributeMap &other);
        ~AttributeMap();
    
        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);
    
      private:
        std::map<EGLAttrib, EGLAttrib> mAttributes;
    };
    }  // namespace egl
    
    #endif  // LIBANGLE_ATTRIBUTEMAP_H_