Add a base for GL essential data.

The data holds the GL state, caps, extensions, texture caps, and
current client version.

BUG=angle:789

Change-Id: Icd15d806e14490f39041dea663ab2461a6a76090
Reviewed-on: https://chromium-review.googlesource.com/226060
Tested-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Brandon Jones <bajones@chromium.org>
diff --git a/src/libGLESv2/Data.cpp b/src/libGLESv2/Data.cpp
new file mode 100644
index 0000000..3ddf591
--- /dev/null
+++ b/src/libGLESv2/Data.cpp
@@ -0,0 +1,51 @@
+//
+// 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.
+//
+
+// Data.cpp: Container class for all GL relevant state, caps and objects
+
+#include "libGLESv2/Data.h"
+#include "libGLESv2/ResourceManager.h"
+
+namespace gl
+{
+
+Data::Data(GLint clientVersionIn, const State &stateIn, const Caps &capsIn,
+           const TextureCapsMap &textureCapsIn, const Extensions &extensionsIn,
+           const ResourceManager *resourceManagerIn)
+    : clientVersion(clientVersionIn),
+      state(&stateIn),
+      caps(&capsIn),
+      textureCaps(&textureCapsIn),
+      extensions(&extensionsIn),
+      resourceManager(resourceManagerIn)
+{}
+
+Data::~Data()
+{
+}
+
+Data::Data(const Data &other)
+    : clientVersion(other.clientVersion),
+      state(other.state),
+      caps(other.caps),
+      textureCaps(other.textureCaps),
+      extensions(other.extensions),
+      resourceManager(other.resourceManager)
+{
+}
+
+Data &Data::operator=(const Data &other)
+{
+    clientVersion = other.clientVersion;
+    state = other.state;
+    caps = other.caps;
+    textureCaps = other.textureCaps;
+    extensions = other.extensions;
+    resourceManager = other.resourceManager;
+    return *this;
+}
+
+}