/*
 * DO NOT EDIT.  THIS FILE IS GENERATED FROM e:/builds/moz2_slave/m-cen-w32-xr/build/dom/interfaces/canvas/nsIDOMWebGLRenderingContext.idl
 */

#ifndef __gen_nsIDOMWebGLRenderingContext_h__
#define __gen_nsIDOMWebGLRenderingContext_h__


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

#ifndef __gen_nsIVariant_h__
#include "nsIVariant.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 */

class nsIPropertyBag; /* forward declaration */

typedef uint32_t  WebGLenum;

typedef bool  WebGLboolean;

typedef uint32_t  WebGLbitfield;

typedef int32_t  WebGLint;

typedef int32_t  WebGLsizei;

typedef int64_t  WebGLsizeiptr;

typedef int64_t  WebGLintptr;

typedef uint32_t  WebGLuint;

typedef float  WebGLfloat;

typedef float  WebGLclampf;

// for jsval
#include "jsapi.h"
namespace mozilla {
namespace dom {
class Element;
} // namespace dom
} // namespace mozilla
/* Avoid conflict with WinAPI */
#undef NO_ERROR

/* starting interface:    nsIWebGLTexture */
#define NS_IWEBGLTEXTURE_IID_STR "0df9f4ed-f5ff-4e51-a6ff-2bd9785a7639"

#define NS_IWEBGLTEXTURE_IID \
  {0x0df9f4ed, 0xf5ff, 0x4e51, \
    { 0xa6, 0xff, 0x2b, 0xd9, 0x78, 0x5a, 0x76, 0x39 }}

