/* * DO NOT EDIT. THIS FILE IS GENERATED FROM nsIStreamConverter.idl */ #ifndef __gen_nsIStreamConverter_h__ #define __gen_nsIStreamConverter_h__ #ifndef __gen_nsIStreamListener_h__ #include "nsIStreamListener.h" #endif #ifndef __gen_nsIInputStream_h__ #include "nsIInputStream.h" #endif #ifndef __gen_nsIURI_h__ #include "nsIURI.h" #endif /* For IDL files that don't want to include root IDL files. */ #ifndef NS_NO_VTABLE #define NS_NO_VTABLE #endif /* starting interface: nsIStreamConverter */ #define NS_ISTREAMCONVERTER_IID_STR "46484b30-3bd2-11d3-a16c-0050041caf44" #define NS_ISTREAMCONVERTER_IID \ {0x46484b30, 0x3bd2, 0x11d3, \ { 0xa1, 0x6c, 0x00, 0x50, 0x04, 0x1c, 0xaf, 0x44 }} /** * nsIStreamConverter provides an interface to implement when you have code * that converts data from one type to another. * * Suppose you had code that converted plain text into HTML. You could implement * this interface to allow everyone else to use your conversion logic using a * standard api. *

* STREAM CONVERTER USERS * * There are currently two ways to use a stream converter: *

    *
  1. SYNCHRONOUS Stream to Stream * You can supply the service with a stream of type X * and it will convert it to your desired output type and return * a converted (blocking) stream to you.
  2. * *
  3. ASYNCHRONOUS nsIStreamListener to nsIStreamListener * You can supply data directly to the converter by calling it's * nsIStreamListener::OnDataAvailable() method. It will then * convert that data from type X to your desired output type and * return converted data to you via the nsIStreamListener you passed * in by calling its OnDataAvailable() method.
  4. *
*

* * STREAM CONVERTER SUPPLIERS * * Registering a stream converter: * Stream converter registration is a two step process. First of all the stream * converter implementation must register itself with the component manager using * a contractid in the format below. Second, the stream converter must add the contractid * to the registry. * * Stream converter contractid format (the stream converter root key is defined in this * file): * *

