//* Copyright 2020 The Dawn Authors
//*
//* Licensed under the Apache License, Version 2.0 (the "License");
//* you may not use this file except in compliance with the License.
//* You may obtain a copy of the License at
//*
//*     http://www.apache.org/licenses/LICENSE-2.0
//*
//* Unless required by applicable law or agreed to in writing, software
//* distributed under the License is distributed on an "AS IS" BASIS,
//* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//* See the License for the specific language governing permissions and
//* limitations under the License.

#ifndef DAWNWIRE_OBJECTTPYE_AUTOGEN_H_
#define DAWNWIRE_OBJECTTPYE_AUTOGEN_H_

#include "common/ityp_array.h"

namespace dawn::wire {

    enum class ObjectType : uint32_t {
        {% for type in by_category["object"] %}
            {{type.name.CamelCase()}},
        {% endfor %}
    };

    template <typename T>
    using PerObjectType = ityp::array<ObjectType, T, {{len(by_category["object"])}}>;

} // namespace dawn::wire


#endif  // DAWNWIRE_OBJECTTPYE_AUTOGEN_H_
