/* THIS FILE IS AUTOGENERATED - DO NOT EDIT */

#ifndef mozilla_dom_PrototypeList_h__
#define mozilla_dom_PrototypeList_h__

namespace mozilla {
namespace dom {
namespace prototypes {

namespace id {

enum ID
{
  _ID_Start = 0,
  AudioBuffer = _ID_Start,
  AudioBufferSourceNode,
  AudioDestinationNode,
  AudioListener,
  AudioNode,
  AudioParam,
  AudioSourceNode,
  BiquadFilterNode,
  CSS2Properties,
  CSSPrimitiveValue,
  CSSStyleDeclaration,
  CSSValue,
  CSSValueList,
  CanvasRenderingContext2D,
  ClientRectList,
  DOMImplementation,
  DOMParser,
  DOMSettableTokenList,
  DOMStringMap,
  DOMTokenList,
  DelayNode,
  Document,
  DocumentFragment,
  Document_workers,
  DynamicsCompressorNode,
  Element,
  EventSource,
  EventTarget,
  EventTarget_workers,
  FileHandle,
  FileList,
  FileReaderSync_workers,
  FormData,
  FormData_workers,
  GainNode,
  HTMLBodyElement,
  HTMLCollection,
  HTMLDataListElement,
  HTMLDivElement,
  HTMLElement,
  HTMLFontElement,
  HTMLFrameSetElement,
  HTMLLabelElement,
  HTMLOptionsCollection,
  HTMLPropertiesCollection,
  HTMLUnknownElement,
  ImageData,
  Location,
  MediaStreamList,
  MutationObserver,
  MutationRecord,
  Node,
  NodeList,
  PaintRequest,
  PaintRequestList,
  PannerNode,
  Performance,
  PerformanceNavigation,
  PerformanceTiming,
  PropertyNodeList,
  RGBColor,
  SVGAngle,
  SVGAnimatedAngle,
  SVGAnimatedBoolean,
  SVGAnimatedLengthList,
  SVGAnimatedNumberList,
  SVGAnimatedPreserveAspectRatio,
  SVGAnimatedTransformList,
  SVGElement,
  SVGLengthList,
  SVGMatrix,
  SVGNumberList,
  SVGPathSeg,
  SVGPathSegArcAbs,
  SVGPathSegArcRel,
  SVGPathSegClosePath,
  SVGPathSegCurvetoCubicAbs,
  SVGPathSegCurvetoCubicRel,
  SVGPathSegCurvetoCubicSmoothAbs,
  SVGPathSegCurvetoCubicSmoothRel,
  SVGPathSegCurvetoQuadraticAbs,
  SVGPathSegCurvetoQuadraticRel,
  SVGPathSegCurvetoQuadraticSmoothAbs,
  SVGPathSegCurvetoQuadraticSmoothRel,
  SVGPathSegLinetoAbs,
  SVGPathSegLinetoHorizontalAbs,
  SVGPathSegLinetoHorizontalRel,
  SVGPathSegLinetoRel,
  SVGPathSegLinetoVerticalAbs,
  SVGPathSegLinetoVerticalRel,
  SVGPathSegList,
  SVGPathSegMovetoAbs,
  SVGPathSegMovetoRel,
  SVGPoint,
  SVGPointList,
  SVGPreserveAspectRatio,
  SVGTransform,
  SVGTransformList,
  Screen,
  TextDecoder,
  TextDecoder_workers,
  TextEncoder,
  TextEncoder_workers,
  WebGLActiveInfo,
  WebGLBuffer,
  WebGLExtensionCompressedTextureATC,
  WebGLExtensionCompressedTexturePVRTC,
  WebGLExtensionCompressedTextureS3TC,
  WebGLExtensionDebugRendererInfo,
  WebGLExtensionDepthTexture,
  WebGLExtensionLoseContext,
  WebGLExtensionStandardDerivatives,
  WebGLExtensionTextureFilterAnisotropic,
  WebGLExtensionTextureFloat,
  WebGLFramebuffer,
  WebGLProgram,
  WebGLRenderbuffer,
  WebGLRenderingContext,
  WebGLShader,
  WebGLShaderPrecisionFormat,
  WebGLTexture,
  WebGLUniformLocation,
  WebSocket,
  XMLHttpRequest,
  XMLHttpRequestEventTarget,
  XMLHttpRequestEventTarget_workers,
  XMLHttpRequestUpload,
  XMLHttpRequestUpload_workers,
  XMLHttpRequest_workers,
  XMLSerializer,
  XPathEvaluator,
  mozAudioContext,
  _ID_Count
};

} // namespace id

typedef id::ID ID;

#define INTERFACE_CHAIN_1(_iface_1) \
  { \
    _iface_1, \
    prototypes::id::_ID_Count, \
    prototypes::id::_ID_Count, \
    prototypes::id::_ID_Count, \
    prototypes::id::_ID_Count \
  }

} // namespace prototypes
} // namespace dom
} // namespace mozilla

