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;