git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@8327 626c5289-ae23-0410-ae9c-e8d60b6d4f22
76 lines
2.1 KiB
OpenEdge ABL
76 lines
2.1 KiB
OpenEdge ABL
/* File : example.i */
|
|
%module example
|
|
%{
|
|
/* Put headers and other declarations here */
|
|
#include "zlib.h"
|
|
%}
|
|
|
|
%include typemaps.i
|
|
|
|
%rename(VERSION) ZLIB_VERSION;
|
|
%rename(z_error) zError;
|
|
%apply char * { Bytef * };
|
|
|
|
/* Allow the sourceLen to be automatically filled in from the length
|
|
of the 'source' string */
|
|
%typemap(in) (const Bytef *source, uLong sourceLen)
|
|
%{ if (!C_swig_is_string ($input)) {
|
|
swig_barf (SWIG_BARF1_BAD_ARGUMENT_TYPE, "Argument $input is not a string");
|
|
}
|
|
$2 = (uLong) C_header_size ($input);
|
|
$1 = C_c_string ($input);
|
|
%}
|
|
|
|
/* Allocate space the size of which is determined by the Scheme
|
|
integer argument, and make a temporary integer so we can set
|
|
destLen. */
|
|
%typemap(in) (Bytef *dest, uLongf *destLen) (uLong len)
|
|
%{ if (!C_swig_is_fixnum ($input)) {
|
|
swig_barf (SWIG_BARF1_BAD_ARGUMENT_TYPE, "Argument $input is not a integer");
|
|
}
|
|
len = (uLong) C_unfix ($input);
|
|
$2 = &len;
|
|
$1 = (char *) malloc (*$2);
|
|
%}
|
|
|
|
/* Return the mutated string as a new object. */
|
|
%typemap(argout) (Bytef *dest, uLongf *destLen)
|
|
(C_word *scmstr)
|
|
%{ scmstr = C_alloc (C_SIZEOF_STRING (*$2));
|
|
SWIG_APPEND_VALUE(C_string (&scmstr, *$2, $1));
|
|
free ($1);
|
|
%}
|
|
|
|
%include "zconf.h"
|
|
%include "zlib.h"
|
|
|
|
/* Ignore destLen as an input argument, and make a temporary integer so
|
|
we can set destLen. */
|
|
%typemap(numinputs=0) uLongf *destLen (uLong len)
|
|
"$1 = &len;";
|
|
|
|
/* Return a sized string as a new object. */
|
|
%typemap(argout)
|
|
(void *outstr, uLongf *destLen) (C_word *scmstr)
|
|
%{ scmstr = C_alloc (C_SIZEOF_STRING (*$2));
|
|
SWIG_APPEND_VALUE(C_string (&scmstr, *$2, $1));
|
|
%}
|
|
|
|
%inline %{
|
|
/* %inline blocks are seen by SWIG and are inserted into the header
|
|
portion of example_wrap.c, so that they are also seen by the C
|
|
compiler. */
|
|
int deflate_init(z_streamp strm, int level) {
|
|
return deflateInit(strm,level); /* call macro */
|
|
}
|
|
int inflate_init(z_streamp strm) {
|
|
return inflateInit(strm); /* call macro */
|
|
}
|
|
void* z_stream_save_next_out(z_streamp strm) {
|
|
return (void*) strm->next_out;
|
|
}
|
|
void z_stream_get_next_chunk(z_streamp strm, void *outstr, uLongf *destLen) {
|
|
*destLen = strm->next_out - (Bytef*)outstr;
|
|
}
|
|
%}
|
|
|