/*
 * DO NOT EDIT.  THIS FILE IS GENERATED FROM e:/builds/moz2_slave/mozilla-central-win32-xulrunner/build/dom/interfaces/canvas/nsICanvasRenderingContextWebGL.idl
 */

#ifndef __gen_nsICanvasRenderingContextWebGL_h__
#define __gen_nsICanvasRenderingContextWebGL_h__


#ifndef __gen_nsISupports_h__
#include "nsISupports.h"
#endif

/* For IDL files that don't want to include root IDL files. */
#ifndef NS_NO_VTABLE
#define NS_NO_VTABLE
#endif
class nsIDOMHTMLCanvasElement; /* forward declaration */

typedef PRUint32 GLenum;

typedef PRUint8 GLboolean;

typedef PRUint32 GLbitfield;

typedef PRInt16 GLshort;

typedef PRInt32 GLint;

typedef PRInt32 GLsizei;

typedef PRUint8 GLubyte;

typedef PRUint16 GLushort;

typedef PRUint32 GLuint;

typedef float GLfloat;

typedef float GLclampf;

typedef PRInt32 GLfixed;

typedef PRInt32 GLsizeiptr;

namespace mozilla {
    class WebGLArrayBuffer;
}

/* starting interface:    nsIWebGLArrayBuffer */
#define NS_IWEBGLARRAYBUFFER_IID_STR "34b6cf8e-47da-458e-ab42-0451a3533ee5"

#define NS_IWEBGLARRAYBUFFER_IID \
  {0x34b6cf8e, 0x47da, 0x458e, \
    { 0xab, 0x42, 0x04, 0x51, 0xa3, 0x53, 0x3e, 0xe5 }}

class NS_NO_VTABLE NS_SCRIPTABLE nsIWebGLArrayBuffer : public nsISupports {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IWEBGLARRAYBUFFER_IID)

  /* readonly attribute unsigned long byteLength; */
  NS_SCRIPTABLE NS_IMETHOD GetByteLength(PRUint32 *aByteLength) = 0;

  /* [noscript, notxpcom] WebGLArrayBufferPtr GetNativeArrayBuffer (); */
  NS_IMETHOD_(mozilla::WebGLArrayBuffer *) GetNativeArrayBuffer(void) = 0;

  /* [noscript, notxpcom] voidPtr nativePointer (); */
  NS_IMETHOD_(void *) NativePointer(void) = 0;

  /* [noscript, notxpcom] unsigned long nativeSize (); */
  NS_IMETHOD_(PRUint32) NativeSize(void) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIWebGLArrayBuffer, NS_IWEBGLARRAYBUFFER_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIWEBGLARRAYBUFFER \
  NS_SCRIPTABLE NS_IMETHOD GetByteLength(PRUint32 *aByteLength); \
  NS_IMETHOD_(mozilla::WebGLArrayBuffer *) GetNativeArrayBuffer(void); \
  NS_IMETHOD_(void *) NativePointer(void); \
  NS_IMETHOD_(PRUint32) NativeSize(void); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIWEBGLARRAYBUFFER(_to) \
  NS_SCRIPTABLE NS_IMETHOD GetByteLength(PRUint32 *aByteLength) { return _to GetByteLength(aByteLength); } \
  NS_IMETHOD_(mozilla::WebGLArrayBuffer *) GetNativeArrayBuffer(void) { return _to GetNativeArrayBuffer(); } \
  NS_IMETHOD_(void *) NativePointer(void) { return _to NativePointer(); } \
  NS_IMETHOD_(PRUint32) NativeSize(void) { return _to NativeSize(); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIWEBGLARRAYBUFFER(_to) \
  NS_SCRIPTABLE NS_IMETHOD GetByteLength(PRUint32 *aByteLength) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetByteLength(aByteLength); } \
  NS_IMETHOD_(mozilla::WebGLArrayBuffer *) GetNativeArrayBuffer(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNativeArrayBuffer(); } \
  NS_IMETHOD_(void *) NativePointer(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->NativePointer(); } \
  NS_IMETHOD_(PRUint32) NativeSize(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->NativeSize(); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class nsWebGLArrayBuffer : public nsIWebGLArrayBuffer
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIWEBGLARRAYBUFFER

  nsWebGLArrayBuffer();

private:
  ~nsWebGLArrayBuffer();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsWebGLArrayBuffer, nsIWebGLArrayBuffer)

nsWebGLArrayBuffer::nsWebGLArrayBuffer()
{
  /* member initializers and constructor code */
}

nsWebGLArrayBuffer::~nsWebGLArrayBuffer()
{
  /* destructor code */
}

/* readonly attribute unsigned long byteLength; */
NS_IMETHODIMP nsWebGLArrayBuffer::GetByteLength(PRUint32 *aByteLength)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript, notxpcom] WebGLArrayBufferPtr GetNativeArrayBuffer (); */
NS_IMETHODIMP_(mozilla::WebGLArrayBuffer *) nsWebGLArrayBuffer::GetNativeArrayBuffer()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript, notxpcom] voidPtr nativePointer (); */
NS_IMETHODIMP_(void *) nsWebGLArrayBuffer::NativePointer()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript, notxpcom] unsigned long nativeSize (); */
NS_IMETHODIMP_(PRUint32) nsWebGLArrayBuffer::NativeSize()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif


/* starting interface:    nsIWebGLArray */
#define NS_IWEBGLARRAY_IID_STR "84ba4e98-8173-7c10-dca0-b5ba7809fcf3"

#define NS_IWEBGLARRAY_IID \
  {0x84ba4e98, 0x8173, 0x7c10, \
    { 0xdc, 0xa0, 0xb5, 0xba, 0x78, 0x09, 0xfc, 0xf3 }}

class NS_NO_VTABLE NS_SCRIPTABLE nsIWebGLArray : public nsISupports {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IWEBGLARRAY_IID)

  /* readonly attribute nsIWebGLArrayBuffer buffer; */
  NS_SCRIPTABLE NS_IMETHOD GetBuffer(nsIWebGLArrayBuffer * *aBuffer) = 0;

  /* readonly attribute unsigned long byteOffset; */
  NS_SCRIPTABLE NS_IMETHOD GetByteOffset(PRUint32 *aByteOffset) = 0;

  /* readonly attribute unsigned long byteLength; */
  NS_SCRIPTABLE NS_IMETHOD GetByteLength(PRUint32 *aByteLength) = 0;

  /* readonly attribute unsigned long length; */
  NS_SCRIPTABLE NS_IMETHOD GetLength(PRUint32 *aLength) = 0;

  /* unsigned long alignedSizeInBytes (); */
  NS_SCRIPTABLE NS_IMETHOD AlignedSizeInBytes(PRUint32 *_retval NS_OUTPARAM) = 0;

  /* nsIWebGLArray slice (in unsigned long offset, in unsigned long length); */
  NS_SCRIPTABLE NS_IMETHOD Slice(PRUint32 offset, PRUint32 length, nsIWebGLArray **_retval NS_OUTPARAM) = 0;

  /* [noscript, notxpcom] unsigned long nativeType (); */
  NS_IMETHOD_(PRUint32) NativeType(void) = 0;

  /* [noscript, notxpcom] voidPtr nativePointer (); */
  NS_IMETHOD_(void *) NativePointer(void) = 0;

  /* [noscript, notxpcom] unsigned long nativeSize (); */
  NS_IMETHOD_(PRUint32) NativeSize(void) = 0;

  /* [noscript, notxpcom] unsigned long nativeElementSize (); */
  NS_IMETHOD_(PRUint32) NativeElementSize(void) = 0;

  /* [noscript, notxpcom] unsigned long nativeCount (); */
  NS_IMETHOD_(PRUint32) NativeCount(void) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIWebGLArray, NS_IWEBGLARRAY_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIWEBGLARRAY \
  NS_SCRIPTABLE NS_IMETHOD GetBuffer(nsIWebGLArrayBuffer * *aBuffer); \
  NS_SCRIPTABLE NS_IMETHOD GetByteOffset(PRUint32 *aByteOffset); \
  NS_SCRIPTABLE NS_IMETHOD GetByteLength(PRUint32 *aByteLength); \
  NS_SCRIPTABLE NS_IMETHOD GetLength(PRUint32 *aLength); \
  NS_SCRIPTABLE NS_IMETHOD AlignedSizeInBytes(PRUint32 *_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD Slice(PRUint32 offset, PRUint32 length, nsIWebGLArray **_retval NS_OUTPARAM); \
  NS_IMETHOD_(PRUint32) NativeType(void); \
  NS_IMETHOD_(void *) NativePointer(void); \
  NS_IMETHOD_(PRUint32) NativeSize(void); \
  NS_IMETHOD_(PRUint32) NativeElementSize(void); \
  NS_IMETHOD_(PRUint32) NativeCount(void); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIWEBGLARRAY(_to) \
  NS_SCRIPTABLE NS_IMETHOD GetBuffer(nsIWebGLArrayBuffer * *aBuffer) { return _to GetBuffer(aBuffer); } \
  NS_SCRIPTABLE NS_IMETHOD GetByteOffset(PRUint32 *aByteOffset) { return _to GetByteOffset(aByteOffset); } \
  NS_SCRIPTABLE NS_IMETHOD GetByteLength(PRUint32 *aByteLength) { return _to GetByteLength(aByteLength); } \
  NS_SCRIPTABLE NS_IMETHOD GetLength(PRUint32 *aLength) { return _to GetLength(aLength); } \
  NS_SCRIPTABLE NS_IMETHOD AlignedSizeInBytes(PRUint32 *_retval NS_OUTPARAM) { return _to AlignedSizeInBytes(_retval); } \
  NS_SCRIPTABLE NS_IMETHOD Slice(PRUint32 offset, PRUint32 length, nsIWebGLArray **_retval NS_OUTPARAM) { return _to Slice(offset, length, _retval); } \
  NS_IMETHOD_(PRUint32) NativeType(void) { return _to NativeType(); } \
  NS_IMETHOD_(void *) NativePointer(void) { return _to NativePointer(); } \
  NS_IMETHOD_(PRUint32) NativeSize(void) { return _to NativeSize(); } \
  NS_IMETHOD_(PRUint32) NativeElementSize(void) { return _to NativeElementSize(); } \
  NS_IMETHOD_(PRUint32) NativeCount(void) { return _to NativeCount(); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIWEBGLARRAY(_to) \
  NS_SCRIPTABLE NS_IMETHOD GetBuffer(nsIWebGLArrayBuffer * *aBuffer) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBuffer(aBuffer); } \
  NS_SCRIPTABLE NS_IMETHOD GetByteOffset(PRUint32 *aByteOffset) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetByteOffset(aByteOffset); } \
  NS_SCRIPTABLE NS_IMETHOD GetByteLength(PRUint32 *aByteLength) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetByteLength(aByteLength); } \
  NS_SCRIPTABLE NS_IMETHOD GetLength(PRUint32 *aLength) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLength(aLength); } \
  NS_SCRIPTABLE NS_IMETHOD AlignedSizeInBytes(PRUint32 *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->AlignedSizeInBytes(_retval); } \
  NS_SCRIPTABLE NS_IMETHOD Slice(PRUint32 offset, PRUint32 length, nsIWebGLArray **_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->Slice(offset, length, _retval); } \
  NS_IMETHOD_(PRUint32) NativeType(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->NativeType(); } \
  NS_IMETHOD_(void *) NativePointer(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->NativePointer(); } \
  NS_IMETHOD_(PRUint32) NativeSize(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->NativeSize(); } \
  NS_IMETHOD_(PRUint32) NativeElementSize(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->NativeElementSize(); } \
  NS_IMETHOD_(PRUint32) NativeCount(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->NativeCount(); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class nsWebGLArray : public nsIWebGLArray
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIWEBGLARRAY

  nsWebGLArray();

private:
  ~nsWebGLArray();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsWebGLArray, nsIWebGLArray)

nsWebGLArray::nsWebGLArray()
{
  /* member initializers and constructor code */
}

nsWebGLArray::~nsWebGLArray()
{
  /* destructor code */
}

/* readonly attribute nsIWebGLArrayBuffer buffer; */
NS_IMETHODIMP nsWebGLArray::GetBuffer(nsIWebGLArrayBuffer * *aBuffer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long byteOffset; */
NS_IMETHODIMP nsWebGLArray::GetByteOffset(PRUint32 *aByteOffset)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long byteLength; */
NS_IMETHODIMP nsWebGLArray::GetByteLength(PRUint32 *aByteLength)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long length; */
NS_IMETHODIMP nsWebGLArray::GetLength(PRUint32 *aLength)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* unsigned long alignedSizeInBytes (); */
NS_IMETHODIMP nsWebGLArray::AlignedSizeInBytes(PRUint32 *_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIWebGLArray slice (in unsigned long offset, in unsigned long length); */
NS_IMETHODIMP nsWebGLArray::Slice(PRUint32 offset, PRUint32 length, nsIWebGLArray **_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript, notxpcom] unsigned long nativeType (); */
NS_IMETHODIMP_(PRUint32) nsWebGLArray::NativeType()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript, notxpcom] voidPtr nativePointer (); */
NS_IMETHODIMP_(void *) nsWebGLArray::NativePointer()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript, notxpcom] unsigned long nativeSize (); */
NS_IMETHODIMP_(PRUint32) nsWebGLArray::NativeSize()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript, notxpcom] unsigned long nativeElementSize (); */
NS_IMETHODIMP_(PRUint32) nsWebGLArray::NativeElementSize()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript, notxpcom] unsigned long nativeCount (); */
NS_IMETHODIMP_(PRUint32) nsWebGLArray::NativeCount()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif


/* starting interface:    nsIWebGLFloatArray */
#define NS_IWEBGLFLOATARRAY_IID_STR "0f6d0e7b-bcfc-9305-6a1d-a9653b5e8c80"

#define NS_IWEBGLFLOATARRAY_IID \
  {0x0f6d0e7b, 0xbcfc, 0x9305, \
    { 0x6a, 0x1d, 0xa9, 0x65, 0x3b, 0x5e, 0x8c, 0x80 }}

