Line data Source code
1 : /* THIS FILE IS AUTOGENERATED FROM AudioNode.webidl BY Codegen.py - DO NOT EDIT */
2 :
3 : #ifndef mozilla_dom_AudioNodeBinding_h
4 : #define mozilla_dom_AudioNodeBinding_h
5 :
6 : #include "js/RootingAPI.h"
7 : #include "jspubtd.h"
8 : #include "mozilla/ErrorResult.h"
9 : #include "mozilla/dom/BindingDeclarations.h"
10 : #include "mozilla/dom/Nullable.h"
11 :
12 : namespace mozilla {
13 : namespace dom {
14 :
15 : class AudioNode;
16 : struct AudioNodeAtoms;
17 : struct AudioNodeOptionsAtoms;
18 : struct NativePropertyHooks;
19 : class ProtoAndIfaceCache;
20 :
21 : } // namespace dom
22 : } // namespace mozilla
23 :
24 : namespace mozilla {
25 : namespace dom {
26 :
27 : enum class ChannelCountMode : uint8_t {
28 : Max,
29 : Clamped_max,
30 : Explicit,
31 : EndGuard_
32 : };
33 :
34 : namespace ChannelCountModeValues {
35 : extern const EnumEntry strings[4];
36 : } // namespace ChannelCountModeValues
37 :
38 : bool
39 : ToJSValue(JSContext* aCx, ChannelCountMode aArgument, JS::MutableHandle<JS::Value> aValue);
40 :
41 :
42 : enum class ChannelInterpretation : uint8_t {
43 : Speakers,
44 : Discrete,
45 : EndGuard_
46 : };
47 :
48 : namespace ChannelInterpretationValues {
49 : extern const EnumEntry strings[3];
50 : } // namespace ChannelInterpretationValues
51 :
52 : bool
53 : ToJSValue(JSContext* aCx, ChannelInterpretation aArgument, JS::MutableHandle<JS::Value> aValue);
54 :
55 :
56 0 : struct AudioNodeOptions : public DictionaryBase
57 : {
58 : MOZ_INIT_OUTSIDE_CTOR Optional<uint32_t> mChannelCount;
59 : MOZ_INIT_OUTSIDE_CTOR Optional<ChannelCountMode> mChannelCountMode;
60 : MOZ_INIT_OUTSIDE_CTOR Optional<ChannelInterpretation> mChannelInterpretation;
61 :
62 : AudioNodeOptions();
63 :
64 0 : explicit inline AudioNodeOptions(const FastDictionaryInitializer& )
65 0 : {
66 : // Do nothing here; this is used by our "Fast" subclass
67 0 : }
68 :
69 : explicit inline AudioNodeOptions(const AudioNodeOptions& aOther)
70 : {
71 : *this = aOther;
72 : }
73 :
74 : bool
75 : Init(JSContext* cx, JS::Handle<JS::Value> val, const char* sourceDescription = "Value", bool passedToJSImpl = false);
76 :
77 : bool
78 : Init(const nsAString& aJSON);
79 :
80 : bool
81 : ToObjectInternal(JSContext* cx, JS::MutableHandle<JS::Value> rval) const;
82 :
83 : bool
84 : ToJSON(nsAString& aJSON) const;
85 :
86 : void
87 : TraceDictionary(JSTracer* trc);
88 :
89 : AudioNodeOptions&
90 : operator=(const AudioNodeOptions& aOther);
91 :
92 : private:
93 : static bool
94 : InitIds(JSContext* cx, AudioNodeOptionsAtoms* atomsCache);
95 : };
96 :
97 : namespace binding_detail {
98 0 : struct FastAudioNodeOptions : public AudioNodeOptions
99 : {
100 0 : inline FastAudioNodeOptions()
101 0 : : AudioNodeOptions(FastDictionaryInitializer())
102 : {
103 : // Doesn't matter what int we pass to the parent constructor
104 0 : }
105 : };
106 : } // namespace binding_detail
107 :
108 :
109 : namespace AudioNodeBinding {
110 :
111 : typedef mozilla::dom::AudioNode NativeType;
112 :
113 : bool
114 : ConstructorEnabled(JSContext* aCx, JS::Handle<JSObject*> aObj);
115 :
116 : JSObject*
117 : DefineDOMInterface(JSContext* aCx, JS::Handle<JSObject*> aGlobal, JS::Handle<jsid> id, bool aDefineOnGlobal);
118 :
119 : // We declare this as an array so that retrieving a pointer to this
120 : // binding's property hooks only requires compile/link-time resolvable
121 : // address arithmetic. Declaring it as a pointer instead would require
122 : // doing a run-time load to fetch a pointer to this binding's property
123 : // hooks. And then structures which embedded a pointer to this structure
124 : // would require a run-time load for proper initialization, which would
125 : // then induce static constructors. Lots of static constructors.
126 : extern const NativePropertyHooks sNativePropertyHooks[];
127 :
128 : void
129 : CreateInterfaceObjects(JSContext* aCx, JS::Handle<JSObject*> aGlobal, ProtoAndIfaceCache& aProtoAndIfaceCache, bool aDefineOnGlobal);
130 :
131 : JS::Handle<JSObject*>
132 : GetProtoObjectHandle(JSContext* aCx);
133 :
134 : JSObject*
135 : GetProtoObject(JSContext* aCx);
136 :
137 : JS::Handle<JSObject*>
138 : GetConstructorObjectHandle(JSContext* aCx, bool aDefineOnGlobal = true);
139 :
140 : JSObject*
141 : GetConstructorObject(JSContext* aCx);
142 :
143 : } // namespace AudioNodeBinding
144 :
145 :
146 :
147 : } // namespace dom
148 : } // namespace mozilla
149 :
150 : #endif // mozilla_dom_AudioNodeBinding_h
|