Hi, Does anybody have example code that uses the ZLib bindings? I tried to implement the example described at http://zlib.net/zlib_how.html for inflation, but compilation failed with errors from gcc about STATUS_OK etc. symbols not being found. The following patch helped with that for some reason. Also, I don't understand how Vala can handle memory for the next_in and next_out pointers when the inflate call is changing those pointers under its nose. Wouldn't it be more realistic not to wrap them as an array? I attached test code that works with this VAPI change (to be compiled with -X -lz). Any way to make it work without it? thanks Philipp diff --git a/vapi/zlib.vapi b/vapi/zlib.vapi index b615f6f..14cc973 100644 --- a/vapi/zlib.vapi +++ b/vapi/zlib.vapi @@ -49,16 +49,24 @@ namespace ZLib { public const int BLOCK; } - [CCode (cprefix = "Z_")] namespace Status { + [CCode (cname = "Z_OK")] public const int OK; + [CCode (cname = "Z_STREAM_END")] public const int STREAM_END; + [CCode (cname = "Z_NEED_DICT")] public const int NEED_DICT; + [CCode (cname = "Z_ERRNO")] public const int ERRNO; + [CCode (cname = "Z_STREAM_ERROR")] public const int STREAM_ERROR; + [CCode (cname = "Z_DATA_ERROR")] public const int DATA_ERROR; + [CCode (cname = "Z_MEM_ERROR")] public const int MEM_ERROR; + [CCode (cname = "Z_BUF_ERROR")] public const int BUF_ERROR; + [CCode (cname = "Z_VERSION_ERROR")] public const int VERSION_ERROR; } @@ -98,12 +106,12 @@ namespace ZLib { [CCode (cname = "z_stream", destroy_function = "deflateEnd")] public struct Stream { - [CCode (array_length_cname = "avail_in", array_length_type = "guint")] - public uchar[] next_in; + public uchar* next_in; + public uint avail_in; public ulong total_in; - [CCode (array_length_cname = "avail_out", array_length_type = "guint")] - public uchar[] next_out; + public uchar* next_out; + public uint avail_out; public ulong total_out; public string? msg;
Attachment:
zlibtest.vala
Description: Text Data