Edit

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

Branch :

  • Show log

    Commit

  • Author : Jamie Madill
    Date : 2018-05-24 19:52:15
    Hash : 493f9571
    Message : Add PrimitiveMode packed GLenum. Bug: angleproject:2574 Change-Id: I3d7bd7ca0d69a364a611dc04799ea34906fc4a6c Reviewed-on: https://chromium-review.googlesource.com/1067114 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>

  • src/libANGLE/AttributeMap.h
  • //
    // Copyright (c) 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();
    
        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;
    };
    }
    
    #endif  // LIBANGLE_ATTRIBUTEMAP_H_