/*
 * 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 nsIDOMElement; /* forward declaration */

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 js {
struct ArrayBuffer;
struct TypedArray;
}
/* Avoid conflict with WinAPI */
#undef NO_ERROR

/* 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 nsISupports {
 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 nsISupports {
 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_NO_VTABLE NS_SCRIPTABLE nsICanvasRenderingContextWebGL : public nsISupports {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_ICANVASRENDERINGCONTEXTWEBGL_IID)

  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 };

  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 ([optional] in long dummy); */
  NS_SCRIPTABLE NS_IMETHOD BufferData(PRInt32 dummy) = 0;

  /* [noscript] void bufferData_size (in GLenum target, in GLsizei size, in GLenum usage); */
  NS_IMETHOD BufferData_size(GLenum target, GLsizei size, GLenum usage) = 0;

  /* [noscript] void bufferData_buf (in GLenum target, in WebGLArrayBufferPtr data, in GLenum usage); */
  NS_IMETHOD BufferData_buf(GLenum target, js::ArrayBuffer * data, GLenum usage) = 0;

  /* [noscript] void bufferData_array (in GLenum target, in WebGLArrayPtr data, in GLenum usage); */
  NS_IMETHOD BufferData_array(GLenum target, js::TypedArray * data, GLenum usage) = 0;

  /* void bufferSubData ([optional] in long dummy); */
  NS_SCRIPTABLE NS_IMETHOD BufferSubData(PRInt32 dummy) = 0;

  /* [noscript] void bufferSubData_buf (in GLenum target, in GLsizeiptr offset, in WebGLArrayBufferPtr data); */
  NS_IMETHOD BufferSubData_buf(GLenum target, GLsizeiptr offset, js::ArrayBuffer * data) = 0;

  /* [noscript] void bufferSubData_array (in GLenum target, in GLsizeiptr offset, in WebGLArrayPtr data); */
  NS_IMETHOD BufferSubData_array(GLenum target, GLsizeiptr offset, js::TypedArray * data) = 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;

  /* 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;

  /* void getFramebufferAttachmentParameter (in GLenum target, in GLenum attachment, in GLenum pname); */
  NS_SCRIPTABLE NS_IMETHOD GetFramebufferAttachmentParameter(GLenum target, GLenum attachment, GLenum pname) = 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;

  /* void getRenderbufferParameter (in GLenum target, in GLenum pname); */
  NS_SCRIPTABLE NS_IMETHOD GetRenderbufferParameter(GLenum target, GLenum pname) = 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;

  /* 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 ([optional] in long dummy); */
  NS_SCRIPTABLE NS_IMETHOD TexImage2D(PRInt32 dummy) = 0;

  /* [noscript] void texImage2D_buf (in GLenum target, in GLint level, in GLenum internalformat, in GLsizei width, in GLsizei height, in GLint border, in GLenum format, in GLenum type, in WebGLArrayBufferPtr pixels); */
  NS_IMETHOD TexImage2D_buf(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, js::ArrayBuffer * pixels) = 0;

  /* [noscript] void texImage2D_array (in GLenum target, in GLint level, in GLenum internalformat, in GLsizei width, in GLsizei height, in GLint border, in GLenum format, in GLenum type, in WebGLArrayPtr pixels); */
  NS_IMETHOD TexImage2D_array(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, js::TypedArray * pixels) = 0;

  /* [noscript] void texImage2D_dom (in GLenum target, in GLint level, in nsIDOMElement element, [optional] in GLboolean premultiply, [optional] in GLboolean asPremultipliedAlpha); */
  NS_IMETHOD TexImage2D_dom(GLenum target, GLint level, nsIDOMElement *element, GLboolean premultiply, GLboolean asPremultipliedAlpha) = 0;

  /* void texSubImage2D ([optional] in long dummy); */
  NS_SCRIPTABLE NS_IMETHOD TexSubImage2D(PRInt32 dummy) = 0;

  /* [noscript] void texSubImage2D_buf (in GLenum target, in GLint level, in GLint xoffset, in GLint yoffset, in GLsizei width, in GLsizei height, in GLenum format, in GLenum type, in WebGLArrayBufferPtr pixels); */
  NS_IMETHOD TexSubImage2D_buf(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, js::ArrayBuffer * pixels) = 0;

  /* [noscript] void texSubImage2D_array (in GLenum target, in GLint level, in GLint xoffset, in GLint yoffset, in GLsizei width, in GLsizei height, in GLenum format, in GLenum type, in WebGLArrayPtr pixels); */
  NS_IMETHOD TexSubImage2D_array(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, js::TypedArray * pixels) = 0;

  /* [noscript] void texSubImage2D_dom (in GLenum target, in GLint level, in GLint xoffset, in GLint yoffset, in GLsizei width, in GLsizei height, in nsIDOMElement element, [optional] in GLboolean premultiply, [optional] in GLboolean asPremultipliedAlpha); */
  NS_IMETHOD TexSubImage2D_dom(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, nsIDOMElement *element, GLboolean premultiply, GLboolean asPremultipliedAlpha) = 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 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 ([optional] in long dummy); */
  NS_SCRIPTABLE NS_IMETHOD Uniform1fv(PRInt32 dummy) = 0;

  /* void uniform1iv ([optional] in long dummy); */
  NS_SCRIPTABLE NS_IMETHOD Uniform1iv(PRInt32 dummy) = 0;

  /* void uniform2fv ([optional] in long dummy); */
  NS_SCRIPTABLE NS_IMETHOD Uniform2fv(PRInt32 dummy) = 0;

  /* void uniform2iv ([optional] in long dummy); */
  NS_SCRIPTABLE NS_IMETHOD Uniform2iv(PRInt32 dummy) = 0;

  /* void uniform3fv ([optional] in long dummy); */
  NS_SCRIPTABLE NS_IMETHOD Uniform3fv(PRInt32 dummy) = 0;

  /* void uniform3iv ([optional] in long dummy); */
  NS_SCRIPTABLE NS_IMETHOD Uniform3iv(PRInt32 dummy) = 0;

  /* void uniform4fv ([optional] in long dummy); */
  NS_SCRIPTABLE NS_IMETHOD Uniform4fv(PRInt32 dummy) = 0;

  /* void uniform4iv ([optional] in long dummy); */
  NS_SCRIPTABLE NS_IMETHOD Uniform4iv(PRInt32 dummy) = 0;

  /* [noscript] void uniform1fv_array (in GLint location, in WebGLArrayPtr v); */
  NS_IMETHOD Uniform1fv_array(GLint location, js::TypedArray * v) = 0;

  /* [noscript] void uniform1iv_array (in GLint location, in WebGLArrayPtr v); */
  NS_IMETHOD Uniform1iv_array(GLint location, js::TypedArray * v) = 0;

  /* [noscript] void uniform2fv_array (in GLint location, in WebGLArrayPtr v); */
  NS_IMETHOD Uniform2fv_array(GLint location, js::TypedArray * v) = 0;

  /* [noscript] void uniform2iv_array (in GLint location, in WebGLArrayPtr v); */
  NS_IMETHOD Uniform2iv_array(GLint location, js::TypedArray * v) = 0;

  /* [noscript] void uniform3fv_array (in GLint location, in WebGLArrayPtr v); */
  NS_IMETHOD Uniform3fv_array(GLint location, js::TypedArray * v) = 0;

  /* [noscript] void uniform3iv_array (in GLint location, in WebGLArrayPtr v); */
  NS_IMETHOD Uniform3iv_array(GLint location, js::TypedArray * v) = 0;

  /* [noscript] void uniform4fv_array (in GLint location, in WebGLArrayPtr v); */
  NS_IMETHOD Uniform4fv_array(GLint location, js::TypedArray * v) = 0;

  /* [noscript] void uniform4iv_array (in GLint location, in WebGLArrayPtr v); */
  NS_IMETHOD Uniform4iv_array(GLint location, js::TypedArray * v) = 0;

  /* void uniformMatrix2fv ([optional] in long dummy); */
  NS_SCRIPTABLE NS_IMETHOD UniformMatrix2fv(PRInt32 dummy) = 0;

  /* void uniformMatrix3fv ([optional] in long dummy); */
  NS_SCRIPTABLE NS_IMETHOD UniformMatrix3fv(PRInt32 dummy) = 0;

  /* void uniformMatrix4fv ([optional] in long dummy); */
  NS_SCRIPTABLE NS_IMETHOD UniformMatrix4fv(PRInt32 dummy) = 0;

  /* [noscript] void uniformMatrix2fv_array (in GLint location, in GLboolean transpose, in WebGLArrayPtr value); */
  NS_IMETHOD UniformMatrix2fv_array(GLint location, GLboolean transpose, js::TypedArray * value) = 0;

  /* [noscript] void uniformMatrix3fv_array (in GLint location, in GLboolean transpose, in WebGLArrayPtr value); */
  NS_IMETHOD UniformMatrix3fv_array(GLint location, GLboolean transpose, js::TypedArray * value) = 0;

  /* [noscript] void uniformMatrix4fv_array (in GLint location, in GLboolean transpose, in WebGLArrayPtr value); */
  NS_IMETHOD UniformMatrix4fv_array(GLint location, GLboolean transpose, js::TypedArray * 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 ([optional] in long dummy); */
  NS_SCRIPTABLE NS_IMETHOD VertexAttrib1fv(PRInt32 dummy) = 0;

  /* void vertexAttrib2fv ([optional] in long dummy); */
  NS_SCRIPTABLE NS_IMETHOD VertexAttrib2fv(PRInt32 dummy) = 0;

  /* void vertexAttrib3fv ([optional] in long dummy); */
  NS_SCRIPTABLE NS_IMETHOD VertexAttrib3fv(PRInt32 dummy) = 0;

  /* void vertexAttrib4fv ([optional] in long dummy); */
  NS_SCRIPTABLE NS_IMETHOD VertexAttrib4fv(PRInt32 dummy) = 0;

  /* [noscript] void vertexAttrib1fv_array (in GLuint indx, in WebGLArrayPtr values); */
  NS_IMETHOD VertexAttrib1fv_array(GLuint indx, js::TypedArray * values) = 0;

  /* [noscript] void vertexAttrib2fv_array (in GLuint indx, in WebGLArrayPtr values); */
  NS_IMETHOD VertexAttrib2fv_array(GLuint indx, js::TypedArray * values) = 0;

  /* [noscript] void vertexAttrib3fv_array (in GLuint indx, in WebGLArrayPtr values); */
  NS_IMETHOD VertexAttrib3fv_array(GLuint indx, js::TypedArray * values) = 0;

  /* [noscript] void vertexAttrib4fv_array (in GLuint indx, in WebGLArrayPtr values); */
  NS_IMETHOD VertexAttrib4fv_array(GLuint indx, js::TypedArray * 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 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(PRInt32 dummy); \
  NS_IMETHOD BufferData_size(GLenum target, GLsizei size, GLenum usage); \
  NS_IMETHOD BufferData_buf(GLenum target, js::ArrayBuffer * data, GLenum usage); \
  NS_IMETHOD BufferData_array(GLenum target, js::TypedArray * data, GLenum usage); \
  NS_SCRIPTABLE NS_IMETHOD BufferSubData(PRInt32 dummy); \
  NS_IMETHOD BufferSubData_buf(GLenum target, GLsizeiptr offset, js::ArrayBuffer * data); \
  NS_IMETHOD BufferSubData_array(GLenum target, GLsizeiptr offset, js::TypedArray * data); \
  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 GetBufferParameter(GLenum target, GLenum pname); \
  NS_SCRIPTABLE NS_IMETHOD GetError(GLenum *_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD GetFramebufferAttachmentParameter(GLenum target, GLenum attachment, GLenum pname); \
  NS_SCRIPTABLE NS_IMETHOD GetProgramParameter(nsIWebGLProgram *program, GLenum pname); \
  NS_SCRIPTABLE NS_IMETHOD GetProgramInfoLog(nsIWebGLProgram *program, nsAString & _retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD GetRenderbufferParameter(GLenum target, GLenum pname); \
  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 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(PRInt32 dummy); \
  NS_IMETHOD TexImage2D_buf(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, js::ArrayBuffer * pixels); \
  NS_IMETHOD TexImage2D_array(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, js::TypedArray * pixels); \
  NS_IMETHOD TexImage2D_dom(GLenum target, GLint level, nsIDOMElement *element, GLboolean premultiply, GLboolean asPremultipliedAlpha); \
  NS_SCRIPTABLE NS_IMETHOD TexSubImage2D(PRInt32 dummy); \
  NS_IMETHOD TexSubImage2D_buf(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, js::ArrayBuffer * pixels); \
  NS_IMETHOD TexSubImage2D_array(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, js::TypedArray * pixels); \
  NS_IMETHOD TexSubImage2D_dom(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, nsIDOMElement *element, GLboolean premultiply, GLboolean asPremultipliedAlpha); \
  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 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(PRInt32 dummy); \
  NS_SCRIPTABLE NS_IMETHOD Uniform1iv(PRInt32 dummy); \
  NS_SCRIPTABLE NS_IMETHOD Uniform2fv(PRInt32 dummy); \
  NS_SCRIPTABLE NS_IMETHOD Uniform2iv(PRInt32 dummy); \
  NS_SCRIPTABLE NS_IMETHOD Uniform3fv(PRInt32 dummy); \
  NS_SCRIPTABLE NS_IMETHOD Uniform3iv(PRInt32 dummy); \
  NS_SCRIPTABLE NS_IMETHOD Uniform4fv(PRInt32 dummy); \
  NS_SCRIPTABLE NS_IMETHOD Uniform4iv(PRInt32 dummy); \
  NS_IMETHOD Uniform1fv_array(GLint location, js::TypedArray * v); \
  NS_IMETHOD Uniform1iv_array(GLint location, js::TypedArray * v); \
  NS_IMETHOD Uniform2fv_array(GLint location, js::TypedArray * v); \
  NS_IMETHOD Uniform2iv_array(GLint location, js::TypedArray * v); \
  NS_IMETHOD Uniform3fv_array(GLint location, js::TypedArray * v); \
  NS_IMETHOD Uniform3iv_array(GLint location, js::TypedArray * v); \
  NS_IMETHOD Uniform4fv_array(GLint location, js::TypedArray * v); \
  NS_IMETHOD Uniform4iv_array(GLint location, js::TypedArray * v); \
  NS_SCRIPTABLE NS_IMETHOD UniformMatrix2fv(PRInt32 dummy); \
  NS_SCRIPTABLE NS_IMETHOD UniformMatrix3fv(PRInt32 dummy); \
  NS_SCRIPTABLE NS_IMETHOD UniformMatrix4fv(PRInt32 dummy); \
  NS_IMETHOD UniformMatrix2fv_array(GLint location, GLboolean transpose, js::TypedArray * value); \
  NS_IMETHOD UniformMatrix3fv_array(GLint location, GLboolean transpose, js::TypedArray * value); \
  NS_IMETHOD UniformMatrix4fv_array(GLint location, GLboolean transpose, js::TypedArray * 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(PRInt32 dummy); \
  NS_SCRIPTABLE NS_IMETHOD VertexAttrib2fv(PRInt32 dummy); \
  NS_SCRIPTABLE NS_IMETHOD VertexAttrib3fv(PRInt32 dummy); \
  NS_SCRIPTABLE NS_IMETHOD VertexAttrib4fv(PRInt32 dummy); \
  NS_IMETHOD VertexAttrib1fv_array(GLuint indx, js::TypedArray * values); \
  NS_IMETHOD VertexAttrib2fv_array(GLuint indx, js::TypedArray * values); \
  NS_IMETHOD VertexAttrib3fv_array(GLuint indx, js::TypedArray * values); \
  NS_IMETHOD VertexAttrib4fv_array(GLuint indx, js::TypedArray * 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 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(PRInt32 dummy) { return _to BufferData(dummy); } \
  NS_IMETHOD BufferData_size(GLenum target, GLsizei size, GLenum usage) { return _to BufferData_size(target, size, usage); } \
  NS_IMETHOD BufferData_buf(GLenum target, js::ArrayBuffer * data, GLenum usage) { return _to BufferData_buf(target, data, usage); } \
  NS_IMETHOD BufferData_array(GLenum target, js::TypedArray * data, GLenum usage) { return _to BufferData_array(target, data, usage); } \
  NS_SCRIPTABLE NS_IMETHOD BufferSubData(PRInt32 dummy) { return _to BufferSubData(dummy); } \
  NS_IMETHOD BufferSubData_buf(GLenum target, GLsizeiptr offset, js::ArrayBuffer * data) { return _to BufferSubData_buf(target, offset, data); } \
  NS_IMETHOD BufferSubData_array(GLenum target, GLsizeiptr offset, js::TypedArray * data) { return _to BufferSubData_array(target, offset, data); } \
  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 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 GetFramebufferAttachmentParameter(GLenum target, GLenum attachment, GLenum pname) { return _to GetFramebufferAttachmentParameter(target, attachment, pname); } \
  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 GetRenderbufferParameter(GLenum target, GLenum pname) { return _to GetRenderbufferParameter(target, pname); } \
  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 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(PRInt32 dummy) { return _to TexImage2D(dummy); } \
  NS_IMETHOD TexImage2D_buf(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, js::ArrayBuffer * pixels) { return _to TexImage2D_buf(target, level, internalformat, width, height, border, format, type, pixels); } \
  NS_IMETHOD TexImage2D_array(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, js::TypedArray * pixels) { return _to TexImage2D_array(target, level, internalformat, width, height, border, format, type, pixels); } \
  NS_IMETHOD TexImage2D_dom(GLenum target, GLint level, nsIDOMElement *element, GLboolean premultiply, GLboolean asPremultipliedAlpha) { return _to TexImage2D_dom(target, level, element, premultiply, asPremultipliedAlpha); } \
  NS_SCRIPTABLE NS_IMETHOD TexSubImage2D(PRInt32 dummy) { return _to TexSubImage2D(dummy); } \
  NS_IMETHOD TexSubImage2D_buf(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, js::ArrayBuffer * pixels) { return _to TexSubImage2D_buf(target, level, xoffset, yoffset, width, height, format, type, pixels); } \
  NS_IMETHOD TexSubImage2D_array(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, js::TypedArray * pixels) { return _to TexSubImage2D_array(target, level, xoffset, yoffset, width, height, format, type, pixels); } \
  NS_IMETHOD TexSubImage2D_dom(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, nsIDOMElement *element, GLboolean premultiply, GLboolean asPremultipliedAlpha) { return _to TexSubImage2D_dom(target, level, xoffset, yoffset, width, height, element, premultiply, asPremultipliedAlpha); } \
  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 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(PRInt32 dummy) { return _to Uniform1fv(dummy); } \
  NS_SCRIPTABLE NS_IMETHOD Uniform1iv(PRInt32 dummy) { return _to Uniform1iv(dummy); } \
  NS_SCRIPTABLE NS_IMETHOD Uniform2fv(PRInt32 dummy) { return _to Uniform2fv(dummy); } \
  NS_SCRIPTABLE NS_IMETHOD Uniform2iv(PRInt32 dummy) { return _to Uniform2iv(dummy); } \
  NS_SCRIPTABLE NS_IMETHOD Uniform3fv(PRInt32 dummy) { return _to Uniform3fv(dummy); } \
  NS_SCRIPTABLE NS_IMETHOD Uniform3iv(PRInt32 dummy) { return _to Uniform3iv(dummy); } \
  NS_SCRIPTABLE NS_IMETHOD Uniform4fv(PRInt32 dummy) { return _to Uniform4fv(dummy); } \
  NS_SCRIPTABLE NS_IMETHOD Uniform4iv(PRInt32 dummy) { return _to Uniform4iv(dummy); } \
  NS_IMETHOD Uniform1fv_array(GLint location, js::TypedArray * v) { return _to Uniform1fv_array(location, v); } \
  NS_IMETHOD Uniform1iv_array(GLint location, js::TypedArray * v) { return _to Uniform1iv_array(location, v); } \
  NS_IMETHOD Uniform2fv_array(GLint location, js::TypedArray * v) { return _to Uniform2fv_array(location, v); } \
  NS_IMETHOD Uniform2iv_array(GLint location, js::TypedArray * v) { return _to Uniform2iv_array(location, v); } \
  NS_IMETHOD Uniform3fv_array(GLint location, js::TypedArray * v) { return _to Uniform3fv_array(location, v); } \
  NS_IMETHOD Uniform3iv_array(GLint location, js::TypedArray * v) { return _to Uniform3iv_array(location, v); } \
  NS_IMETHOD Uniform4fv_array(GLint location, js::TypedArray * v) { return _to Uniform4fv_array(location, v); } \
  NS_IMETHOD Uniform4iv_array(GLint location, js::TypedArray * v) { return _to Uniform4iv_array(location, v); } \
  NS_SCRIPTABLE NS_IMETHOD UniformMatrix2fv(PRInt32 dummy) { return _to UniformMatrix2fv(dummy); } \
  NS_SCRIPTABLE NS_IMETHOD UniformMatrix3fv(PRInt32 dummy) { return _to UniformMatrix3fv(dummy); } \
  NS_SCRIPTABLE NS_IMETHOD UniformMatrix4fv(PRInt32 dummy) { return _to UniformMatrix4fv(dummy); } \
  NS_IMETHOD UniformMatrix2fv_array(GLint location, GLboolean transpose, js::TypedArray * value) { return _to UniformMatrix2fv_array(location, transpose, value); } \
  NS_IMETHOD UniformMatrix3fv_array(GLint location, GLboolean transpose, js::TypedArray * value) { return _to UniformMatrix3fv_array(location, transpose, value); } \
  NS_IMETHOD UniformMatrix4fv_array(GLint location, GLboolean transpose, js::TypedArray * value) { return _to UniformMatrix4fv_array(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(PRInt32 dummy) { return _to VertexAttrib1fv(dummy); } \
  NS_SCRIPTABLE NS_IMETHOD VertexAttrib2fv(PRInt32 dummy) { return _to VertexAttrib2fv(dummy); } \
  NS_SCRIPTABLE NS_IMETHOD VertexAttrib3fv(PRInt32 dummy) { return _to VertexAttrib3fv(dummy); } \
  NS_SCRIPTABLE NS_IMETHOD VertexAttrib4fv(PRInt32 dummy) { return _to VertexAttrib4fv(dummy); } \
  NS_IMETHOD VertexAttrib1fv_array(GLuint indx, js::TypedArray * values) { return _to VertexAttrib1fv_array(indx, values); } \
  NS_IMETHOD VertexAttrib2fv_array(GLuint indx, js::TypedArray * values) { return _to VertexAttrib2fv_array(indx, values); } \
  NS_IMETHOD VertexAttrib3fv_array(GLuint indx, js::TypedArray * values) { return _to VertexAttrib3fv_array(indx, values); } \
  NS_IMETHOD VertexAttrib4fv_array(GLuint indx, js::TypedArray * values) { return _to VertexAttrib4fv_array(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 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(PRInt32 dummy) { return !_to ? NS_ERROR_NULL_POINTER : _to->BufferData(dummy); } \
  NS_IMETHOD BufferData_size(GLenum target, GLsizei size, GLenum usage) { return !_to ? NS_ERROR_NULL_POINTER : _to->BufferData_size(target, size, usage); } \
  NS_IMETHOD BufferData_buf(GLenum target, js::ArrayBuffer * data, GLenum usage) { return !_to ? NS_ERROR_NULL_POINTER : _to->BufferData_buf(target, data, usage); } \
  NS_IMETHOD BufferData_array(GLenum target, js::TypedArray * data, GLenum usage) { return !_to ? NS_ERROR_NULL_POINTER : _to->BufferData_array(target, data, usage); } \
  NS_SCRIPTABLE NS_IMETHOD BufferSubData(PRInt32 dummy) { return !_to ? NS_ERROR_NULL_POINTER : _to->BufferSubData(dummy); } \
  NS_IMETHOD BufferSubData_buf(GLenum target, GLsizeiptr offset, js::ArrayBuffer * data) { return !_to ? NS_ERROR_NULL_POINTER : _to->BufferSubData_buf(target, offset, data); } \
  NS_IMETHOD BufferSubData_array(GLenum target, GLsizeiptr offset, js::TypedArray * data) { return !_to ? NS_ERROR_NULL_POINTER : _to->BufferSubData_array(target, offset, data); } \
  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 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 GetFramebufferAttachmentParameter(GLenum target, GLenum attachment, GLenum pname) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFramebufferAttachmentParameter(target, attachment, pname); } \
  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 GetRenderbufferParameter(GLenum target, GLenum pname) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRenderbufferParameter(target, pname); } \
  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 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(PRInt32 dummy) { return !_to ? NS_ERROR_NULL_POINTER : _to->TexImage2D(dummy); } \
  NS_IMETHOD TexImage2D_buf(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, js::ArrayBuffer * pixels) { return !_to ? NS_ERROR_NULL_POINTER : _to->TexImage2D_buf(target, level, internalformat, width, height, border, format, type, pixels); } \
  NS_IMETHOD TexImage2D_array(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, js::TypedArray * pixels) { return !_to ? NS_ERROR_NULL_POINTER : _to->TexImage2D_array(target, level, internalformat, width, height, border, format, type, pixels); } \
  NS_IMETHOD TexImage2D_dom(GLenum target, GLint level, nsIDOMElement *element, GLboolean premultiply, GLboolean asPremultipliedAlpha) { return !_to ? NS_ERROR_NULL_POINTER : _to->TexImage2D_dom(target, level, element, premultiply, asPremultipliedAlpha); } \
  NS_SCRIPTABLE NS_IMETHOD TexSubImage2D(PRInt32 dummy) { return !_to ? NS_ERROR_NULL_POINTER : _to->TexSubImage2D(dummy); } \
  NS_IMETHOD TexSubImage2D_buf(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, js::ArrayBuffer * pixels) { return !_to ? NS_ERROR_NULL_POINTER : _to->TexSubImage2D_buf(target, level, xoffset, yoffset, width, height, format, type, pixels); } \
  NS_IMETHOD TexSubImage2D_array(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, js::TypedArray * pixels) { return !_to ? NS_ERROR_NULL_POINTER : _to->TexSubImage2D_array(target, level, xoffset, yoffset, width, height, format, type, pixels); } \
  NS_IMETHOD TexSubImage2D_dom(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, nsIDOMElement *element, GLboolean premultiply, GLboolean asPremultipliedAlpha) { return !_to ? NS_ERROR_NULL_POINTER : _to->TexSubImage2D_dom(target, level, xoffset, yoffset, width, height, element, premultiply, asPremultipliedAlpha); } \
  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 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(PRInt32 dummy) { return !_to ? NS_ERROR_NULL_POINTER : _to->Uniform1fv(dummy); } \
  NS_SCRIPTABLE NS_IMETHOD Uniform1iv(PRInt32 dummy) { return !_to ? NS_ERROR_NULL_POINTER : _to->Uniform1iv(dummy); } \
  NS_SCRIPTABLE NS_IMETHOD Uniform2fv(PRInt32 dummy) { return !_to ? NS_ERROR_NULL_POINTER : _to->Uniform2fv(dummy); } \
  NS_SCRIPTABLE NS_IMETHOD Uniform2iv(PRInt32 dummy) { return !_to ? NS_ERROR_NULL_POINTER : _to->Uniform2iv(dummy); } \
  NS_SCRIPTABLE NS_IMETHOD Uniform3fv(PRInt32 dummy) { return !_to ? NS_ERROR_NULL_POINTER : _to->Uniform3fv(dummy); } \
  NS_SCRIPTABLE NS_IMETHOD Uniform3iv(PRInt32 dummy) { return !_to ? NS_ERROR_NULL_POINTER : _to->Uniform3iv(dummy); } \
  NS_SCRIPTABLE NS_IMETHOD Uniform4fv(PRInt32 dummy) { return !_to ? NS_ERROR_NULL_POINTER : _to->Uniform4fv(dummy); } \
  NS_SCRIPTABLE NS_IMETHOD Uniform4iv(PRInt32 dummy) { return !_to ? NS_ERROR_NULL_POINTER : _to->Uniform4iv(dummy); } \
  NS_IMETHOD Uniform1fv_array(GLint location, js::TypedArray * v) { return !_to ? NS_ERROR_NULL_POINTER : _to->Uniform1fv_array(location, v); } \
  NS_IMETHOD Uniform1iv_array(GLint location, js::TypedArray * v) { return !_to ? NS_ERROR_NULL_POINTER : _to->Uniform1iv_array(location, v); } \
  NS_IMETHOD Uniform2fv_array(GLint location, js::TypedArray * v) { return !_to ? NS_ERROR_NULL_POINTER : _to->Uniform2fv_array(location, v); } \
  NS_IMETHOD Uniform2iv_array(GLint location, js::TypedArray * v) { return !_to ? NS_ERROR_NULL_POINTER : _to->Uniform2iv_array(location, v); } \
  NS_IMETHOD Uniform3fv_array(GLint location, js::TypedArray * v) { return !_to ? NS_ERROR_NULL_POINTER : _to->Uniform3fv_array(location, v); } \
  NS_IMETHOD Uniform3iv_array(GLint location, js::TypedArray * v) { return !_to ? NS_ERROR_NULL_POINTER : _to->Uniform3iv_array(location, v); } \
  NS_IMETHOD Uniform4fv_array(GLint location, js::TypedArray * v) { return !_to ? NS_ERROR_NULL_POINTER : _to->Uniform4fv_array(location, v); } \
  NS_IMETHOD Uniform4iv_array(GLint location, js::TypedArray * v) { return !_to ? NS_ERROR_NULL_POINTER : _to->Uniform4iv_array(location, v); } \
  NS_SCRIPTABLE NS_IMETHOD UniformMatrix2fv(PRInt32 dummy) { return !_to ? NS_ERROR_NULL_POINTER : _to->UniformMatrix2fv(dummy); } \
  NS_SCRIPTABLE NS_IMETHOD UniformMatrix3fv(PRInt32 dummy) { return !_to ? NS_ERROR_NULL_POINTER : _to->UniformMatrix3fv(dummy); } \
  NS_SCRIPTABLE NS_IMETHOD UniformMatrix4fv(PRInt32 dummy) { return !_to ? NS_ERROR_NULL_POINTER : _to->UniformMatrix4fv(dummy); } \
  NS_IMETHOD UniformMatrix2fv_array(GLint location, GLboolean transpose, js::TypedArray * value) { return !_to ? NS_ERROR_NULL_POINTER : _to->UniformMatrix2fv_array(location, transpose, value); } \
  NS_IMETHOD UniformMatrix3fv_array(GLint location, GLboolean transpose, js::TypedArray * value) { return !_to ? NS_ERROR_NULL_POINTER : _to->UniformMatrix3fv_array(location, transpose, value); } \
  NS_IMETHOD UniformMatrix4fv_array(GLint location, GLboolean transpose, js::TypedArray * value) { return !_to ? NS_ERROR_NULL_POINTER : _to->UniformMatrix4fv_array(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(PRInt32 dummy) { return !_to ? NS_ERROR_NULL_POINTER : _to->VertexAttrib1fv(dummy); } \
  NS_SCRIPTABLE NS_IMETHOD VertexAttrib2fv(PRInt32 dummy) { return !_to ? NS_ERROR_NULL_POINTER : _to->VertexAttrib2fv(dummy); } \
  NS_SCRIPTABLE NS_IMETHOD VertexAttrib3fv(PRInt32 dummy) { return !_to ? NS_ERROR_NULL_POINTER : _to->VertexAttrib3fv(dummy); } \
  NS_SCRIPTABLE NS_IMETHOD VertexAttrib4fv(PRInt32 dummy) { return !_to ? NS_ERROR_NULL_POINTER : _to->VertexAttrib4fv(dummy); } \
  NS_IMETHOD VertexAttrib1fv_array(GLuint indx, js::TypedArray * values) { return !_to ? NS_ERROR_NULL_POINTER : _to->VertexAttrib1fv_array(indx, values); } \
  NS_IMETHOD VertexAttrib2fv_array(GLuint indx, js::TypedArray * values) { return !_to ? NS_ERROR_NULL_POINTER : _to->VertexAttrib2fv_array(indx, values); } \
  NS_IMETHOD VertexAttrib3fv_array(GLuint indx, js::TypedArray * values) { return !_to ? NS_ERROR_NULL_POINTER : _to->VertexAttrib3fv_array(indx, values); } \
  NS_IMETHOD VertexAttrib4fv_array(GLuint indx, js::TypedArray * values) { return !_to ? NS_ERROR_NULL_POINTER : _to->VertexAttrib4fv_array(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 */
}

/* 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 ([optional] in long dummy); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::BufferData(PRInt32 dummy)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void bufferData_size (in GLenum target, in GLsizei size, in GLenum usage); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::BufferData_size(GLenum target, GLsizei size, GLenum usage)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void bufferData_buf (in GLenum target, in WebGLArrayBufferPtr data, in GLenum usage); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::BufferData_buf(GLenum target, js::ArrayBuffer * data, GLenum usage)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void bufferData_array (in GLenum target, in WebGLArrayPtr data, in GLenum usage); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::BufferData_array(GLenum target, js::TypedArray * data, GLenum usage)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void bufferSubData ([optional] in long dummy); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::BufferSubData(PRInt32 dummy)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void bufferSubData_buf (in GLenum target, in GLsizeiptr offset, in WebGLArrayBufferPtr data); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::BufferSubData_buf(GLenum target, GLsizeiptr offset, js::ArrayBuffer * data)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void bufferSubData_array (in GLenum target, in GLsizeiptr offset, in WebGLArrayPtr data); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::BufferSubData_array(GLenum target, GLsizeiptr offset, js::TypedArray * data)
{
    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;
}

/* 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;
}

/* 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;
}

/* 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;
}

/* void getRenderbufferParameter (in GLenum target, in GLenum pname); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::GetRenderbufferParameter(GLenum target, GLenum pname)
{
    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;
}

/* 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 ([optional] in long dummy); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::TexImage2D(PRInt32 dummy)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void texImage2D_buf (in GLenum target, in GLint level, in GLenum internalformat, in GLsizei width, in GLsizei height, in GLint border, in GLenum format, in GLenum type, in WebGLArrayBufferPtr pixels); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::TexImage2D_buf(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, js::ArrayBuffer * pixels)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void texImage2D_array (in GLenum target, in GLint level, in GLenum internalformat, in GLsizei width, in GLsizei height, in GLint border, in GLenum format, in GLenum type, in WebGLArrayPtr pixels); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::TexImage2D_array(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, js::TypedArray * pixels)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void texImage2D_dom (in GLenum target, in GLint level, in nsIDOMElement element, [optional] in GLboolean premultiply, [optional] in GLboolean asPremultipliedAlpha); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::TexImage2D_dom(GLenum target, GLint level, nsIDOMElement *element, GLboolean premultiply, GLboolean asPremultipliedAlpha)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void texSubImage2D ([optional] in long dummy); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::TexSubImage2D(PRInt32 dummy)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void texSubImage2D_buf (in GLenum target, in GLint level, in GLint xoffset, in GLint yoffset, in GLsizei width, in GLsizei height, in GLenum format, in GLenum type, in WebGLArrayBufferPtr pixels); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::TexSubImage2D_buf(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, js::ArrayBuffer * pixels)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void texSubImage2D_array (in GLenum target, in GLint level, in GLint xoffset, in GLint yoffset, in GLsizei width, in GLsizei height, in GLenum format, in GLenum type, in WebGLArrayPtr pixels); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::TexSubImage2D_array(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, js::TypedArray * pixels)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void texSubImage2D_dom (in GLenum target, in GLint level, in GLint xoffset, in GLint yoffset, in GLsizei width, in GLsizei height, in nsIDOMElement element, [optional] in GLboolean premultiply, [optional] in GLboolean asPremultipliedAlpha); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::TexSubImage2D_dom(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, nsIDOMElement *element, GLboolean premultiply, GLboolean asPremultipliedAlpha)
{
    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 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 ([optional] in long dummy); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::Uniform1fv(PRInt32 dummy)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void uniform1iv ([optional] in long dummy); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::Uniform1iv(PRInt32 dummy)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void uniform2fv ([optional] in long dummy); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::Uniform2fv(PRInt32 dummy)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void uniform2iv ([optional] in long dummy); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::Uniform2iv(PRInt32 dummy)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void uniform3fv ([optional] in long dummy); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::Uniform3fv(PRInt32 dummy)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void uniform3iv ([optional] in long dummy); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::Uniform3iv(PRInt32 dummy)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void uniform4fv ([optional] in long dummy); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::Uniform4fv(PRInt32 dummy)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void uniform4iv ([optional] in long dummy); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::Uniform4iv(PRInt32 dummy)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void uniform1fv_array (in GLint location, in WebGLArrayPtr v); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::Uniform1fv_array(GLint location, js::TypedArray * v)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void uniform1iv_array (in GLint location, in WebGLArrayPtr v); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::Uniform1iv_array(GLint location, js::TypedArray * v)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void uniform2fv_array (in GLint location, in WebGLArrayPtr v); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::Uniform2fv_array(GLint location, js::TypedArray * v)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void uniform2iv_array (in GLint location, in WebGLArrayPtr v); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::Uniform2iv_array(GLint location, js::TypedArray * v)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void uniform3fv_array (in GLint location, in WebGLArrayPtr v); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::Uniform3fv_array(GLint location, js::TypedArray * v)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void uniform3iv_array (in GLint location, in WebGLArrayPtr v); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::Uniform3iv_array(GLint location, js::TypedArray * v)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void uniform4fv_array (in GLint location, in WebGLArrayPtr v); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::Uniform4fv_array(GLint location, js::TypedArray * v)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void uniform4iv_array (in GLint location, in WebGLArrayPtr v); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::Uniform4iv_array(GLint location, js::TypedArray * v)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void uniformMatrix2fv ([optional] in long dummy); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::UniformMatrix2fv(PRInt32 dummy)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void uniformMatrix3fv ([optional] in long dummy); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::UniformMatrix3fv(PRInt32 dummy)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void uniformMatrix4fv ([optional] in long dummy); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::UniformMatrix4fv(PRInt32 dummy)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void uniformMatrix2fv_array (in GLint location, in GLboolean transpose, in WebGLArrayPtr value); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::UniformMatrix2fv_array(GLint location, GLboolean transpose, js::TypedArray * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void uniformMatrix3fv_array (in GLint location, in GLboolean transpose, in WebGLArrayPtr value); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::UniformMatrix3fv_array(GLint location, GLboolean transpose, js::TypedArray * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void uniformMatrix4fv_array (in GLint location, in GLboolean transpose, in WebGLArrayPtr value); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::UniformMatrix4fv_array(GLint location, GLboolean transpose, js::TypedArray * 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 ([optional] in long dummy); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::VertexAttrib1fv(PRInt32 dummy)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void vertexAttrib2fv ([optional] in long dummy); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::VertexAttrib2fv(PRInt32 dummy)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void vertexAttrib3fv ([optional] in long dummy); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::VertexAttrib3fv(PRInt32 dummy)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void vertexAttrib4fv ([optional] in long dummy); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::VertexAttrib4fv(PRInt32 dummy)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void vertexAttrib1fv_array (in GLuint indx, in WebGLArrayPtr values); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::VertexAttrib1fv_array(GLuint indx, js::TypedArray * values)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void vertexAttrib2fv_array (in GLuint indx, in WebGLArrayPtr values); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::VertexAttrib2fv_array(GLuint indx, js::TypedArray * values)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void vertexAttrib3fv_array (in GLuint indx, in WebGLArrayPtr values); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::VertexAttrib3fv_array(GLuint indx, js::TypedArray * values)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void vertexAttrib4fv_array (in GLuint indx, in WebGLArrayPtr values); */
NS_IMETHODIMP nsCanvasRenderingContextWebGL::VertexAttrib4fv_array(GLuint indx, js::TypedArray * 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__ */
