5 extern int gcd(int x, int y);
6 extern int gcdmain(int argc, char *argv[]);
7 extern int count(char *bytes, int len, char c);
8 extern void capitalize (char *str, int len);
9 extern void circle (double cx, double cy);
10 extern int squareCubed (int n, int *OUTPUT);
16 extern int gcd(int x, int y);
18 %typemap(arginit) (int argc, char *argv[]) "$2 = 0;";
20 %typemap(in) (int argc, char *argv[]) {
26 SWIG_exception(SWIG_ValueError,"$input is not an array.");
28 if (SvTYPE(SvRV($input)) != SVt_PVAV) {
29 SWIG_exception(SWIG_ValueError,"$input is not an array.");
31 tempav = (AV*)SvRV($input);
34 $2 = (char **) malloc(($1+1)*sizeof(char *));
35 for (i = 0; i < $1; i++) {
36 tv = av_fetch(tempav, i, 0);
37 $2[i] = (char *) SvPV(*tv,PL_na);
42 %typemap(freearg) (int argc, char *argv[]) {
46 extern int gcdmain(int argc, char *argv[]);
48 %typemap(in) (char *bytes, int len) {
50 $1 = (char *) SvPV($input, temp);
54 extern int count(char *bytes, int len, char c);
57 /* This example shows how to wrap a function that mutates a string */
59 %typemap(in) (char *str, int len) {
62 temp = (char *) SvPV($input,templen);
64 $1 = (char *) malloc($2+1);
68 /* Return the mutated string as a new object. */
70 %typemap(argout) (char *str, int len) {
74 $result = sv_newmortal();
75 sv_setpvn((SV*)ST(argvi++),$1,$2);
79 extern void capitalize(char *str, int len);
81 /* A multi-valued constraint. Force two arguments to lie
82 inside the unit circle */
84 %typemap(check) (double cx, double cy) {
85 double a = $1*$1 + $2*$2;
87 SWIG_exception(SWIG_ValueError,"$1_name and $2_name must be in unit circle");
91 extern void circle(double cx, double cy);