Mercurial > projects > dwt-mac
diff dwt/internal/mozilla/nsISupports.d @ 125:5583f8eeee6c
Synced mozilla with dwt-linux
author | Jacob Carlborg <doob@me.com> |
---|---|
date | Fri, 16 Jan 2009 12:49:08 +0100 |
parents | d8635bb48c7c |
children | 535243e6d16a |
line wrap: on
line diff
--- a/dwt/internal/mozilla/nsISupports.d Fri Jan 16 12:19:08 2009 +0100 +++ b/dwt/internal/mozilla/nsISupports.d Fri Jan 16 12:49:08 2009 +0100 @@ -1,63 +1,30 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1 - * - * The contents of this file are subject to the Mozilla 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/MPL/ - * - * 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 Communicator client code, released March 31, 1998. - * - * The Initial Developer of the Original Code is - * Netscape Communications Corporation. - * Portions created by Netscape are Copyright (C) 1998-1999 - * Netscape Communications Corporation. All Rights Reserved. - * - * Contributor(s): - * - * IBM - * - Binding to permit interfacing between Mozilla and DWT - * - Copyright (C) 2003, 2005 IBM Corp. All Rights Reserved. - * - * ***** END LICENSE BLOCK ***** */ module dwt.internal.mozilla.nsISupports; -import dwt.dwthelper.utils; +import dwt.internal.mozilla.Common; +import dwt.internal.mozilla.nsID; -public class nsISupports { - - static final int LAST_METHOD_ID = 2; +const char[] NS_ISUPPORTS_IID_STR = "00000000-0000-0000-c000-000000000046"; - public static final String NS_ISUPPORTS_IID_STR = - "00000000-0000-0000-c000-000000000046"; +const nsIID NS_ISUPPORTS_IID= + { 0x00000000, 0x0000, 0x0000, + [ 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46 ] }; - public static final nsID NS_ISUPPORTS_IID = - new nsID(NS_ISUPPORTS_IID_STR); - - int /*long*/ address; +interface IUnknown +{ + static const char[] IID_STR = NS_ISUPPORTS_IID_STR; + static const nsIID IID = NS_ISUPPORTS_IID; - public nsISupports(int /*long*/ address) { - this.address = address; - } +extern(System): + nsresult QueryInterface( nsIID* uuid, void **result); - public int /*long*/ getAddress() { - return this.address; - } + nsrefcnt AddRef(); + nsrefcnt Release(); +} - public int QueryInterface(nsID uuid, int /*long*/[] result) { - return XPCOM.VtblCall(0, getAddress(), uuid, result); - } +// WHY WE USE COM's IUnknown for XPCOM: +// +// The IUnknown interface is special-cased in D and is specifically designed to be +// compatible with MS COM. XPCOM's nsISupports interface is the exact equivalent +// of IUnknown so we alias it here to take advantage of D's COM support. -JJR - public int AddRef() { - return XPCOM.VtblCall(1, getAddress()); - } - - public int Release() { - return XPCOM.VtblCall(2, getAddress()); - } -} +alias IUnknown nsISupports; \ No newline at end of file