JavaZipInflater.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Sun, 26 Apr 2015 21:07:30 +0100
changeset 3442 e59716e00703
parent 3324 a58245c0e83a
child 3738 8cb7eab9c49f
permissions -rw-r--r--
Oops, fix for commit 48320b2d4: Use first element of binding to read bound value For workspace variables it does not matter much as both values are valueholders, however in inspector and for debugger, binding contains block with fixed number of arguments.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3175
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"
3324
a58245c0e83a Updated copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3175
diff changeset
     2
 COPYRIGHT (c) 1996-2015 by Claus Gittinger
3175
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
 New code and modifications done at SWING Research Group [1]:
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
3324
a58245c0e83a Updated copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3175
diff changeset
     6
 COPYRIGHT (c) 2010-2015 by Jan Vrany, Jan Kurs and Marcel Hlopko
3175
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
                            SWING Research Group, Czech Technical University in Prague
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
 This software is furnished under a license and may be used
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
 only in accordance with the terms of that license and with the
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
 inclusion of the above copyright notice.   This software may not
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
 be provided or otherwise made available to, or used by, any
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
 other person.  No title to or ownership of the software is
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
 hereby transferred.
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
 [1] Code written at SWING Research Group contains a signature
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
     of one of the above copright owners. For exact set of such code,
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
     see the differences between this version and version stx:libjava
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
     as of 1.9.2010
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
"
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
"{ Package: 'stx:libjava' }"
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
Object subclass:#JavaZipInflater
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
	instanceVariableNames:'vm z_stream'
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
	classVariableNames:''
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
	poolDictionaries:''
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
	category:'Languages-Java-Support-Native'
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
!
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
!JavaZipInflater primitiveDefinitions!
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
%{
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
#include <stdio.h>
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
#include <stdlib.h>
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
#include <errno.h>
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
#include <string.h>
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
#include "zlib.h"
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
#define MIN2(x, y)  ((x) < (y) ? (x) : (y))
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
#define DEF_MEM_LEVEL 8
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
#define __zStreamVal(x) ((z_stream *)(__ExternalBytesInstPtr(x)->e_address))
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
%}
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
! !
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
!JavaZipInflater class methodsFor:'documentation'!
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
copyright
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
"
3324
a58245c0e83a Updated copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3175
diff changeset
    51
 COPYRIGHT (c) 1996-2015 by Claus Gittinger
3175
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
 New code and modifications done at SWING Research Group [1]:
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
3324
a58245c0e83a Updated copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3175
diff changeset
    55
 COPYRIGHT (c) 2010-2015 by Jan Vrany, Jan Kurs and Marcel Hlopko
3175
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
                            SWING Research Group, Czech Technical University in Prague
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
 This software is furnished under a license and may be used
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
 only in accordance with the terms of that license and with the
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
 inclusion of the above copyright notice.   This software may not
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
 be provided or otherwise made available to, or used by, any
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
 other person.  No title to or ownership of the software is
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
 hereby transferred.
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
 [1] Code written at SWING Research Group contains a signature
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
     of one of the above copright owners. For exact set of such code,
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
     see the differences between this version and version stx:libjava
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
     as of 1.9.2010
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
"
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
! !
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
!JavaZipInflater methodsFor:'* As yet uncategorized *'!
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
> aSmallInteger
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
    ^z_stream address > 0
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
    "Created: / 23-07-2012 / 21:06:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
! !
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
!JavaZipInflater methodsFor:'accessing'!
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
vm: javaVM
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
    vm := javaVM.
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
    "Created: / 30-08-2011 / 09:05:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
! !
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
!JavaZipInflater methodsFor:'inflater methods'!
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
adler
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    94
%{
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    95
	RETURN ( __MKEXTERNALADDRESS ( __zStreamVal(__INST(z_stream))->adler ) );
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    96
%}
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    97
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    98
"
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    99
OpenJDK 7 Implementation:
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   100
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   101
JNIEXPORT jint JNICALL
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   102
Java_java_util_zip_Inflater_getAdler(JNIEnv *env, jclass cls, jlong addr)
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   103
{
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   104
    return ((z_stream *)jlong_to_ptr(addr))->adler;
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   105
}
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   106
"
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   107
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   108
    "Created: / 31-08-2011 / 09:30:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   109
