/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 4 -*- * * The contents of this file are subject to the Netscape Public * License Version 1.1 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.mozilla.org/NPL/ * * Software distributed under the License is distributed on an "AS * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or * implied. See the License for the specific language governing * rights and limitations under the License. * * The Original Code is mozilla.org code. * * The Initial Developer of the Original Code is Netscape * Communications Corporation. Portions created by Netscape are * Copyright (C) 1998 Netscape Communications Corporation. All * Rights Reserved. * * Contributor(s): */ #include "nsIInputStream.idl" #include "nsIOutputStream.idl" #include "nsILocalFile.idl" [scriptable, uuid(e3d56a20-c7ec-11d3-8cda-0060b0fc14a3)] interface nsIFileInputStream : nsIInputStream { void init(in nsIFile file, in long ioFlags, in long perm); }; [scriptable, uuid(e6f68040-c7ec-11d3-8cda-0060b0fc14a3)] interface nsIFileOutputStream : nsIOutputStream { void init(in nsIFile file, in long ioFlags, in long perm); }; [scriptable, uuid(e9de5df0-c7ec-11d3-8cda-0060b0fc14a3)] interface nsISeekableStream : nsISupports { // correspond to PRSeekWhence values const long NS_SEEK_SET = 0; const long NS_SEEK_CUR = 1; const long NS_SEEK_END = 2; void seek(in long whence, in long offset); unsigned long tell(); }; [scriptable, uuid(616f5b48-da09-11d3-8cda-0060b0fc14a3)] interface nsIBufferedInputStream : nsIInputStream { void init(in nsIInputStream fillFromStream, in unsigned long bufferSize); }; [scriptable, uuid(6476378a-da09-11d3-8cda-0060b0fc14a3)] interface nsIBufferedOutputStream : nsIOutputStream { void init(in nsIOutputStream sinkToStream, in unsigned long bufferSize); }; %{C++ //////////////////////////////////////////////////////////////////////////////// #define NS_LOCALFILEINPUTSTREAM_CLASSNAME "Local File Input Stream" #define NS_LOCALFILEINPUTSTREAM_CONTRACTID "@mozilla.org/network/file-input-stream;1" #define NS_LOCALFILEINPUTSTREAM_CID \ { /* be9a53ae-c7e9-11d3-8cda-0060b0fc14a3 */ \ 0xbe9a53ae, \ 0xc7e9, \ 0x11d3, \ {0x8c, 0xda, 0x00, 0x60, 0xb0, 0xfc, 0x14, 0xa3} \ } #define NS_LOCALFILEOUTPUTSTREAM_CLASSNAME "Local File Output Stream" #define NS_LOCALFILEOUTPUTSTREAM_CONTRACTID "@mozilla.org/network/file-output-stream;1" #define NS_LOCALFILEOUTPUTSTREAM_CID \ { /* c272fee0-c7e9-11d3-8cda-0060b0fc14a3 */ \ 0xc272fee0, \ 0xc7e9, \ 0x11d3, \ {0x8c, 0xda, 0x00, 0x60, 0xb0, 0xfc, 0x14, 0xa3} \ } //////////////////////////////////////////////////////////////////////////////// #define NS_BUFFEREDINPUTSTREAM_CLASSNAME "Buffered Input Stream" #define NS_BUFFEREDINPUTSTREAM_CONTRACTID "@mozilla.org/network/buffered-input-stream;1" #define NS_BUFFEREDINPUTSTREAM_CID \ { /* 9226888e-da08-11d3-8cda-0060b0fc14a3 */ \ 0x9226888e, \ 0xda08, \ 0x11d3, \ {0x8c, 0xda, 0x00, 0x60, 0xb0, 0xfc, 0x14, 0xa3} \ } #define NS_BUFFEREDOUTPUTSTREAM_CLASSNAME "Buffered Output Stream" #define NS_BUFFEREDOUTPUTSTREAM_CONTRACTID "@mozilla.org/network/buffered-output-stream;1" #define NS_BUFFEREDOUTPUTSTREAM_CID \ { /* 9868b4ce-da08-11d3-8cda-0060b0fc14a3 */ \ 0x9868b4ce, \ 0xda08, \ 0x11d3, \ {0x8c, 0xda, 0x00, 0x60, 0xb0, 0xfc, 0x14, 0xa3} \ } //////////////////////////////////////////////////////////////////////////////// // move to nsNetUtil.h later... #include "nsILoadGroup.h" #include "nsIInterfaceRequestor.h" #include "nsCOMPtr.h" #include "nsIServiceManager.h" #include "nsIFileChannel.h" #include "nsILocalFile.h" #include "nsIInputStream.h" #include "nsIOutputStream.h" #include "prio.h" // for read/write flags, permissions, etc. // This will QI the file argument to an nsILocalFile in the Init method. inline nsresult NS_NewLocalFileChannel(nsIFileChannel **result, nsIFile* file, PRInt32 ioFlags = -1, PRInt32 perm = -1) { nsresult rv; nsCOMPtr channel; static NS_DEFINE_CID(kLocalFileChannelCID, NS_LOCALFILECHANNEL_CID); rv = nsComponentManager::CreateInstance(kLocalFileChannelCID, nsnull, NS_GET_IID(nsIFileChannel), getter_AddRefs(channel)); if (NS_FAILED(rv)) return rv; rv = channel->Init(file, ioFlags, perm); if (NS_FAILED(rv)) return rv; *result = channel; NS_ADDREF(*result); return NS_OK; } // This will QI the file argument to an nsILocalFile in the Init method. inline nsresult NS_NewLocalFileInputStream(nsIInputStream* *result, nsIFile* file, PRInt32 ioFlags = -1, PRInt32 perm = -1) { nsresult rv; nsCOMPtr in; static NS_DEFINE_CID(kLocalFileInputStreamCID, NS_LOCALFILEINPUTSTREAM_CID); rv = nsComponentManager::CreateInstance(kLocalFileInputStreamCID, nsnull, NS_GET_IID(nsIFileInputStream), getter_AddRefs(in)); if (NS_FAILED(rv)) return rv; rv = in->Init(file, ioFlags, perm); if (NS_FAILED(rv)) return rv; *result = in; NS_ADDREF(*result); return NS_OK; } // This will QI the file argument to an nsILocalFile in the Init method. inline nsresult NS_NewLocalFileOutputStream(nsIOutputStream* *result, nsIFile* file, PRInt32 ioFlags = -1, PRInt32 perm = -1) { nsresult rv; nsCOMPtr out; static NS_DEFINE_CID(kLocalFileOutputStreamCID, NS_LOCALFILEOUTPUTSTREAM_CID); rv = nsComponentManager::CreateInstance(kLocalFileOutputStreamCID, nsnull, NS_GET_IID(nsIFileOutputStream), getter_AddRefs(out)); if (NS_FAILED(rv)) return rv; rv = out->Init(file, ioFlags, perm); if (NS_FAILED(rv)) return rv; *result = out; NS_ADDREF(*result); return NS_OK; } //////////////////////////////////////////////////////////////////////////////// inline nsresult NS_NewBufferedInputStream(nsIInputStream* *result, nsIInputStream* str, PRUint32 bufferSize) { nsresult rv; nsCOMPtr in; static NS_DEFINE_CID(kBufferedInputStreamCID, NS_BUFFEREDINPUTSTREAM_CID); rv = nsComponentManager::CreateInstance(kBufferedInputStreamCID, nsnull, NS_GET_IID(nsIBufferedInputStream), getter_AddRefs(in)); if (NS_FAILED(rv)) return rv; rv = in->Init(str, bufferSize); if (NS_FAILED(rv)) return rv; *result = in; NS_ADDREF(*result); return NS_OK; } inline nsresult NS_NewBufferedOutputStream(nsIOutputStream* *result, nsIOutputStream* str, PRUint32 bufferSize) { nsresult rv; nsCOMPtr out; static NS_DEFINE_CID(kBufferedOutputStreamCID, NS_BUFFEREDOUTPUTSTREAM_CID); rv = nsComponentManager::CreateInstance(kBufferedOutputStreamCID, nsnull, NS_GET_IID(nsIBufferedOutputStream), getter_AddRefs(out)); if (NS_FAILED(rv)) return rv; rv = out->Init(str, bufferSize); if (NS_FAILED(rv)) return rv; *result = out; NS_ADDREF(*result); return NS_OK; } %}