diff dwt/internal/mozilla/nsEmbedString.d @ 278:93409d9838c5

Commit more browser/xpcom updates, including still uncoverted source.
author John Reimer<terminal.node@gmail.com>
date Thu, 31 Jul 2008 19:17:51 -0700
parents
children 3f4a5c7d138f
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dwt/internal/mozilla/nsEmbedString.d	Thu Jul 31 19:17:51 2008 -0700
@@ -0,0 +1,99 @@
+/* ***** 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) 2004 IBM Corp.  All Rights Reserved.
+ *
+ * Port to the D programming language:
+ *     John Reimer <terminal.node@gmail.com>
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+module dwt.internal.mozilla.nsEmbedString;
+
+import dwt.dwthelper.utils;
+import dwt.internal.mozilla.nsStringAPI;
+
+public class nsEmbedString 
+{
+    int /*long*/ handle;
+        
+    /**************************************************************************
+
+    **************************************************************************/
+
+    public this() 
+    {
+        handle = XPCOM.nsEmbedString_new();
+    }
+    
+    /**************************************************************************
+
+    **************************************************************************/
+
+    public nsEmbedString(String string)
+    {
+        if (string !is null) 
+        {
+            char[] aString = new char[string.length() + 1];
+            string.getChars(0, string.length(), aString, 0);
+            handle = XPCOM.nsEmbedString_new(aString);
+        }   
+    }
+    
+    /**************************************************************************
+
+    **************************************************************************/
+
+    public int /*long*/ getAddress() 
+    {
+        return handle;
+    }   
+        
+    /**************************************************************************
+
+    **************************************************************************/
+
+    public String toString() 
+    {
+        if (handle is 0) 
+            return null;
+        int length = XPCOM.nsEmbedString_Length(handle);
+        int /*long*/ buffer = XPCOM.nsEmbedString_get(handle);
+        char[] dest = new char[length];
+        XPCOM.memmove(dest, buffer, length * 2);
+        return new String(dest);
+    }   
+        
+    /**************************************************************************
+
+    **************************************************************************/
+
+    public void dispose() 
+    {
+        if (handle is 0) 
+            return;            
+        XPCOM.nsEmbedString_delete(handle);
+        handle = 0;     
+    }   
+}
\ No newline at end of file