2010-05-09  Kenneth Russell  <kbr@google.com>

        Reviewed by Dimitri Glazkov.

        Refactor WebGLArray types to share more code
        https://bugs.webkit.org/show_bug.cgi?id=37712

        Refactored WebGLArray types for maximal code sharing. Added
        WebGLTypedArrayBase and WebGLIntegralTypedArrayBase template
        superclasses. Changed overridden virtuals to have minimal
        visibility (private instead of public). Fixed const correctness of
        a few methods. There are no changes to the public APIs of the
        WebGLArray classes; the JavaScript bindings are unchanged.

        No new tests; existing tests cover this functionality. Ran all
        WebGL layout tests in Safari and Chromium on Mac OS X.

        * WebCore.gypi:
        * WebCore.xcodeproj/project.pbxproj:
        * html/canvas/WebGLArray.h:
        (WebCore::WebGLArray::buffer):
        (WebCore::WebGLArray::baseAddress):
        (WebCore::WebGLArray::byteOffset):
        * html/canvas/WebGLByteArray.cpp:
        (WebCore::WebGLByteArray::create):
        (WebCore::WebGLByteArray::WebGLByteArray):
        (WebCore::WebGLByteArray::slice):
        * html/canvas/WebGLByteArray.h:
        (WebCore::WebGLByteArray::isByteArray):
        * html/canvas/WebGLFloatArray.cpp:
        (WebCore::WebGLFloatArray::create):
        (WebCore::WebGLFloatArray::WebGLFloatArray):
        (WebCore::WebGLFloatArray::slice):
        * html/canvas/WebGLFloatArray.h:
        (WebCore::WebGLFloatArray::set):
        (WebCore::WebGLFloatArray::item):
        (WebCore::WebGLFloatArray::isFloatArray):
        * html/canvas/WebGLIntArray.cpp:
        (WebCore::WebGLIntArray::create):
        (WebCore::WebGLIntArray::WebGLIntArray):
        (WebCore::WebGLIntArray::slice):
        * html/canvas/WebGLIntArray.h:
        (WebCore::WebGLIntArray::isIntArray):
        * html/canvas/WebGLIntegralTypedArrayBase.h: Added.
        (WebCore::WebGLIntegralTypedArrayBase::set):
        (WebCore::WebGLIntegralTypedArrayBase::item):
        (WebCore::WebGLIntegralTypedArrayBase::WebGLIntegralTypedArrayBase):
        * html/canvas/WebGLShortArray.cpp:
        (WebCore::WebGLShortArray::create):
        (WebCore::WebGLShortArray::WebGLShortArray):
        (WebCore::WebGLShortArray::slice):
        * html/canvas/WebGLShortArray.h:
        (WebCore::WebGLShortArray::isShortArray):
        * html/canvas/WebGLTypedArrayBase.h: Added.
        (WebCore::WebGLTypedArrayBase::data):
        (WebCore::WebGLTypedArrayBase::set):
        (WebCore::WebGLTypedArrayBase::length):
        (WebCore::WebGLTypedArrayBase::WebGLTypedArrayBase):
        (WebCore::WebGLTypedArrayBase::create):
        (WebCore::WebGLTypedArrayBase::sliceImpl):
        (WebCore::WebGLTypedArrayBase::byteLength):
        * html/canvas/WebGLUnsignedByteArray.cpp:
        (WebCore::WebGLUnsignedByteArray::create):
        (WebCore::WebGLUnsignedByteArray::WebGLUnsignedByteArray):
        (WebCore::WebGLUnsignedByteArray::slice):
        * html/canvas/WebGLUnsignedByteArray.h:
        (WebCore::WebGLUnsignedByteArray::isUnsignedByteArray):
        * html/canvas/WebGLUnsignedIntArray.cpp:
        (WebCore::WebGLUnsignedIntArray::create):
        (WebCore::WebGLUnsignedIntArray::WebGLUnsignedIntArray):
        (WebCore::WebGLUnsignedIntArray::slice):
        * html/canvas/WebGLUnsignedIntArray.h:
        (WebCore::WebGLUnsignedIntArray::isUnsignedIntArray):
        * html/canvas/WebGLUnsignedShortArray.cpp:
        (WebCore::WebGLUnsignedShortArray::create):
        (WebCore::WebGLUnsignedShortArray::WebGLUnsignedShortArray):
        (WebCore::WebGLUnsignedShortArray::slice):
        * html/canvas/WebGLUnsignedShortArray.h:
        (WebCore::WebGLUnsignedShortArray::isUnsignedShortArray):



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@59085 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebCore/html/canvas/WebGLArray.h b/WebCore/html/canvas/WebGLArray.h
index 7d67474..7f25703f 100644
--- a/WebCore/html/canvas/WebGLArray.h
+++ b/WebCore/html/canvas/WebGLArray.h
@@ -46,21 +46,24 @@
     virtual bool isUnsignedIntArray() const { return false; }
     virtual bool isFloatArray() const { return false; }
 
-    PassRefPtr<WebGLArrayBuffer> buffer() {
+    PassRefPtr<WebGLArrayBuffer> buffer() const
+    {
         return m_buffer;
     }
 
-    void* baseAddress() {
+    void* baseAddress() const
+    {
         return m_baseAddress;
     }
 
-    unsigned byteOffset() const {
+    unsigned byteOffset() const
+    {
         return m_byteOffset;
     }
 
     virtual unsigned length() const = 0;
     virtual unsigned byteLength() const = 0;
-    virtual PassRefPtr<WebGLArray> slice(int start, int end) = 0;
+    virtual PassRefPtr<WebGLArray> slice(int start, int end) const = 0;
 
     virtual ~WebGLArray();
 
@@ -69,8 +72,8 @@
 
     void setImpl(WebGLArray* array, unsigned byteOffset, ExceptionCode& ec);
 
-    void calculateOffsetAndLength(int start, int end, unsigned arraySize,
-                                  unsigned* offset, unsigned* length);
+    static void calculateOffsetAndLength(int start, int end, unsigned arraySize,
+                                         unsigned* offset, unsigned* length);
 
     // Helper to verify that a given sub-range of an ArrayBuffer is
     // within range.