/* 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,
  AnimationEvent = _ID_Start,
  ArchiveReader,
  ArchiveRequest,
  AudioBuffer,
  AudioBufferSourceNode,
  AudioContext,
  AudioDestinationNode,
  AudioListener,
  AudioNode,
  AudioParam,
  AudioSourceNode,
  BatteryManager,
  BiquadFilterNode,
  CDATASection,
  CSS2Properties,
  CSSPrimitiveValue,
  CSSStyleDeclaration,
  CSSStyleSheet,
  CSSValue,
  CSSValueList,
  CanvasRenderingContext2D,
  CaretPosition,
  CharacterData,
  ClientRect,
  ClientRectList,
  CommandEvent,
  Comment,
  DOMCursor,
  DOMImplementation,
  DOMParser,
  DOMRequest,
  DOMSettableTokenList,
  DOMStringMap,
  DOMTokenList,
  DelayNode,
  Document,
  DocumentFragment,
  DocumentType,
  Document_workers,
  DummyInterface,
  DummyInterfaceWorkers_workers,
  DynamicsCompressorNode,
  Element,
  Event,
  EventSource,
  EventTarget,
  EventTarget_workers,
  Event_workers,
  FileHandle,
  FileList,
  FileReaderSync_workers,
  FileRequest,
  FormData,
  FormData_workers,
  GainNode,
  HTMLAnchorElement,
  HTMLAppletElement,
  HTMLAreaElement,
  HTMLAudioElement,
  HTMLBRElement,
  HTMLBaseElement,
  HTMLBodyElement,
  HTMLButtonElement,
  HTMLCollection,
  HTMLDListElement,
  HTMLDataElement,
  HTMLDataListElement,
  HTMLDirectoryElement,
  HTMLDivElement,
  HTMLDocument,
  HTMLElement,
  HTMLEmbedElement,
  HTMLFieldSetElement,
  HTMLFontElement,
  HTMLFrameElement,
  HTMLFrameSetElement,
  HTMLHRElement,
  HTMLHeadElement,
  HTMLHeadingElement,
  HTMLHtmlElement,
  HTMLImageElement,
  HTMLLIElement,
  HTMLLabelElement,
  HTMLLegendElement,
  HTMLLinkElement,
  HTMLMapElement,
  HTMLMediaElement,
  HTMLMenuElement,
  HTMLMenuItemElement,
  HTMLMetaElement,
  HTMLMeterElement,
  HTMLModElement,
  HTMLOListElement,
  HTMLObjectElement,
  HTMLOptGroupElement,
  HTMLOptionElement,
  HTMLOptionsCollection,
  HTMLOutputElement,
  HTMLParagraphElement,
  HTMLParamElement,
  HTMLPreElement,
  HTMLProgressElement,
  HTMLPropertiesCollection,
  HTMLQuoteElement,
  HTMLScriptElement,
  HTMLSourceElement,
  HTMLSpanElement,
  HTMLStyleElement,
  HTMLTableCaptionElement,
  HTMLTableCellElement,
  HTMLTableColElement,
  HTMLTableElement,
  HTMLTableRowElement,
  HTMLTableSectionElement,
  HTMLTextAreaElement,
  HTMLTimeElement,
  HTMLTitleElement,
  HTMLUListElement,
  HTMLUnknownElement,
  HTMLVideoElement,
  IDBVersionChangeEvent,
  ImageData,
  LocalMediaStream,
  Location,
  MediaError,
  MediaStream,
  MediaStreamList,
  MediaStream_workers,
  MessageEvent,
  MouseEvent,
  MozActivity,
  MutationEvent,
  MutationObserver,
  MutationRecord,
  Node,
  NodeIterator,
  NodeList,
  Notification,
  PaintRequest,
  PaintRequestList,
  PannerNode,
  Performance,
  PerformanceNavigation,
  PerformanceTiming,
  ProcessingInstruction,
  PropertyNodeList,
  RGBColor,
  Range,
  Rect,
  SVGAElement,
  SVGAltGlyphElement,
  SVGAngle,
  SVGAnimateElement,
  SVGAnimateMotionElement,
  SVGAnimateTransformElement,
  SVGAnimatedAngle,
  SVGAnimatedBoolean,
  SVGAnimatedLength,
  SVGAnimatedLengthList,
  SVGAnimatedNumberList,
  SVGAnimatedPreserveAspectRatio,
  SVGAnimatedTransformList,
  SVGAnimationElement,
  SVGCircleElement,
  SVGClipPathElement,
  SVGComponentTransferFunctionElement,
  SVGDefsElement,
  SVGDescElement,
  SVGDocument,
  SVGElement,
  SVGEllipseElement,
  SVGFEBlendElement,
  SVGFEColorMatrixElement,
  SVGFEComponentTransferElement,
  SVGFECompositeElement,
  SVGFEDistantLightElement,
  SVGFEFloodElement,
  SVGFEFuncAElement,
  SVGFEFuncBElement,
  SVGFEFuncGElement,
  SVGFEFuncRElement,
  SVGFEGaussianBlurElement,
  SVGFEImageElement,
  SVGFEMergeElement,
  SVGFEMergeNodeElement,
  SVGFEPointLightElement,
  SVGFETileElement,
  SVGFilterElement,
  SVGForeignObjectElement,
  SVGGElement,
  SVGGradientElement,
  SVGGraphicsElement,
  SVGImageElement,
  SVGLengthList,
  SVGLineElement,
  SVGLinearGradientElement,
  SVGMPathElement,
  SVGMarkerElement,
  SVGMaskElement,
  SVGMatrix,
  SVGMetadataElement,
  SVGNumberList,
  SVGPathElement,
  SVGPathSeg,
  SVGPathSegArcAbs,
  SVGPathSegArcRel,
  SVGPathSegClosePath,
  SVGPathSegCurvetoCubicAbs,
  SVGPathSegCurvetoCubicRel,
  SVGPathSegCurvetoCubicSmoothAbs,
  SVGPathSegCurvetoCubicSmoothRel,
  SVGPathSegCurvetoQuadraticAbs,
  SVGPathSegCurvetoQuadraticRel,
  SVGPathSegCurvetoQuadraticSmoothAbs,
  SVGPathSegCurvetoQuadraticSmoothRel,
  SVGPathSegLinetoAbs,
  SVGPathSegLinetoHorizontalAbs,
  SVGPathSegLinetoHorizontalRel,
  SVGPathSegLinetoRel,
  SVGPathSegLinetoVerticalAbs,
  SVGPathSegLinetoVerticalRel,
  SVGPathSegList,
  SVGPathSegMovetoAbs,
  SVGPathSegMovetoRel,
  SVGPatternElement,
  SVGPoint,
  SVGPointList,
  SVGPolygonElement,
  SVGPolylineElement,
  SVGPreserveAspectRatio,
  SVGRadialGradientElement,
  SVGRectElement,
  SVGSVGElement,
  SVGScriptElement,
  SVGSetElement,
  SVGStopElement,
  SVGStyleElement,
  SVGSwitchElement,
  SVGSymbolElement,
  SVGTSpanElement,
  SVGTextContentElement,
  SVGTextElement,
  SVGTextPathElement,
  SVGTextPositioningElement,
  SVGTitleElement,
  SVGTransform,
  SVGTransformList,
  SVGUseElement,
  SVGViewElement,
  Screen,
  StyleSheet,
  Text,
  TextDecoder,
  TextDecoder_workers,
  TextEncoder,
  TextEncoder_workers,
  TimeRanges,
  TransitionEvent,
  TreeWalker,
  UIEvent,
  URL,
  URL_workers,
  UndoManager,
  ValidityState,
  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,
  XMLStylesheetProcessingInstruction,
  XPathEvaluator,
  XULElement,
  _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, \
    prototypes::id::_ID_Count, \
    prototypes::id::_ID_Count, \
    prototypes::id::_ID_Count \
  }

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

#define MAX_PROTOTYPE_CHAIN_LENGTH 8

namespace mozilla {
namespace dom {
namespace constructors {

namespace id {

enum ID
{
  _ID_Start = prototypes::id::_ID_Count,
  AnimationEvent = _ID_Start,
  ArchiveReader,
  ArchiveRequest,
  AudioBuffer,
  AudioBufferSourceNode,
  AudioContext,
  AudioDestinationNode,
  AudioListener,
  AudioNode,
  AudioParam,
  AudioSourceNode,
  BatteryManager,
  BiquadFilterNode,
  CDATASection,
  CSS,
  CSS2Properties,
  CSSPrimitiveValue,
  CSSStyleDeclaration,
  CSSStyleSheet,
  CSSValue,
  CSSValueList,
  CanvasRenderingContext2D,
  CaretPosition,
  CharacterData,
  ClientRect,
  ClientRectList,
  CommandEvent,
  Comment,
  DOMCursor,
  DOMImplementation,
  DOMParser,
  DOMRequest,
  DOMSettableTokenList,
  DOMStringMap,
  DOMTokenList,
  DelayNode,
  Document,
  DocumentFragment,
  DocumentType,
  Document_workers,
  DummyInterface,
  DummyInterfaceWorkers_workers,
  DynamicsCompressorNode,
  Element,
  Event,
  EventSource,
  EventTarget,
  EventTarget_workers,
  Event_workers,
  FileHandle,
  FileList,
  FileReaderSync_workers,
  FileRequest,
  FormData,
  FormData_workers,
  GainNode,
  HTMLAnchorElement,
  HTMLAppletElement,
  HTMLAreaElement,
  HTMLAudioElement,
  HTMLBRElement,
  HTMLBaseElement,
  HTMLBodyElement,
  HTMLButtonElement,
  HTMLCollection,
  HTMLDListElement,
  HTMLDataElement,
  HTMLDataListElement,
  HTMLDirectoryElement,
  HTMLDivElement,
  HTMLDocument,
  HTMLElement,
  HTMLEmbedElement,
  HTMLFieldSetElement,
  HTMLFontElement,
  HTMLFrameElement,
  HTMLFrameSetElement,
  HTMLHRElement,
  HTMLHeadElement,
  HTMLHeadingElement,
  HTMLHtmlElement,
  HTMLImageElement,
  HTMLLIElement,
  HTMLLabelElement,
  HTMLLegendElement,
  HTMLLinkElement,
  HTMLMapElement,
  HTMLMediaElement,
  HTMLMenuElement,
  HTMLMenuItemElement,
  HTMLMetaElement,
  HTMLMeterElement,
  HTMLModElement,
  HTMLOListElement,
  HTMLObjectElement,
  HTMLOptGroupElement,
  HTMLOptionElement,
  HTMLOptionsCollection,
  HTMLOutputElement,
  HTMLParagraphElement,
  HTMLParamElement,
  HTMLPreElement,
  HTMLProgressElement,
  HTMLPropertiesCollection,
  HTMLQuoteElement,
  HTMLScriptElement,
  HTMLSourceElement,
  HTMLSpanElement,
  HTMLStyleElement,
  HTMLTableCaptionElement,
  HTMLTableCellElement,
  HTMLTableColElement,
  HTMLTableElement,
  HTMLTableRowElement,
  HTMLTableSectionElement,
  HTMLTextAreaElement,
  HTMLTimeElement,
  HTMLTitleElement,
  HTMLUListElement,
  HTMLUnknownElement,
  HTMLVideoElement,
  IDBVersionChangeEvent,
  ImageData,
  LocalMediaStream,
  Location,
  MediaError,
  MediaStream,
  MediaStream_workers,
  MessageEvent,
  MouseEvent,
  MozActivity,
  MutationEvent,
  MutationObserver,
  MutationRecord,
  Node,
  NodeFilter,
  NodeIterator,
  NodeList,
  Notification,
  PaintRequest,
  PaintRequestList,
  PannerNode,
  Performance,
  PerformanceNavigation,
  PerformanceTiming,
  ProcessingInstruction,
  PropertyNodeList,
  RGBColor,
  Range,
  Rect,
  SVGAElement,
  SVGAltGlyphElement,
  SVGAngle,
  SVGAnimateElement,
  SVGAnimateMotionElement,
  SVGAnimateTransformElement,
  SVGAnimatedAngle,
  SVGAnimatedBoolean,
  SVGAnimatedLength,
  SVGAnimatedLengthList,
  SVGAnimatedNumberList,
  SVGAnimatedPreserveAspectRatio,
  SVGAnimatedTransformList,
  SVGAnimationElement,
  SVGCircleElement,
  SVGClipPathElement,
  SVGComponentTransferFunctionElement,
  SVGDefsElement,
  SVGDescElement,
  SVGDocument,
  SVGElement,
  SVGEllipseElement,
  SVGFEBlendElement,
  SVGFEColorMatrixElement,
  SVGFEComponentTransferElement,
  SVGFECompositeElement,
  SVGFEDistantLightElement,
  SVGFEFloodElement,
  SVGFEFuncAElement,
  SVGFEFuncBElement,
  SVGFEFuncGElement,
  SVGFEFuncRElement,
  SVGFEGaussianBlurElement,
  SVGFEImageElement,
  SVGFEMergeElement,
  SVGFEMergeNodeElement,
  SVGFEPointLightElement,
  SVGFETileElement,
  SVGFilterElement,
  SVGForeignObjectElement,
  SVGGElement,
  SVGGradientElement,
  SVGGraphicsElement,
  SVGImageElement,
  SVGLengthList,
  SVGLineElement,
  SVGLinearGradientElement,
  SVGMPathElement,
  SVGMarkerElement,
  SVGMaskElement,
  SVGMatrix,
  SVGMetadataElement,
  SVGNumberList,
  SVGPathElement,
  SVGPathSeg,
  SVGPathSegArcAbs,
  SVGPathSegArcRel,
  SVGPathSegClosePath,
  SVGPathSegCurvetoCubicAbs,
  SVGPathSegCurvetoCubicRel,
  SVGPathSegCurvetoCubicSmoothAbs,
  SVGPathSegCurvetoCubicSmoothRel,
  SVGPathSegCurvetoQuadraticAbs,
  SVGPathSegCurvetoQuadraticRel,
  SVGPathSegCurvetoQuadraticSmoothAbs,
  SVGPathSegCurvetoQuadraticSmoothRel,
  SVGPathSegLinetoAbs,
  SVGPathSegLinetoHorizontalAbs,
  SVGPathSegLinetoHorizontalRel,
  SVGPathSegLinetoRel,
  SVGPathSegLinetoVerticalAbs,
  SVGPathSegLinetoVerticalRel,
  SVGPathSegList,
  SVGPathSegMovetoAbs,
  SVGPathSegMovetoRel,
  SVGPatternElement,
  SVGPoint,
  SVGPointList,
  SVGPolygonElement,
  SVGPolylineElement,
  SVGPreserveAspectRatio,
  SVGRadialGradientElement,
  SVGRectElement,
  SVGSVGElement,
  SVGScriptElement,
  SVGSetElement,
  SVGStopElement,
  SVGStyleElement,
  SVGSwitchElement,
  SVGSymbolElement,
  SVGTSpanElement,
  SVGTextContentElement,
  SVGTextElement,
  SVGTextPathElement,
  SVGTextPositioningElement,
  SVGTitleElement,
  SVGTransform,
  SVGTransformList,
  SVGUnitTypes,
  SVGUseElement,
  SVGViewElement,
  SVGZoomAndPan,
  Screen,
  StyleSheet,
  Text,
  TextDecoder,
  TextDecoder_workers,
  TextEncoder,
  TextEncoder_workers,
  TimeRanges,
  TransitionEvent,
  TreeWalker,
  UIEvent,
  URL,
  URL_workers,
  UndoManager,
  ValidityState,
  WebGLActiveInfo,
  WebGLBuffer,
  WebGLFramebuffer,
  WebGLProgram,
  WebGLRenderbuffer,
  WebGLRenderingContext,
  WebGLShader,
  WebGLShaderPrecisionFormat,
  WebGLTexture,
  WebGLUniformLocation,
  WebSocket,
  XMLHttpRequest,
  XMLHttpRequestUpload,
  XMLHttpRequestUpload_workers,
  XMLHttpRequest_workers,
  XMLSerializer,
  XMLStylesheetProcessingInstruction,
  XPathEvaluator,
  XULElement,
  _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__
