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