Software/Netscape/streamconv/?from=FROM_MIME_TYPE&to=TO_MIME_TYPE
* * @author Jud Valeski * @see nsIStreamConverterService */ class NS_NO_VTABLE nsIStreamConverter : public nsIStreamListener { public: NS_DEFINE_STATIC_IID_ACCESSOR(NS_ISTREAMCONVERTER_IID) /** * SYNCRONOUS VERSION * Converts a stream of one type, to a stream of another type. * * Use this method when you have a stream you want to convert. * * @param aFromStream The stream representing the original/raw data. * @param aFromType The MIME type of aFromStream. * @param aToType The MIME type of the returned stream. * @param aCtxt Either an opaque context, or a converter specific context * (implementation specific). * @return The converted stream. NOTE: The returned stream may not * already be converted. An efficient stream converter * implementation will converter data on demand rather than * buffering the converted data until it is used. */ /* nsIInputStream Convert (in nsIInputStream aFromStream, in wstring aFromType, in wstring aToType, in nsISupports aCtxt); */ NS_IMETHOD Convert(nsIInputStream *aFromStream, const PRUnichar *aFromType, const PRUnichar *aToType, nsISupports *aCtxt, nsIInputStream **_retval) = 0; /** * ASYNCRONOUS VERSION * Converts data arriving via the converter's nsIStreamListener::OnDataAvailable() * method from one type to another, pushing the converted data out to the caller * via aListener::OnDataAvailable(). * * Use this method when you want to proxy (and convert) nsIStreamListener callbacks * asynchronously. * * @param aFromType The MIME type of the original/raw data. * @param aToType The MIME type of the converted data. * @param aListener The listener who receives the converted data. * @param aCtxt Either an opaque context, or a converter specific context * (implementation specific). */ /* void AsyncConvertData (in wstring aFromType, in wstring aToType, in nsIStreamListener aListener, in nsISupports aCtxt); */ NS_IMETHOD AsyncConvertData(const PRUnichar *aFromType, const PRUnichar *aToType, nsIStreamListener *aListener, nsISupports *aCtxt) = 0; }; /* Use this macro when declaring classes that implement this interface. */ #define NS_DECL_NSISTREAMCONVERTER \ NS_IMETHOD Convert(nsIInputStream *aFromStream, const PRUnichar *aFromType, const PRUnichar *aToType, nsISupports *aCtxt, nsIInputStream **_retval); \ NS_IMETHOD AsyncConvertData(const PRUnichar *aFromType, const PRUnichar *aToType, nsIStreamListener *aListener, nsISupports *aCtxt); /* Use this macro to declare functions that forward the behavior of this interface to another object. */ #define NS_FORWARD_NSISTREAMCONVERTER(_to) \ NS_IMETHOD Convert(nsIInputStream *aFromStream, const PRUnichar *aFromType, const PRUnichar *aToType, nsISupports *aCtxt, nsIInputStream **_retval) { return _to Convert(aFromStream, aFromType, aToType, aCtxt, _retval); } \ NS_IMETHOD AsyncConvertData(const PRUnichar *aFromType, const PRUnichar *aToType, nsIStreamListener *aListener, nsISupports *aCtxt) { return _to AsyncConvertData(aFromType, aToType, aListener, aCtxt); } /* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */ #define NS_FORWARD_SAFE_NSISTREAMCONVERTER(_to) \ NS_IMETHOD Convert(nsIInputStream *aFromStream, const PRUnichar *aFromType, const PRUnichar *aToType, nsISupports *aCtxt, nsIInputStream **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->Convert(aFromStream, aFromType, aToType, aCtxt, _retval); } \ NS_IMETHOD AsyncConvertData(const PRUnichar *aFromType, const PRUnichar *aToType, nsIStreamListener *aListener, nsISupports *aCtxt) { return !_to ? NS_ERROR_NULL_POINTER : _to->AsyncConvertData(aFromType, aToType, aListener, aCtxt); } #if 0 /* Use the code below as a template for the implementation class for this interface. */ /* Header file */ class nsStreamConverter : public nsIStreamConverter { public: NS_DECL_ISUPPORTS NS_DECL_NSISTREAMCONVERTER nsStreamConverter(); virtual ~nsStreamConverter(); /* additional members */ }; /* Implementation file */ NS_IMPL_ISUPPORTS1(nsStreamConverter, nsIStreamConverter) nsStreamConverter::nsStreamConverter() { NS_INIT_ISUPPORTS(); /* member initializers and constructor code */ } nsStreamConverter::~nsStreamConverter() { /* destructor code */ } /* nsIInputStream Convert (in nsIInputStream aFromStream, in wstring aFromType, in wstring aToType, in nsISupports aCtxt); */ NS_IMETHODIMP nsStreamConverter::Convert(nsIInputStream *aFromStream, const PRUnichar *aFromType, const PRUnichar *aToType, nsISupports *aCtxt, nsIInputStream **_retval) { return NS_ERROR_NOT_IMPLEMENTED; } /* void AsyncConvertData (in wstring aFromType, in wstring aToType, in nsIStreamListener aListener, in nsISupports aCtxt); */ NS_IMETHODIMP nsStreamConverter::AsyncConvertData(const PRUnichar *aFromType, const PRUnichar *aToType, nsIStreamListener *aListener, nsISupports *aCtxt) { return NS_ERROR_NOT_IMPLEMENTED; } /* End of implementation class template. */ #endif #define NS_ISTREAMCONVERTER_KEY "@mozilla.org/streamconv;1" #endif /* __gen_nsIStreamConverter_h__ */ .