!
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   110
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   111
bytesRead
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   112
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   113
%{
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   114
	RETURN ( __MKSMALLINT( __zStreamVal(__INST(z_stream))->total_in));
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   115
%}
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   116
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   117
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   118
"
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   119
OpenJDK 7 Implementation:
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   120
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   121
JNIEXPORT jlong JNICALL
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   122
Java_java_util_zip_Inflater_getBytesRead(JNIEnv *env, jclass cls, jlong addr)
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   123
{
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   124
    return ((z_stream *)jlong_to_ptr(addr))->total_in;
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   125
}
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   126
"
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   127
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   128
    "Created: / 31-08-2011 / 09:30:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   129
!
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   130
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   131
bytesWritten
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   132
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   133
%{
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   134
	RETURN ( __MKSMALLINT( __zStreamVal(__INST(z_stream))->total_out));
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   135
%}
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   136
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   137
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   138
"
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   139
OpenJDK 7 Implementation:
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   140
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   141
JNIEXPORT jlong JNICALL
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   142
Java_java_util_zip_Inflater_getBytesWritten(JNIEnv *env, jclass cls, jlong addr)
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   143
{
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   144
    return ((z_stream *)jlong_to_ptr(addr))->total_out;
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   145
}
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   146
"
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   147
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   148
    "Created: / 31-08-2011 / 09:30:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   149
!
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   150
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   151
end
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   152
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   153
	| ok |
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   154
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   155
	ok := true.
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   156
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   157
%{
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   158
    if (inflateEnd(__zStreamVal(__INST(z_stream))) == Z_STREAM_ERROR) {
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   159
		ok = false;
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   160
	}
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   161
%}.
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   162
	z_stream free.
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   163
	ok ifFalse:[
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   164
	vm internalError: 'Cannot call inflateEnd()'.
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   165
	].
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   166
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   167
"
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   168
OpenJDK 7 Implementation:
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   169
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   170
JNIEXPORT void JNICALL
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   171
Java_java_util_zip_Inflater_end(JNIEnv *env, jclass cls, jlong addr)
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   172
{
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   173
    if (inflateEnd(jlong_to_ptr(addr)) == Z_STREAM_ERROR) {
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   174
	JNU_ThrowInternalError(env, 0);
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   175
    } else {
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   176
	free(jlong_to_ptr(addr));
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   177
    }
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   178
}
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   179
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   180
"
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   181
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   182
    "Created: / 30-08-2011 / 20:50:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   183
