mozilla
Your Search Results

    Function modifier

    Overview

    Adding the function modifier to an IDL interface allows you to pass a basic function as a parameter instead of an object that implements the required interface.  Any member method invoked on the expected interface will call the function that was passed.

    Example

    IDL file

    [function, scriptable, uuid(13e630b8-2f41-456b-ae26-c30b201c8f99)]
    interface ICallback : nsISupports
    {
      boolean go(in PRUint32 data);
    }
    
    [scriptable, uuid(98bf0a93-577d-49dc-a9c4-23c172ebd0df)]
    interface IFoo : nsISupports
    {
      void sum(in PRUint32 first, in PRUint32 second, in ICallback aCallback);
    }
    

    C++ implementation

    NS_IMETHODIMP IFoo::Sum(PRUint32 first, PRUint32 second, ICallback *aCallback)
    {
      PRBool ret = TRUE;
      nsCOMPtr<ICallback> callback = aCallback;
    
      callback->Go(first+second, &ret);
    
      printf("Callback returned: %d", ret);
    }
    

    JavaScript

    // Note how the callback object does not need to include define XPCOM goop such as QueryInterface
    var callback = function (sum) {
    alert(sum);
    return true;
    };
    var foo = Components.classes["XXXXXX"].getService(Components.interfaces.IFoo); foo.sum(1, 2, callback});

    Document Tags and Contributors

    Tags: 
    Contributors to this page: Sheppy, jdm, FireRabbit, fscholz
    Last updated by: fscholz,