Compare Revisions

WebIDL bindings

Change Revisions

Revision 326211:

Revision 326211 by Bzbarsky on

Revision 327363:

Revision 327363 by Bzbarsky on

Title:
WebIDL bindings
WebIDL bindings
Slug:
Mozilla/WebIDL_bindings
Mozilla/WebIDL_bindings
Content:

Revision 326211
Revision 327363
t503      Callback functions are represented as <code>JSObject*</codet503      Callback functions are represented as an object, inheriting
>>.&nbsp; Methods using callback functions always get a <code>JSCo> from <code>mozilla::dom::CallbackFunction</code>, whose name, in
>ntext*</code> argument.> the <code>mozilla::dom</code> namespace, matches the name of the
 > callback function in the WebIDL.&nbsp; The object exposes two <c
 >ode>Call</code> methods.&nbsp; The first <code>Call</code> method
 > has the same signature as a throwing method declared just like t
 >he callback function, and calling it will invoke the callback fun
 >ction with a null <code>this</code> object.&nbsp; The second <cod
 >e>Call</code> method allows passing in an explicit <code>this</co
 >de> value as the first argument.&nbsp; This second call method is
 > a template on the type of the first argument, so the <code>this<
 >/code> value can be passed in in whatever form is most convenient
 >, as long as it corresponds to a WebIDL interface type.
504    </p>
505    <p>
506      For example, this WebIDL:
507    </p>
508    <pre>
509callback MyCallback = long (MyInterface arg1, boolean arg2);
510</pre>
511    <p>
512      would lead to this C++ class declaration, in the <code>mozi
 >lla::dom</code> namespace:
513    </p>
514    <pre>
515class MyCallback : public CallbackFunction
516{
517public:
518  int32_t
519  Call(MyInterface&amp; arg1, bool arg2, ErrorResult&amp; rv);
520 
521  template&lt;typename T&gt;
522  int32_t
523  Call(const T&amp; thisObj, MyInterface&amp; arg1, bool arg2, Er
 >rorResult&amp; rv);
524};
525</pre>
526    <p>
527      The Call methods report any exceptions produced by the JS f
 >unction being called before they return.

Back to History