!
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   184
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   185
inflate:"byte[]" out_buf offset: "int" out_off length: "int" out_len inflater: jinflater
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   186
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   187
	| in_buf in_off in_len finished needDict errorType errorMsg ret |
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   188
	in_buf := jinflater instVarNamed:#buf.
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   189
	in_off := jinflater instVarNamed:#off.
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   190
	in_len := jinflater instVarNamed:#len.
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   191
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   192
	finished := needDict := 0.
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   193
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   194
%{
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   195
#define strm (__zStreamVal(__INST(z_stream)))
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   196
	int code, consumed;
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   197
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   198
	strm->next_in = (Bytef *) (__ByteArrayInstPtr(in_buf)->ba_element + __intVal(in_off));
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   199
	strm->next_out = (Bytef *) (__ByteArrayInstPtr(out_buf)->ba_element + __intVal(out_off));
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   200
	strm->avail_in = __intVal(in_len);
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   201
	strm->avail_out = __intVal(out_len);
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   202
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   203
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   204
	code = inflate(strm, Z_PARTIAL_FLUSH);
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   205
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   206
	switch (code) {
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   207
		case Z_STREAM_END:
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   208
			finished = __MKSMALLINT(1);
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   209
			/* fall through */
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   210
		case Z_OK:
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   211
			consumed = __intVal(in_len) - strm->avail_in;
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   212
			in_off = __MKSMALLINT(__intVal(in_off) + consumed);
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   213
			in_len = __MKSMALLINT(__intVal(in_len) - consumed);
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   214
			ret = __MKSMALLINT(__intVal(out_len) - strm->avail_out);
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   215
			break;
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   216
		case Z_NEED_DICT:
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   217
			needDict = __MKSMALLINT(1);
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   218
			/* Might have consumed some input here! */
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   219
			consumed = __intVal(in_len) - strm->avail_in;
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   220
			in_off = __MKSMALLINT(__intVal(in_off) + consumed);
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   221
			in_len = __MKSMALLINT(__intVal(in_len) - consumed);
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   222
			ret = __MKSMALLINT(0);
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   223
			break;
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   224
		case Z_BUF_ERROR:
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   225
			ret = __MKSMALLINT(0);
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   226
			break;
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   227
		case Z_DATA_ERROR:
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   228
	    errorMsg = __MKSTRING(__zStreamVal(__INST(z_stream))->msg);
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   229
	    errorType = @symbol(DataFormatException);
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   230
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   231
			break;
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   232
		case Z_MEM_ERROR:
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   233
	    errorType = @symbol(OutOfMemoryError);
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   234
			break;
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   235
		default:
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   236
	    errorMsg = __MKSTRING(__zStreamVal(__INST(z_stream))->msg);
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   237
	    errorType = @symbol(InternalError);
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   238
			break;
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   239
    }
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   240
#undef strm
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   241
%}.
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   242
    errorType == #DataFormatException ifTrue:[
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   243
	vm throwDataFormatException: errorMsg.
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   244
	^0.
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   245
    ].
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   246
    errorType == #OutOfMemoryError ifTrue:[
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   247
	vm throwOutOfMemoryError.
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   248
	^0.
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   249
    ].
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   250
    errorType == #InternalError ifTrue:[
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   251
	vm internalError: errorMsg.
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   252
	^0.
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   253
    ].
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   254
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   255
	jinflater instVarNamed:#off put: in_off.
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   256
	jinflater instVarNamed:#len put: in_len.
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   257
	jinflater instVarNamed:#finished put: finished.
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   258
	jinflater instVarNamed:#needDict put: needDict.
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   259
	^ret
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   260
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   261
"
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   262
OpenJDK 7 Implementation
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   263
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   264
JNIEXPORT jint JNICALL
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   265
Java_java_util_zip_Inflater_inflateBytes(JNIEnv *env, jobject this, jlong addr,
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   266
					 jarray b, jint off, jint len)
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   267
{
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   268
    z_stream *strm = jlong_to_ptr(addr);
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   269
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   270
    jarray this_buf = (jarray)(*env)->GetObjectField(env, this, bufID);
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   271
    jint this_off = (*env)->GetIntField(env, this, offID);
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   272
    jint this_len = (*env)->GetIntField(env, this, lenID);
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   273
    jbyte *in_buf;
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   274
    jbyte *out_buf;
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   275
    int ret;
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   276
    /*
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   277
     * Avoid excess copying.
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   278
     *   zlib stream usually has a few bytes of overhead for header info
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   279
     *   (depends on the underlying data)
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   280
     *
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   281
     *   (a) 5 bytes per 16KB
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   282
     *   (b) 6 bytes for entire stream
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   283
     *   (c) 4 bytes for gzip header
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   284
     *   (d) 2 bytes for crc
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   285
     *
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   286
     * Use 20 bytes as the 'safe cutoff' number.
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   287
     */
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   288
    jint in_len = MIN2(this_len, len + 20);
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   289
    jint consumed;
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   290
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   291
    in_buf = (jbyte *) malloc(in_len);
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   292
    if (in_buf == 0) {
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   293
	JNU_ThrowOutOfMemoryError(env, 0);
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   294
	return 0;
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   295
    }
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   296
    (*env)->GetByteArrayRegion(env, this_buf, this_off, in_len, in_buf);
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   297
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   298
    out_buf = (jbyte *) malloc(len);
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   299
    if (out_buf == 0) {
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   300
	free(in_buf);
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   301
	JNU_ThrowOutOfMemoryError(env, 0);
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   302
	return 0;
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   303
    }
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   304
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   305
    strm->next_in  = (Bytef *) in_buf;
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   306
    strm->next_out = (Bytef *) out_buf;
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   307
    strm->avail_in  = in_len;
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   308
    strm->avail_out = len;
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   309
    ret = inflate(strm, Z_PARTIAL_FLUSH);
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   310
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   311
    if (ret == Z_STREAM_END || ret == Z_OK) {
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   312
	(*env)->SetByteArrayRegion(env, b, off, len - strm->avail_out, out_buf);
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   313
    }
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   314
    free(out_buf);
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   315
    free(in_buf);
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   316
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   317
    switch (ret) {
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   318
    case Z_STREAM_END:
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   319
	(*env)->SetBooleanField(env, this, finishedID, JNI_TRUE);
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   320
	/* fall through */
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   321
    case Z_OK:
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   322
	consumed = in_len - strm->avail_in;
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   323
	(*env)->SetIntField(env, this, offID, this_off + consumed);
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   324
	(*env)->SetIntField(env, this, lenID, this_len - consumed);
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   325
	return len - strm->avail_out;
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   326
    case Z_NEED_DICT:
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   327
	(*env)->SetBooleanField(env, this, needDictID, JNI_TRUE);
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   328
	/* Might have consumed some input here!! */
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   329
	consumed = in_len - strm->avail_in;
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   330
	(*env)->SetIntField(env, this, offID, this_off + consumed);
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   331
	(*env)->SetIntField(env, this, lenID, this_len - consumed);
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   332
	return 0;
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   333
    case Z_BUF_ERROR:
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   334
	return 0;
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   335
    case Z_DATA_ERROR:
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   336
	ThrowDataFormatException(env, strm->msg);
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   337
	return 0;
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   338
    case Z_MEM_ERROR:
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   339
	JNU_ThrowOutOfMemoryError(env, 0);
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   340
	return 0;
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   341
    default:
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   342
	JNU_ThrowInternalError(env, strm->msg);
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   343
	return 0;
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   344
    }
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   345
}
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   346
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   347
"
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   348
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   349
    "Created: / 30-08-2011 / 09:31:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   350