#define MAX_PROTOTYPE_CHAIN_LENGTH 5

namespace mozilla {
namespace dom {
namespace constructors {

namespace id {

enum ID
{
  _ID_Start = prototypes::id::_ID_Count,
  AudioBuffer = _ID_Start,
  AudioBufferSourceNode,
  AudioDestinationNode,
  AudioListener,
  AudioNode,
  AudioParam,
  AudioSourceNode,
  BiquadFilterNode,
  CSS,
  CSS2Properties,
  CSSPrimitiveValue,
  CSSStyleDeclaration,
  CSSValue,
  CSSValueList,
  CanvasRenderingContext2D,
  ClientRectList,
  DOMImplementation,
  DOMParser,
  DOMSettableTokenList,
  DOMStringMap,
  DOMTokenList,
  DelayNode,
  Document,
  DocumentFragment,
  Document_workers,
  DynamicsCompressorNode,
  Element,
  EventSource,
  EventTarget,
  EventTarget_workers,
  FileHandle,
  FileList,
  FileReaderSync_workers,
  FormData,
  FormData_workers,
  GainNode,
  HTMLBodyElement,
  HTMLCollection,
  HTMLDataListElement,
  HTMLDivElement,
  HTMLElement,
  HTMLFontElement,
  HTMLFrameSetElement,
  HTMLLabelElement,
  HTMLOptionsCollection,
  HTMLPropertiesCollection,
  HTMLUnknownElement,
  ImageData,
  Location,
  MutationObserver,
  MutationRecord,
  Node,
  NodeFilter,
  NodeList,
  PaintRequest,
  PaintRequestList,
  PannerNode,
  Performance,
  PerformanceNavigation,
  PerformanceTiming,
  PropertyNodeList,
  RGBColor,
  SVGAngle,
  SVGAnimatedAngle,
  SVGAnimatedBoolean,
  SVGAnimatedLengthList,
  SVGAnimatedNumberList,
  SVGAnimatedPreserveAspectRatio,
  SVGAnimatedTransformList,
  SVGElement,
  SVGLengthList,
  SVGMatrix,
  SVGNumberList,
  SVGPathSeg,
  SVGPathSegArcAbs,
  SVGPathSegArcRel,
  SVGPathSegClosePath,
  SVGPathSegCurvetoCubicAbs,
  SVGPathSegCurvetoCubicRel,
  SVGPathSegCurvetoCubicSmoothAbs,
  SVGPathSegCurvetoCubicSmoothRel,
  SVGPathSegCurvetoQuadraticAbs,
  SVGPathSegCurvetoQuadraticRel,
  SVGPathSegCurvetoQuadraticSmoothAbs,
  SVGPathSegCurvetoQuadraticSmoothRel,
  SVGPathSegLinetoAbs,
  SVGPathSegLinetoHorizontalAbs,
  SVGPathSegLinetoHorizontalRel,
  SVGPathSegLinetoRel,
  SVGPathSegLinetoVerticalAbs,
  SVGPathSegLinetoVerticalRel,
  SVGPathSegList,
  SVGPathSegMovetoAbs,
  SVGPathSegMovetoRel,
  SVGPoint,
  SVGPointList,
  SVGPreserveAspectRatio,
  SVGTransform,
  SVGTransformList,
  Screen,
  TextDecoder,
  TextDecoder_workers,
  TextEncoder,
  TextEncoder_workers,
  URL,
  WebGLActiveInfo,
  WebGLBuffer,
  WebGLFramebuffer,
  WebGLProgram,
  WebGLRenderbuffer,
  WebGLRenderingContext,
  WebGLShader,
  WebGLShaderPrecisionFormat,
  WebGLTexture,
  WebGLUniformLocation,
  WebSocket,
  XMLHttpRequest,
  XMLHttpRequestUpload,
  XMLHttpRequestUpload_workers,
  XMLHttpRequest_workers,
  XMLSerializer,
  XPathEvaluator,
  mozAudioContext,
  _ID_Count
};

} // namespace id

typedef id::ID ID;

} // namespace constructors
} // namespace dom
} // namespace mozilla

namespace mozilla {
namespace dom {

template <prototypes::ID PrototypeID>
struct PrototypeTraits;

template <class ConcreteClass>
struct PrototypeIDMap;

} // namespace dom
} // namespace mozilla

#endif // mozilla_dom_PrototypeList_h__
