Created an abstract rx::QueryImpl class.

TRAC #22418

Signed-off-by: Nicolas Capens
Signed-off-by: Shannon Woods
Author: Geoff Lang

git-svn-id: https://angleproject.googlecode.com/svn/branches/dx11proto@1837 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/renderer/QueryImpl.h b/src/libGLESv2/renderer/QueryImpl.h
new file mode 100644
index 0000000..17dbaf5
--- /dev/null
+++ b/src/libGLESv2/renderer/QueryImpl.h
@@ -0,0 +1,50 @@
+//
+// Copyright (c) 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.
+//
+
+// QueryImpl.h: Defines the abstract rx::QueryImpl class.
+
+#ifndef LIBGLESV2_RENDERER_QUERYIMPL_H_
+#define LIBGLESV2_RENDERER_QUERYIMPL_H_
+
+#define GL_APICALL
+#include <GLES2/gl2.h>
+
+#include "common/angleutils.h"
+
+namespace rx
+{
+
+class QueryImpl
+{
+  public:
+    explicit QueryImpl(GLenum type) : mType(type), mStatus(GL_FALSE), mResult(0) { }
+    virtual ~QueryImpl() { }
+
+    virtual void begin() = 0;
+    virtual void end() = 0;
+    virtual GLuint getResult() = 0;
+    virtual GLboolean isResultAvailable() = 0;
+
+    GLenum getType() const { return mType; }
+
+  protected:
+    void setStatus(GLboolean status) { mStatus = status; }
+    GLboolean getStatus() const { return mStatus; }
+
+    void setResult(GLuint result) { mResult = result; }
+    GLuint getResult() const { return mResult; }
+
+  private:
+    DISALLOW_COPY_AND_ASSIGN(QueryImpl);
+
+    GLenum mType;
+    GLboolean mStatus;
+    GLuint mResult;
+};
+
+}
+
+#endif // LIBGLESV2_RENDERER_QUERYIMPL_H_