1//
2// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved.
3// Use of this source code is governed by a BSD-style license that can be
4// found in the LICENSE file.
5//
6
7// ShaderExecutable.h: Defines a renderer-agnostic class to contain shader
8// executable implementation details.
9
10#ifndef LIBGLESV2_RENDERER_SHADEREXECUTABLE_H_
11#define LIBGLESV2_RENDERER_SHADEREXECUTABLE_H_
12
13#include "common/angleutils.h"
14
15namespace rx
16{
17
18class ShaderExecutable
19{
20  public:
21    ShaderExecutable(const void *function, size_t length) : mLength(length)
22    {
23        mFunction = new char[length];
24        memcpy(mFunction, function, length);
25    }
26
27    virtual ~ShaderExecutable()
28    {
29        delete[] mFunction;
30    }
31
32    void *getFunction() const
33    {
34        return mFunction;
35    }
36
37    size_t getLength() const
38    {
39        return mLength;
40    }
41
42  private:
43    DISALLOW_COPY_AND_ASSIGN(ShaderExecutable);
44
45    void *mFunction;
46    const size_t mLength;
47};
48
49}
50
51#endif // LIBGLESV2_RENDERER_SHADEREXECUTABLE9_H_
52