Mercurial > projects > dwt-win
annotate dwt/internal/mozilla/nsEmbedString.d @ 327:b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
author | John Reimer <terminal.node@gmail.com> |
---|---|
date | Fri, 02 Jan 2009 17:45:10 -0800 |
parents | |
children |
rev | line source |
---|---|
327
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
1 module dwt.internal.mozilla.nsEmbedString; |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
2 |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
3 import Utf = tango.text.convert.Utf; |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
4 |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
5 import dwt.internal.mozilla.Common; |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
6 import dwt.internal.mozilla.nsStringAPI; |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
7 import XPCOM = dwt.internal.mozilla.XPCOM; |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
8 |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
9 scope class nsEmbedString |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
10 { |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
11 this(wchar[] s) |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
12 { |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
13 nsresult result; |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
14 result = NS_StringContainerInit2(&str, s.ptr, s.length, 0); |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
15 if (XPCOM.NS_FAILED(result)) |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
16 throw new Exception("Init string container fail"); |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
17 } |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
18 |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
19 this() |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
20 { |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
21 nsresult result; |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
22 result = NS_StringContainerInit(&str); |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
23 if (XPCOM.NS_FAILED(result)) |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
24 throw new Exception("Init string container fail"); |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
25 } |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
26 |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
27 nsAString* opCast() |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
28 { |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
29 return cast(nsAString*)&str; |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
30 } |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
31 |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
32 wchar[] toString16() |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
33 { |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
34 wchar* buffer = null; |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
35 PRBool terminated; |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
36 uint len = NS_StringGetData(cast(nsAString*)&str, &buffer, &terminated); |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
37 return buffer[0 .. len].dup; |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
38 } |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
39 |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
40 char[] toString() |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
41 { |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
42 return Utf.toString(this.toString16()); |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
43 } |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
44 ~this() |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
45 { |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
46 NS_StringContainerFinish(&str); |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
47 } |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
48 private: |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
49 nsStringContainer str; |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
50 } |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
51 |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
52 |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
53 scope class nsEmbedCString |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
54 { |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
55 this(char[] s) |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
56 { |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
57 nsresult result; |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
58 result = NS_CStringContainerInit2(&str, s.ptr, s.length, 0); |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
59 if (XPCOM.NS_FAILED(result)) |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
60 throw new Exception("Init string container fail"); |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
61 } |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
62 |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
63 this() |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
64 { |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
65 nsresult result; |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
66 result = NS_CStringContainerInit(&str); |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
67 if (XPCOM.NS_FAILED(result)) |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
68 throw new Exception("Init string container fail"); |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
69 } |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
70 |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
71 nsACString* opCast() |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
72 { |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
73 return cast(nsACString*)&str; |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
74 } |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
75 |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
76 char[] toString() |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
77 { |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
78 char* buffer = null; |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
79 PRBool terminated; |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
80 uint len = NS_CStringGetData(cast(nsACString*)&str, &buffer, &terminated); |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
81 return buffer[0 .. len].dup; |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
82 } |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
83 |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
84 ~this() |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
85 { |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
86 NS_CStringContainerFinish(&str); |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
87 } |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
88 private: |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
89 nsCStringContainer str; |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
90 } |
b0d7eb5bd76c
Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win
John Reimer <terminal.node@gmail.com>
parents:
diff
changeset
|
91 |