mozilla

Compare Revisions

WebIDL bindings

Change Revisions

Revision 327363:

Revision 327363 by Bzbarsky on

Revision 327371:

Revision 327371 by Bzbarsky on

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

Revision 327363
Revision 327371
n503      Callback functions are represented as an object, inheritingn503      Callback functions are represented as an object, inheriting
> from <code>mozilla::dom::CallbackFunction</code>, whose name, in> from <code>mozilla::dom::CallbackFunction</code>, whose name, in
> the <code>mozilla::dom</code> namespace, matches the name of the> the <code>mozilla::dom</code> namespace, matches the name of the
> callback function in the WebIDL.&nbsp; The object exposes two <c> callback function in the WebIDL.&nbsp; If the type is nullable, 
>ode>Call</code> methods.&nbsp; The first <code>Call</code> method>a pointer is passed in; otherwise a reference is passed in.
> 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      The object exposes two <code>Call</code> methods, which bot
 >h invoke the underlying JS callable and report any exceptions pro
 >duced by the callable before they return.&nbsp; The first <code>C
 >all</code> method has the same signature as a throwing method dec
 >lared just like the callback function, and calling it will invoke
 > the callable with a null <code>this</code> object.&nbsp; The sec
 >ond <code>Call</code> method allows passing in an explicit <code>
 >this</code> value as the first argument.&nbsp; This second call m
 >ethod is a template on the type of the first argument, so the <co
 >de>this</code> value can be passed in in whatever form is most co
 >nvenient, as long as it corresponds to a WebIDL interface type.
nn513interface MyInterface {
514  attribute MyCallback foo;
515  attribute MyCallback? bar;
516};
n512      would lead to this C++ class declaration, in the <code>mozin519      will lead to this C++ class declaration, in the <code>mozil
>lla::dom</code> namespace:>la::dom</code> namespace:
t527      The Call methods report any exceptions produced by the JS ft534      and these C++ function declarations:
>unction being called before they return. 
535    </p>
528    </p>536    <pre>
537MyCallback* GetFoo();
538void SetFoo(MyCallback&amp;);
539MyCallback* GetBar();
540void SetBar(MyCallback*);
541</pre>

Back to History