//
// Copyright (c) 2010-2013 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 LIBGLESV2_UNIFORM_H_
#define LIBGLESV2_UNIFORM_H_

#include <string>
#include <vector>

#define GL_APICALL
#include <GLES2/gl2.h>

#include "common/debug.h"

namespace gl
{

// Helper struct representing a single shader uniform
struct Uniform
{
    Uniform(GLenum type, GLenum precision, const std::string &name, unsigned int arraySize);

    ~Uniform();

    bool isArray() const;
    unsigned int elementCount() const;

    const GLenum type;
    const GLenum precision;
    const std::string name;
    const unsigned int arraySize;

    unsigned char *data;
    bool dirty;

    int psRegisterIndex;
    int vsRegisterIndex;
    unsigned int registerCount;
};

typedef std::vector<Uniform*> UniformArray;

}

#endif   // LIBGLESV2_UNIFORM_H_