class NS_NO_VTABLE nsIWebGLTexture : public nsISupports {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IWEBGLTEXTURE_IID)

  /* [noscript] attribute WebGLuint name; */
  NS_IMETHOD GetName(WebGLuint *aName) = 0;
  NS_IMETHOD SetName(WebGLuint 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(WebGLuint *aName); \
  NS_IMETHOD SetName(WebGLuint 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(WebGLuint *aName) { return _to GetName(aName); } \
  NS_IMETHOD SetName(WebGLuint 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(WebGLuint *aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetName(aName); } \
  NS_IMETHOD SetName(WebGLuint 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 WebGLuint name; */
NS_IMETHODIMP nsWebGLTexture::GetName(WebGLuint *aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsWebGLTexture::SetName(WebGLuint 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 nsIWebGLBuffer : public nsISupports {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IWEBGLBUFFER_IID)

  /* [noscript] attribute WebGLuint name; */
  NS_IMETHOD GetName(WebGLuint *aName) = 0;
  NS_IMETHOD SetName(WebGLuint 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(WebGLuint *aName); \
  NS_IMETHOD SetName(WebGLuint 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(WebGLuint *aName) { return _to GetName(aName); } \
  NS_IMETHOD SetName(WebGLuint 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(WebGLuint *aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetName(aName); } \
  NS_IMETHOD SetName(WebGLuint 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 WebGLuint name; */
NS_IMETHODIMP nsWebGLBuffer::GetName(WebGLuint *aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsWebGLBuffer::SetName(WebGLuint 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 nsIWebGLProgram : public nsISupports {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IWEBGLPROGRAM_IID)

  /* [noscript] attribute WebGLuint name; */
  NS_IMETHOD GetName(WebGLuint *aName) = 0;
  NS_IMETHOD SetName(WebGLuint 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(WebGLuint *aName); \
  NS_IMETHOD SetName(WebGLuint 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(WebGLuint *aName) { return _to GetName(aName); } \
  NS_IMETHOD SetName(WebGLuint 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(WebGLuint *aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetName(aName); } \
  NS_IMETHOD SetName(WebGLuint 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 WebGLuint name; */
NS_IMETHODIMP nsWebGLProgram::GetName(WebGLuint *aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsWebGLProgram::SetName(WebGLuint 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 nsIWebGLShader : public nsISupports {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IWEBGLSHADER_IID)

  /* [noscript] attribute WebGLuint name; */
  NS_IMETHOD GetName(WebGLuint *aName) = 0;
  NS_IMETHOD SetName(WebGLuint 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(WebGLuint *aName); \
  NS_IMETHOD SetName(WebGLuint 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(WebGLuint *aName) { return _to GetName(aName); } \
  NS_IMETHOD SetName(WebGLuint 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(WebGLuint *aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetName(aName); } \
  NS_IMETHOD SetName(WebGLuint 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 WebGLuint name; */
NS_IMETHODIMP nsWebGLShader::GetName(WebGLuint *aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsWebGLShader::SetName(WebGLuint 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 nsIWebGLShaderArray : public nsISupports {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IWEBGLSHADERARRAY_IID)

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

  /* nsIWebGLShader item (in unsigned long index); */
  NS_IMETHOD Item(uint32_t index, nsIWebGLShader * *_retval) = 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_IMETHOD GetLength(uint32_t *aLength); \
  NS_IMETHOD Item(uint32_t index, nsIWebGLShader * *_retval); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIWEBGLSHADERARRAY(_to) \
  NS_IMETHOD GetLength(uint32_t *aLength) { return _to GetLength(aLength); } \
  NS_IMETHOD Item(uint32_t index, nsIWebGLShader * *_retval) { 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_IMETHOD GetLength(uint32_t *aLength) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLength(aLength); } \
  NS_IMETHOD Item(uint32_t index, nsIWebGLShader * *_retval) { 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(uint32_t *aLength)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIWebGLShader item (in unsigned long index); */
NS_IMETHODIMP nsWebGLShaderArray::Item(uint32_t index, nsIWebGLShader * *_retval)
{
    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 nsIWebGLFramebuffer : public nsISupports {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IWEBGLFRAMEBUFFER_IID)

  /* [noscript] attribute WebGLuint name; */
  NS_IMETHOD GetName(WebGLuint *aName) = 0;
  NS_IMETHOD SetName(WebGLuint 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(WebGLuint *aName); \
  NS_IMETHOD SetName(WebGLuint 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(WebGLuint *aName) { return _to GetName(aName); } \
  NS_IMETHOD SetName(WebGLuint 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(WebGLuint *aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetName(aName); } \
  NS_IMETHOD SetName(WebGLuint 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 WebGLuint name; */
NS_IMETHODIMP nsWebGLFramebuffer::GetName(WebGLuint *aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsWebGLFramebuffer::SetName(WebGLuint 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 nsIWebGLRenderbuffer : public nsISupports {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IWEBGLRENDERBUFFER_IID)

  /* [noscript] attribute WebGLuint name; */
  NS_IMETHOD GetName(WebGLuint *aName) = 0;
  NS_IMETHOD SetName(WebGLuint 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(WebGLuint *aName); \
  NS_IMETHOD SetName(WebGLuint 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(WebGLuint *aName) { return _to GetName(aName); } \
  NS_IMETHOD SetName(WebGLuint 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(WebGLuint *aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetName(aName); } \
  NS_IMETHOD SetName(WebGLuint 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 WebGLuint name; */
NS_IMETHODIMP nsWebGLRenderbuffer::GetName(WebGLuint *aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsWebGLRenderbuffer::SetName(WebGLuint 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 nsIWebGLActiveInfo : public nsISupports {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IWEBGLACTIVEINFO_IID)

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

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

  /* readonly attribute DOMString name; */
  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_IMETHOD GetSize(WebGLint *aSize); \
  NS_IMETHOD GetType(WebGLenum *aType); \
  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_IMETHOD GetSize(WebGLint *aSize) { return _to GetSize(aSize); } \
  NS_IMETHOD GetType(WebGLenum *aType) { return _to GetType(aType); } \
  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_IMETHOD GetSize(WebGLint *aSize) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSize(aSize); } \
  NS_IMETHOD GetType(WebGLenum *aType) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetType(aType); } \
  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 WebGLint size; */
NS_IMETHODIMP nsWebGLActiveInfo::GetSize(WebGLint *aSize)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute WebGLenum type; */
NS_IMETHODIMP nsWebGLActiveInfo::GetType(WebGLenum *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:    nsIWebGLShaderPrecisionFormat */
#define NS_IWEBGLSHADERPRECISIONFORMAT_IID_STR "76265e93-2e8f-40ca-b25b-eea5995e9641"

#define NS_IWEBGLSHADERPRECISIONFORMAT_IID \
  {0x76265e93, 0x2e8f, 0x40ca, \
    { 0xb2, 0x5b, 0xee, 0xa5, 0x99, 0x5e, 0x96, 0x41 }}

class NS_NO_VTABLE nsIWebGLShaderPrecisionFormat : public nsISupports {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IWEBGLSHADERPRECISIONFORMAT_IID)

  /* readonly attribute WebGLint rangeMin; */
  NS_IMETHOD GetRangeMin(WebGLint *aRangeMin) = 0;

  /* readonly attribute WebGLint rangeMax; */
  NS_IMETHOD GetRangeMax(WebGLint *aRangeMax) = 0;

  /* readonly attribute WebGLint precision; */
  NS_IMETHOD GetPrecision(WebGLint *aPrecision) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIWebGLShaderPrecisionFormat, NS_IWEBGLSHADERPRECISIONFORMAT_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIWEBGLSHADERPRECISIONFORMAT \
  NS_IMETHOD GetRangeMin(WebGLint *aRangeMin); \
  NS_IMETHOD GetRangeMax(WebGLint *aRangeMax); \
  NS_IMETHOD GetPrecision(WebGLint *aPrecision); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIWEBGLSHADERPRECISIONFORMAT(_to) \
  NS_IMETHOD GetRangeMin(WebGLint *aRangeMin) { return _to GetRangeMin(aRangeMin); } \
  NS_IMETHOD GetRangeMax(WebGLint *aRangeMax) { return _to GetRangeMax(aRangeMax); } \
  NS_IMETHOD GetPrecision(WebGLint *aPrecision) { return _to GetPrecision(aPrecision); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIWEBGLSHADERPRECISIONFORMAT(_to) \
  NS_IMETHOD GetRangeMin(WebGLint *aRangeMin) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRangeMin(aRangeMin); } \
  NS_IMETHOD GetRangeMax(WebGLint *aRangeMax) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRangeMax(aRangeMax); } \
  NS_IMETHOD GetPrecision(WebGLint *aPrecision) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPrecision(aPrecision); } 

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

/* Header file */
class nsWebGLShaderPrecisionFormat : public nsIWebGLShaderPrecisionFormat
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIWEBGLSHADERPRECISIONFORMAT

  nsWebGLShaderPrecisionFormat();

private:
  ~nsWebGLShaderPrecisionFormat();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsWebGLShaderPrecisionFormat, nsIWebGLShaderPrecisionFormat)

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

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

/* readonly attribute WebGLint rangeMin; */
NS_IMETHODIMP nsWebGLShaderPrecisionFormat::GetRangeMin(WebGLint *aRangeMin)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute WebGLint rangeMax; */
NS_IMETHODIMP nsWebGLShaderPrecisionFormat::GetRangeMax(WebGLint *aRangeMax)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute WebGLint precision; */
NS_IMETHODIMP nsWebGLShaderPrecisionFormat::GetPrecision(WebGLint *aPrecision)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    nsIWebGLUniformLocation */
#define NS_IWEBGLUNIFORMLOCATION_IID_STR "d38b0467-623e-4c82-9140-5f14a3bd1bad"

#define NS_IWEBGLUNIFORMLOCATION_IID \
  {0xd38b0467, 0x623e, 0x4c82, \
    { 0x91, 0x40, 0x5f, 0x14, 0xa3, 0xbd, 0x1b, 0xad }}

class NS_NO_VTABLE nsIWebGLUniformLocation : public nsISupports {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IWEBGLUNIFORMLOCATION_IID)

  /* [noscript] attribute WebGLint location; */
  NS_IMETHOD GetLocation(WebGLint *aLocation) = 0;
  NS_IMETHOD SetLocation(WebGLint aLocation) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIWebGLUniformLocation, NS_IWEBGLUNIFORMLOCATION_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIWEBGLUNIFORMLOCATION \
  NS_IMETHOD GetLocation(WebGLint *aLocation); \
  NS_IMETHOD SetLocation(WebGLint aLocation); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIWEBGLUNIFORMLOCATION(_to) \
  NS_IMETHOD GetLocation(WebGLint *aLocation) { return _to GetLocation(aLocation); } \
  NS_IMETHOD SetLocation(WebGLint aLocation) { return _to SetLocation(aLocation); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIWEBGLUNIFORMLOCATION(_to) \
  NS_IMETHOD GetLocation(WebGLint *aLocation) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLocation(aLocation); } \
  NS_IMETHOD SetLocation(WebGLint aLocation) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetLocation(aLocation); } 

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

/* Header file */
class nsWebGLUniformLocation : public nsIWebGLUniformLocation
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIWEBGLUNIFORMLOCATION

  nsWebGLUniformLocation();

private:
  ~nsWebGLUniformLocation();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsWebGLUniformLocation, nsIWebGLUniformLocation)

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

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

/* [noscript] attribute WebGLint location; */
NS_IMETHODIMP nsWebGLUniformLocation::GetLocation(WebGLint *aLocation)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsWebGLUniformLocation::SetLocation(WebGLint aLocation)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    nsIWebGLExtension */
#define NS_IWEBGLEXTENSION_IID_STR "70814f32-a5c5-4b95-83d5-ac653bac3316"

#define NS_IWEBGLEXTENSION_IID \
  {0x70814f32, 0xa5c5, 0x4b95, \
    { 0x83, 0xd5, 0xac, 0x65, 0x3b, 0xac, 0x33, 0x16 }}

class NS_NO_VTABLE nsIWebGLExtension : public nsISupports {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IWEBGLEXTENSION_IID)

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIWebGLExtension, NS_IWEBGLEXTENSION_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIWEBGLEXTENSION \
  /* no methods! */

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIWEBGLEXTENSION(_to) \
  /* no methods! */

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIWEBGLEXTENSION(_to) \
  /* no methods! */

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

/* Header file */
class nsWebGLExtension : public nsIWebGLExtension
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIWEBGLEXTENSION

  nsWebGLExtension();

private:
  ~nsWebGLExtension();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsWebGLExtension, nsIWebGLExtension)

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

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

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


/* starting interface:    nsIWebGLExtensionStandardDerivatives */
#define NS_IWEBGLEXTENSIONSTANDARDDERIVATIVES_IID_STR "3de3dfd9-864a-4e4c-989b-2977eaa80b7b"

#define NS_IWEBGLEXTENSIONSTANDARDDERIVATIVES_IID \
  {0x3de3dfd9, 0x864a, 0x4e4c, \
    { 0x98, 0x9b, 0x29, 0x77, 0xea, 0xa8, 0x0b, 0x7b }}

class NS_NO_VTABLE nsIWebGLExtensionStandardDerivatives : public nsIWebGLExtension {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IWEBGLEXTENSIONSTANDARDDERIVATIVES_IID)

  enum {
    FRAGMENT_SHADER_DERIVATIVE_HINT_OES = 35723U
  };

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIWebGLExtensionStandardDerivatives, NS_IWEBGLEXTENSIONSTANDARDDERIVATIVES_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIWEBGLEXTENSIONSTANDARDDERIVATIVES \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIWEBGLEXTENSIONSTANDARDDERIVATIVES(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIWEBGLEXTENSIONSTANDARDDERIVATIVES(_to) \

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

/* Header file */
class nsWebGLExtensionStandardDerivatives : public nsIWebGLExtensionStandardDerivatives
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIWEBGLEXTENSIONSTANDARDDERIVATIVES

  nsWebGLExtensionStandardDerivatives();

private:
  ~nsWebGLExtensionStandardDerivatives();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsWebGLExtensionStandardDerivatives, nsIWebGLExtensionStandardDerivatives)

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

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

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


/* starting interface:    nsIWebGLExtensionLoseContext */
#define NS_IWEBGLEXTENSIONLOSECONTEXT_IID_STR "b0afc2eb-0895-4509-98de-5c383d160694"

#define NS_IWEBGLEXTENSIONLOSECONTEXT_IID \
  {0xb0afc2eb, 0x0895, 0x4509, \
    { 0x98, 0xde, 0x5c, 0x38, 0x3d, 0x16, 0x06, 0x94 }}

class NS_NO_VTABLE nsIWebGLExtensionLoseContext : public nsIWebGLExtension {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IWEBGLEXTENSIONLOSECONTEXT_IID)

  /* void loseContext (); */
  NS_IMETHOD LoseContext(void) = 0;

  /* void restoreContext (); */
  NS_IMETHOD RestoreContext(void) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIWebGLExtensionLoseContext, NS_IWEBGLEXTENSIONLOSECONTEXT_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIWEBGLEXTENSIONLOSECONTEXT \
  NS_IMETHOD LoseContext(void); \
  NS_IMETHOD RestoreContext(void); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIWEBGLEXTENSIONLOSECONTEXT(_to) \
  NS_IMETHOD LoseContext(void) { return _to LoseContext(); } \
  NS_IMETHOD RestoreContext(void) { return _to RestoreContext(); } 

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

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

/* Header file */
class nsWebGLExtensionLoseContext : public nsIWebGLExtensionLoseContext
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIWEBGLEXTENSIONLOSECONTEXT

  nsWebGLExtensionLoseContext();

private:
  ~nsWebGLExtensionLoseContext();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsWebGLExtensionLoseContext, nsIWebGLExtensionLoseContext)

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

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

/* void loseContext (); */
NS_IMETHODIMP nsWebGLExtensionLoseContext::LoseContext()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void restoreContext (); */
NS_IMETHODIMP nsWebGLExtensionLoseContext::RestoreContext()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    nsIWebGLExtensionTextureFilterAnisotropic */
#define NS_IWEBGLEXTENSIONTEXTUREFILTERANISOTROPIC_IID_STR "73bfb64d-94bd-4a7a-9eab-6b6d32e57aa0"

#define NS_IWEBGLEXTENSIONTEXTUREFILTERANISOTROPIC_IID \
  {0x73bfb64d, 0x94bd, 0x4a7a, \
    { 0x9e, 0xab, 0x6b, 0x6d, 0x32, 0xe5, 0x7a, 0xa0 }}

class NS_NO_VTABLE nsIWebGLExtensionTextureFilterAnisotropic : public nsIWebGLExtension {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IWEBGLEXTENSIONTEXTUREFILTERANISOTROPIC_IID)

  enum {
    TEXTURE_MAX_ANISOTROPY_EXT = 34046U,
    MAX_TEXTURE_MAX_ANISOTROPY_EXT = 34047U
  };

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIWebGLExtensionTextureFilterAnisotropic, NS_IWEBGLEXTENSIONTEXTUREFILTERANISOTROPIC_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIWEBGLEXTENSIONTEXTUREFILTERANISOTROPIC \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIWEBGLEXTENSIONTEXTUREFILTERANISOTROPIC(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIWEBGLEXTENSIONTEXTUREFILTERANISOTROPIC(_to) \

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

/* Header file */
class nsWebGLExtensionTextureFilterAnisotropic : public nsIWebGLExtensionTextureFilterAnisotropic
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIWEBGLEXTENSIONTEXTUREFILTERANISOTROPIC

  nsWebGLExtensionTextureFilterAnisotropic();

private:
  ~nsWebGLExtensionTextureFilterAnisotropic();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsWebGLExtensionTextureFilterAnisotropic, nsIWebGLExtensionTextureFilterAnisotropic)

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

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

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


/* starting interface:    nsIWebGLExtensionCompressedTextureS3TC */
#define NS_IWEBGLEXTENSIONCOMPRESSEDTEXTURES3TC_IID_STR "a1508b6f-f2ab-44cf-bbb4-3cfb339e1e8a"

#define NS_IWEBGLEXTENSIONCOMPRESSEDTEXTURES3TC_IID \
  {0xa1508b6f, 0xf2ab, 0x44cf, \
    { 0xbb, 0xb4, 0x3c, 0xfb, 0x33, 0x9e, 0x1e, 0x8a }}

class NS_NO_VTABLE nsIWebGLExtensionCompressedTextureS3TC : public nsIWebGLExtension {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IWEBGLEXTENSIONCOMPRESSEDTEXTURES3TC_IID)

  enum {
    COMPRESSED_RGB_S3TC_DXT1_EXT = 33776U,
    COMPRESSED_RGBA_S3TC_DXT1_EXT = 33777U,
    COMPRESSED_RGBA_S3TC_DXT3_EXT = 33778U,
    COMPRESSED_RGBA_S3TC_DXT5_EXT = 33779U
  };

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIWebGLExtensionCompressedTextureS3TC, NS_IWEBGLEXTENSIONCOMPRESSEDTEXTURES3TC_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIWEBGLEXTENSIONCOMPRESSEDTEXTURES3TC \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIWEBGLEXTENSIONCOMPRESSEDTEXTURES3TC(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIWEBGLEXTENSIONCOMPRESSEDTEXTURES3TC(_to) \

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

/* Header file */
class nsWebGLExtensionCompressedTextureS3TC : public nsIWebGLExtensionCompressedTextureS3TC
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIWEBGLEXTENSIONCOMPRESSEDTEXTURES3TC

  nsWebGLExtensionCompressedTextureS3TC();

private:
  ~nsWebGLExtensionCompressedTextureS3TC();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsWebGLExtensionCompressedTextureS3TC, nsIWebGLExtensionCompressedTextureS3TC)

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

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

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


/* starting interface:    nsIWebGLExtensionDepthTexture */
#define NS_IWEBGLEXTENSIONDEPTHTEXTURE_IID_STR "ef36f000-c1b2-11e1-afa7-0800200c9a66"

#define NS_IWEBGLEXTENSIONDEPTHTEXTURE_IID \
  {0xef36f000, 0xc1b2, 0x11e1, \
    { 0xaf, 0xa7, 0x08, 0x00, 0x20, 0x0c, 0x9a, 0x66 }}

class NS_NO_VTABLE nsIWebGLExtensionDepthTexture : public nsIWebGLExtension {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IWEBGLEXTENSIONDEPTHTEXTURE_IID)

  enum {
    UNSIGNED_INT_24_8_WEBGL = 34042U
  };

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIWebGLExtensionDepthTexture, NS_IWEBGLEXTENSIONDEPTHTEXTURE_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIWEBGLEXTENSIONDEPTHTEXTURE \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIWEBGLEXTENSIONDEPTHTEXTURE(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIWEBGLEXTENSIONDEPTHTEXTURE(_to) \

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

/* Header file */
class nsWebGLExtensionDepthTexture : public nsIWebGLExtensionDepthTexture
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIWEBGLEXTENSIONDEPTHTEXTURE

  nsWebGLExtensionDepthTexture();

private:
  ~nsWebGLExtensionDepthTexture();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsWebGLExtensionDepthTexture, nsIWebGLExtensionDepthTexture)

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

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

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


/* starting interface:    nsIDOMWebGLRenderingContext */
#define NS_IDOMWEBGLRENDERINGCONTEXT_IID_STR "a1fdfb76-6a08-4a1a-b0c9-d92ef3357cb9"

#define NS_IDOMWEBGLRENDERINGCONTEXT_IID \
  {0xa1fdfb76, 0x6a08, 0x4a1a, \
    { 0xb0, 0xc9, 0xd9, 0x2e, 0xf3, 0x35, 0x7c, 0xb9 }}

class NS_NO_VTABLE nsIDOMWebGLRenderingContext : public nsISupports {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IDOMWEBGLRENDERINGCONTEXT_IID)

  /* [noscript] DOMString mozGetUnderlyingParamString (in WebGLenum pname); */
  NS_IMETHOD MozGetUnderlyingParamString(WebGLenum pname, nsAString & _retval) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIDOMWebGLRenderingContext, NS_IDOMWEBGLRENDERINGCONTEXT_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIDOMWEBGLRENDERINGCONTEXT \
  NS_IMETHOD MozGetUnderlyingParamString(WebGLenum pname, nsAString & _retval); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIDOMWEBGLRENDERINGCONTEXT(_to) \
  NS_IMETHOD MozGetUnderlyingParamString(WebGLenum pname, nsAString & _retval) { return _to MozGetUnderlyingParamString(pname, _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_NSIDOMWEBGLRENDERINGCONTEXT(_to) \
  NS_IMETHOD MozGetUnderlyingParamString(WebGLenum pname, nsAString & _retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->MozGetUnderlyingParamString(pname, _retval); } 

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

/* Header file */
class nsDOMWebGLRenderingContext : public nsIDOMWebGLRenderingContext
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIDOMWEBGLRENDERINGCONTEXT

  nsDOMWebGLRenderingContext();

private:
  ~nsDOMWebGLRenderingContext();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsDOMWebGLRenderingContext, nsIDOMWebGLRenderingContext)

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

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

/* [noscript] DOMString mozGetUnderlyingParamString (in WebGLenum pname); */
NS_IMETHODIMP nsDOMWebGLRenderingContext::MozGetUnderlyingParamString(WebGLenum pname, nsAString & _retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_nsIDOMWebGLRenderingContext_h__ */