class NS_NO_VTABLE NS_SCRIPTABLE nsIWebGLFloatArray : public nsIWebGLArray {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IWEBGLFLOATARRAY_IID)

  /* [IndexGetter] float get (in unsigned long index); */
  NS_SCRIPTABLE NS_IMETHOD Get(PRUint32 index, float *_retval NS_OUTPARAM) = 0;

  /* void set (); */
  NS_SCRIPTABLE NS_IMETHOD Set(void) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIWebGLFloatArray, NS_IWEBGLFLOATARRAY_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIWEBGLFLOATARRAY \
  NS_SCRIPTABLE NS_IMETHOD Get(PRUint32 index, float *_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD Set(void); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIWEBGLFLOATARRAY(_to) \
  NS_SCRIPTABLE NS_IMETHOD Get(PRUint32 index, float *_retval NS_OUTPARAM) { return _to Get(index, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD Set(void) { return _to Set(); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIWEBGLFLOATARRAY(_to) \
  NS_SCRIPTABLE NS_IMETHOD Get(PRUint32 index, float *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->Get(index, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD Set(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Set(); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class nsWebGLFloatArray : public nsIWebGLFloatArray
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIWEBGLFLOATARRAY

  nsWebGLFloatArray();

private:
  ~nsWebGLFloatArray();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsWebGLFloatArray, nsIWebGLFloatArray)

nsWebGLFloatArray::nsWebGLFloatArray()
{
  /* member initializers and constructor code */
}

nsWebGLFloatArray::~nsWebGLFloatArray()
{
  /* destructor code */
}

/* [IndexGetter] float get (in unsigned long index); */
NS_IMETHODIMP nsWebGLFloatArray::Get(PRUint32 index, float *_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void set (); */
NS_IMETHODIMP nsWebGLFloatArray::Set()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif


/* starting interface:    nsIWebGLByteArray */
#define NS_IWEBGLBYTEARRAY_IID_STR "b29db7cf-fa58-435f-8d45-611cc50979ad"

#define NS_IWEBGLBYTEARRAY_IID \
  {0xb29db7cf, 0xfa58, 0x435f, \
    { 0x8d, 0x45, 0x61, 0x1c, 0xc5, 0x09, 0x79, 0xad }}

class NS_NO_VTABLE NS_SCRIPTABLE nsIWebGLByteArray : public nsIWebGLArray {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IWEBGLBYTEARRAY_IID)

  /* [IndexGetter] long get (in unsigned long index); */
  NS_SCRIPTABLE NS_IMETHOD Get(PRUint32 index, PRInt32 *_retval NS_OUTPARAM) = 0;

  /* void set (); */
  NS_SCRIPTABLE NS_IMETHOD Set(void) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIWebGLByteArray, NS_IWEBGLBYTEARRAY_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIWEBGLBYTEARRAY \
  NS_SCRIPTABLE NS_IMETHOD Get(PRUint32 index, PRInt32 *_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD Set(void); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIWEBGLBYTEARRAY(_to) \
  NS_SCRIPTABLE NS_IMETHOD Get(PRUint32 index, PRInt32 *_retval NS_OUTPARAM) { return _to Get(index, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD Set(void) { return _to Set(); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIWEBGLBYTEARRAY(_to) \
  NS_SCRIPTABLE NS_IMETHOD Get(PRUint32 index, PRInt32 *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->Get(index, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD Set(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Set(); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class nsWebGLByteArray : public nsIWebGLByteArray
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIWEBGLBYTEARRAY

  nsWebGLByteArray();

private:
  ~nsWebGLByteArray();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsWebGLByteArray, nsIWebGLByteArray)

nsWebGLByteArray::nsWebGLByteArray()
{
  /* member initializers and constructor code */
}

nsWebGLByteArray::~nsWebGLByteArray()
{
  /* destructor code */
}

/* [IndexGetter] long get (in unsigned long index); */
NS_IMETHODIMP nsWebGLByteArray::Get(PRUint32 index, PRInt32 *_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void set (); */
NS_IMETHODIMP nsWebGLByteArray::Set()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif


/* starting interface:    nsIWebGLUnsignedByteArray */
#define NS_IWEBGLUNSIGNEDBYTEARRAY_IID_STR "3daa67fa-e743-2cbd-a212-805c2fc520cc"

#define NS_IWEBGLUNSIGNEDBYTEARRAY_IID \
  {0x3daa67fa, 0xe743, 0x2cbd, \
    { 0xa2, 0x12, 0x80, 0x5c, 0x2f, 0xc5, 0x20, 0xcc }}

class NS_NO_VTABLE NS_SCRIPTABLE nsIWebGLUnsignedByteArray : public nsIWebGLArray {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IWEBGLUNSIGNEDBYTEARRAY_IID)

  /* [IndexGetter] unsigned long get (in unsigned long index); */
  NS_SCRIPTABLE NS_IMETHOD Get(PRUint32 index, PRUint32 *_retval NS_OUTPARAM) = 0;

  /* void set (); */
  NS_SCRIPTABLE NS_IMETHOD Set(void) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIWebGLUnsignedByteArray, NS_IWEBGLUNSIGNEDBYTEARRAY_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIWEBGLUNSIGNEDBYTEARRAY \
  NS_SCRIPTABLE NS_IMETHOD Get(PRUint32 index, PRUint32 *_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD Set(void); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIWEBGLUNSIGNEDBYTEARRAY(_to) \
  NS_SCRIPTABLE NS_IMETHOD Get(PRUint32 index, PRUint32 *_retval NS_OUTPARAM) { return _to Get(index, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD Set(void) { return _to Set(); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIWEBGLUNSIGNEDBYTEARRAY(_to) \
  NS_SCRIPTABLE NS_IMETHOD Get(PRUint32 index, PRUint32 *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->Get(index, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD Set(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Set(); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class nsWebGLUnsignedByteArray : public nsIWebGLUnsignedByteArray
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIWEBGLUNSIGNEDBYTEARRAY

  nsWebGLUnsignedByteArray();

private:
  ~nsWebGLUnsignedByteArray();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsWebGLUnsignedByteArray, nsIWebGLUnsignedByteArray)

nsWebGLUnsignedByteArray::nsWebGLUnsignedByteArray()
{
  /* member initializers and constructor code */
}

nsWebGLUnsignedByteArray::~nsWebGLUnsignedByteArray()
{
  /* destructor code */
}

/* [IndexGetter] unsigned long get (in unsigned long index); */
NS_IMETHODIMP nsWebGLUnsignedByteArray::Get(PRUint32 index, PRUint32 *_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void set (); */
NS_IMETHODIMP nsWebGLUnsignedByteArray::Set()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif


/* starting interface:    nsIWebGLShortArray */
#define NS_IWEBGLSHORTARRAY_IID_STR "a8a982e3-3977-7364-f012-c497a5ab7681"

#define NS_IWEBGLSHORTARRAY_IID \
  {0xa8a982e3, 0x3977, 0x7364, \
    { 0xf0, 0x12, 0xc4, 0x97, 0xa5, 0xab, 0x76, 0x81 }}

class NS_NO_VTABLE NS_SCRIPTABLE nsIWebGLShortArray : public nsIWebGLArray {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IWEBGLSHORTARRAY_IID)

  /* [IndexGetter] long get (in unsigned long index); */
  NS_SCRIPTABLE NS_IMETHOD Get(PRUint32 index, PRInt32 *_retval NS_OUTPARAM) = 0;

  /* void set (); */
  NS_SCRIPTABLE NS_IMETHOD Set(void) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIWebGLShortArray, NS_IWEBGLSHORTARRAY_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIWEBGLSHORTARRAY \
  NS_SCRIPTABLE NS_IMETHOD Get(PRUint32 index, PRInt32 *_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD Set(void); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIWEBGLSHORTARRAY(_to) \
  NS_SCRIPTABLE NS_IMETHOD Get(PRUint32 index, PRInt32 *_retval NS_OUTPARAM) { return _to Get(index, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD Set(void) { return _to Set(); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIWEBGLSHORTARRAY(_to) \
  NS_SCRIPTABLE NS_IMETHOD Get(PRUint32 index, PRInt32 *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->Get(index, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD Set(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Set(); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class nsWebGLShortArray : public nsIWebGLShortArray
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIWEBGLSHORTARRAY

  nsWebGLShortArray();

private:
  ~nsWebGLShortArray();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsWebGLShortArray, nsIWebGLShortArray)

nsWebGLShortArray::nsWebGLShortArray()
{
  /* member initializers and constructor code */
}

nsWebGLShortArray::~nsWebGLShortArray()
{
  /* destructor code */
}

/* [IndexGetter] long get (in unsigned long index); */
NS_IMETHODIMP nsWebGLShortArray::Get(PRUint32 index, PRInt32 *_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void set (); */
NS_IMETHODIMP nsWebGLShortArray::Set()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif


/* starting interface:    nsIWebGLUnsignedShortArray */
#define NS_IWEBGLUNSIGNEDSHORTARRAY_IID_STR "8b9c67cc-c7be-a062-84b0-76a910a5c1e6"

#define NS_IWEBGLUNSIGNEDSHORTARRAY_IID \
  {0x8b9c67cc, 0xc7be, 0xa062, \
    { 0x84, 0xb0, 0x76, 0xa9, 0x10, 0xa5, 0xc1, 0xe6 }}

class NS_NO_VTABLE NS_SCRIPTABLE nsIWebGLUnsignedShortArray : public nsIWebGLArray {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IWEBGLUNSIGNEDSHORTARRAY_IID)

  /* [IndexGetter] unsigned long get (in unsigned long index); */
  NS_SCRIPTABLE NS_IMETHOD Get(PRUint32 index, PRUint32 *_retval NS_OUTPARAM) = 0;

  /* void set (); */
  NS_SCRIPTABLE NS_IMETHOD Set(void) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIWebGLUnsignedShortArray, NS_IWEBGLUNSIGNEDSHORTARRAY_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIWEBGLUNSIGNEDSHORTARRAY \
  NS_SCRIPTABLE NS_IMETHOD Get(PRUint32 index, PRUint32 *_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD Set(void); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIWEBGLUNSIGNEDSHORTARRAY(_to) \
  NS_SCRIPTABLE NS_IMETHOD Get(PRUint32 index, PRUint32 *_retval NS_OUTPARAM) { return _to Get(index, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD Set(void) { return _to Set(); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIWEBGLUNSIGNEDSHORTARRAY(_to) \
  NS_SCRIPTABLE NS_IMETHOD Get(PRUint32 index, PRUint32 *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->Get(index, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD Set(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Set(); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class nsWebGLUnsignedShortArray : public nsIWebGLUnsignedShortArray
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIWEBGLUNSIGNEDSHORTARRAY

  nsWebGLUnsignedShortArray();

private:
  ~nsWebGLUnsignedShortArray();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsWebGLUnsignedShortArray, nsIWebGLUnsignedShortArray)

nsWebGLUnsignedShortArray::nsWebGLUnsignedShortArray()
{
  /* member initializers and constructor code */
}

nsWebGLUnsignedShortArray::~nsWebGLUnsignedShortArray()
{
  /* destructor code */
}

/* [IndexGetter] unsigned long get (in unsigned long index); */
NS_IMETHODIMP nsWebGLUnsignedShortArray::Get(PRUint32 index, PRUint32 *_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void set (); */
NS_IMETHODIMP nsWebGLUnsignedShortArray::Set()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif


/* starting interface:    nsIWebGLIntArray */
#define NS_IWEBGLINTARRAY_IID_STR "b9b2e861-3a28-4311-993c-799e4f77dcba"

#define NS_IWEBGLINTARRAY_IID \
  {0xb9b2e861, 0x3a28, 0x4311, \
    { 0x99, 0x3c, 0x79, 0x9e, 0x4f, 0x77, 0xdc, 0xba }}

class NS_NO_VTABLE NS_SCRIPTABLE nsIWebGLIntArray : public nsIWebGLArray {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IWEBGLINTARRAY_IID)

  /* [IndexGetter] long get (in unsigned long index); */
  NS_SCRIPTABLE NS_IMETHOD Get(PRUint32 index, PRInt32 *_retval NS_OUTPARAM) = 0;

  /* void set (); */
  NS_SCRIPTABLE NS_IMETHOD Set(void) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIWebGLIntArray, NS_IWEBGLINTARRAY_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIWEBGLINTARRAY \
  NS_SCRIPTABLE NS_IMETHOD Get(PRUint32 index, PRInt32 *_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD Set(void); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIWEBGLINTARRAY(_to) \
  NS_SCRIPTABLE NS_IMETHOD Get(PRUint32 index, PRInt32 *_retval NS_OUTPARAM) { return _to Get(index, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD Set(void) { return _to Set(); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIWEBGLINTARRAY(_to) \
  NS_SCRIPTABLE NS_IMETHOD Get(PRUint32 index, PRInt32 *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->Get(index, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD Set(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Set(); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class nsWebGLIntArray : public nsIWebGLIntArray
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIWEBGLINTARRAY

  nsWebGLIntArray();

private:
  ~nsWebGLIntArray();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsWebGLIntArray, nsIWebGLIntArray)

nsWebGLIntArray::nsWebGLIntArray()
{
  /* member initializers and constructor code */
}

nsWebGLIntArray::~nsWebGLIntArray()
{
  /* destructor code */
}

/* [IndexGetter] long get (in unsigned long index); */
NS_IMETHODIMP nsWebGLIntArray::Get(PRUint32 index, PRInt32 *_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void set (); */
NS_IMETHODIMP nsWebGLIntArray::Set()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif


/* starting interface:    nsIWebGLUnsignedIntArray */
#define NS_IWEBGLUNSIGNEDINTARRAY_IID_STR "0d6ee3f8-71b6-460d-b05a-d579cc55edbe"

#define NS_IWEBGLUNSIGNEDINTARRAY_IID \
  {0x0d6ee3f8, 0x71b6, 0x460d, \
    { 0xb0, 0x5a, 0xd5, 0x79, 0xcc, 0x55, 0xed, 0xbe }}

class NS_NO_VTABLE NS_SCRIPTABLE nsIWebGLUnsignedIntArray : public nsIWebGLArray {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IWEBGLUNSIGNEDINTARRAY_IID)

  /* [IndexGetter] unsigned long get (in unsigned long index); */
  NS_SCRIPTABLE NS_IMETHOD Get(PRUint32 index, PRUint32 *_retval NS_OUTPARAM) = 0;

  /* void set (); */
  NS_SCRIPTABLE NS_IMETHOD Set(void) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIWebGLUnsignedIntArray, NS_IWEBGLUNSIGNEDINTARRAY_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIWEBGLUNSIGNEDINTARRAY \
  NS_SCRIPTABLE NS_IMETHOD Get(PRUint32 index, PRUint32 *_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD Set(void); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIWEBGLUNSIGNEDINTARRAY(_to) \
  NS_SCRIPTABLE NS_IMETHOD Get(PRUint32 index, PRUint32 *_retval NS_OUTPARAM) { return _to Get(index, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD Set(void) { return _to Set(); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIWEBGLUNSIGNEDINTARRAY(_to) \
  NS_SCRIPTABLE NS_IMETHOD Get(PRUint32 index, PRUint32 *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->Get(index, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD Set(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Set(); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class nsWebGLUnsignedIntArray : public nsIWebGLUnsignedIntArray
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIWEBGLUNSIGNEDINTARRAY

  nsWebGLUnsignedIntArray();

private:
  ~nsWebGLUnsignedIntArray();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsWebGLUnsignedIntArray, nsIWebGLUnsignedIntArray)

nsWebGLUnsignedIntArray::nsWebGLUnsignedIntArray()
{
  /* member initializers and constructor code */
}

nsWebGLUnsignedIntArray::~nsWebGLUnsignedIntArray()
{
  /* destructor code */
}

/* [IndexGetter] unsigned long get (in unsigned long index); */
NS_IMETHODIMP nsWebGLUnsignedIntArray::Get(PRUint32 index, PRUint32 *_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void set (); */
NS_IMETHODIMP nsWebGLUnsignedIntArray::Set()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif


/* starting interface:    nsIWebGLTexture */
#define NS_IWEBGLTEXTURE_IID_STR "3b43762a-8305-11de-98ab-000c29206271"

#define NS_IWEBGLTEXTURE_IID \
  {0x3b43762a, 0x8305, 0x11de, \
    { 0x98, 0xab, 0x00, 0x0c, 0x29, 0x20, 0x62, 0x71 }}

class NS_NO_VTABLE NS_SCRIPTABLE nsIWebGLTexture : public nsISupports {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IWEBGLTEXTURE_IID)

  /* [noscript] attribute GLuint name; */
  NS_IMETHOD GetName(GLuint *aName) = 0;
  NS_IMETHOD SetName(GLuint aName) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIWebGLTexture, NS_IWEBGLTEXTURE_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIWEBGLTEXTURE \
  NS_IMETHOD GetName(GLuint *aName); \
  NS_IMETHOD SetName(GLuint aName); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIWEBGLTEXTURE(_to) \
  NS_IMETHOD GetName(GLuint *aName) { return _to GetName(aName); } \
  NS_IMETHOD SetName(GLuint aName) { return _to SetName(aName); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIWEBGLTEXTURE(_to) \
  NS_IMETHOD GetName(GLuint *aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetName(aName); } \
  NS_IMETHOD SetName(GLuint aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetName(aName); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class nsWebGLTexture : public nsIWebGLTexture
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIWEBGLTEXTURE

  nsWebGLTexture();

private:
  ~nsWebGLTexture();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsWebGLTexture, nsIWebGLTexture)

nsWebGLTexture::nsWebGLTexture()
{
  /* member initializers and constructor code */
}

nsWebGLTexture::~nsWebGLTexture()
{
  /* destructor code */
}

/* [noscript] attribute GLuint name; */
NS_IMETHODIMP nsWebGLTexture::GetName(GLuint *aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsWebGLTexture::SetName(GLuint aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif


/* starting interface:    nsIWebGLBuffer */
#define NS_IWEBGLBUFFER_IID_STR "9eca9c32-8305-11de-b89b-000c29206271"

#define NS_IWEBGLBUFFER_IID \
  {0x9eca9c32, 0x8305, 0x11de, \
    { 0xb8, 0x9b, 0x00, 0x0c, 0x29, 0x20, 0x62, 0x71 }}

class NS_NO_VTABLE NS_SCRIPTABLE nsIWebGLBuffer : public nsISupports {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IWEBGLBUFFER_IID)

  /* [noscript] attribute GLuint name; */
  NS_IMETHOD GetName(GLuint *aName) = 0;
  NS_IMETHOD SetName(GLuint aName) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIWebGLBuffer, NS_IWEBGLBUFFER_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIWEBGLBUFFER \
  NS_IMETHOD GetName(GLuint *aName); \
  NS_IMETHOD SetName(GLuint aName); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIWEBGLBUFFER(_to) \
  NS_IMETHOD GetName(GLuint *aName) { return _to GetName(aName); } \
  NS_IMETHOD SetName(GLuint aName) { return _to SetName(aName); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIWEBGLBUFFER(_to) \
  NS_IMETHOD GetName(GLuint *aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetName(aName); } \
  NS_IMETHOD SetName(GLuint aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetName(aName); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class nsWebGLBuffer : public nsIWebGLBuffer
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIWEBGLBUFFER

  nsWebGLBuffer();

private:
  ~nsWebGLBuffer();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsWebGLBuffer, nsIWebGLBuffer)

nsWebGLBuffer::nsWebGLBuffer()
{
  /* member initializers and constructor code */
}

nsWebGLBuffer::~nsWebGLBuffer()
{
  /* destructor code */
}

/* [noscript] attribute GLuint name; */
NS_IMETHODIMP nsWebGLBuffer::GetName(GLuint *aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsWebGLBuffer::SetName(GLuint aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif


/* starting interface:    nsIWebGLProgram */
#define NS_IWEBGLPROGRAM_IID_STR "a6a19e74-8305-11de-9ce9-000c29206271"

#define NS_IWEBGLPROGRAM_IID \
  {0xa6a19e74, 0x8305, 0x11de, \
    { 0x9c, 0xe9, 0x00, 0x0c, 0x29, 0x20, 0x62, 0x71 }}

class NS_NO_VTABLE NS_SCRIPTABLE nsIWebGLProgram : public nsISupports {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IWEBGLPROGRAM_IID)

  /* [noscript] attribute GLuint name; */
  NS_IMETHOD GetName(GLuint *aName) = 0;
  NS_IMETHOD SetName(GLuint aName) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIWebGLProgram, NS_IWEBGLPROGRAM_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIWEBGLPROGRAM \
  NS_IMETHOD GetName(GLuint *aName); \
  NS_IMETHOD SetName(GLuint aName); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIWEBGLPROGRAM(_to) \
  NS_IMETHOD GetName(GLuint *aName) { return _to GetName(aName); } \
  NS_IMETHOD SetName(GLuint aName) { return _to SetName(aName); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIWEBGLPROGRAM(_to) \
  NS_IMETHOD GetName(GLuint *aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetName(aName); } \
  NS_IMETHOD SetName(GLuint aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetName(aName); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class nsWebGLProgram : public nsIWebGLProgram
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIWEBGLPROGRAM

  nsWebGLProgram();

private:
  ~nsWebGLProgram();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsWebGLProgram, nsIWebGLProgram)

nsWebGLProgram::nsWebGLProgram()
{
  /* member initializers and constructor code */
}

nsWebGLProgram::~nsWebGLProgram()
{
  /* destructor code */
}

/* [noscript] attribute GLuint name; */
NS_IMETHODIMP nsWebGLProgram::GetName(GLuint *aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsWebGLProgram::SetName(GLuint aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif


/* starting interface:    nsIWebGLShader */
#define NS_IWEBGLSHADER_IID_STR "ac7440a4-8305-11de-807b-000c29206271"

#define NS_IWEBGLSHADER_IID \
  {0xac7440a4, 0x8305, 0x11de, \
    { 0x80, 0x7b, 0x00, 0x0c, 0x29, 0x20, 0x62, 0x71 }}

class NS_NO_VTABLE NS_SCRIPTABLE nsIWebGLShader : public nsISupports {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IWEBGLSHADER_IID)

  /* [noscript] attribute GLuint name; */
  NS_IMETHOD GetName(GLuint *aName) = 0;
  NS_IMETHOD SetName(GLuint aName) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIWebGLShader, NS_IWEBGLSHADER_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIWEBGLSHADER \
  NS_IMETHOD GetName(GLuint *aName); \
  NS_IMETHOD SetName(GLuint aName); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIWEBGLSHADER(_to) \
  NS_IMETHOD GetName(GLuint *aName) { return _to GetName(aName); } \
  NS_IMETHOD SetName(GLuint aName) { return _to SetName(aName); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIWEBGLSHADER(_to) \
  NS_IMETHOD GetName(GLuint *aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetName(aName); } \
  NS_IMETHOD SetName(GLuint aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetName(aName); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class nsWebGLShader : public nsIWebGLShader
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIWEBGLSHADER

  nsWebGLShader();

private:
  ~nsWebGLShader();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsWebGLShader, nsIWebGLShader)

nsWebGLShader::nsWebGLShader()
{
  /* member initializers and constructor code */
}

nsWebGLShader::~nsWebGLShader()
{
  /* destructor code */
}

/* [noscript] attribute GLuint name; */
NS_IMETHODIMP nsWebGLShader::GetName(GLuint *aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsWebGLShader::SetName(GLuint aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif


/* starting interface:    nsIWebGLShaderArray */
#define NS_IWEBGLSHADERARRAY_IID_STR "beea4b38-3094-4e8d-b6e6-8b21d07e8994"

#define NS_IWEBGLSHADERARRAY_IID \
  {0xbeea4b38, 0x3094, 0x4e8d, \
    { 0xb6, 0xe6, 0x8b, 0x21, 0xd0, 0x7e, 0x89, 0x94 }}

class NS_NO_VTABLE NS_SCRIPTABLE nsIWebGLShaderArray {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IWEBGLSHADERARRAY_IID)

  /* readonly attribute unsigned long length; */
  NS_SCRIPTABLE NS_IMETHOD GetLength(PRUint32 *aLength) = 0;

  /* nsIWebGLShader item (in unsigned long index); */
  NS_SCRIPTABLE NS_IMETHOD Item(PRUint32 index, nsIWebGLShader **_retval NS_OUTPARAM) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIWebGLShaderArray, NS_IWEBGLSHADERARRAY_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIWEBGLSHADERARRAY \
  NS_SCRIPTABLE NS_IMETHOD GetLength(PRUint32 *aLength); \
  NS_SCRIPTABLE NS_IMETHOD Item(PRUint32 index, nsIWebGLShader **_retval NS_OUTPARAM); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIWEBGLSHADERARRAY(_to) \
  NS_SCRIPTABLE NS_IMETHOD GetLength(PRUint32 *aLength) { return _to GetLength(aLength); } \
  NS_SCRIPTABLE NS_IMETHOD Item(PRUint32 index, nsIWebGLShader **_retval NS_OUTPARAM) { return _to Item(index, _retval); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIWEBGLSHADERARRAY(_to) \
  NS_SCRIPTABLE NS_IMETHOD GetLength(PRUint32 *aLength) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLength(aLength); } \
  NS_SCRIPTABLE NS_IMETHOD Item(PRUint32 index, nsIWebGLShader **_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->Item(index, _retval); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class nsWebGLShaderArray : public nsIWebGLShaderArray
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIWEBGLSHADERARRAY

  nsWebGLShaderArray();

private:
  ~nsWebGLShaderArray();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsWebGLShaderArray, nsIWebGLShaderArray)

nsWebGLShaderArray::nsWebGLShaderArray()
{
  /* member initializers and constructor code */
}

nsWebGLShaderArray::~nsWebGLShaderArray()
{
  /* destructor code */
}

/* readonly attribute unsigned long length; */
NS_IMETHODIMP nsWebGLShaderArray::GetLength(PRUint32 *aLength)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIWebGLShader item (in unsigned long index); */
NS_IMETHODIMP nsWebGLShaderArray::Item(PRUint32 index, nsIWebGLShader **_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif


/* starting interface:    nsIWebGLFramebuffer */
#define NS_IWEBGLFRAMEBUFFER_IID_STR "bce8be60-8305-11de-9f3c-000c29206271"

#define NS_IWEBGLFRAMEBUFFER_IID \
  {0xbce8be60, 0x8305, 0x11de, \
    { 0x9f, 0x3c, 0x00, 0x0c, 0x29, 0x20, 0x62, 0x71 }}

class NS_NO_VTABLE NS_SCRIPTABLE nsIWebGLFramebuffer : public nsISupports {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IWEBGLFRAMEBUFFER_IID)

  /* [noscript] attribute GLuint name; */
  NS_IMETHOD GetName(GLuint *aName) = 0;
  NS_IMETHOD SetName(GLuint aName) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIWebGLFramebuffer, NS_IWEBGLFRAMEBUFFER_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIWEBGLFRAMEBUFFER \
  NS_IMETHOD GetName(GLuint *aName); \
  NS_IMETHOD SetName(GLuint aName); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIWEBGLFRAMEBUFFER(_to) \
  NS_IMETHOD GetName(GLuint *aName) { return _to GetName(aName); } \
  NS_IMETHOD SetName(GLuint aName) { return _to SetName(aName); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIWEBGLFRAMEBUFFER(_to) \
  NS_IMETHOD GetName(GLuint *aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetName(aName); } \
  NS_IMETHOD SetName(GLuint aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetName(aName); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class nsWebGLFramebuffer : public nsIWebGLFramebuffer
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIWEBGLFRAMEBUFFER

  nsWebGLFramebuffer();

private:
  ~nsWebGLFramebuffer();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsWebGLFramebuffer, nsIWebGLFramebuffer)

nsWebGLFramebuffer::nsWebGLFramebuffer()
{
  /* member initializers and constructor code */
}

nsWebGLFramebuffer::~nsWebGLFramebuffer()
{
  /* destructor code */
}

/* [noscript] attribute GLuint name; */
NS_IMETHODIMP nsWebGLFramebuffer::GetName(GLuint *aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsWebGLFramebuffer::SetName(GLuint aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif


/* starting interface:    nsIWebGLRenderbuffer */
#define NS_IWEBGLRENDERBUFFER_IID_STR "c82eacd0-8305-11de-9de9-000c29206271"

#define NS_IWEBGLRENDERBUFFER_IID \
  {0xc82eacd0, 0x8305, 0x11de, \
    { 0x9d, 0xe9, 0x00, 0x0c, 0x29, 0x20, 0x62, 0x71 }}

class NS_NO_VTABLE NS_SCRIPTABLE nsIWebGLRenderbuffer : public nsISupports {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IWEBGLRENDERBUFFER_IID)

  /* [noscript] attribute GLuint name; */
  NS_IMETHOD GetName(GLuint *aName) = 0;
  NS_IMETHOD SetName(GLuint aName) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIWebGLRenderbuffer, NS_IWEBGLRENDERBUFFER_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIWEBGLRENDERBUFFER \
  NS_IMETHOD GetName(GLuint *aName); \
  NS_IMETHOD SetName(GLuint aName); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIWEBGLRENDERBUFFER(_to) \
  NS_IMETHOD GetName(GLuint *aName) { return _to GetName(aName); } \
  NS_IMETHOD SetName(GLuint aName) { return _to SetName(aName); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIWEBGLRENDERBUFFER(_to) \
  NS_IMETHOD GetName(GLuint *aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetName(aName); } \
  NS_IMETHOD SetName(GLuint aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetName(aName); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class nsWebGLRenderbuffer : public nsIWebGLRenderbuffer
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIWEBGLRENDERBUFFER

  nsWebGLRenderbuffer();

private:
  ~nsWebGLRenderbuffer();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsWebGLRenderbuffer, nsIWebGLRenderbuffer)

nsWebGLRenderbuffer::nsWebGLRenderbuffer()
{
  /* member initializers and constructor code */
}

nsWebGLRenderbuffer::~nsWebGLRenderbuffer()
{
  /* destructor code */
}

/* [noscript] attribute GLuint name; */
NS_IMETHODIMP nsWebGLRenderbuffer::GetName(GLuint *aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsWebGLRenderbuffer::SetName(GLuint aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif


/* starting interface:    nsIWebGLActiveInfo */
#define NS_IWEBGLACTIVEINFO_IID_STR "a85d4fd0-5b9f-4cb8-aeee-5a2c5c5bad76"

#define NS_IWEBGLACTIVEINFO_IID \
  {0xa85d4fd0, 0x5b9f, 0x4cb8, \
    { 0xae, 0xee, 0x5a, 0x2c, 0x5c, 0x5b, 0xad, 0x76 }}

class NS_NO_VTABLE NS_SCRIPTABLE nsIWebGLActiveInfo {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IWEBGLACTIVEINFO_IID)

  /* readonly attribute GLint size; */
  NS_SCRIPTABLE NS_IMETHOD GetSize(GLint *aSize) = 0;

  /* readonly attribute GLenum type; */
  NS_SCRIPTABLE NS_IMETHOD GetType(GLenum *aType) = 0;

  /* readonly attribute DOMString name; */
  NS_SCRIPTABLE NS_IMETHOD GetName(nsAString & aName) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIWebGLActiveInfo, NS_IWEBGLACTIVEINFO_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIWEBGLACTIVEINFO \
  NS_SCRIPTABLE NS_IMETHOD GetSize(GLint *aSize); \
  NS_SCRIPTABLE NS_IMETHOD GetType(GLenum *aType); \
  NS_SCRIPTABLE NS_IMETHOD GetName(nsAString & aName); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIWEBGLACTIVEINFO(_to) \
  NS_SCRIPTABLE NS_IMETHOD GetSize(GLint *aSize) { return _to GetSize(aSize); } \
  NS_SCRIPTABLE NS_IMETHOD GetType(GLenum *aType) { return _to GetType(aType); } \
  NS_SCRIPTABLE NS_IMETHOD GetName(nsAString & aName) { return _to GetName(aName); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIWEBGLACTIVEINFO(_to) \
  NS_SCRIPTABLE NS_IMETHOD GetSize(GLint *aSize) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSize(aSize); } \
  NS_SCRIPTABLE NS_IMETHOD GetType(GLenum *aType) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetType(aType); } \
  NS_SCRIPTABLE NS_IMETHOD GetName(nsAString & aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetName(aName); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class nsWebGLActiveInfo : public nsIWebGLActiveInfo
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIWEBGLACTIVEINFO

  nsWebGLActiveInfo();

private:
  ~nsWebGLActiveInfo();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsWebGLActiveInfo, nsIWebGLActiveInfo)

nsWebGLActiveInfo::nsWebGLActiveInfo()
{
  /* member initializers and constructor code */
}

nsWebGLActiveInfo::~nsWebGLActiveInfo()
{
  /* destructor code */
}

/* readonly attribute GLint size; */
NS_IMETHODIMP nsWebGLActiveInfo::GetSize(GLint *aSize)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute GLenum type; */
NS_IMETHODIMP nsWebGLActiveInfo::GetType(GLenum *aType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute DOMString name; */
NS_IMETHODIMP nsWebGLActiveInfo::GetName(nsAString & aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif


/* starting interface:    nsICanvasRenderingContextWebGL */
#define NS_ICANVASRENDERINGCONTEXTWEBGL_IID_STR "f02c85e0-8305-11de-abe2-000c29206271"

#define NS_ICANVASRENDERINGCONTEXTWEBGL_IID \
  {0xf02c85e0, 0x8305, 0x11de, \
    { 0xab, 0xe2, 0x00, 0x0c, 0x29, 0x20, 0x62, 0x71 }}

class NS_SCRIPTABLE nsICanvasRenderingContextWebGL : public nsISupports {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_ICANVASRENDERINGCONTEXTWEBGL_IID)

  /* nsIWebGLFloatArray createFloatArray (); */
  NS_SCRIPTABLE NS_IMETHOD CreateFloatArray(nsIWebGLFloatArray **_retval NS_OUTPARAM) = 0;

  /* nsIWebGLByteArray createByteArray (); */
  NS_SCRIPTABLE NS_IMETHOD CreateByteArray(nsIWebGLByteArray **_retval NS_OUTPARAM) = 0;

  /* nsIWebGLUnsignedByteArray createUnsignedByteArray (); */
  NS_SCRIPTABLE NS_IMETHOD CreateUnsignedByteArray(nsIWebGLUnsignedByteArray **_retval NS_OUTPARAM) = 0;

  /* nsIWebGLShortArray createShortArray (); */
  NS_SCRIPTABLE NS_IMETHOD CreateShortArray(nsIWebGLShortArray **_retval NS_OUTPARAM) = 0;

  /* nsIWebGLUnsignedShortArray createUnsignedShortArray (); */
  NS_SCRIPTABLE NS_IMETHOD CreateUnsignedShortArray(nsIWebGLUnsignedShortArray **_retval NS_OUTPARAM) = 0;

  /* nsIWebGLIntArray createIntArray (); */
  NS_SCRIPTABLE NS_IMETHOD CreateIntArray(nsIWebGLIntArray **_retval NS_OUTPARAM) = 0;

  /* nsIWebGLUnsignedIntArray createUnsignedIntArray (); */
  NS_SCRIPTABLE NS_IMETHOD CreateUnsignedIntArray(nsIWebGLUnsignedIntArray **_retval NS_OUTPARAM) = 0;

  enum { DEPTH_BUFFER_BIT = 256U };

  enum { STENCIL_BUFFER_BIT = 1024U };

  enum { COLOR_BUFFER_BIT = 16384U };

  enum { GL_FALSE = 0U };

  enum { GL_TRUE = 1U };

  enum { POINTS = 0U };

  enum { LINES = 1U };

  enum { LINE_LOOP = 2U };

  enum { LINE_STRIP = 3U };

  enum { TRIANGLES = 4U };

  enum { TRIANGLE_STRIP = 5U };

  enum { TRIANGLE_FAN = 6U };

  enum { ZERO = 0U };

  enum { ONE = 1U };

  enum { SRC_COLOR = 768U };

  enum { ONE_MINUS_SRC_COLOR = 769U };

  enum { SRC_ALPHA = 770U };

  enum { ONE_MINUS_SRC_ALPHA = 771U };

  enum { DST_ALPHA = 772U };

  enum { ONE_MINUS_DST_ALPHA = 773U };

  enum { DST_COLOR = 774U };

  enum { ONE_MINUS_DST_COLOR = 775U };

  enum { SRC_ALPHA_SATURATE = 776U };

  enum { FUNC_ADD = 32774U };

  enum { BLEND_EQUATION = 32777U };

  enum { BLEND_EQUATION_RGB = 32777U };

  enum { BLEND_EQUATION_ALPHA = 34877U };

  enum { FUNC_SUBTRACT = 32778U };

  enum { FUNC_REVERSE_SUBTRACT = 32779U };

  enum { BLEND_DST_RGB = 32968U };

  enum { BLEND_SRC_RGB = 32969U };

  enum { BLEND_DST_ALPHA = 32970U };

  enum { BLEND_SRC_ALPHA = 32971U };

  enum { CONSTANT_COLOR = 32769U };

  enum { ONE_MINUS_CONSTANT_COLOR = 32770U };

  enum { CONSTANT_ALPHA = 32771U };

  enum { ONE_MINUS_CONSTANT_ALPHA = 32772U };

  enum { BLEND_COLOR = 32773U };

  enum { ARRAY_BUFFER = 34962U };

  enum { ELEMENT_ARRAY_BUFFER = 34963U };

  enum { ARRAY_BUFFER_BINDING = 34964U };

  enum { ELEMENT_ARRAY_BUFFER_BINDING = 34965U };

  enum { STREAM_DRAW = 35040U };

  enum { STATIC_DRAW = 35044U };

  enum { DYNAMIC_DRAW = 35048U };

  enum { BUFFER_SIZE = 34660U };

  enum { BUFFER_USAGE = 34661U };

  enum { CURRENT_VERTEX_ATTRIB = 34342U };

  enum { FRONT = 1028U };

  enum { BACK = 1029U };

  enum { FRONT_AND_BACK = 1032U };

  enum { TEXTURE_2D = 3553U };

  enum { CULL_FACE = 2884U };

  enum { BLEND = 3042U };

  enum { DITHER = 3024U };

  enum { STENCIL_TEST = 2960U };

  enum { DEPTH_TEST = 2929U };

  enum { SCISSOR_TEST = 3089U };

  enum { POLYGON_OFFSET_FILL = 32823U };

  enum { SAMPLE_ALPHA_TO_COVERAGE = 32926U };

  enum { SAMPLE_COVERAGE = 32928U };

/* Avoid conflict with WinAPI */
#undef NO_ERROR
  enum { NO_ERROR = 0U };

  enum { INVALID_ENUM = 1280U };

  enum { INVALID_VALUE = 1281U };

  enum { INVALID_OPERATION = 1282U };

  enum { OUT_OF_MEMORY = 1285U };

  enum { CW = 2304U };

  enum { CCW = 2305U };

  enum { LINE_WIDTH = 2849U };

  enum { ALIASED_POINT_SIZE_RANGE = 33901U };

  enum { ALIASED_LINE_WIDTH_RANGE = 33902U };

  enum { CULL_FACE_MODE = 2885U };

  enum { FRONT_FACE = 2886U };

  enum { DEPTH_RANGE = 2928U };

  enum { DEPTH_WRITEMASK = 2930U };

  enum { DEPTH_CLEAR_VALUE = 2931U };

  enum { DEPTH_FUNC = 2932U };

  enum { STENCIL_CLEAR_VALUE = 2961U };

  enum { STENCIL_FUNC = 2962U };

  enum { STENCIL_FAIL = 2964U };

  enum { STENCIL_PASS_DEPTH_FAIL = 2965U };

  enum { STENCIL_PASS_DEPTH_PASS = 2966U };

  enum { STENCIL_REF = 2967U };

  enum { STENCIL_VALUE_MASK = 2963U };

  enum { STENCIL_WRITEMASK = 2968U };

  enum { STENCIL_BACK_FUNC = 34816U };

  enum { STENCIL_BACK_FAIL = 34817U };

  enum { STENCIL_BACK_PASS_DEPTH_FAIL = 34818U };

  enum { STENCIL_BACK_PASS_DEPTH_PASS = 34819U };

  enum { STENCIL_BACK_REF = 36003U };

  enum { STENCIL_BACK_VALUE_MASK = 36004U };

  enum { STENCIL_BACK_WRITEMASK = 36005U };

  enum { VIEWPORT_RECT = 2978U };

  enum { SCISSOR_BOX = 3088U };

  enum { COLOR_CLEAR_VALUE = 3106U };

  enum { COLOR_WRITEMASK = 3107U };

  enum { UNPACK_ALIGNMENT = 3317U };

  enum { PACK_ALIGNMENT = 3333U };

  enum { MAX_TEXTURE_SIZE = 3379U };

  enum { MAX_VIEWPORT_DIMS = 3386U };

  enum { SUBPIXEL_BITS = 3408U };

  enum { RED_BITS = 3410U };

  enum { GREEN_BITS = 3411U };

  enum { BLUE_BITS = 3412U };

  enum { ALPHA_BITS = 3413U };

  enum { DEPTH_BITS = 3414U };

  enum { STENCIL_BITS = 3415U };

  enum { POLYGON_OFFSET_UNITS = 10752U };

  enum { POLYGON_OFFSET_FACTOR = 32824U };

  enum { TEXTURE_BINDING_2D = 32873U };

  enum { SAMPLE_BUFFERS = 32936U };

  enum { SAMPLES = 32937U };

  enum { SAMPLE_COVERAGE_VALUE = 32938U };

  enum { SAMPLE_COVERAGE_INVERT = 32939U };

  enum { NUM_COMPRESSED_TEXTURE_FORMATS = 34466U };

  enum { COMPRESSED_TEXTURE_FORMATS = 34467U };

  enum { DONT_CARE = 4352U };

  enum { FASTEST = 4353U };

  enum { NICEST = 4354U };

  enum { GENERATE_MIPMAP_HINT = 33170U };

  enum { BYTE = 5120U };

  enum { UNSIGNED_BYTE = 5121U };

  enum { SHORT = 5122U };

  enum { UNSIGNED_SHORT = 5123U };

  enum { INT = 5124U };

  enum { UNSIGNED_INT = 5125U };

  enum { FLOAT = 5126U };

  enum { FIXED = 5132U };

  enum { DEPTH_COMPONENT = 6402U };

  enum { ALPHA = 6406U };

  enum { RGB = 6407U };

  enum { RGBA = 6408U };

  enum { LUMINANCE = 6409U };

  enum { LUMINANCE_ALPHA = 6410U };

  enum { UNSIGNED_SHORT_4_4_4_4 = 32819U };

  enum { UNSIGNED_SHORT_5_5_5_1 = 32820U };

  enum { UNSIGNED_SHORT_5_6_5 = 33635U };

  enum { FRAGMENT_SHADER = 35632U };

  enum { VERTEX_SHADER = 35633U };

  enum { MAX_VERTEX_ATTRIBS = 34921U };

  enum { MAX_VERTEX_UNIFORM_VECTORS = 36347U };

  enum { MAX_VARYING_VECTORS = 36348U };

  enum { MAX_COMBINED_TEXTURE_IMAGE_UNITS = 35661U };

  enum { MAX_VERTEX_TEXTURE_IMAGE_UNITS = 35660U };

  enum { MAX_TEXTURE_IMAGE_UNITS = 34930U };

  enum { MAX_FRAGMENT_UNIFORM_VECTORS = 36349U };

  enum { SHADER_TYPE = 35663U };

  enum { DELETE_STATUS = 35712U };

  enum { LINK_STATUS = 35714U };

  enum { VALIDATE_STATUS = 35715U };

  enum { ATTACHED_SHADERS = 35717U };

  enum { ACTIVE_UNIFORMS = 35718U };

  enum { ACTIVE_UNIFORM_MAX_LENGTH = 35719U };

  enum { ACTIVE_ATTRIBUTES = 35721U };

  enum { ACTIVE_ATTRIBUTE_MAX_LENGTH = 35722U };

  enum { SHADING_LANGUAGE_VERSION = 35724U };

  enum { CURRENT_PROGRAM = 35725U };

  enum { NEVER = 512U };

  enum { LESS = 513U };

  enum { EQUAL = 514U };

  enum { LEQUAL = 515U };

  enum { GREATER = 516U };

  enum { NOTEQUAL = 517U };

  enum { GEQUAL = 518U };

  enum { ALWAYS = 519U };

  enum { KEEP = 7680U };

  enum { REPLACE = 7681U };

  enum { INCR = 7682U };

  enum { DECR = 7683U };

  enum { INVERT = 5386U };

  enum { INCR_WRAP = 34055U };

  enum { DECR_WRAP = 34056U };

  enum { VENDOR = 7936U };

  enum { RENDERER = 7937U };

  enum { VERSION = 7938U };

  enum { EXTENSIONS = 7939U };

  enum { NEAREST = 9728U };

  enum { LINEAR = 9729U };

  enum { NEAREST_MIPMAP_NEAREST = 9984U };

  enum { LINEAR_MIPMAP_NEAREST = 9985U };

  enum { NEAREST_MIPMAP_LINEAR = 9986U };

  enum { LINEAR_MIPMAP_LINEAR = 9987U };

  enum { TEXTURE_MAG_FILTER = 10240U };

  enum { TEXTURE_MIN_FILTER = 10241U };

  enum { TEXTURE_WRAP_S = 10242U };

  enum { TEXTURE_WRAP_T = 10243U };

  enum { TEXTURE = 5890U };

  enum { TEXTURE_CUBE_MAP = 34067U };

  enum { TEXTURE_BINDING_CUBE_MAP = 34068U };

  enum { TEXTURE_CUBE_MAP_POSITIVE_X = 34069U };

  enum { TEXTURE_CUBE_MAP_NEGATIVE_X = 34070U };

  enum { TEXTURE_CUBE_MAP_POSITIVE_Y = 34071U };

  enum { TEXTURE_CUBE_MAP_NEGATIVE_Y = 34072U };

  enum { TEXTURE_CUBE_MAP_POSITIVE_Z = 34073U };

  enum { TEXTURE_CUBE_MAP_NEGATIVE_Z = 34074U };

  enum { MAX_CUBE_MAP_TEXTURE_SIZE = 34076U };

  enum { TEXTURE0 = 33984U };

  enum { TEXTURE1 = 33985U };

  enum { TEXTURE2 = 33986U };

  enum { TEXTURE3 = 33987U };

  enum { TEXTURE4 = 33988U };

  enum { TEXTURE5 = 33989U };

  enum { TEXTURE6 = 33990U };

  enum { TEXTURE7 = 33991U };

  enum { TEXTURE8 = 33992U };

  enum { TEXTURE9 = 33993U };

  enum { TEXTURE10 = 33994U };

  enum { TEXTURE11 = 33995U };

  enum { TEXTURE12 = 33996U };

  enum { TEXTURE13 = 33997U };

  enum { TEXTURE14 = 33998U };

  enum { TEXTURE15 = 33999U };

  enum { TEXTURE16 = 34000U };

  enum { TEXTURE17 = 34001U };

  enum { TEXTURE18 = 34002U };

  enum { TEXTURE19 = 34003U };

  enum { TEXTURE20 = 34004U };

  enum { TEXTURE21 = 34005U };

  enum { TEXTURE22 = 34006U };

  enum { TEXTURE23 = 34007U };

  enum { TEXTURE24 = 34008U };

  enum { TEXTURE25 = 34009U };

  enum { TEXTURE26 = 34010U };

  enum { TEXTURE27 = 34011U };

  enum { TEXTURE28 = 34012U };

  enum { TEXTURE29 = 34013U };

  enum { TEXTURE30 = 34014U };

  enum { TEXTURE31 = 34015U };

  enum { ACTIVE_TEXTURE = 34016U };

  enum { REPEAT = 10497U };

  enum { CLAMP_TO_EDGE = 33071U };

  enum { MIRRORED_REPEAT = 33648U };

  enum { FLOAT_VEC2 = 35664U };

  enum { FLOAT_VEC3 = 35665U };

  enum { FLOAT_VEC4 = 35666U };

  enum { INT_VEC2 = 35667U };

  enum { INT_VEC3 = 35668U };

  enum { INT_VEC4 = 35669U };

  enum { BOOL = 35670U };

  enum { BOOL_VEC2 = 35671U };

  enum { BOOL_VEC3 = 35672U };

  enum { BOOL_VEC4 = 35673U };

  enum { FLOAT_MAT2 = 35674U };

  enum { FLOAT_MAT3 = 35675U };

  enum { FLOAT_MAT4 = 35676U };

  enum { SAMPLER_2D = 35678U };

  enum { SAMPLER_CUBE = 35680U };

  enum { VERTEX_ATTRIB_ARRAY_ENABLED = 34338U };

  enum { VERTEX_ATTRIB_ARRAY_SIZE = 34339U };

  enum { VERTEX_ATTRIB_ARRAY_STRIDE = 34340U };

  enum { VERTEX_ATTRIB_ARRAY_TYPE = 34341U };

  enum { VERTEX_ATTRIB_ARRAY_NORMALIZED = 34922U };

  enum { VERTEX_ATTRIB_ARRAY_POINTER = 34373U };

  enum { VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 34975U };

  enum { IMPLEMENTATION_COLOR_READ_TYPE = 35738U };

  enum { IMPLEMENTATION_COLOR_READ_FORMAT = 35739U };

  enum { COMPILE_STATUS = 35713U };

  enum { INFO_LOG_LENGTH = 35716U };

  enum { SHADER_SOURCE_LENGTH = 35720U };

  enum { SHADER_COMPILER = 36346U };

  enum { LOW_FLOAT = 36336U };

  enum { MEDIUM_FLOAT = 36337U };

  enum { HIGH_FLOAT = 36338U };

  enum { LOW_INT = 36339U };

  enum { MEDIUM_INT = 36340U };

  enum { HIGH_INT = 36341U };

  enum { FRAMEBUFFER = 36160U };

  enum { RENDERBUFFER = 36161U };

  enum { RGBA4 = 32854U };

  enum { RGB5_A1 = 32855U };

  enum { RGB565 = 36194U };

  enum { DEPTH_COMPONENT16 = 33189U };

  enum { STENCIL_INDEX = 6401U };

  enum { STENCIL_INDEX8 = 36168U };

  enum { RENDERBUFFER_WIDTH = 36162U };

  enum { RENDERBUFFER_HEIGHT = 36163U };

  enum { RENDERBUFFER_INTERNAL_FORMAT = 36164U };

  enum { RENDERBUFFER_RED_SIZE = 36176U };

  enum { RENDERBUFFER_GREEN_SIZE = 36177U };

  enum { RENDERBUFFER_BLUE_SIZE = 36178U };

  enum { RENDERBUFFER_ALPHA_SIZE = 36179U };

  enum { RENDERBUFFER_DEPTH_SIZE = 36180U };

  enum { RENDERBUFFER_STENCIL_SIZE = 36181U };

  enum { FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = 36048U };

  enum { FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = 36049U };

  enum { FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL = 36050U };

  enum { FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = 36051U };

  enum { COLOR_ATTACHMENT0 = 36064U };

  enum { DEPTH_ATTACHMENT = 36096U };

  enum { STENCIL_ATTACHMENT = 36128U };

  enum { NONE = 0U };

  enum { FRAMEBUFFER_COMPLETE = 36053U };

  enum { FRAMEBUFFER_INCOMPLETE_ATTACHMENT = 36054U };

  enum { FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 36055U };

  enum { FRAMEBUFFER_INCOMPLETE_DIMENSIONS = 36057U };

  enum { FRAMEBUFFER_UNSUPPORTED = 36061U };

  enum { FRAMEBUFFER_BINDING = 36006U };

  enum { RENDERBUFFER_BINDING = 36007U };

  enum { MAX_RENDERBUFFER_SIZE = 34024U };

  enum { INVALID_FRAMEBUFFER_OPERATION = 1286U };

  /* readonly attribute nsIDOMHTMLCanvasElement canvas; */
  NS_SCRIPTABLE NS_IMETHOD GetCanvas(nsIDOMHTMLCanvasElement * *aCanvas) = 0;

  /* void present (); */
  NS_SCRIPTABLE NS_IMETHOD Present(void) = 0;

  /* long sizeInBytes (in GLenum type); */
  NS_SCRIPTABLE NS_IMETHOD SizeInBytes(GLenum type, PRInt32 *_retval NS_OUTPARAM) = 0;

  /* void activeTexture (in GLenum texture); */
  NS_SCRIPTABLE NS_IMETHOD ActiveTexture(GLenum texture) = 0;

  /* void attachShader (in nsIWebGLProgram program, in nsIWebGLShader shader); */
  NS_SCRIPTABLE NS_IMETHOD AttachShader(nsIWebGLProgram *program, nsIWebGLShader *shader) = 0;

  /* void bindAttribLocation (in nsIWebGLProgram program, in GLuint index, in DOMString name); */
  NS_SCRIPTABLE NS_IMETHOD BindAttribLocation(nsIWebGLProgram *program, GLuint index, const nsAString & name) = 0;

  /* void bindBuffer (in GLenum target, in nsIWebGLBuffer buffer); */
  NS_SCRIPTABLE NS_IMETHOD BindBuffer(GLenum target, nsIWebGLBuffer *buffer) = 0;

  /* void bindFramebuffer (in GLenum target, in nsIWebGLFramebuffer framebuffer); */
  NS_SCRIPTABLE NS_IMETHOD BindFramebuffer(GLenum target, nsIWebGLFramebuffer *framebuffer) = 0;

  /* void bindRenderbuffer (in GLenum target, in nsIWebGLRenderbuffer renderbuffer); */
  NS_SCRIPTABLE NS_IMETHOD BindRenderbuffer(GLenum target, nsIWebGLRenderbuffer *renderbuffer) = 0;

  /* void bindTexture (in GLenum target, in nsIWebGLTexture texture); */
  NS_SCRIPTABLE NS_IMETHOD BindTexture(GLenum target, nsIWebGLTexture *texture) = 0;

  /* void blendColor (in GLclampf red, in GLclampf green, in GLclampf blue, in GLclampf alpha); */
  NS_SCRIPTABLE NS_IMETHOD BlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) = 0;

  /* void blendEquation (in GLenum mode); */
  NS_SCRIPTABLE NS_IMETHOD BlendEquation(GLenum mode) = 0;

  /* void blendEquationSeparate (in GLenum modeRGB, in GLenum modeAlpha); */
  NS_SCRIPTABLE NS_IMETHOD BlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) = 0;

  /* void blendFunc (in GLenum sfactor, in GLenum dfactor); */
  NS_SCRIPTABLE NS_IMETHOD BlendFunc(GLenum sfactor, GLenum dfactor) = 0;

  /* void blendFuncSeparate (in GLenum srcRGB, in GLenum dstRGB, in GLenum srcAlpha, in GLenum dstAlpha); */
  NS_SCRIPTABLE NS_IMETHOD BlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) = 0;

  /* void bufferData (in GLenum target); */
  NS_SCRIPTABLE NS_IMETHOD BufferData(GLenum target) = 0;

  /* void bufferSubData (in GLenum target, in GLsizeiptr offset); */
  NS_SCRIPTABLE NS_IMETHOD BufferSubData(GLenum target, GLsizeiptr offset) = 0;

  /* GLenum checkFramebufferStatus (in GLenum target); */
  NS_SCRIPTABLE NS_IMETHOD CheckFramebufferStatus(GLenum target, GLenum *_retval NS_OUTPARAM) = 0;

  /* void clear (in GLbitfield mask); */
  NS_SCRIPTABLE NS_IMETHOD Clear(GLbitfield mask) = 0;

  /* void clearColor (in GLclampf red, in GLclampf green, in GLclampf blue, in GLclampf alpha); */
  NS_SCRIPTABLE NS_IMETHOD ClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) = 0;

  /* void clearDepth (in GLclampf depth); */
  NS_SCRIPTABLE NS_IMETHOD ClearDepth(GLclampf depth) = 0;

  /* void clearStencil (in GLint s); */
  NS_SCRIPTABLE NS_IMETHOD ClearStencil(GLint s) = 0;

  /* void colorMask (in GLboolean red, in GLboolean green, in GLboolean blue, in GLboolean alpha); */
  NS_SCRIPTABLE NS_IMETHOD ColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) = 0;

  /* void compileShader (in nsIWebGLShader shader); */
  NS_SCRIPTABLE NS_IMETHOD CompileShader(nsIWebGLShader *shader) = 0;

  /* void copyTexImage2D (in GLenum target, in GLint level, in GLenum internalformat, in GLint x, in GLint y, in GLsizei width, in GLsizei height, in GLint border); */
  NS_SCRIPTABLE NS_IMETHOD CopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) = 0;

  /* void copyTexSubImage2D (in GLenum target, in GLint level, in GLint xoffset, in GLint yoffset, in GLint x, in GLint y, in GLsizei width, in GLsizei height); */
  NS_SCRIPTABLE NS_IMETHOD CopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) = 0;

  /* nsIWebGLBuffer createBuffer (); */
  NS_SCRIPTABLE NS_IMETHOD CreateBuffer(nsIWebGLBuffer **_retval NS_OUTPARAM) = 0;

  /* nsIWebGLProgram createProgram (); */
  NS_SCRIPTABLE NS_IMETHOD CreateProgram(nsIWebGLProgram **_retval NS_OUTPARAM) = 0;

  /* nsIWebGLFramebuffer createFramebuffer (); */
  NS_SCRIPTABLE NS_IMETHOD CreateFramebuffer(nsIWebGLFramebuffer **_retval NS_OUTPARAM) = 0;

  /* nsIWebGLRenderbuffer createRenderbuffer (); */
  NS_SCRIPTABLE NS_IMETHOD CreateRenderbuffer(nsIWebGLRenderbuffer **_retval NS_OUTPARAM) = 0;

  /* nsIWebGLShader createShader (in GLenum type); */
  NS_SCRIPTABLE NS_IMETHOD CreateShader(GLenum type, nsIWebGLShader **_retval NS_OUTPARAM) = 0;

  /* nsIWebGLTexture createTexture (); */
  NS_SCRIPTABLE NS_IMETHOD CreateTexture(nsIWebGLTexture **_retval NS_OUTPARAM) = 0;

  /* void cullFace (in GLenum mode); */
  NS_SCRIPTABLE NS_IMETHOD CullFace(GLenum mode) = 0;

  /* void deleteBuffer (in nsIWebGLBuffer buffer); */
  NS_SCRIPTABLE NS_IMETHOD DeleteBuffer(nsIWebGLBuffer *buffer) = 0;

  /* void deleteProgram (in nsIWebGLProgram program); */
  NS_SCRIPTABLE NS_IMETHOD DeleteProgram(nsIWebGLProgram *program) = 0;

  /* void deleteFramebuffer (in nsIWebGLFramebuffer framebuffer); */
  NS_SCRIPTABLE NS_IMETHOD DeleteFramebuffer(nsIWebGLFramebuffer *framebuffer) = 0;

  /* void deleteRenderbuffer (in nsIWebGLRenderbuffer renderbuffer); */
  NS_SCRIPTABLE NS_IMETHOD DeleteRenderbuffer(nsIWebGLRenderbuffer *renderbuffer) = 0;

  /* void deleteShader (in nsIWebGLShader shader); */
  NS_SCRIPTABLE NS_IMETHOD DeleteShader(nsIWebGLShader *shader) = 0;

  /* void deleteTexture (in nsIWebGLTexture texture); */
  NS_SCRIPTABLE NS_IMETHOD DeleteTexture(nsIWebGLTexture *texture) = 0;

  /* void depthFunc (in GLenum func); */
  NS_SCRIPTABLE NS_IMETHOD DepthFunc(GLenum func) = 0;

  /* void depthMask (in GLboolean flag); */
  NS_SCRIPTABLE NS_IMETHOD DepthMask(GLboolean flag) = 0;

  /* void depthRange (in GLclampf zNear, in GLclampf zFar); */
  NS_SCRIPTABLE NS_IMETHOD DepthRange(GLclampf zNear, GLclampf zFar) = 0;

  /* void detachShader (in nsIWebGLProgram program, in nsIWebGLShader shader); */
  NS_SCRIPTABLE NS_IMETHOD DetachShader(nsIWebGLProgram *program, nsIWebGLShader *shader) = 0;

  /* void disable (in GLenum cap); */
  NS_SCRIPTABLE NS_IMETHOD Disable(GLenum cap) = 0;

  /* void disableVertexAttribArray (in GLuint index); */
  NS_SCRIPTABLE NS_IMETHOD DisableVertexAttribArray(GLuint index) = 0;

  /* void drawArrays (in GLenum mode, in GLint first, in GLsizei count); */
  NS_SCRIPTABLE NS_IMETHOD DrawArrays(GLenum mode, GLint first, GLsizei count) = 0;

  /* void drawElements (in GLenum mode, in GLuint count, in GLenum type, in GLuint offset); */
  NS_SCRIPTABLE NS_IMETHOD DrawElements(GLenum mode, GLuint count, GLenum type, GLuint offset) = 0;

  /* void enable (in GLenum cap); */
  NS_SCRIPTABLE NS_IMETHOD Enable(GLenum cap) = 0;

  /* void enableVertexAttribArray (in GLuint index); */
  NS_SCRIPTABLE NS_IMETHOD EnableVertexAttribArray(GLuint index) = 0;

  /* void finish (); */
  NS_SCRIPTABLE NS_IMETHOD Finish(void) = 0;

  /* void flush (); */
  NS_SCRIPTABLE NS_IMETHOD Flush(void) = 0;

  /* void framebufferRenderbuffer (in GLenum target, in GLenum attachment, in GLenum renderbuffertarget, in nsIWebGLRenderbuffer renderbuffer); */
  NS_SCRIPTABLE NS_IMETHOD FramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, nsIWebGLRenderbuffer *renderbuffer) = 0;

  /* void framebufferTexture2D (in GLenum target, in GLenum attachment, in GLenum textarget, in nsIWebGLTexture texture, in GLint level); */
  NS_SCRIPTABLE NS_IMETHOD FramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, nsIWebGLTexture *texture, GLint level) = 0;

  /* void frontFace (in GLenum mode); */
  NS_SCRIPTABLE NS_IMETHOD FrontFace(GLenum mode) = 0;

  /* void generateMipmap (in GLenum target); */
  NS_SCRIPTABLE NS_IMETHOD GenerateMipmap(GLenum target) = 0;

  /* nsIWebGLActiveInfo getActiveAttrib (in nsIWebGLProgram program, in PRUint32 index); */
  NS_SCRIPTABLE NS_IMETHOD GetActiveAttrib(nsIWebGLProgram *program, PRUint32 index, nsIWebGLActiveInfo **_retval NS_OUTPARAM) = 0;

  /* nsIWebGLActiveInfo getActiveUniform (in nsIWebGLProgram program, in PRUint32 index); */
  NS_SCRIPTABLE NS_IMETHOD GetActiveUniform(nsIWebGLProgram *program, PRUint32 index, nsIWebGLActiveInfo **_retval NS_OUTPARAM) = 0;

  /* GLint getAttribLocation (in nsIWebGLProgram program, in DOMString name); */
  NS_SCRIPTABLE NS_IMETHOD GetAttribLocation(nsIWebGLProgram *program, const nsAString & name, GLint *_retval NS_OUTPARAM) = 0;

  /* void getParameter (in GLenum pname); */
  NS_SCRIPTABLE NS_IMETHOD GetParameter(GLenum pname) = 0;

  /* GLint getBufferParameteri (in GLenum target, in GLenum pname); */
  NS_SCRIPTABLE NS_IMETHOD GetBufferParameteri(GLenum target, GLenum pname, GLint *_retval NS_OUTPARAM) = 0;

  /* void getBufferParameter (in GLenum target, in GLenum pname); */
  NS_SCRIPTABLE NS_IMETHOD GetBufferParameter(GLenum target, GLenum pname) = 0;

  /* GLenum getError (); */
  NS_SCRIPTABLE NS_IMETHOD GetError(GLenum *_retval NS_OUTPARAM) = 0;

  /* GLint getFramebufferAttachmentParameteri (in GLenum target, in GLenum attachment, in GLenum pname); */
  NS_SCRIPTABLE NS_IMETHOD GetFramebufferAttachmentParameteri(GLenum target, GLenum attachment, GLenum pname, GLint *_retval NS_OUTPARAM) = 0;

  /* void getFramebufferAttachmentParameter (in GLenum target, in GLenum attachment, in GLenum pname); */
  NS_SCRIPTABLE NS_IMETHOD GetFramebufferAttachmentParameter(GLenum target, GLenum attachment, GLenum pname) = 0;

  /* GLint getProgrami (in nsIWebGLProgram program, in GLenum pname); */
  NS_SCRIPTABLE NS_IMETHOD GetProgrami(nsIWebGLProgram *program, GLenum pname, GLint *_retval NS_OUTPARAM) = 0;

  /* void getProgramParameter (in nsIWebGLProgram program, in GLenum pname); */
  NS_SCRIPTABLE NS_IMETHOD GetProgramParameter(nsIWebGLProgram *program, GLenum pname) = 0;

  /* DOMString getProgramInfoLog (in nsIWebGLProgram program); */
  NS_SCRIPTABLE NS_IMETHOD GetProgramInfoLog(nsIWebGLProgram *program, nsAString & _retval NS_OUTPARAM) = 0;

  /* GLint getRenderbufferParameteri (in GLenum target, in GLenum pname); */
  NS_SCRIPTABLE NS_IMETHOD GetRenderbufferParameteri(GLenum target, GLenum pname, GLint *_retval NS_OUTPARAM) = 0;

  /* void getRenderbufferParameter (in GLenum target, in GLenum pname); */
  NS_SCRIPTABLE NS_IMETHOD GetRenderbufferParameter(GLenum target, GLenum pname) = 0;

  /* GLint getShaderi (in nsIWebGLShader shader, in GLenum pname); */
  NS_SCRIPTABLE NS_IMETHOD GetShaderi(nsIWebGLShader *shader, GLenum pname, GLint *_retval NS_OUTPARAM) = 0;

  /* void getShaderParameter (in nsIWebGLShader shader, in GLenum pname); */
  NS_SCRIPTABLE NS_IMETHOD GetShaderParameter(nsIWebGLShader *shader, GLenum pname) = 0;

  /* DOMString getShaderInfoLog (in nsIWebGLShader shader); */
  NS_SCRIPTABLE NS_IMETHOD GetShaderInfoLog(nsIWebGLShader *shader, nsAString & _retval NS_OUTPARAM) = 0;

  /* DOMString getShaderSource (in nsIWebGLShader shader); */
  NS_SCRIPTABLE NS_IMETHOD GetShaderSource(nsIWebGLShader *shader, nsAString & _retval NS_OUTPARAM) = 0;

  /* DOMString getString (in GLenum name); */
  NS_SCRIPTABLE NS_IMETHOD GetString(GLenum name, nsAString & _retval NS_OUTPARAM) = 0;

  /* GLfloat getTexParameterf (in GLenum target, in GLenum pname); */
  NS_SCRIPTABLE NS_IMETHOD GetTexParameterf(GLenum target, GLenum pname, GLfloat *_retval NS_OUTPARAM) = 0;

  /* GLint getTexParameteri (in GLenum target, in GLenum pname); */
  NS_SCRIPTABLE NS_IMETHOD GetTexParameteri(GLenum target, GLenum pname, GLint *_retval NS_OUTPARAM) = 0;

  /* void getTexParameter (in GLenum target, in GLenum pname); */
  NS_SCRIPTABLE NS_IMETHOD GetTexParameter(GLenum target, GLenum pname) = 0;

  /* void getUniform (in nsIWebGLProgram program, in GLint location); */
  NS_SCRIPTABLE NS_IMETHOD GetUniform(nsIWebGLProgram *program, GLint location) = 0;

  /* GLint getUniformLocation (in nsIWebGLProgram program, in DOMString name); */
  NS_SCRIPTABLE NS_IMETHOD GetUniformLocation(nsIWebGLProgram *program, const nsAString & name, GLint *_retval NS_OUTPARAM) = 0;

  /* void getVertexAttrib (in GLuint index, in GLenum pname); */
  NS_SCRIPTABLE NS_IMETHOD GetVertexAttrib(GLuint index, GLenum pname) = 0;

  /* GLuint getVertexAttribOffset (in GLuint index, in GLenum pname); */
  NS_SCRIPTABLE NS_IMETHOD GetVertexAttribOffset(GLuint index, GLenum pname, GLuint *_retval NS_OUTPARAM) = 0;

  /* void hint (in GLenum target, in GLenum mode); */
  NS_SCRIPTABLE NS_IMETHOD Hint(GLenum target, GLenum mode) = 0;

  /* GLboolean isBuffer (in nsIWebGLBuffer buffer); */
  NS_SCRIPTABLE NS_IMETHOD IsBuffer(nsIWebGLBuffer *buffer, GLboolean *_retval NS_OUTPARAM) = 0;

  /* GLboolean isFramebuffer (in nsIWebGLFramebuffer framebuffer); */
  NS_SCRIPTABLE NS_IMETHOD IsFramebuffer(nsIWebGLFramebuffer *framebuffer, GLboolean *_retval NS_OUTPARAM) = 0;

  /* GLboolean isProgram (in nsIWebGLProgram program); */
  NS_SCRIPTABLE NS_IMETHOD IsProgram(nsIWebGLProgram *program, GLboolean *_retval NS_OUTPARAM) = 0;

  /* GLboolean isRenderbuffer (in nsIWebGLRenderbuffer renderbuffer); */
  NS_SCRIPTABLE NS_IMETHOD IsRenderbuffer(nsIWebGLRenderbuffer *renderbuffer, GLboolean *_retval NS_OUTPARAM) = 0;

  /* GLboolean isShader (in nsIWebGLShader shader); */
  NS_SCRIPTABLE NS_IMETHOD IsShader(nsIWebGLShader *shader, GLboolean *_retval NS_OUTPARAM) = 0;

  /* GLboolean isTexture (in nsIWebGLTexture texture); */
  NS_SCRIPTABLE NS_IMETHOD IsTexture(nsIWebGLTexture *texture, GLboolean *_retval NS_OUTPARAM) = 0;

  /* GLboolean isEnabled (in GLenum cap); */
  NS_SCRIPTABLE NS_IMETHOD IsEnabled(GLenum cap, GLboolean *_retval NS_OUTPARAM) = 0;

  /* void lineWidth (in GLfloat width); */
  NS_SCRIPTABLE NS_IMETHOD LineWidth(GLfloat width) = 0;

  /* void linkProgram (in nsIWebGLProgram program); */
  NS_SCRIPTABLE NS_IMETHOD LinkProgram(nsIWebGLProgram *program) = 0;

  /* void pixelStorei (in GLenum pname, in GLint param); */
  NS_SCRIPTABLE NS_IMETHOD PixelStorei(GLenum pname, GLint param) = 0;

  /* void polygonOffset (in GLfloat factor, in GLfloat units); */
  NS_SCRIPTABLE NS_IMETHOD PolygonOffset(GLfloat factor, GLfloat units) = 0;

  /* void readPixels (in GLint x, in GLint y, in GLsizei width, in GLsizei height, in GLenum format, in GLenum type); */
  NS_SCRIPTABLE NS_IMETHOD ReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type) = 0;

  /* void renderbufferStorage (in GLenum target, in GLenum internalformat, in GLsizei width, in GLsizei height); */
  NS_SCRIPTABLE NS_IMETHOD RenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) = 0;

  /* void sampleCoverage (in GLclampf value, in GLboolean invert); */
  NS_SCRIPTABLE NS_IMETHOD SampleCoverage(GLclampf value, GLboolean invert) = 0;

  /* void scissor (in GLint x, in GLint y, in GLsizei width, in GLsizei height); */
  NS_SCRIPTABLE NS_IMETHOD Scissor(GLint x, GLint y, GLsizei width, GLsizei height) = 0;

  /* void shaderSource (in nsIWebGLShader shader, in DOMString source); */
  NS_SCRIPTABLE NS_IMETHOD ShaderSource(nsIWebGLShader *shader, const nsAString & source) = 0;

  /* void stencilFunc (in GLenum func, in GLint ref, in GLuint mask); */
  NS_SCRIPTABLE NS_IMETHOD StencilFunc(GLenum func, GLint ref, GLuint mask) = 0;

  /* void stencilFuncSeparate (in GLenum face, in GLenum func, in GLint ref, in GLuint mask); */
  NS_SCRIPTABLE NS_IMETHOD StencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask) = 0;

  /* void stencilMask (in GLuint mask); */
  NS_SCRIPTABLE NS_IMETHOD StencilMask(GLuint mask) = 0;

  /* void stencilMaskSeparate (in GLenum face, in GLuint mask); */
  NS_SCRIPTABLE NS_IMETHOD StencilMaskSeparate(GLenum face, GLuint mask) = 0;

  /* void stencilOp (in GLenum fail, in GLenum zfail, in GLenum zpass); */
  NS_SCRIPTABLE NS_IMETHOD StencilOp(GLenum fail, GLenum zfail, GLenum zpass) = 0;

  /* void stencilOpSeparate (in GLenum face, in GLenum fail, in GLenum zfail, in GLenum zpass); */
  NS_SCRIPTABLE NS_IMETHOD StencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass) = 0;

  /* void texImage2D (); */
  NS_SCRIPTABLE NS_IMETHOD TexImage2D(void) = 0;

  /* void texParameterf (in GLenum target, in GLenum pname, in GLfloat param); */
  NS_SCRIPTABLE NS_IMETHOD TexParameterf(GLenum target, GLenum pname, GLfloat param) = 0;

  /* void texParameteri (in GLenum target, in GLenum pname, in GLint param); */
  NS_SCRIPTABLE NS_IMETHOD TexParameteri(GLenum target, GLenum pname, GLint param) = 0;

  /* void texSubImage2D (); */
  NS_SCRIPTABLE NS_IMETHOD TexSubImage2D(void) = 0;

  /* void uniform1f (in GLint location, in GLfloat x); */
  NS_SCRIPTABLE NS_IMETHOD Uniform1f(GLint location, GLfloat x) = 0;

  /* void uniform1i (in GLint location, in GLint x); */
  NS_SCRIPTABLE NS_IMETHOD Uniform1i(GLint location, GLint x) = 0;

  /* void uniform2f (in GLint location, in GLfloat x, in GLfloat y); */
  NS_SCRIPTABLE NS_IMETHOD Uniform2f(GLint location, GLfloat x, GLfloat y) = 0;

  /* void uniform2i (in GLint location, in GLint x, in GLint y); */
  NS_SCRIPTABLE NS_IMETHOD Uniform2i(GLint location, GLint x, GLint y) = 0;

  /* void uniform3f (in GLint location, in GLfloat x, in GLfloat y, in GLfloat z); */
  NS_SCRIPTABLE NS_IMETHOD Uniform3f(GLint location, GLfloat x, GLfloat y, GLfloat z) = 0;

  /* void uniform3i (in GLint location, in GLint x, in GLint y, in GLint z); */
  NS_SCRIPTABLE NS_IMETHOD Uniform3i(GLint location, GLint x, GLint y, GLint z) = 0;

  /* void uniform4f (in GLint location, in GLfloat x, in GLfloat y, in GLfloat z, in GLfloat w); */
  NS_SCRIPTABLE NS_IMETHOD Uniform4f(GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w) = 0;

  /* void uniform4i (in GLint location, in GLint x, in GLint y, in GLint z, in GLint w); */
  NS_SCRIPTABLE NS_IMETHOD Uniform4i(GLint location, GLint x, GLint y, GLint z, GLint w) = 0;

  /* void uniform1fv (in GLint location, in nsIWebGLArray v); */
  NS_SCRIPTABLE NS_IMETHOD Uniform1fv(GLint location, nsIWebGLArray *v) = 0;

  /* void uniform1iv (in GLint location, in nsIWebGLArray v); */
  NS_SCRIPTABLE NS_IMETHOD Uniform1iv(GLint location, nsIWebGLArray *v) = 0;

  /* void uniform2fv (in GLint location, in nsIWebGLArray v); */
  NS_SCRIPTABLE NS_IMETHOD Uniform2fv(GLint location, nsIWebGLArray *v) = 0;

  /* void uniform2iv (in GLint location, in nsIWebGLArray v); */
  NS_SCRIPTABLE NS_IMETHOD Uniform2iv(GLint location, nsIWebGLArray *v) = 0;

  /* void uniform3fv (in GLint location, in nsIWebGLArray v); */
  NS_SCRIPTABLE NS_IMETHOD Uniform3fv(GLint location, nsIWebGLArray *v) = 0;

  /* void uniform3iv (in GLint location, in nsIWebGLArray v); */
  NS_SCRIPTABLE NS_IMETHOD Uniform3iv(GLint location, nsIWebGLArray *v) = 0;

  /* void uniform4fv (in GLint location, in nsIWebGLArray v); */
  NS_SCRIPTABLE NS_IMETHOD Uniform4fv(GLint location, nsIWebGLArray *v) = 0;

  /* void uniform4iv (in GLint location, in nsIWebGLArray v); */
  NS_SCRIPTABLE NS_IMETHOD Uniform4iv(GLint location, nsIWebGLArray *v) = 0;

  /* void uniformMatrix2fv (in GLint location, in GLboolean transpose, in nsIWebGLArray value); */
  NS_SCRIPTABLE NS_IMETHOD UniformMatrix2fv(GLint location, GLboolean transpose, nsIWebGLArray *value) = 0;

  /* void uniformMatrix3fv (in GLint location, in GLboolean transpose, in nsIWebGLArray value); */
  NS_SCRIPTABLE NS_IMETHOD UniformMatrix3fv(GLint location, GLboolean transpose, nsIWebGLArray *value) = 0;

  /* void uniformMatrix4fv (in GLint location, in GLboolean transpose, in nsIWebGLArray value); */
  NS_SCRIPTABLE NS_IMETHOD UniformMatrix4fv(GLint location, GLboolean transpose, nsIWebGLArray *value) = 0;

  /* void useProgram (in nsIWebGLProgram program); */
  NS_SCRIPTABLE NS_IMETHOD UseProgram(nsIWebGLProgram *program) = 0;

  /* void validateProgram (in nsIWebGLProgram program); */
  NS_SCRIPTABLE NS_IMETHOD ValidateProgram(nsIWebGLProgram *program) = 0;

  /* void vertexAttrib1f (in GLuint indx, in GLfloat x); */
  NS_SCRIPTABLE NS_IMETHOD VertexAttrib1f(GLuint indx, GLfloat x) = 0;

  /* void vertexAttrib2f (in GLuint indx, in GLfloat x, in GLfloat y); */
  NS_SCRIPTABLE NS_IMETHOD VertexAttrib2f(GLuint indx, GLfloat x, GLfloat y) = 0;

  /* void vertexAttrib3f (in GLuint indx, in GLfloat x, in GLfloat y, in GLfloat z); */
  NS_SCRIPTABLE NS_IMETHOD VertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z) = 0;

  /* void vertexAttrib4f (in GLuint indx, in GLfloat x, in GLfloat y, in GLfloat z, in GLfloat w); */
  NS_SCRIPTABLE NS_IMETHOD VertexAttrib4f(GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w) = 0;

  /* void vertexAttrib1fv (in GLuint indx, in nsIWebGLArray values); */
  NS_SCRIPTABLE NS_IMETHOD VertexAttrib1fv(GLuint indx, nsIWebGLArray *values) = 0;

  /* void vertexAttrib2fv (in GLuint indx, in nsIWebGLArray values); */
  NS_SCRIPTABLE NS_IMETHOD VertexAttrib2fv(GLuint indx, nsIWebGLArray *values) = 0;

  /* void vertexAttrib3fv (in GLuint indx, in nsIWebGLArray values); */
  NS_SCRIPTABLE NS_IMETHOD VertexAttrib3fv(GLuint indx, nsIWebGLArray *values) = 0;

  /* void vertexAttrib4fv (in GLuint indx, in nsIWebGLArray values); */
  NS_SCRIPTABLE NS_IMETHOD VertexAttrib4fv(GLuint indx, nsIWebGLArray *values) = 0;

  /* void vertexAttribPointer (in GLuint idx, in GLint size, in GLenum type, in GLboolean normalized, in GLuint stride, in GLuint offset); */
  NS_SCRIPTABLE NS_IMETHOD VertexAttribPointer(GLuint idx, GLint size, GLenum type, GLboolean normalized, GLuint stride, GLuint offset) = 0;

  /* void viewport (in GLint x, in GLint y, in GLsizei width, in GLsizei height); */
  NS_SCRIPTABLE NS_IMETHOD Viewport(GLint x, GLint y, GLsizei width, GLsizei height) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsICanvasRenderingContextWebGL, NS_ICANVASRENDERINGCONTEXTWEBGL_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSICANVASRENDERINGCONTEXTWEBGL \
  NS_SCRIPTABLE NS_IMETHOD CreateFloatArray(nsIWebGLFloatArray **_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD CreateByteArray(nsIWebGLByteArray **_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD CreateUnsignedByteArray(nsIWebGLUnsignedByteArray **_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD CreateShortArray(nsIWebGLShortArray **_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD CreateUnsignedShortArray(nsIWebGLUnsignedShortArray **_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD CreateIntArray(nsIWebGLIntArray **_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD CreateUnsignedIntArray(nsIWebGLUnsignedIntArray **_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD GetCanvas(nsIDOMHTMLCanvasElement * *aCanvas); \
  NS_SCRIPTABLE NS_IMETHOD Present(void); \
  NS_SCRIPTABLE NS_IMETHOD SizeInBytes(GLenum type, PRInt32 *_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD ActiveTexture(GLenum texture); \
  NS_SCRIPTABLE NS_IMETHOD AttachShader(nsIWebGLProgram *program, nsIWebGLShader *shader); \
  NS_SCRIPTABLE NS_IMETHOD BindAttribLocation(nsIWebGLProgram *program, GLuint index, const nsAString & name); \
  NS_SCRIPTABLE NS_IMETHOD BindBuffer(GLenum target, nsIWebGLBuffer *buffer); \
  NS_SCRIPTABLE NS_IMETHOD BindFramebuffer(GLenum target, nsIWebGLFramebuffer *framebuffer); \
  NS_SCRIPTABLE NS_IMETHOD BindRenderbuffer(GLenum target, nsIWebGLRenderbuffer *renderbuffer); \
  NS_SCRIPTABLE NS_IMETHOD BindTexture(GLenum target, nsIWebGLTexture *texture); \
  NS_SCRIPTABLE NS_IMETHOD BlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); \
  NS_SCRIPTABLE NS_IMETHOD BlendEquation(GLenum mode); \
  NS_SCRIPTABLE NS_IMETHOD BlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha); \
  NS_SCRIPTABLE NS_IMETHOD BlendFunc(GLenum sfactor, GLenum dfactor); \
  NS_SCRIPTABLE NS_IMETHOD BlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); \
  NS_SCRIPTABLE NS_IMETHOD BufferData(GLenum target); \
  NS_SCRIPTABLE NS_IMETHOD BufferSubData(GLenum target, GLsizeiptr offset); \
  NS_SCRIPTABLE NS_IMETHOD CheckFramebufferStatus(GLenum target, GLenum *_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD Clear(GLbitfield mask); \
  NS_SCRIPTABLE NS_IMETHOD ClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); \
  NS_SCRIPTABLE NS_IMETHOD ClearDepth(GLclampf depth); \
  NS_SCRIPTABLE NS_IMETHOD ClearStencil(GLint s); \
  NS_SCRIPTABLE NS_IMETHOD ColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); \
  NS_SCRIPTABLE NS_IMETHOD CompileShader(nsIWebGLShader *shader); \
  NS_SCRIPTABLE NS_IMETHOD CopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); \
  NS_SCRIPTABLE NS_IMETHOD CopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); \
  NS_SCRIPTABLE NS_IMETHOD CreateBuffer(nsIWebGLBuffer **_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD CreateProgram(nsIWebGLProgram **_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD CreateFramebuffer(nsIWebGLFramebuffer **_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD CreateRenderbuffer(nsIWebGLRenderbuffer **_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD CreateShader(GLenum type, nsIWebGLShader **_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD CreateTexture(nsIWebGLTexture **_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD CullFace(GLenum mode); \
  NS_SCRIPTABLE NS_IMETHOD DeleteBuffer(nsIWebGLBuffer *buffer); \
  NS_SCRIPTABLE NS_IMETHOD DeleteProgram(nsIWebGLProgram *program); \
  NS_SCRIPTABLE NS_IMETHOD DeleteFramebuffer(nsIWebGLFramebuffer *framebuffer); \
  NS_SCRIPTABLE NS_IMETHOD DeleteRenderbuffer(nsIWebGLRenderbuffer *renderbuffer); \
  NS_SCRIPTABLE NS_IMETHOD DeleteShader(nsIWebGLShader *shader); \
  NS_SCRIPTABLE NS_IMETHOD DeleteTexture(nsIWebGLTexture *texture); \
  NS_SCRIPTABLE NS_IMETHOD DepthFunc(GLenum func); \
  NS_SCRIPTABLE NS_IMETHOD DepthMask(GLboolean flag); \
  NS_SCRIPTABLE NS_IMETHOD DepthRange(GLclampf zNear, GLclampf zFar); \
  NS_SCRIPTABLE NS_IMETHOD DetachShader(nsIWebGLProgram *program, nsIWebGLShader *shader); \
  NS_SCRIPTABLE NS_IMETHOD Disable(GLenum cap); \
  NS_SCRIPTABLE NS_IMETHOD DisableVertexAttribArray(GLuint index); \
  NS_SCRIPTABLE NS_IMETHOD DrawArrays(GLenum mode, GLint first, GLsizei count); \
  NS_SCRIPTABLE NS_IMETHOD DrawElements(GLenum mode, GLuint count, GLenum type, GLuint offset); \
  NS_SCRIPTABLE NS_IMETHOD Enable(GLenum cap); \
  NS_SCRIPTABLE NS_IMETHOD EnableVertexAttribArray(GLuint index); \
  NS_SCRIPTABLE NS_IMETHOD Finish(void); \
  NS_SCRIPTABLE NS_IMETHOD Flush(void); \
  NS_SCRIPTABLE NS_IMETHOD FramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, nsIWebGLRenderbuffer *renderbuffer); \
  NS_SCRIPTABLE NS_IMETHOD FramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, nsIWebGLTexture *texture, GLint level); \
  NS_SCRIPTABLE NS_IMETHOD FrontFace(GLenum mode); \
  NS_SCRIPTABLE NS_IMETHOD GenerateMipmap(GLenum target); \
  NS_SCRIPTABLE NS_IMETHOD GetActiveAttrib(nsIWebGLProgram *program, PRUint32 index, nsIWebGLActiveInfo **_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD GetActiveUniform(nsIWebGLProgram *program, PRUint32 index, nsIWebGLActiveInfo **_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD GetAttribLocation(nsIWebGLProgram *program, const nsAString & name, GLint *_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD GetParameter(GLenum pname); \
  NS_SCRIPTABLE NS_IMETHOD GetBufferParameteri(GLenum target, GLenum pname, GLint *_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD GetBufferParameter(GLenum target, GLenum pname); \
  NS_SCRIPTABLE NS_IMETHOD GetError(GLenum *_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD GetFramebufferAttachmentParameteri(GLenum target, GLenum attachment, GLenum pname, GLint *_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD GetFramebufferAttachmentParameter(GLenum target, GLenum attachment, GLenum pname); \
  NS_SCRIPTABLE NS_IMETHOD GetProgrami(nsIWebGLProgram *program, GLenum pname, GLint *_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD GetProgramParameter(nsIWebGLProgram *program, GLenum pname); \
  NS_SCRIPTABLE NS_IMETHOD GetProgramInfoLog(nsIWebGLProgram *program, nsAString & _retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD GetRenderbufferParameteri(GLenum target, GLenum pname, GLint *_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD GetRenderbufferParameter(GLenum target, GLenum pname); \
  NS_SCRIPTABLE NS_IMETHOD GetShaderi(nsIWebGLShader *shader, GLenum pname, GLint *_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD GetShaderParameter(nsIWebGLShader *shader, GLenum pname); \
  NS_SCRIPTABLE NS_IMETHOD GetShaderInfoLog(nsIWebGLShader *shader, nsAString & _retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD GetShaderSource(nsIWebGLShader *shader, nsAString & _retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD GetString(GLenum name, nsAString & _retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD GetTexParameterf(GLenum target, GLenum pname, GLfloat *_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD GetTexParameteri(GLenum target, GLenum pname, GLint *_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD GetTexParameter(GLenum target, GLenum pname); \
  NS_SCRIPTABLE NS_IMETHOD GetUniform(nsIWebGLProgram *program, GLint location); \
  NS_SCRIPTABLE NS_IMETHOD GetUniformLocation(nsIWebGLProgram *program, const nsAString & name, GLint *_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD GetVertexAttrib(GLuint index, GLenum pname); \
  NS_SCRIPTABLE NS_IMETHOD GetVertexAttribOffset(GLuint index, GLenum pname, GLuint *_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD Hint(GLenum target, GLenum mode); \
  NS_SCRIPTABLE NS_IMETHOD IsBuffer(nsIWebGLBuffer *buffer, GLboolean *_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD IsFramebuffer(nsIWebGLFramebuffer *framebuffer, GLboolean *_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD IsProgram(nsIWebGLProgram *program, GLboolean *_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD IsRenderbuffer(nsIWebGLRenderbuffer *renderbuffer, GLboolean *_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD IsShader(nsIWebGLShader *shader, GLboolean *_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD IsTexture(nsIWebGLTexture *texture, GLboolean *_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD IsEnabled(GLenum cap, GLboolean *_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD LineWidth(GLfloat width); \
  NS_SCRIPTABLE NS_IMETHOD LinkProgram(nsIWebGLProgram *program); \
  NS_SCRIPTABLE NS_IMETHOD PixelStorei(GLenum pname, GLint param); \
  NS_SCRIPTABLE NS_IMETHOD PolygonOffset(GLfloat factor, GLfloat units); \
  NS_SCRIPTABLE NS_IMETHOD ReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type); \
  NS_SCRIPTABLE NS_IMETHOD RenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); \
  NS_SCRIPTABLE NS_IMETHOD SampleCoverage(GLclampf value, GLboolean invert); \
  NS_SCRIPTABLE NS_IMETHOD Scissor(GLint x, GLint y, GLsizei width, GLsizei height); \
  NS_SCRIPTABLE NS_IMETHOD ShaderSource(nsIWebGLShader *shader, const nsAString & source); \
  NS_SCRIPTABLE NS_IMETHOD StencilFunc(GLenum func, GLint ref, GLuint mask); \
  NS_SCRIPTABLE NS_IMETHOD StencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask); \
  NS_SCRIPTABLE NS_IMETHOD StencilMask(GLuint mask); \
  NS_SCRIPTABLE NS_IMETHOD StencilMaskSeparate(GLenum face, GLuint mask); \
  NS_SCRIPTABLE NS_IMETHOD StencilOp(GLenum fail, GLenum zfail, GLenum zpass); \
  NS_SCRIPTABLE NS_IMETHOD StencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass); \
  NS_SCRIPTABLE NS_IMETHOD TexImage2D(void); \
  NS_SCRIPTABLE NS_IMETHOD TexParameterf(GLenum target, GLenum pname, GLfloat param); \
  NS_SCRIPTABLE NS_IMETHOD TexParameteri(GLenum target, GLenum pname, GLint param); \
  NS_SCRIPTABLE NS_IMETHOD TexSubImage2D(void); \
  NS_SCRIPTABLE NS_IMETHOD Uniform1f(GLint location, GLfloat x); \
  NS_SCRIPTABLE NS_IMETHOD Uniform1i(GLint location, GLint x); \
  NS_SCRIPTABLE NS_IMETHOD Uniform2f(GLint location, GLfloat x, GLfloat y); \
  NS_SCRIPTABLE NS_IMETHOD Uniform2i(GLint location, GLint x, GLint y); \
  NS_SCRIPTABLE NS_IMETHOD Uniform3f(GLint location, GLfloat x, GLfloat y, GLfloat z); \
  NS_SCRIPTABLE NS_IMETHOD Uniform3i(GLint location, GLint x, GLint y, GLint z); \
  NS_SCRIPTABLE NS_IMETHOD Uniform4f(GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w); \
  NS_SCRIPTABLE NS_IMETHOD Uniform4i(GLint location, GLint x, GLint y, GLint z, GLint w); \
  NS_SCRIPTABLE NS_IMETHOD Uniform1fv(GLint location, nsIWebGLArray *v); \
  NS_SCRIPTABLE NS_IMETHOD Uniform1iv(GLint location, nsIWebGLArray *v); \
  NS_SCRIPTABLE NS_IMETHOD Uniform2fv(GLint location, nsIWebGLArray *v); \
  NS_SCRIPTABLE NS_IMETHOD Uniform2iv(GLint location, nsIWebGLArray *v); \
  NS_SCRIPTABLE NS_IMETHOD Uniform3fv(GLint location, nsIWebGLArray *v); \
  NS_SCRIPTABLE NS_IMETHOD Uniform3iv(GLint location, nsIWebGLArray *v); \
  NS_SCRIPTABLE NS_IMETHOD Uniform4fv(GLint location, nsIWebGLArray *v); \
  NS_SCRIPTABLE NS_IMETHOD Uniform4iv(GLint location, nsIWebGLArray *v); \
  NS_SCRIPTABLE NS_IMETHOD UniformMatrix2fv(GLint location, GLboolean transpose, nsIWebGLArray *value); \
  NS_SCRIPTABLE NS_IMETHOD UniformMatrix3fv(GLint location, GLboolean transpose, nsIWebGLArray *value); \
  NS_SCRIPTABLE NS_IMETHOD UniformMatrix4fv(GLint location, GLboolean transpose, nsIWebGLArray *value); \
  NS_SCRIPTABLE NS_IMETHOD UseProgram(nsIWebGLProgram *program); \
  NS_SCRIPTABLE NS_IMETHOD ValidateProgram(nsIWebGLProgram *program); \
  NS_SCRIPTABLE NS_IMETHOD VertexAttrib1f(GLuint indx, GLfloat x); \
  NS_SCRIPTABLE NS_IMETHOD VertexAttrib2f(GLuint indx, GLfloat x, GLfloat y); \
  NS_SCRIPTABLE NS_IMETHOD VertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z); \
  NS_SCRIPTABLE NS_IMETHOD VertexAttrib4f(GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w); \
  NS_SCRIPTABLE NS_IMETHOD VertexAttrib1fv(GLuint indx, nsIWebGLArray *values); \
  NS_SCRIPTABLE NS_IMETHOD VertexAttrib2fv(GLuint indx, nsIWebGLArray *values); \
  NS_SCRIPTABLE NS_IMETHOD VertexAttrib3fv(GLuint indx, nsIWebGLArray *values); \
  NS_SCRIPTABLE NS_IMETHOD VertexAttrib4fv(GLuint indx, nsIWebGLArray *values); \
  NS_SCRIPTABLE NS_IMETHOD VertexAttribPointer(GLuint idx, GLint size, GLenum type, GLboolean normalized, GLuint stride, GLuint offset); \
  NS_SCRIPTABLE NS_IMETHOD Viewport(GLint x, GLint y, GLsizei width, GLsizei height); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSICANVASRENDERINGCONTEXTWEBGL(_to) \
  NS_SCRIPTABLE NS_IMETHOD CreateFloatArray(nsIWebGLFloatArray **_retval NS_OUTPARAM) { return _to CreateFloatArray(_retval); } \
  NS_SCRIPTABLE NS_IMETHOD CreateByteArray(nsIWebGLByteArray **_retval NS_OUTPARAM) { return _to CreateByteArray(_retval); } \
  NS_SCRIPTABLE NS_IMETHOD CreateUnsignedByteArray(nsIWebGLUnsignedByteArray **_retval NS_OUTPARAM) { return _to CreateUnsignedByteArray(_retval); } \
  NS_SCRIPTABLE NS_IMETHOD CreateShortArray(nsIWebGLShortArray **_retval NS_OUTPARAM) { return _to CreateShortArray(_retval); } \
  NS_SCRIPTABLE NS_IMETHOD CreateUnsignedShortArray(nsIWebGLUnsignedShortArray **_retval NS_OUTPARAM) { return _to CreateUnsignedShortArray(_retval); } \
  NS_SCRIPTABLE NS_IMETHOD CreateIntArray(nsIWebGLIntArray **_retval NS_OUTPARAM) { return _to CreateIntArray(_retval); } \
  NS_SCRIPTABLE NS_IMETHOD CreateUnsignedIntArray(nsIWebGLUnsignedIntArray **_retval NS_OUTPARAM) { return _to CreateUnsignedIntArray(_retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetCanvas(nsIDOMHTMLCanvasElement * *aCanvas) { return _to GetCanvas(aCanvas); } \
  NS_SCRIPTABLE NS_IMETHOD Present(void) { return _to Present(); } \
  NS_SCRIPTABLE NS_IMETHOD SizeInBytes(GLenum type, PRInt32 *_retval NS_OUTPARAM) { return _to SizeInBytes(type, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD ActiveTexture(GLenum texture) { return _to ActiveTexture(texture); } \
  NS_SCRIPTABLE NS_IMETHOD AttachShader(nsIWebGLProgram *program, nsIWebGLShader *shader) { return _to AttachShader(program, shader); } \
  NS_SCRIPTABLE NS_IMETHOD BindAttribLocation(nsIWebGLProgram *program, GLuint index, const nsAString & name) { return _to BindAttribLocation(program, index, name); } \
  NS_SCRIPTABLE NS_IMETHOD BindBuffer(GLenum target, nsIWebGLBuffer *buffer) { return _to BindBuffer(target, buffer); } \
  NS_SCRIPTABLE NS_IMETHOD BindFramebuffer(GLenum target, nsIWebGLFramebuffer *framebuffer) { return _to BindFramebuffer(target, framebuffer); } \
  NS_SCRIPTABLE NS_IMETHOD BindRenderbuffer(GLenum target, nsIWebGLRenderbuffer *renderbuffer) { return _to BindRenderbuffer(target, renderbuffer); } \
  NS_SCRIPTABLE NS_IMETHOD BindTexture(GLenum target, nsIWebGLTexture *texture) { return _to BindTexture(target, texture); } \
  NS_SCRIPTABLE NS_IMETHOD BlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) { return _to BlendColor(red, green, blue, alpha); } \
  NS_SCRIPTABLE NS_IMETHOD BlendEquation(GLenum mode) { return _to BlendEquation(mode); } \
  NS_SCRIPTABLE NS_IMETHOD BlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) { return _to BlendEquationSeparate(modeRGB, modeAlpha); } \
  NS_SCRIPTABLE NS_IMETHOD BlendFunc(GLenum sfactor, GLenum dfactor) { return _to BlendFunc(sfactor, dfactor); } \
  NS_SCRIPTABLE NS_IMETHOD BlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) { return _to BlendFuncSeparate(srcRGB, dstRGB, srcAlpha, dstAlpha); } \
  NS_SCRIPTABLE NS_IMETHOD BufferData(GLenum target) { return _to BufferData(target); } \
  NS_SCRIPTABLE NS_IMETHOD BufferSubData(GLenum target, GLsizeiptr offset) { return _to BufferSubData(target, offset); } \
  NS_SCRIPTABLE NS_IMETHOD CheckFramebufferStatus(GLenum target, GLenum *_retval NS_OUTPARAM) { return _to CheckFramebufferStatus(target, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD Clear(GLbitfield mask) { return _to Clear(mask); } \
  NS_SCRIPTABLE NS_IMETHOD ClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) { return _to ClearColor(red, green, blue, alpha); } \
  NS_SCRIPTABLE NS_IMETHOD ClearDepth(GLclampf depth) { return _to ClearDepth(depth); } \
  NS_SCRIPTABLE NS_IMETHOD ClearStencil(GLint s) { return _to ClearStencil(s); } \
  NS_SCRIPTABLE NS_IMETHOD ColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) { return _to ColorMask(red, green, blue, alpha); } \
  NS_SCRIPTABLE NS_IMETHOD CompileShader(nsIWebGLShader *shader) { return _to CompileShader(shader); } \
  NS_SCRIPTABLE NS_IMETHOD CopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) { return _to CopyTexImage2D(target, level, internalformat, x, y, width, height, border); } \
  NS_SCRIPTABLE NS_IMETHOD CopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) { return _to CopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height); } \
  NS_SCRIPTABLE NS_IMETHOD CreateBuffer(nsIWebGLBuffer **_retval NS_OUTPARAM) { return _to CreateBuffer(_retval); } \
  NS_SCRIPTABLE NS_IMETHOD CreateProgram(nsIWebGLProgram **_retval NS_OUTPARAM) { return _to CreateProgram(_retval); } \
  NS_SCRIPTABLE NS_IMETHOD CreateFramebuffer(nsIWebGLFramebuffer **_retval NS_OUTPARAM) { return _to CreateFramebuffer(_retval); } \
  NS_SCRIPTABLE NS_IMETHOD CreateRenderbuffer(nsIWebGLRenderbuffer **_retval NS_OUTPARAM) { return _to CreateRenderbuffer(_retval); } \
  NS_SCRIPTABLE NS_IMETHOD CreateShader(GLenum type, nsIWebGLShader **_retval NS_OUTPARAM) { return _to CreateShader(type, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD CreateTexture(nsIWebGLTexture **_retval NS_OUTPARAM) { return _to CreateTexture(_retval); } \
  NS_SCRIPTABLE NS_IMETHOD CullFace(GLenum mode) { return _to CullFace(mode); } \
  NS_SCRIPTABLE NS_IMETHOD DeleteBuffer(nsIWebGLBuffer *buffer) { return _to DeleteBuffer(buffer); } \
  NS_SCRIPTABLE NS_IMETHOD DeleteProgram(nsIWebGLProgram *program) { return _to DeleteProgram(program); } \
  NS_SCRIPTABLE NS_IMETHOD DeleteFramebuffer(nsIWebGLFramebuffer *framebuffer) { return _to DeleteFramebuffer(framebuffer); } \
  NS_SCRIPTABLE NS_IMETHOD DeleteRenderbuffer(nsIWebGLRenderbuffer *renderbuffer) { return _to DeleteRenderbuffer(renderbuffer); } \
  NS_SCRIPTABLE NS_IMETHOD DeleteShader(nsIWebGLShader *shader) { return _to DeleteShader(shader); } \
  NS_SCRIPTABLE NS_IMETHOD DeleteTexture(nsIWebGLTexture *texture) { return _to DeleteTexture(texture); } \
  NS_SCRIPTABLE NS_IMETHOD DepthFunc(GLenum func) { return _to DepthFunc(func); } \
  NS_SCRIPTABLE NS_IMETHOD DepthMask(GLboolean flag) { return _to DepthMask(flag); } \
  NS_SCRIPTABLE NS_IMETHOD DepthRange(GLclampf zNear, GLclampf zFar) { return _to DepthRange(zNear, zFar); } \
  NS_SCRIPTABLE NS_IMETHOD DetachShader(nsIWebGLProgram *program, nsIWebGLShader *shader) { return _to DetachShader(program, shader); } \
  NS_SCRIPTABLE NS_IMETHOD Disable(GLenum cap) { return _to Disable(cap); } \
  NS_SCRIPTABLE NS_IMETHOD DisableVertexAttribArray(GLuint index) { return _to DisableVertexAttribArray(index); } \
  NS_SCRIPTABLE NS_IMETHOD DrawArrays(GLenum mode, GLint first, GLsizei count) { return _to DrawArrays(mode, first, count); } \
  NS_SCRIPTABLE NS_IMETHOD DrawElements(GLenum mode, GLuint count, GLenum type, GLuint offset) { return _to DrawElements(mode, count, type, offset); } \
  NS_SCRIPTABLE NS_IMETHOD Enable(GLenum cap) { return _to Enable(cap); } \
  NS_SCRIPTABLE NS_IMETHOD EnableVertexAttribArray(GLuint index) { return _to EnableVertexAttribArray(index); } \
  NS_SCRIPTABLE NS_IMETHOD Finish(void) { return _to Finish(); } \
  NS_SCRIPTABLE NS_IMETHOD Flush(void) { return _to Flush(); } \
  NS_SCRIPTABLE NS_IMETHOD FramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, nsIWebGLRenderbuffer *renderbuffer) { return _to FramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer); } \
  NS_SCRIPTABLE NS_IMETHOD FramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, nsIWebGLTexture *texture, GLint level) { return _to FramebufferTexture2D(target, attachment, textarget, texture, level); } \
  NS_SCRIPTABLE NS_IMETHOD FrontFace(GLenum mode) { return _to FrontFace(mode); } \
  NS_SCRIPTABLE NS_IMETHOD GenerateMipmap(GLenum target) { return _to GenerateMipmap(target); } \
  NS_SCRIPTABLE NS_IMETHOD GetActiveAttrib(nsIWebGLProgram *program, PRUint32 index, nsIWebGLActiveInfo **_retval NS_OUTPARAM) { return _to GetActiveAttrib(program, index, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetActiveUniform(nsIWebGLProgram *program, PRUint32 index, nsIWebGLActiveInfo **_retval NS_OUTPARAM) { return _to GetActiveUniform(program, index, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetAttribLocation(nsIWebGLProgram *program, const nsAString & name, GLint *_retval NS_OUTPARAM) { return _to GetAttribLocation(program, name, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetParameter(GLenum pname) { return _to GetParameter(pname); } \
  NS_SCRIPTABLE NS_IMETHOD GetBufferParameteri(GLenum target, GLenum pname, GLint *_retval NS_OUTPARAM) { return _to GetBufferParameteri(target, pname, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetBufferParameter(GLenum target, GLenum pname) { return _to GetBufferParameter(target, pname); } \
  NS_SCRIPTABLE NS_IMETHOD GetError(GLenum *_retval NS_OUTPARAM) { return _to GetError(_retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetFramebufferAttachmentParameteri(GLenum target, GLenum attachment, GLenum pname, GLint *_retval NS_OUTPARAM) { return _to GetFramebufferAttachmentParameteri(target, attachment, pname, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetFramebufferAttachmentParameter(GLenum target, GLenum attachment, GLenum pname) { return _to GetFramebufferAttachmentParameter(target, attachment, pname); } \
  NS_SCRIPTABLE NS_IMETHOD GetProgrami(nsIWebGLProgram *program, GLenum pname, GLint *_retval NS_OUTPARAM) { return _to GetProgrami(program, pname, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetProgramParameter(nsIWebGLProgram *program, GLenum pname) { return _to GetProgramParameter(program, pname); } \
  NS_SCRIPTABLE NS_IMETHOD GetProgramInfoLog(nsIWebGLProgram *program, nsAString & _retval NS_OUTPARAM) { return _to GetProgramInfoLog(program, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetRenderbufferParameteri(GLenum target, GLenum pname, GLint *_retval NS_OUTPARAM) { return _to GetRenderbufferParameteri(target, pname, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetRenderbufferParameter(GLenum target, GLenum pname) { return _to GetRenderbufferParameter(target, pname); } \
  NS_SCRIPTABLE NS_IMETHOD GetShaderi(nsIWebGLShader *shader, GLenum pname, GLint *_retval NS_OUTPARAM) { return _to GetShaderi(shader, pname, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetShaderParameter(nsIWebGLShader *shader, GLenum pname) { return _to GetShaderParameter(shader, pname); } \
  NS_SCRIPTABLE NS_IMETHOD GetShaderInfoLog(nsIWebGLShader *shader, nsAString & _retval NS_OUTPARAM) { return _to GetShaderInfoLog(shader, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetShaderSource(nsIWebGLShader *shader, nsAString & _retval NS_OUTPARAM) { return _to GetShaderSource(shader, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetString(GLenum name, nsAString & _retval NS_OUTPARAM) { return _to GetString(name, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetTexParameterf(GLenum target, GLenum pname, GLfloat *_retval NS_OUTPARAM) { return _to GetTexParameterf(target, pname, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetTexParameteri(GLenum target, GLenum pname, GLint *_retval NS_OUTPARAM) { return _to GetTexParameteri(target, pname, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetTexParameter(GLenum target, GLenum pname) { return _to GetTexParameter(target, pname); } \
  NS_SCRIPTABLE NS_IMETHOD GetUniform(nsIWebGLProgram *program, GLint location) { return _to GetUniform(program, location); } \
  NS_SCRIPTABLE NS_IMETHOD GetUniformLocation(nsIWebGLProgram *program, const nsAString & name, GLint *_retval NS_OUTPARAM) { return _to GetUniformLocation(program, name, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetVertexAttrib(GLuint index, GLenum pname) { return _to GetVertexAttrib(index, pname); } \
  NS_SCRIPTABLE NS_IMETHOD GetVertexAttribOffset(GLuint index, GLenum pname, GLuint *_retval NS_OUTPARAM) { return _to GetVertexAttribOffset(index, pname, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD Hint(GLenum target, GLenum mode) { return _to Hint(target, mode); } \
  NS_SCRIPTABLE NS_IMETHOD IsBuffer(nsIWebGLBuffer *buffer, GLboolean *_retval NS_OUTPARAM) { return _to IsBuffer(buffer, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD IsFramebuffer(nsIWebGLFramebuffer *framebuffer, GLboolean *_retval NS_OUTPARAM) { return _to IsFramebuffer(framebuffer, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD IsProgram(nsIWebGLProgram *program, GLboolean *_retval NS_OUTPARAM) { return _to IsProgram(program, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD IsRenderbuffer(nsIWebGLRenderbuffer *renderbuffer, GLboolean *_retval NS_OUTPARAM) { return _to IsRenderbuffer(renderbuffer, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD IsShader(nsIWebGLShader *shader, GLboolean *_retval NS_OUTPARAM) { return _to IsShader(shader, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD IsTexture(nsIWebGLTexture *texture, GLboolean *_retval NS_OUTPARAM) { return _to IsTexture(texture, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD IsEnabled(GLenum cap, GLboolean *_retval NS_OUTPARAM) { return _to IsEnabled(cap, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD LineWidth(GLfloat width) { return _to LineWidth(width); } \
  NS_SCRIPTABLE NS_IMETHOD LinkProgram(nsIWebGLProgram *program) { return _to LinkProgram(program); } \
  NS_SCRIPTABLE NS_IMETHOD PixelStorei(GLenum pname, GLint param) { return _to PixelStorei(pname, param); } \
  NS_SCRIPTABLE NS_IMETHOD PolygonOffset(GLfloat factor, GLfloat units) { return _to PolygonOffset(factor, units); } \
  NS_SCRIPTABLE NS_IMETHOD ReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type) { return _to ReadPixels(x, y, width, height, format, type); } \
  NS_SCRIPTABLE NS_IMETHOD RenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) { return _to RenderbufferStorage(target, internalformat, width, height); } \
  NS_SCRIPTABLE NS_IMETHOD SampleCoverage(GLclampf value, GLboolean invert) { return _to SampleCoverage(value, invert); } \
  NS_SCRIPTABLE NS_IMETHOD Scissor(GLint x, GLint y, GLsizei width, GLsizei height) { return _to Scissor(x, y, width, height); } \
  NS_SCRIPTABLE NS_IMETHOD ShaderSource(nsIWebGLShader *shader, const nsAString & source) { return _to ShaderSource(shader, source); } \
  NS_SCRIPTABLE NS_IMETHOD StencilFunc(GLenum func, GLint ref, GLuint mask) { return _to StencilFunc(func, ref, mask); } \
  NS_SCRIPTABLE NS_IMETHOD StencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask) { return _to StencilFuncSeparate(face, func, ref, mask); } \
  NS_SCRIPTABLE NS_IMETHOD StencilMask(GLuint mask) { return _to StencilMask(mask); } \
  NS_SCRIPTABLE NS_IMETHOD StencilMaskSeparate(GLenum face, GLuint mask) { return _to StencilMaskSeparate(face, mask); } \
  NS_SCRIPTABLE NS_IMETHOD StencilOp(GLenum fail, GLenum zfail, GLenum zpass) { return _to StencilOp(fail, zfail, zpass); } \
  NS_SCRIPTABLE NS_IMETHOD StencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass) { return _to StencilOpSeparate(face, fail, zfail, zpass); } \
  NS_SCRIPTABLE NS_IMETHOD TexImage2D(void) { return _to TexImage2D(); } \
  NS_SCRIPTABLE NS_IMETHOD TexParameterf(GLenum target, GLenum pname, GLfloat param) { return _to TexParameterf(target, pname, param); } \
  NS_SCRIPTABLE NS_IMETHOD TexParameteri(GLenum target, GLenum pname, GLint param) { return _to TexParameteri(target, pname, param); } \
  NS_SCRIPTABLE NS_IMETHOD TexSubImage2D(void) { return _to TexSubImage2D(); } \
  NS_SCRIPTABLE NS_IMETHOD Uniform1f(GLint location, GLfloat x) { return _to Uniform1f(location, x); } \
  NS_SCRIPTABLE NS_IMETHOD Uniform1i(GLint location, GLint x) { return _to Uniform1i(location, x); } \
  NS_SCRIPTABLE NS_IMETHOD Uniform2f(GLint location, GLfloat x, GLfloat y) { return _to Uniform2f(location, x, y); } \
  NS_SCRIPTABLE NS_IMETHOD Uniform2i(GLint location, GLint x, GLint y) { return _to Uniform2i(location, x, y); } \
  NS_SCRIPTABLE NS_IMETHOD Uniform3f(GLint location, GLfloat x, GLfloat y, GLfloat z) { return _to Uniform3f(location, x, y, z); } \
  NS_SCRIPTABLE NS_IMETHOD Uniform3i(GLint location, GLint x, GLint y, GLint z) { return _to Uniform3i(location, x, y, z); } \
  NS_SCRIPTABLE NS_IMETHOD Uniform4f(GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w) { return _to Uniform4f(location, x, y, z, w); } \
  NS_SCRIPTABLE NS_IMETHOD Uniform4i(GLint location, GLint x, GLint y, GLint z, GLint w) { return _to Uniform4i(location, x, y, z, w); } \
  NS_SCRIPTABLE NS_IMETHOD Uniform1fv(GLint location, nsIWebGLArray *v) { return _to Uniform1fv(location, v); } \
  NS_SCRIPTABLE NS_IMETHOD Uniform1iv(GLint location, nsIWebGLArray *v) { return _to Uniform1iv(location, v); } \
  NS_SCRIPTABLE NS_IMETHOD Uniform2fv(GLint location, nsIWebGLArray *v) { return _to Uniform2fv(location, v); } \
  NS_SCRIPTABLE NS_IMETHOD Uniform2iv(GLint location, nsIWebGLArray *v) { return _to Uniform2iv(location, v); } \
  NS_SCRIPTABLE NS_IMETHOD Uniform3fv(GLint location, nsIWebGLArray *v) { return _to Uniform3fv(location, v); } \
  NS_SCRIPTABLE NS_IMETHOD Uniform3iv(GLint location, nsIWebGLArray *v) { return _to Uniform3iv(location, v); } \
  NS_SCRIPTABLE NS_IMETHOD Uniform4fv(GLint location, nsIWebGLArray *v) { return _to Uniform4fv(location, v); } \
  NS_SCRIPTABLE NS_IMETHOD Uniform4iv(GLint location, nsIWebGLArray *v) { return _to Uniform4iv(location, v); } \
  NS_SCRIPTABLE NS_IMETHOD UniformMatrix2fv(GLint location, GLboolean transpose, nsIWebGLArray *value) { return _to UniformMatrix2fv(location, transpose, value); } \
  NS_SCRIPTABLE NS_IMETHOD UniformMatrix3fv(GLint location, GLboolean transpose, nsIWebGLArray *value) { return _to UniformMatrix3fv(location, transpose, value); } \
  NS_SCRIPTABLE NS_IMETHOD UniformMatrix4fv(GLint location, GLboolean transpose, nsIWebGLArray *value) { return _to UniformMatrix4fv(location, transpose, value); } \
  NS_SCRIPTABLE NS_IMETHOD UseProgram(nsIWebGLProgram *program) { return _to UseProgram(program); } \
  NS_SCRIPTABLE NS_IMETHOD ValidateProgram(nsIWebGLProgram *program) { return _to ValidateProgram(program); } \
  NS_SCRIPTABLE NS_IMETHOD VertexAttrib1f(GLuint indx, GLfloat x) { return _to VertexAttrib1f(indx, x); } \
  NS_SCRIPTABLE NS_IMETHOD VertexAttrib2f(GLuint indx, GLfloat x, GLfloat y) { return _to VertexAttrib2f(indx, x, y); } \
  NS_SCRIPTABLE NS_IMETHOD VertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z) { return _to VertexAttrib3f(indx, x, y, z); } \
  NS_SCRIPTABLE NS_IMETHOD VertexAttrib4f(GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w) { return _to VertexAttrib4f(indx, x, y, z, w); } \
  NS_SCRIPTABLE NS_IMETHOD VertexAttrib1fv(GLuint indx, nsIWebGLArray *values) { return _to VertexAttrib1fv(indx, values); } \
  NS_SCRIPTABLE NS_IMETHOD VertexAttrib2fv(GLuint indx, nsIWebGLArray *values) { return _to VertexAttrib2fv(indx, values); } \
  NS_SCRIPTABLE NS_IMETHOD VertexAttrib3fv(GLuint indx, nsIWebGLArray *values) { return _to VertexAttrib3fv(indx, values); } \
  NS_SCRIPTABLE NS_IMETHOD VertexAttrib4fv(GLuint indx, nsIWebGLArray *values) { return _to VertexAttrib4fv(indx, values); } \
  NS_SCRIPTABLE NS_IMETHOD VertexAttribPointer(GLuint idx, GLint size, GLenum type, GLboolean normalized, GLuint stride, GLuint offset) { return _to VertexAttribPointer(idx, size, type, normalized, stride, offset); } \
  NS_SCRIPTABLE NS_IMETHOD Viewport(GLint x, GLint y, GLsizei width, GLsizei height) { return _to Viewport(x, y, width, height); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSICANVASRENDERINGCONTEXTWEBGL(_to) \
  NS_SCRIPTABLE NS_IMETHOD CreateFloatArray(nsIWebGLFloatArray **_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateFloatArray(_retval); } \
  NS_SCRIPTABLE NS_IMETHOD CreateByteArray(nsIWebGLByteArray **_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateByteArray(_retval); } \
  NS_SCRIPTABLE NS_IMETHOD CreateUnsignedByteArray(nsIWebGLUnsignedByteArray **_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateUnsignedByteArray(_retval); } \
  NS_SCRIPTABLE NS_IMETHOD CreateShortArray(nsIWebGLShortArray **_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateShortArray(_retval); } \
  NS_SCRIPTABLE NS_IMETHOD CreateUnsignedShortArray(nsIWebGLUnsignedShortArray **_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateUnsignedShortArray(_retval); } \
  NS_SCRIPTABLE NS_IMETHOD CreateIntArray(nsIWebGLIntArray **_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateIntArray(_retval); } \
  NS_SCRIPTABLE NS_IMETHOD CreateUnsignedIntArray(nsIWebGLUnsignedIntArray **_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateUnsignedIntArray(_retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetCanvas(nsIDOMHTMLCanvasElement * *aCanvas) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCanvas(aCanvas); } \
  NS_SCRIPTABLE NS_IMETHOD Present(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Present(); } \
  NS_SCRIPTABLE NS_IMETHOD SizeInBytes(GLenum type, PRInt32 *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->SizeInBytes(type, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD ActiveTexture(GLenum texture) { return !_to ? NS_ERROR_NULL_POINTER : _to->ActiveTexture(texture); } \
  NS_SCRIPTABLE NS_IMETHOD AttachShader(nsIWebGLProgram *program, nsIWebGLShader *shader) { return !_to ? NS_ERROR_NULL_POINTER : _to->AttachShader(program, shader); } \
  NS_SCRIPTABLE NS_IMETHOD BindAttribLocation(nsIWebGLProgram *program, GLuint index, const nsAString & name) { return !_to ? NS_ERROR_NULL_POINTER : _to->BindAttribLocation(program, index, name); } \
  NS_SCRIPTABLE NS_IMETHOD BindBuffer(GLenum target, nsIWebGLBuffer *buffer) { return !_to ? NS_ERROR_NULL_POINTER : _to->BindBuffer(target, buffer); } \
  NS_SCRIPTABLE NS_IMETHOD BindFramebuffer(GLenum target, nsIWebGLFramebuffer *framebuffer) { return !_to ? NS_ERROR_NULL_POINTER : _to->BindFramebuffer(target, framebuffer); } \
  NS_SCRIPTABLE NS_IMETHOD BindRenderbuffer(GLenum target, nsIWebGLRenderbuffer *renderbuffer) { return !_to ? NS_ERROR_NULL_POINTER : _to->BindRenderbuffer(target, renderbuffer); } \
  NS_SCRIPTABLE NS_IMETHOD BindTexture(GLenum target, nsIWebGLTexture *texture) { return !_to ? NS_ERROR_NULL_POINTER : _to->BindTexture(target, texture); } \
  NS_SCRIPTABLE NS_IMETHOD BlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) { return !_to ? NS_ERROR_NULL_POINTER : _to->BlendColor(red, green, blue, alpha); } \
  NS_SCRIPTABLE NS_IMETHOD BlendEquation(GLenum mode) { return !_to ? NS_ERROR_NULL_POINTER : _to->BlendEquation(mode); } \
  NS_SCRIPTABLE NS_IMETHOD BlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) { return !_to ? NS_ERROR_NULL_POINTER : _to->BlendEquationSeparate(modeRGB, modeAlpha); } \
  NS_SCRIPTABLE NS_IMETHOD BlendFunc(GLenum sfactor, GLenum dfactor) { return !_to ? NS_ERROR_NULL_POINTER : _to->BlendFunc(sfactor, dfactor); } \
  NS_SCRIPTABLE NS_IMETHOD BlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) { return !_to ? NS_ERROR_NULL_POINTER : _to->BlendFuncSeparate(srcRGB, dstRGB, srcAlpha, dstAlpha); } \
  NS_SCRIPTABLE NS_IMETHOD BufferData(GLenum target) { return !_to ? NS_ERROR_NULL_POINTER : _to->BufferData(target); } \
  NS_SCRIPTABLE NS_IMETHOD BufferSubData(GLenum target, GLsizeiptr offset) { return !_to ? NS_ERROR_NULL_POINTER : _to->BufferSubData(target, offset); } \
  NS_SCRIPTABLE NS_IMETHOD CheckFramebufferStatus(GLenum target, GLenum *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->CheckFramebufferStatus(target, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD Clear(GLbitfield mask) { return !_to ? NS_ERROR_NULL_POINTER : _to->Clear(mask); } \
  NS_SCRIPTABLE NS_IMETHOD ClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) { return !_to ? NS_ERROR_NULL_POINTER : _to->ClearColor(red, green, blue, alpha); } \
  NS_SCRIPTABLE NS_IMETHOD ClearDepth(GLclampf depth) { return !_to ? NS_ERROR_NULL_POINTER : _to->ClearDepth(depth); } \
  NS_SCRIPTABLE NS_IMETHOD ClearStencil(GLint s) { return !_to ? NS_ERROR_NULL_POINTER : _to->ClearStencil(s); } \
  NS_SCRIPTABLE NS_IMETHOD ColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) { return !_to ? NS_ERROR_NULL_POINTER : _to->ColorMask(red, green, blue, alpha); } \
  NS_SCRIPTABLE NS_IMETHOD CompileShader(nsIWebGLShader *shader) { return !_to ? NS_ERROR_NULL_POINTER : _to->CompileShader(shader); } \
  NS_SCRIPTABLE NS_IMETHOD CopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) { return !_to ? NS_ERROR_NULL_POINTER : _to->CopyTexImage2D(target, level, internalformat, x, y, width, height, border); } \
  NS_SCRIPTABLE NS_IMETHOD CopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) { return !_to ? NS_ERROR_NULL_POINTER : _to->CopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height); } \
  NS_SCRIPTABLE NS_IMETHOD CreateBuffer(nsIWebGLBuffer **_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateBuffer(_retval); } \
  NS_SCRIPTABLE NS_IMETHOD CreateProgram(nsIWebGLProgram **_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateProgram(_retval); } \
  NS_SCRIPTABLE NS_IMETHOD CreateFramebuffer(nsIWebGLFramebuffer **_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateFramebuffer(_retval); } \
  NS_SCRIPTABLE NS_IMETHOD CreateRenderbuffer(nsIWebGLRenderbuffer **_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateRenderbuffer(_retval); } \
  NS_SCRIPTABLE NS_IMETHOD CreateShader(GLenum type, nsIWebGLShader **_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateShader(type, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD CreateTexture(nsIWebGLTexture **_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateTexture(_retval); } \
  NS_SCRIPTABLE NS_IMETHOD CullFace(GLenum mode) { return !_to ? NS_ERROR_NULL_POINTER : _to->CullFace(mode); } \
  NS_SCRIPTABLE NS_IMETHOD DeleteBuffer(nsIWebGLBuffer *buffer) { return !_to ? NS_ERROR_NULL_POINTER : _to->DeleteBuffer(buffer); } \
  NS_SCRIPTABLE NS_IMETHOD DeleteProgram(nsIWebGLProgram *program) { return !_to ? NS_ERROR_NULL_POINTER : _to->DeleteProgram(program); } \
  NS_SCRIPTABLE NS_IMETHOD DeleteFramebuffer(nsIWebGLFramebuffer *framebuffer) { return !_to ? NS_ERROR_NULL_POINTER : _to->DeleteFramebuffer(framebuffer); } \
  NS_SCRIPTABLE NS_IMETHOD DeleteRenderbuffer(nsIWebGLRenderbuffer *renderbuffer) { return !_to ? NS_ERROR_NULL_POINTER : _to->DeleteRenderbuffer(renderbuffer); } \
  NS_SCRIPTABLE NS_IMETHOD DeleteShader(nsIWebGLShader *shader) { return !_to ? NS_ERROR_NULL_POINTER : _to->DeleteShader(shader); } \
  NS_SCRIPTABLE NS_IMETHOD DeleteTexture(nsIWebGLTexture *texture) { return !_to ? NS_ERROR_NULL_POINTER : _to->DeleteTexture(texture); } \
  NS_SCRIPTABLE NS_IMETHOD DepthFunc(GLenum func) { return !_to ? NS_ERROR_NULL_POINTER : _to->DepthFunc(func); } \
  NS_SCRIPTABLE NS_IMETHOD DepthMask(GLboolean flag) { return !_to ? NS_ERROR_NULL_POINTER : _to->DepthMask(flag); } \
  NS_SCRIPTABLE NS_IMETHOD DepthRange(GLclampf zNear, GLclampf zFar) { return !_to ? NS_ERROR_NULL_POINTER : _to->DepthRange(zNear, zFar); } \
  NS_SCRIPTABLE NS_IMETHOD DetachShader(nsIWebGLProgram *program, nsIWebGLShader *shader) { return !_to ? NS_ERROR_NULL_POINTER : _to->DetachShader(program, shader); } \
  NS_SCRIPTABLE NS_IMETHOD Disable(GLenum cap) { return !_to ? NS_ERROR_NULL_POINTER : _to->Disable(cap); } \
  NS_SCRIPTABLE NS_IMETHOD DisableVertexAttribArray(GLuint index) { return !_to ? NS_ERROR_NULL_POINTER : _to->DisableVertexAttribArray(index); } \
  NS_SCRIPTABLE NS_IMETHOD DrawArrays(GLenum mode, GLint first, GLsizei count) { return !_to ? NS_ERROR_NULL_POINTER : _to->DrawArrays(mode, first, count); } \
  NS_SCRIPTABLE NS_IMETHOD DrawElements(GLenum mode, GLuint count, GLenum type, GLuint offset) { return !_to ? NS_ERROR_NULL_POINTER : _to->DrawElements(mode, count, type, offset); } \
  NS_SCRIPTABLE NS_IMETHOD Enable(GLenum cap) { return !_to ? NS_ERROR_NULL_POINTER : _to->Enable(cap); } \
  NS_SCRIPTABLE NS_IMETHOD EnableVertexAttribArray(GLuint index) { return !_to ? NS_ERROR_NULL_POINTER : _to->EnableVertexAttribArray(index); } \
  NS_SCRIPTABLE NS_IMETHOD Finish(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Finish(); } \
  NS_SCRIPTABLE NS_IMETHOD Flush(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Flush(); } \
  NS_SCRIPTABLE NS_IMETHOD FramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, nsIWebGLRenderbuffer *renderbuffer) { return !_to ? NS_ERROR_NULL_POINTER : _to->FramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer); } \
  NS_SCRIPTABLE NS_IMETHOD FramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, nsIWebGLTexture *texture, GLint level) { return !_to ? NS_ERROR_NULL_POINTER : _to->FramebufferTexture2D(target, attachment, textarget, texture, level); } \
  NS_SCRIPTABLE NS_IMETHOD FrontFace(GLenum mode) { return !_to ? NS_ERROR_NULL_POINTER : _to->FrontFace(mode); } \
  NS_SCRIPTABLE NS_IMETHOD GenerateMipmap(GLenum target) { return !_to ? NS_ERROR_NULL_POINTER : _to->GenerateMipmap(target); } \
  NS_SCRIPTABLE NS_IMETHOD GetActiveAttrib(nsIWebGLProgram *program, PRUint32 index, nsIWebGLActiveInfo **_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetActiveAttrib(program, index, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetActiveUniform(nsIWebGLProgram *program, PRUint32 index, nsIWebGLActiveInfo **_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetActiveUniform(program, index, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetAttribLocation(nsIWebGLProgram *program, const nsAString & name, GLint *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAttribLocation(program, name, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetParameter(GLenum pname) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetParameter(pname); } \
  NS_SCRIPTABLE NS_IMETHOD GetBufferParameteri(GLenum target, GLenum pname, GLint *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBufferParameteri(target, pname, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetBufferParameter(GLenum target, GLenum pname) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBufferParameter(target, pname); } \
  NS_SCRIPTABLE NS_IMETHOD GetError(GLenum *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetError(_retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetFramebufferAttachmentParameteri(GLenum target, GLenum attachment, GLenum pname, GLint *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFramebufferAttachmentParameteri(target, attachment, pname, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetFramebufferAttachmentParameter(GLenum target, GLenum attachment, GLenum pname) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFramebufferAttachmentParameter(target, attachment, pname); } \
  NS_SCRIPTABLE NS_IMETHOD GetProgrami(nsIWebGLProgram *program, GLenum pname, GLint *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProgrami(program, pname, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetProgramParameter(nsIWebGLProgram *program, GLenum pname) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProgramParameter(program, pname); } \
  NS_SCRIPTABLE NS_IMETHOD GetProgramInfoLog(nsIWebGLProgram *program, nsAString & _retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProgramInfoLog(program, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetRenderbufferParameteri(GLenum target, GLenum pname, GLint *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRenderbufferParameteri(target, pname, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetRenderbufferParameter(GLenum target, GLenum pname) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRenderbufferParameter(target, pname); } \
  NS_SCRIPTABLE NS_IMETHOD GetShaderi(nsIWebGLShader *shader, GLenum pname, GLint *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetShaderi(shader, pname, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetShaderParameter(nsIWebGLShader *shader, GLenum pname) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetShaderParameter(shader, pname); } \
  NS_SCRIPTABLE NS_IMETHOD GetShaderInfoLog(nsIWebGLShader *shader, nsAString & _retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetShaderInfoLog(shader, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetShaderSource(nsIWebGLShader *shader, nsAString & _retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetShaderSource(shader, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetString(GLenum name, nsAString & _retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetString(name, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetTexParameterf(GLenum target, GLenum pname, GLfloat *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTexParameterf(target, pname, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetTexParameteri(GLenum target, GLenum pname, GLint *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTexParameteri(target, pname, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetTexParameter(GLenum target, GLenum pname) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTexParameter(target, pname); } \
  NS_SCRIPTABLE NS_IMETHOD GetUniform(nsIWebGLProgram *program, GLint location) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUniform(program, location); } \
  NS_SCRIPTABLE NS_IMETHOD GetUniformLocation(nsIWebGLProgram *program, const nsAString & name, GLint *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUniformLocation(program, name, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetVertexAttrib(GLuint index, GLenum pname) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVertexAttrib(index, pname); } \
  NS_SCRIPTABLE NS_IMETHOD GetVertexAttribOffset(GLuint index, GLenum pname, GLuint *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVertexAttribOffset(index, pname, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD Hint(GLenum target, GLenum mode) { return !_to ? NS_ERROR_NULL_POINTER : _to->Hint(target, mode); } \
  NS_SCRIPTABLE NS_IMETHOD IsBuffer(nsIWebGLBuffer *buffer, GLboolean *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->IsBuffer(buffer, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD IsFramebuffer(nsIWebGLFramebuffer *framebuffer, GLboolean *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->IsFramebuffer(framebuffer, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD IsProgram(nsIWebGLProgram *program, GLboolean *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->IsProgram(program, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD IsRenderbuffer(nsIWebGLRenderbuffer *renderbuffer, GLboolean *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->IsRenderbuffer(renderbuffer, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD IsShader(nsIWebGLShader *shader, GLboolean *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->IsShader(shader, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD IsTexture(nsIWebGLTexture *texture, GLboolean *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->IsTexture(texture, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD IsEnabled(GLenum cap, GLboolean *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->IsEnabled(cap, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD LineWidth(GLfloat width) { return !_to ? NS_ERROR_NULL_POINTER : _to->LineWidth(width); } \
  NS_SCRIPTABLE NS_IMETHOD LinkProgram(nsIWebGLProgram *program) { return !_to ? NS_ERROR_NULL_POINTER : _to->LinkProgram(program); } \
  NS_SCRIPTABLE NS_IMETHOD PixelStorei(GLenum pname, GLint param) { return !_to ? NS_ERROR_NULL_POINTER : _to->PixelStorei(pname, param); } \
  NS_SCRIPTABLE NS_IMETHOD PolygonOffset(GLfloat factor, GLfloat units) { return !_to ? NS_ERROR_NULL_POINTER : _to->PolygonOffset(factor, units); } \
  NS_SCRIPTABLE NS_IMETHOD ReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type) { return !_to ? NS_ERROR_NULL_POINTER : _to->ReadPixels(x, y, width, height, format, type); } \
  NS_SCRIPTABLE NS_IMETHOD RenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) { return !_to ? NS_ERROR_NULL_POINTER : _to->RenderbufferStorage(target, internalformat, width, height); } \
  NS_SCRIPTABLE NS_IMETHOD SampleCoverage(GLclampf value, GLboolean invert) { return !_to ? NS_ERROR_NULL_POINTER : _to->SampleCoverage(value, invert); } \
  NS_SCRIPTABLE NS_IMETHOD Scissor(GLint x, GLint y, GLsizei width, GLsizei height) { return !_to ? NS_ERROR_NULL_POINTER : _to->Scissor(x, y, width, height); } \
  NS_SCRIPTABLE NS_IMETHOD ShaderSource(nsIWebGLShader *shader, const nsAString & source) { return !_to ? NS_ERROR_NULL_POINTER : _to->ShaderSource(shader, source); } \
  NS_SCRIPTABLE NS_IMETHOD StencilFunc(GLenum func, GLint ref, GLuint mask) { return !_to ? NS_ERROR_NULL_POINTER : _to->StencilFunc(func, ref, mask); } \
  NS_SCRIPTABLE NS_IMETHOD StencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask) { return !_to ? NS_ERROR_NULL_POINTER : _to->StencilFuncSeparate(face, func, ref, mask); } \
  NS_SCRIPTABLE NS_IMETHOD StencilMask(GLuint mask) { return !_to ? NS_ERROR_NULL_POINTER : _to->StencilMask(mask); } \
  NS_SCRIPTABLE NS_IMETHOD StencilMaskSeparate(GLenum face, GLuint mask) { return !_to ? NS_ERROR_NULL_POINTER : _to->StencilMaskSeparate(face, mask); } \
  NS_SCRIPTABLE NS_IMETHOD StencilOp(GLenum fail, GLenum zfail, GLenum zpass) { return !_to ? NS_ERROR_NULL_POINTER : _to->StencilOp(fail, zfail, zpass); } \
  NS_SCRIPTABLE NS_IMETHOD StencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass) { return !_to ? NS_ERROR_NULL_POINTER : _to->StencilOpSeparate(face, fail, zfail, zpass); } \
  NS_SCRIPTABLE NS_IMETHOD TexImage2D(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->TexImage2D(); } \
  NS_SCRIPTABLE NS_IMETHOD TexParameterf(GLenum target, GLenum pname, GLfloat param) { return !_to ? NS_ERROR_NULL_POINTER : _to->TexParameterf(target, pname, param); } \
  NS_SCRIPTABLE NS_IMETHOD TexParameteri(GLenum target, GLenum pname, GLint param) { return !_to ? NS_ERROR_NULL_POINTER : _to->TexParameteri(target, pname, param); } \
  NS_SCRIPTABLE NS_IMETHOD TexSubImage2D(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->TexSubImage2D(); } \
  NS_SCRIPTABLE NS_IMETHOD Uniform1f(GLint location, GLfloat x) { return !_to ? NS_ERROR_NULL_POINTER : _to->Uniform1f(location, x); } \
  NS_SCRIPTABLE NS_IMETHOD Uniform1i(GLint location, GLint x) { return !_to ? NS_ERROR_NULL_POINTER : _to->Uniform1i(location, x); } \
  NS_SCRIPTABLE NS_IMETHOD Uniform2f(GLint location, GLfloat x, GLfloat y) { return !_to ? NS_ERROR_NULL_POINTER : _to->Uniform2f(location, x, y); } \
  NS_SCRIPTABLE NS_IMETHOD Uniform2i(GLint location, GLint x, GLint y) { return !_to ? NS_ERROR_NULL_POINTER : _to->Uniform2i(location, x, y); } \
  NS_SCRIPTABLE NS_IMETHOD Uniform3f(GLint location, GLfloat x, GLfloat y, GLfloat z) { return !_to ? NS_ERROR_NULL_POINTER : _to->Uniform3f(location, x, y, z); } \
  NS_SCRIPTABLE NS_IMETHOD Uniform3i(GLint location, GLint x, GLint y, GLint z) { return !_to ? NS_ERROR_NULL_POINTER : _to->Uniform3i(location, x, y, z); } \
  NS_SCRIPTABLE NS_IMETHOD Uniform4f(GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w) { return !_to ? NS_ERROR_NULL_POINTER : _to->Uniform4f(location, x, y, z, w); } \
  NS_SCRIPTABLE NS_IMETHOD Uniform4i(GLint location, GLint x, GLint y, GLint z, GLint w) { return !_to ? NS_ERROR_NULL_POINTER : _to->Uniform4i(location, x, y, z, w); } \
  NS_SCRIPTABLE NS_IMETHOD Uniform1fv(GLint location, nsIWebGLArray *v) { return !_to ? NS_ERROR_NULL_POINTER : _to->Uniform1fv(location, v); } \
  NS_SCRIPTABLE NS_IMETHOD Uniform1iv(GLint location, nsIWebGLArray *v) { return !_to ? NS_ERROR_NULL_POINTER : _to->Uniform1iv(location, v); } \
  NS_SCRIPTABLE NS_IMETHOD Uniform2fv(GLint location, nsIWebGLArray *v) { return !_to ? NS_ERROR_NULL_POINTER : _to->Uniform2fv(location, v); } \
  NS_SCRIPTABLE NS_IMETHOD Uniform2iv(GLint location, nsIWebGLArray *v) { return !_to ? NS_ERROR_NULL_POINTER : _to->Uniform2iv(location, v); } \
  NS_SCRIPTABLE NS_IMETHOD Uniform3fv(GLint location, nsIWebGLArray *v) { return !_to ? NS_ERROR_NULL_POINTER : _to->Uniform3fv(location, v); } \
  NS_SCRIPTABLE NS_IMETHOD Uniform3iv(GLint location, nsIWebGLArray *v) { return !_to ? NS_ERROR_NULL_POINTER : _to->Uniform3iv(location, v); } \
  NS_SCRIPTABLE NS_IMETHOD Uniform4fv(GLint location, nsIWebGLArray *v) { return !_to ? NS_ERROR_NULL_POINTER : _to->Uniform4fv(location, v); } \
  NS_SCRIPTABLE NS_IMETHOD Uniform4iv(GLint location, nsIWebGLArray *v) { return !_to ? NS_ERROR_NULL_POINTER : _to->Uniform4iv(location, v); } \
  NS_SCRIPTABLE NS_IMETHOD UniformMatrix2fv(GLint location, GLboolean transpose, nsIWebGLArray *value) { return !_to ? NS_ERROR_NULL_POINTER : _to->UniformMatrix2fv(location, transpose, value); } \
  NS_SCRIPTABLE NS_IMETHOD UniformMatrix3fv(GLint location, GLboolean transpose, nsIWebGLArray *value) { return !_to ? NS_ERROR_NULL_POINTER : _to->UniformMatrix3fv(location, transpose, value); } \
  NS_SCRIPTABLE NS_IMETHOD UniformMatrix4fv(GLint location, GLboolean transpose, nsIWebGLArray *value) { return !_to ? NS_ERROR_NULL_POINTER : _to->UniformMatrix4fv(location, transpose, value); } \
  NS_SCRIPTABLE NS_IMETHOD UseProgram(nsIWebGLProgram *program) { return !_to ? NS_ERROR_NULL_POINTER : _to->UseProgram(program); } \
  NS_SCRIPTABLE NS_IMETHOD ValidateProgram(nsIWebGLProgram *program) { return !_to ? NS_ERROR_NULL_POINTER : _to->ValidateProgram(program); } \
  NS_SCRIPTABLE NS_IMETHOD VertexAttrib1f(GLuint indx, GLfloat x) { return !_to ? NS_ERROR_NULL_POINTER : _to->VertexAttrib1f(indx, x); } \
  NS_SCRIPTABLE NS_IMETHOD VertexAttrib2f(GLuint indx, GLfloat x, GLfloat y) { return !_to ? NS_ERROR_NULL_POINTER : _to->VertexAttrib2f(indx, x, y); } \
  NS_SCRIPTABLE NS_IMETHOD VertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z) { return !_to ? NS_ERROR_NULL_POINTER : _to->VertexAttrib3f(indx, x, y, z); } \
  NS_SCRIPTABLE NS_IMETHOD VertexAttrib4f(GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w) { return !_to ? NS_ERROR_NULL_POINTER : _to->VertexAttrib4f(indx, x, y, z, w); } \
  NS_SCRIPTABLE NS_IMETHOD VertexAttrib1fv(GLuint indx, nsIWebGLArray *values) { return !_to ? NS_ERROR_NULL_POINTER : _to->VertexAttrib1fv(indx, values); } \
  NS_SCRIPTABLE NS_IMETHOD VertexAttrib2fv(GLuint indx, nsIWebGLArray *values) { return !_to ? NS_ERROR_NULL_POINTER : _to->VertexAttrib2fv(indx, values); } \
  NS_SCRIPTABLE NS_IMETHOD VertexAttrib3fv(GLuint indx, nsIWebGLArray *values) { return !_to ? NS_ERROR_NULL_POINTER : _to->VertexAttrib3fv(indx, values); } \
  NS_SCRIPTABLE NS_IMETHOD VertexAttrib4fv(GLuint indx, nsIWebGLArray *values) { return !_to ? NS_ERROR_NULL_POINTER : _to->VertexAttrib4fv(indx, values); } \
  NS_SCRIPTABLE NS_IMETHOD VertexAttribPointer(GLuint idx, GLint size, GLenum type, GLboolean normalized, GLuint stride, GLuint offset) { return !_to ? NS_ERROR_NULL_POINTER : _to->VertexAttribPointer(idx, size, type, normalized, stride, offset); } \
  NS_SCRIPTABLE NS_IMETHOD Viewport(GLint x, GLint y, GLsizei width, GLsizei height) { return !_to ? NS_ERROR_NULL_POINTER : _to->Viewport(x, y, width, height); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class nsCanvasRenderingContextWebGL : public nsICanvasRenderingContextWebGL
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSICANVASRENDERINGCONTEXTWEBGL

  nsCanvasRenderingContextWebGL();

private:
  ~nsCanvasRenderingContextWebGL();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsCanvasRenderingContextWebGL, nsICanvasRenderingContextWebGL)

nsCanvasRenderingContextWebGL::nsCanvasRenderingContextWebGL()
{
  /* member initializers and constructor code */
}

nsCanvasRenderingContextWebGL::~nsCanvasRenderingContextWebGL()
{
  /* destructor code */
}

/* nsIWebGLFloatArray createFloatArray (); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::CreateFloatArray(nsIWebGLFloatArray **_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIWebGLByteArray createByteArray (); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::CreateByteArray(nsIWebGLByteArray **_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIWebGLUnsignedByteArray createUnsignedByteArray (); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::CreateUnsignedByteArray(nsIWebGLUnsignedByteArray **_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIWebGLShortArray createShortArray (); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::CreateShortArray(nsIWebGLShortArray **_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIWebGLUnsignedShortArray createUnsignedShortArray (); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::CreateUnsignedShortArray(nsIWebGLUnsignedShortArray **_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIWebGLIntArray createIntArray (); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::CreateIntArray(nsIWebGLIntArray **_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIWebGLUnsignedIntArray createUnsignedIntArray (); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::CreateUnsignedIntArray(nsIWebGLUnsignedIntArray **_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsIDOMHTMLCanvasElement canvas; */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::GetCanvas(nsIDOMHTMLCanvasElement * *aCanvas)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void present (); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::Present()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* long sizeInBytes (in GLenum type); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::SizeInBytes(GLenum type, PRInt32 *_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void activeTexture (in GLenum texture); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::ActiveTexture(GLenum texture)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void attachShader (in nsIWebGLProgram program, in nsIWebGLShader shader); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::AttachShader(nsIWebGLProgram *program, nsIWebGLShader *shader)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void bindAttribLocation (in nsIWebGLProgram program, in GLuint index, in DOMString name); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::BindAttribLocation(nsIWebGLProgram *program, GLuint index, const nsAString & name)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void bindBuffer (in GLenum target, in nsIWebGLBuffer buffer); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::BindBuffer(GLenum target, nsIWebGLBuffer *buffer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void bindFramebuffer (in GLenum target, in nsIWebGLFramebuffer framebuffer); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::BindFramebuffer(GLenum target, nsIWebGLFramebuffer *framebuffer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void bindRenderbuffer (in GLenum target, in nsIWebGLRenderbuffer renderbuffer); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::BindRenderbuffer(GLenum target, nsIWebGLRenderbuffer *renderbuffer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void bindTexture (in GLenum target, in nsIWebGLTexture texture); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::BindTexture(GLenum target, nsIWebGLTexture *texture)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void blendColor (in GLclampf red, in GLclampf green, in GLclampf blue, in GLclampf alpha); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::BlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void blendEquation (in GLenum mode); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::BlendEquation(GLenum mode)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void blendEquationSeparate (in GLenum modeRGB, in GLenum modeAlpha); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::BlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void blendFunc (in GLenum sfactor, in GLenum dfactor); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::BlendFunc(GLenum sfactor, GLenum dfactor)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void blendFuncSeparate (in GLenum srcRGB, in GLenum dstRGB, in GLenum srcAlpha, in GLenum dstAlpha); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::BlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void bufferData (in GLenum target); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::BufferData(GLenum target)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void bufferSubData (in GLenum target, in GLsizeiptr offset); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::BufferSubData(GLenum target, GLsizeiptr offset)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* GLenum checkFramebufferStatus (in GLenum target); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::CheckFramebufferStatus(GLenum target, GLenum *_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void clear (in GLbitfield mask); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::Clear(GLbitfield mask)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void clearColor (in GLclampf red, in GLclampf green, in GLclampf blue, in GLclampf alpha); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::ClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void clearDepth (in GLclampf depth); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::ClearDepth(GLclampf depth)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void clearStencil (in GLint s); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::ClearStencil(GLint s)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void colorMask (in GLboolean red, in GLboolean green, in GLboolean blue, in GLboolean alpha); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::ColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void compileShader (in nsIWebGLShader shader); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::CompileShader(nsIWebGLShader *shader)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void copyTexImage2D (in GLenum target, in GLint level, in GLenum internalformat, in GLint x, in GLint y, in GLsizei width, in GLsizei height, in GLint border); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::CopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void copyTexSubImage2D (in GLenum target, in GLint level, in GLint xoffset, in GLint yoffset, in GLint x, in GLint y, in GLsizei width, in GLsizei height); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::CopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIWebGLBuffer createBuffer (); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::CreateBuffer(nsIWebGLBuffer **_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIWebGLProgram createProgram (); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::CreateProgram(nsIWebGLProgram **_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIWebGLFramebuffer createFramebuffer (); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::CreateFramebuffer(nsIWebGLFramebuffer **_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIWebGLRenderbuffer createRenderbuffer (); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::CreateRenderbuffer(nsIWebGLRenderbuffer **_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIWebGLShader createShader (in GLenum type); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::CreateShader(GLenum type, nsIWebGLShader **_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIWebGLTexture createTexture (); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::CreateTexture(nsIWebGLTexture **_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void cullFace (in GLenum mode); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::CullFace(GLenum mode)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void deleteBuffer (in nsIWebGLBuffer buffer); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::DeleteBuffer(nsIWebGLBuffer *buffer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void deleteProgram (in nsIWebGLProgram program); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::DeleteProgram(nsIWebGLProgram *program)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void deleteFramebuffer (in nsIWebGLFramebuffer framebuffer); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::DeleteFramebuffer(nsIWebGLFramebuffer *framebuffer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void deleteRenderbuffer (in nsIWebGLRenderbuffer renderbuffer); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::DeleteRenderbuffer(nsIWebGLRenderbuffer *renderbuffer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void deleteShader (in nsIWebGLShader shader); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::DeleteShader(nsIWebGLShader *shader)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void deleteTexture (in nsIWebGLTexture texture); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::DeleteTexture(nsIWebGLTexture *texture)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void depthFunc (in GLenum func); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::DepthFunc(GLenum func)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void depthMask (in GLboolean flag); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::DepthMask(GLboolean flag)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void depthRange (in GLclampf zNear, in GLclampf zFar); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::DepthRange(GLclampf zNear, GLclampf zFar)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void detachShader (in nsIWebGLProgram program, in nsIWebGLShader shader); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::DetachShader(nsIWebGLProgram *program, nsIWebGLShader *shader)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void disable (in GLenum cap); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::Disable(GLenum cap)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void disableVertexAttribArray (in GLuint index); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::DisableVertexAttribArray(GLuint index)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void drawArrays (in GLenum mode, in GLint first, in GLsizei count); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::DrawArrays(GLenum mode, GLint first, GLsizei count)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void drawElements (in GLenum mode, in GLuint count, in GLenum type, in GLuint offset); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::DrawElements(GLenum mode, GLuint count, GLenum type, GLuint offset)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void enable (in GLenum cap); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::Enable(GLenum cap)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void enableVertexAttribArray (in GLuint index); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::EnableVertexAttribArray(GLuint index)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void finish (); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::Finish()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void flush (); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::Flush()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void framebufferRenderbuffer (in GLenum target, in GLenum attachment, in GLenum renderbuffertarget, in nsIWebGLRenderbuffer renderbuffer); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::FramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, nsIWebGLRenderbuffer *renderbuffer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void framebufferTexture2D (in GLenum target, in GLenum attachment, in GLenum textarget, in nsIWebGLTexture texture, in GLint level); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::FramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, nsIWebGLTexture *texture, GLint level)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void frontFace (in GLenum mode); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::FrontFace(GLenum mode)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void generateMipmap (in GLenum target); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::GenerateMipmap(GLenum target)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIWebGLActiveInfo getActiveAttrib (in nsIWebGLProgram program, in PRUint32 index); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::GetActiveAttrib(nsIWebGLProgram *program, PRUint32 index, nsIWebGLActiveInfo **_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIWebGLActiveInfo getActiveUniform (in nsIWebGLProgram program, in PRUint32 index); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::GetActiveUniform(nsIWebGLProgram *program, PRUint32 index, nsIWebGLActiveInfo **_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* GLint getAttribLocation (in nsIWebGLProgram program, in DOMString name); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::GetAttribLocation(nsIWebGLProgram *program, const nsAString & name, GLint *_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getParameter (in GLenum pname); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::GetParameter(GLenum pname)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* GLint getBufferParameteri (in GLenum target, in GLenum pname); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::GetBufferParameteri(GLenum target, GLenum pname, GLint *_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getBufferParameter (in GLenum target, in GLenum pname); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::GetBufferParameter(GLenum target, GLenum pname)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* GLenum getError (); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::GetError(GLenum *_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* GLint getFramebufferAttachmentParameteri (in GLenum target, in GLenum attachment, in GLenum pname); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::GetFramebufferAttachmentParameteri(GLenum target, GLenum attachment, GLenum pname, GLint *_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getFramebufferAttachmentParameter (in GLenum target, in GLenum attachment, in GLenum pname); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::GetFramebufferAttachmentParameter(GLenum target, GLenum attachment, GLenum pname)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* GLint getProgrami (in nsIWebGLProgram program, in GLenum pname); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::GetProgrami(nsIWebGLProgram *program, GLenum pname, GLint *_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getProgramParameter (in nsIWebGLProgram program, in GLenum pname); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::GetProgramParameter(nsIWebGLProgram *program, GLenum pname)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* DOMString getProgramInfoLog (in nsIWebGLProgram program); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::GetProgramInfoLog(nsIWebGLProgram *program, nsAString & _retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* GLint getRenderbufferParameteri (in GLenum target, in GLenum pname); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::GetRenderbufferParameteri(GLenum target, GLenum pname, GLint *_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getRenderbufferParameter (in GLenum target, in GLenum pname); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::GetRenderbufferParameter(GLenum target, GLenum pname)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* GLint getShaderi (in nsIWebGLShader shader, in GLenum pname); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::GetShaderi(nsIWebGLShader *shader, GLenum pname, GLint *_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getShaderParameter (in nsIWebGLShader shader, in GLenum pname); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::GetShaderParameter(nsIWebGLShader *shader, GLenum pname)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* DOMString getShaderInfoLog (in nsIWebGLShader shader); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::GetShaderInfoLog(nsIWebGLShader *shader, nsAString & _retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* DOMString getShaderSource (in nsIWebGLShader shader); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::GetShaderSource(nsIWebGLShader *shader, nsAString & _retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* DOMString getString (in GLenum name); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::GetString(GLenum name, nsAString & _retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* GLfloat getTexParameterf (in GLenum target, in GLenum pname); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::GetTexParameterf(GLenum target, GLenum pname, GLfloat *_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* GLint getTexParameteri (in GLenum target, in GLenum pname); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::GetTexParameteri(GLenum target, GLenum pname, GLint *_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getTexParameter (in GLenum target, in GLenum pname); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::GetTexParameter(GLenum target, GLenum pname)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getUniform (in nsIWebGLProgram program, in GLint location); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::GetUniform(nsIWebGLProgram *program, GLint location)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* GLint getUniformLocation (in nsIWebGLProgram program, in DOMString name); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::GetUniformLocation(nsIWebGLProgram *program, const nsAString & name, GLint *_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getVertexAttrib (in GLuint index, in GLenum pname); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::GetVertexAttrib(GLuint index, GLenum pname)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* GLuint getVertexAttribOffset (in GLuint index, in GLenum pname); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::GetVertexAttribOffset(GLuint index, GLenum pname, GLuint *_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void hint (in GLenum target, in GLenum mode); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::Hint(GLenum target, GLenum mode)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* GLboolean isBuffer (in nsIWebGLBuffer buffer); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::IsBuffer(nsIWebGLBuffer *buffer, GLboolean *_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* GLboolean isFramebuffer (in nsIWebGLFramebuffer framebuffer); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::IsFramebuffer(nsIWebGLFramebuffer *framebuffer, GLboolean *_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* GLboolean isProgram (in nsIWebGLProgram program); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::IsProgram(nsIWebGLProgram *program, GLboolean *_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* GLboolean isRenderbuffer (in nsIWebGLRenderbuffer renderbuffer); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::IsRenderbuffer(nsIWebGLRenderbuffer *renderbuffer, GLboolean *_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* GLboolean isShader (in nsIWebGLShader shader); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::IsShader(nsIWebGLShader *shader, GLboolean *_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* GLboolean isTexture (in nsIWebGLTexture texture); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::IsTexture(nsIWebGLTexture *texture, GLboolean *_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* GLboolean isEnabled (in GLenum cap); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::IsEnabled(GLenum cap, GLboolean *_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void lineWidth (in GLfloat width); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::LineWidth(GLfloat width)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void linkProgram (in nsIWebGLProgram program); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::LinkProgram(nsIWebGLProgram *program)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void pixelStorei (in GLenum pname, in GLint param); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::PixelStorei(GLenum pname, GLint param)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void polygonOffset (in GLfloat factor, in GLfloat units); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::PolygonOffset(GLfloat factor, GLfloat units)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void readPixels (in GLint x, in GLint y, in GLsizei width, in GLsizei height, in GLenum format, in GLenum type); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::ReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void renderbufferStorage (in GLenum target, in GLenum internalformat, in GLsizei width, in GLsizei height); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::RenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void sampleCoverage (in GLclampf value, in GLboolean invert); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::SampleCoverage(GLclampf value, GLboolean invert)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void scissor (in GLint x, in GLint y, in GLsizei width, in GLsizei height); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::Scissor(GLint x, GLint y, GLsizei width, GLsizei height)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void shaderSource (in nsIWebGLShader shader, in DOMString source); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::ShaderSource(nsIWebGLShader *shader, const nsAString & source)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void stencilFunc (in GLenum func, in GLint ref, in GLuint mask); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::StencilFunc(GLenum func, GLint ref, GLuint mask)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void stencilFuncSeparate (in GLenum face, in GLenum func, in GLint ref, in GLuint mask); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::StencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void stencilMask (in GLuint mask); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::StencilMask(GLuint mask)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void stencilMaskSeparate (in GLenum face, in GLuint mask); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::StencilMaskSeparate(GLenum face, GLuint mask)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void stencilOp (in GLenum fail, in GLenum zfail, in GLenum zpass); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::StencilOp(GLenum fail, GLenum zfail, GLenum zpass)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void stencilOpSeparate (in GLenum face, in GLenum fail, in GLenum zfail, in GLenum zpass); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::StencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void texImage2D (); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::TexImage2D()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void texParameterf (in GLenum target, in GLenum pname, in GLfloat param); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::TexParameterf(GLenum target, GLenum pname, GLfloat param)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void texParameteri (in GLenum target, in GLenum pname, in GLint param); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::TexParameteri(GLenum target, GLenum pname, GLint param)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void texSubImage2D (); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::TexSubImage2D()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void uniform1f (in GLint location, in GLfloat x); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::Uniform1f(GLint location, GLfloat x)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void uniform1i (in GLint location, in GLint x); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::Uniform1i(GLint location, GLint x)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void uniform2f (in GLint location, in GLfloat x, in GLfloat y); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::Uniform2f(GLint location, GLfloat x, GLfloat y)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void uniform2i (in GLint location, in GLint x, in GLint y); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::Uniform2i(GLint location, GLint x, GLint y)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void uniform3f (in GLint location, in GLfloat x, in GLfloat y, in GLfloat z); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::Uniform3f(GLint location, GLfloat x, GLfloat y, GLfloat z)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void uniform3i (in GLint location, in GLint x, in GLint y, in GLint z); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::Uniform3i(GLint location, GLint x, GLint y, GLint z)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void uniform4f (in GLint location, in GLfloat x, in GLfloat y, in GLfloat z, in GLfloat w); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::Uniform4f(GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void uniform4i (in GLint location, in GLint x, in GLint y, in GLint z, in GLint w); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::Uniform4i(GLint location, GLint x, GLint y, GLint z, GLint w)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void uniform1fv (in GLint location, in nsIWebGLArray v); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::Uniform1fv(GLint location, nsIWebGLArray *v)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void uniform1iv (in GLint location, in nsIWebGLArray v); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::Uniform1iv(GLint location, nsIWebGLArray *v)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void uniform2fv (in GLint location, in nsIWebGLArray v); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::Uniform2fv(GLint location, nsIWebGLArray *v)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void uniform2iv (in GLint location, in nsIWebGLArray v); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::Uniform2iv(GLint location, nsIWebGLArray *v)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void uniform3fv (in GLint location, in nsIWebGLArray v); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::Uniform3fv(GLint location, nsIWebGLArray *v)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void uniform3iv (in GLint location, in nsIWebGLArray v); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::Uniform3iv(GLint location, nsIWebGLArray *v)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void uniform4fv (in GLint location, in nsIWebGLArray v); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::Uniform4fv(GLint location, nsIWebGLArray *v)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void uniform4iv (in GLint location, in nsIWebGLArray v); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::Uniform4iv(GLint location, nsIWebGLArray *v)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void uniformMatrix2fv (in GLint location, in GLboolean transpose, in nsIWebGLArray value); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::UniformMatrix2fv(GLint location, GLboolean transpose, nsIWebGLArray *value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void uniformMatrix3fv (in GLint location, in GLboolean transpose, in nsIWebGLArray value); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::UniformMatrix3fv(GLint location, GLboolean transpose, nsIWebGLArray *value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void uniformMatrix4fv (in GLint location, in GLboolean transpose, in nsIWebGLArray value); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::UniformMatrix4fv(GLint location, GLboolean transpose, nsIWebGLArray *value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void useProgram (in nsIWebGLProgram program); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::UseProgram(nsIWebGLProgram *program)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void validateProgram (in nsIWebGLProgram program); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::ValidateProgram(nsIWebGLProgram *program)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void vertexAttrib1f (in GLuint indx, in GLfloat x); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::VertexAttrib1f(GLuint indx, GLfloat x)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void vertexAttrib2f (in GLuint indx, in GLfloat x, in GLfloat y); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::VertexAttrib2f(GLuint indx, GLfloat x, GLfloat y)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void vertexAttrib3f (in GLuint indx, in GLfloat x, in GLfloat y, in GLfloat z); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::VertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void vertexAttrib4f (in GLuint indx, in GLfloat x, in GLfloat y, in GLfloat z, in GLfloat w); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::VertexAttrib4f(GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void vertexAttrib1fv (in GLuint indx, in nsIWebGLArray values); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::VertexAttrib1fv(GLuint indx, nsIWebGLArray *values)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void vertexAttrib2fv (in GLuint indx, in nsIWebGLArray values); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::VertexAttrib2fv(GLuint indx, nsIWebGLArray *values)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void vertexAttrib3fv (in GLuint indx, in nsIWebGLArray values); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::VertexAttrib3fv(GLuint indx, nsIWebGLArray *values)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void vertexAttrib4fv (in GLuint indx, in nsIWebGLArray values); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::VertexAttrib4fv(GLuint indx, nsIWebGLArray *values)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void vertexAttribPointer (in GLuint idx, in GLint size, in GLenum type, in GLboolean normalized, in GLuint stride, in GLuint offset); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::VertexAttribPointer(GLuint idx, GLint size, GLenum type, GLboolean normalized, GLuint stride, GLuint offset)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void viewport (in GLint x, in GLint y, in GLsizei width, in GLsizei height); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::Viewport(GLint x, GLint y, GLsizei width, GLsizei height)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif


#endif /* __gen_nsICanvasRenderingContextWebGL_h__ */
