Mercurial > projects > dwt-mac
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 } |