!
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   351
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   352
init: nowrap
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   353
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   354
    | z_stream_size errorType errorMsg |
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   355
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   356
%{  z_stream_size = __MKSMALLINT(sizeof(z_stream)); %}.
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   357
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   358
    z_stream := ExternalBytes unprotectedNew: z_stream_size.
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   359
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   360
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   361
%{
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   362
    switch (inflateInit2(__zStreamVal(__INST(z_stream)), nowrap ? -MAX_WBITS : MAX_WBITS)) {
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   363
	case Z_OK:
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   364
	    break;
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   365
	case Z_MEM_ERROR:
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   366
	    errorType = @symbol(OutOfMemoryError);
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   367
	    break;
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   368
	default:
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   369
	    errorMsg = __MKSTRING(__zStreamVal(__INST(z_stream))->msg);
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   370
	    errorType = @symbol(InternalError);
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   371
	    break;
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   372
    }
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   373
%}.
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   374
    errorType isNil ifTrue:[
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   375
"/        self registerForFinalization.
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   376
	^self
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   377
    ].
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   378
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   379
    z_stream free.
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   380
    errorType == #OutOfMemoryError ifTrue:[
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   381
	vm throwOutOfMemoryError.
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   382
	^self.
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   383
    ].
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   384
    errorType == #InternalError ifTrue:[
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   385
	vm internalError: errorMsg.
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   386
	^self.
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   387
    ].
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   388
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   389
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   390
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   391
    "
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   392
OpenJDK 7 Implementation:
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   393
JNIEXPORT jlong JNICALL
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   394
Java_java_util_zip_Inflater_init(JNIEnv *env, jclass cls, jboolean nowrap)
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   395
{
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   396
    z_stream *strm = calloc(1, sizeof(z_stream));
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   397
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   398
    if (strm == 0) {
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   399
	JNU_ThrowOutOfMemoryError(env, 0);
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   400
	return jlong_zero;
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   401
    } else {
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   402
	char *msg;
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   403
	switch (inflateInit2(strm, nowrap ? -MAX_WBITS : MAX_WBITS)) {
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   404
	  case Z_OK:
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   405
	    return ptr_to_jlong(strm);
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   406
	  case Z_MEM_ERROR:
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   407
	    free(strm);
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   408
	    JNU_ThrowOutOfMemoryError(env, 0);
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   409
	    return jlong_zero;
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   410
	  default:
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   411
	    msg = strm->msg;
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   412
	    free(strm);
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   413
	    JNU_ThrowInternalError(env, msg);
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   414
	    return jlong_zero;
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   415
	}
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   416
    }
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   417
}
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   418
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   419
    "
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   420
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   421
    "Created: / 29-08-2011 / 17:22:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   422
    "Modified: / 25-10-2012 / 20:28:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   423
!
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   424
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   425
reset
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   426
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   427
%{
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   428
	if (inflateReset(__zStreamVal(__INST(z_stream))) == Z_OK) {
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   429
		RETURN ( self );
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   430
	}
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   431
%}.
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   432
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   433
	vm internalError: 'Cannot reset inflater'.
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   434
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   435
"
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   436
OpenJDK 7 Implementation:
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   437
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   438
JNIEXPORT void JNICALL
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   439
Java_java_util_zip_Inflater_reset(JNIEnv *env, jclass cls, jlong addr)
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   440
{
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   441
    if (inflateReset(jlong_to_ptr(addr)) !!= Z_OK) {
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   442
	JNU_ThrowInternalError(env, 0);
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   443
    }
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   444
}
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   445
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   446
"
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   447
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   448
    "Created: / 30-08-2011 / 12:45:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   449
! !
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   450
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   451
!JavaZipInflater methodsFor:'initialization & release'!
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   452
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   453
finalize
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   454
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   455
    (z_stream notNil and:[z_stream isValid]) ifTrue:[self end].
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   456
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   457
    "Created: / 20-07-2012 / 21:50:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   458
! !
87cedea6290e Got rid of JavaZipSupport. Inflater/Deflater made public.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   459