swig/Examples/test-suite/li_cstring.i
Haoyu Bai 3d8ddfc442 Merged the Python 3.0 support branch. The merging progress is not so smooth, so hope this commit won't make anything broken.
This is the (incomplemete) log produced by svnmerge.py:

Merged revisions 10405-10409,10420-10422,10426,10438,10445,10451,10454-10465,10467,10473-10475,10485,10488-10489,10493-10495,10497,10509-10510,10513-10514,10517,10520,10525,10528-10529,10533-10535,10554-10557,10570,10573,10593,10614,10666-10669,10673,10678,10687,10690,10704-10706,10731,10744,10750-10752,10755,10759,10770,10775-10776,10813,10819 via svnmerge from 
https://swig.svn.sourceforge.net/svnroot/swig/branches/gsoc2008-bhy



git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@10834 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2008-09-11 17:18:07 +00:00

98 lines
1.7 KiB
OpenEdge ABL

%module li_cstring
%include "cstring.i"
#ifndef SWIG_CSTRING_UNIMPL
%cstring_input_binary(char *str_in, int n);
%cstring_bounded_output(char *out1, 512);
%cstring_chunk_output(char *out2, 64);
%cstring_bounded_mutable(char *out3, 512);
%cstring_mutable(char *out4, 32);
%cstring_output_maxsize(char *out5, int max);
%cstring_output_withsize(char *out6, int *size);
#ifdef __cplusplus
%cstring_output_allocate(char **out7, delete [] *$1);
%cstring_output_allocate_size(char **out8, int *size, delete [] *$1);
#else
%cstring_output_allocate(char **out7, free(*$1));
%cstring_output_allocate_size(char **out8, int *size, free(*$1));
#endif
%inline %{
int count(char *str_in, int n, char c) {
int r = 0;
while (n > 0) {
if (*str_in == c) {
r++;
}
str_in++;
--n;
}
return r;
}
void test1(char *out1) {
strcpy(out1,"Hello World");
}
void test2(char *out2) {
int i;
for (i = 0; i < 64; i++) {
*out2 = (char) i + 32;
out2++;
}
}
void test3(char *out3) {
strcat(out3,"-suffix");
}
void test4(char *out4) {
strcat(out4,"-suffix");
}
void test5(char *out5, int max) {
int i;
for (i = 0; i < max; i++) {
out5[i] = 'x';
}
out5[max]='\0';
}
void test6(char *out6, int *size) {
int i;
for (i = 0; i < (*size/2); i++) {
out6[i] = 'x';
}
*size = (*size/2);
}
void test7(char **out7) {
#ifdef __cplusplus
*out7 = new char[64];
#else
*out7 = malloc(64);
#endif
(*out7)[0] = 0;
strcat(*out7,"Hello world!");
}
void test8(char **out8, int *size) {
int i;
#ifdef __cplusplus
*out8 = new char[64];
#else
*out8 = malloc(64);
#endif
for (i = 0; i < 64; i++) {
(*out8)[i] = (char) i+32;
}
*size = 64;
}
%}
#endif