Author: mturk
Date: Sat Dec 12 09:05:07 2009
New Revision: 889901

URL: http://svn.apache.org/viewvc?rev=889901&view=rev
Log:
Add functions for msz to array conversion

Modified:
    commons/sandbox/runtime/trunk/src/main/native/include/acr_string.h
    commons/sandbox/runtime/trunk/src/main/native/shared/string.c

Modified: commons/sandbox/runtime/trunk/src/main/native/include/acr_string.h
URL: 
http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/include/acr_string.h?rev=889901&r1=889900&r2=889901&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/include/acr_string.h 
(original)
+++ commons/sandbox/runtime/trunk/src/main/native/include/acr_string.h Sat Dec 
12 09:05:07 2009
@@ -388,6 +388,26 @@
 ACR_DECLARE(jobjectArray) ACR_MszStrToStringArrayW(JNIEnv *env, const wchar_t 
*s);
 
 /**
+ * Convert the multipart string to pointer array.
+ * @param env Current JNI environment.
+ * @param str String to use.
+ * @return char array. Use ACR_Free when no longer needed.
+ * @note Returned array is always NULL terminated.
+ */
+ACR_DECLARE(char **) ACR_MszStrToArrayA(JNIEnv *env,
+                                        const char *str);
+
+/**
+ * Convert the multipart string to pointer array.
+ * @param env Current JNI environment.
+ * @param str String to use.
+ * @return wide char array. Use ACR_Free when no longer needed.
+ * @note Returned array is always NULL terminated.
+ */
+ACR_DECLARE(wchar_t **) ACR_MszStrToArrayW(JNIEnv *env,
+                                           const wchar_t *str);
+
+/**
  * Convert all tab characters in a string to single space character.
  * Tabs inside quotes are not converted.
  * @param str String to use

Modified: commons/sandbox/runtime/trunk/src/main/native/shared/string.c
URL: 
http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/shared/string.c?rev=889901&r1=889900&r2=889901&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/shared/string.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/shared/string.c Sat Dec 12 
09:05:07 2009
@@ -1882,6 +1882,54 @@
     return arr;
 }
 
+ACR_DECLARE(char **) ACR_MszStrToArrayA(JNIEnv *_E,
+                                        const char *str)
+{
+    char **arr = NULL;
+    jsize n = 0;
+    const char *p;
+
+    if (str) {
+        if ((n = (jsize)ACR_MszStrCountA(str)) > 0)
+            arr = ACR_Malloc(_E, THROW_FMARK, (n + 1) * sizeof(char *));
+    }
+    if (!arr)
+        return NULL;
+
+    n = 0;
+    for (p = str; p && *p; p++) {
+        arr[n++] = (char *)p;
+        while (*p)
+            p++;
+    }
+    arr[n] = NULL;
+    return arr;
+}
+
+ACR_DECLARE(wchar_t **) ACR_MszStrToArrayW(JNIEnv *_E,
+                                           const wchar_t *str)
+{
+    wchar_t **arr = NULL;
+    jsize n = 0;
+    const wchar_t *p;
+
+    if (str) {
+        if ((n = (jsize)ACR_MszStrCountW(str)) > 0)
+            arr = ACR_Malloc(_E, THROW_FMARK, (n + 1) * sizeof(wchar_t *));
+    }
+    if (!arr)
+        return NULL;
+
+    n = 0;
+    for (p = str; p && *p; p++) {
+        arr[n++] = (wchar_t *)p;
+        while (*p)
+            p++;
+    }
+    arr[n] = NULL;
+    return arr;
+}
+
 ACR_DECLARE(char *) ACR_strqtab2ss(char *str)
 {
     char *ptr = str;


Reply via email to