comparison 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
comparison
equal deleted inserted replaced
124:540fa4e9974a 125:5583f8eeee6c
1 /* ***** BEGIN LICENSE BLOCK *****
2 * Version: MPL 1.1
3 *
4 * The contents of this file are subject to the Mozilla Public License Version
5 * 1.1 (the "License"); you may not use this file except in compliance with
6 * the License. You may obtain a copy of the License at
7 * http://www.mozilla.org/MPL/
8 *
9 * Software distributed under the License is distributed on an "AS IS" basis,
10 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
11 * for the specific language governing rights and limitations under the
12 * License.
13 *
14 * The Original Code is Mozilla Communicator client code, released March 31, 1998.
15 *
16 * The Initial Developer of the Original Code is
17 * Netscape Communications Corporation.
18 * Portions created by Netscape are Copyright (C) 1998-1999
19 * Netscape Communications Corporation. All Rights Reserved.
20 *
21 * Contributor(s):
22 *
23 * IBM
24 * - Binding to permit interfacing between Mozilla and DWT
25 * - Copyright (C) 2003, 2005 IBM Corp. All Rights Reserved.
26 *
27 * ***** END LICENSE BLOCK ***** */
28 module dwt.internal.mozilla.nsISupports; 1 module dwt.internal.mozilla.nsISupports;
29 2
30 import dwt.dwthelper.utils; 3 import dwt.internal.mozilla.Common;
4 import dwt.internal.mozilla.nsID;
31 5
32 public class nsISupports { 6 const char[] NS_ISUPPORTS_IID_STR = "00000000-0000-0000-c000-000000000046";
33 7
34 static final int LAST_METHOD_ID = 2; 8 const nsIID NS_ISUPPORTS_IID=
9 { 0x00000000, 0x0000, 0x0000,
10 [ 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46 ] };
35 11
36 public static final String NS_ISUPPORTS_IID_STR = 12 interface IUnknown
37 "00000000-0000-0000-c000-000000000046"; 13 {
14 static const char[] IID_STR = NS_ISUPPORTS_IID_STR;
15 static const nsIID IID = NS_ISUPPORTS_IID;
38 16
39 public static final nsID NS_ISUPPORTS_IID = 17 extern(System):
40 new nsID(NS_ISUPPORTS_IID_STR); 18 nsresult QueryInterface( nsIID* uuid, void **result);
41 19
42 int /*long*/ address; 20 nsrefcnt AddRef();
21 nsrefcnt Release();
22 }
43 23
44 public nsISupports(int /*long*/ address) { 24 // WHY WE USE COM's IUnknown for XPCOM:
45 this.address = address; 25 //
46 } 26 // The IUnknown interface is special-cased in D and is specifically designed to be
27 // compatible with MS COM. XPCOM's nsISupports interface is the exact equivalent
28 // of IUnknown so we alias it here to take advantage of D's COM support. -JJR
47 29
48 public int /*long*/ getAddress() { 30 alias IUnknown nsISupports;
49 return this.address;
50 }
51
52 public int QueryInterface(nsID uuid, int /*long*/[] result) {
53 return XPCOM.VtblCall(0, getAddress(), uuid, result);
54 }
55
56 public int AddRef() {
57 return XPCOM.VtblCall(1, getAddress());
58 }
59
60 public int Release() {
61 return XPCOM.VtblCall(2, getAddress());
62 }
63 }