%module li_cwstring %include "cwstring.i" #ifndef SWIG_CWSTRING_UNIMPL %cwstring_input_binary(wchar_t *str_in, int n); %cwstring_bounded_output(wchar_t *out1, 512); %cwstring_chunk_output(wchar_t *out2, 64); %cwstring_bounded_mutable(wchar_t *out3, 512); %cwstring_mutable(wchar_t *out4, 32); %cwstring_output_maxsize(wchar_t *out5, int max); %cwstring_output_withsize(wchar_t *out6, int *size); #ifdef __cplusplus %cwstring_output_allocate(wchar_t **out7, delete [] *$1); %cwstring_output_allocate_size(wchar_t **out8, int *size, delete [] *$1); #else %cwstring_output_allocate(wchar_t **out7, free(*$1)); %cwstring_output_allocate_size(wchar_t **out8, int *size, free(*$1)); #endif %inline %{ int count(wchar_t *str_in, int n, wchar_t c) { int r = 0; while (n > 0) { if (*str_in == c) { r++; } str_in++; --n; } return r; } void test1(wchar_t *out1) { wcscpy(out1,L"Hello World"); } void test2(wchar_t *out2) { int i; for (i = 0; i < 64; i++) { *out2 = (wchar_t) i + 32; out2++; } } void test3(wchar_t *out3) { wcscat(out3,L"-suffix"); } void test4(wchar_t *out4) { wcscat(out4,L"-suffix"); } void test5(wchar_t *out5, int max) { int i; for (i = 0; i < max; i++) { out5[i] = 'x'; } out5[max]='\0'; } void test6(wchar_t *out6, int *size) { int i; for (i = 0; i < (*size/2); i++) { out6[i] = 'x'; } *size = (*size/2); } void test7(wchar_t **out7) { #ifdef __cplusplus *out7 = new wchar_t[64]; #else *out7 = malloc(64*sizeof(wchar_t)); #endif (*out7)[0] = 0; wcscat(*out7,L"Hello world!"); } void test8(wchar_t **out8, int *size) { int i; #ifdef __cplusplus *out8 = new wchar_t[64]; #else *out8 = malloc(64*sizeof(wchar_t)); #endif for (i = 0; i < 64; i++) { (*out8)[i] = (wchar_t) i + 32; } *size = 64; } %} #endif