diff d2/qtd/String.d @ 356:12cec2d14e1c

a better name for qtd.Str
author Max Samukha <maxter@spambox.com>
date Tue, 25 May 2010 20:14:04 +0300
parents d2/qtd/Str.d@31520b2c0b3c
children 9784459f0750
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/d2/qtd/String.d	Tue May 25 20:14:04 2010 +0300
@@ -0,0 +1,76 @@
+/**
+ *
+ *  Copyright: Copyright QtD Team, 2008-2009
+ *  License: <a href="http://www.boost.org/LICENSE_1_0.txt>Boost License 1.0</a>
+ *
+ *  Copyright QtD Team, 2008-2009
+ *  Distributed under the Boost Software License, Version 1.0.
+ *  (See accompanying file boost-license-1.0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+module qtd.String;
+
+import core.stdc.string;
+import std.utf : toUTF8;
+
+alias immutable(char)* stringz;
+alias const(char)* cstringz;
+
+/**
+ */
+static char** toStringzArray(string[] args)
+{
+    if ( args is null )
+    {
+        return null;
+    }
+    char** argv = (new char*[args.length]).ptr;
+    int argc = 0;
+    foreach (string p; args)
+    {
+        argv[argc++] = cast(char*)(p.dup~'\0');
+    }
+    argv[argc] = null;
+
+    return argv;
+}
+
+/**
+ */
+bool isDigit(char s)
+{
+    return (s >= '0' && s <= '9');
+}
+
+/**
+ */
+bool isOctalChar(char s)
+{
+    return (s >= '0' && s <= '7');
+}
+
+/**
+ */
+bool isHexChar(char s)
+{
+    return ((s >= 'a' && s <= 'f')
+            || (s >= 'A' && s <= 'F')
+            || (s >= '0' && s <= '9')
+       );
+}
+
+/**
+ */
+string fromStringz(const (char) *s)
+{
+    return s ? s[0 .. strlen(s)].idup : cast(string)null;
+}
+
+extern(C) void qtd_toUtf8(wchar* arr, uint size, string* str)
+{
+    *str = toUTF8(arr[0..size]);
+}
+
+
+