src/JavaZipSupport.st
author vranyj1
Fri, 20 Jul 2012 16:51:36 +0000
branchjk_new_structure
changeset 1536 8d5abf068003
parent 1155 d6f6d5fc0343
child 1537 0072327ccc71
permissions -rw-r--r--
- JavaZipSupport: added stub for Deflater
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
952
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
     1
"
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
     2
 COPYRIGHT (c) 1996-2011 by Claus Gittinger
1152
040cba55a7d2 Copyright fixes
vranyj1
parents: 963
diff changeset
     3
1155
vranyj1
parents: 1152
diff changeset
     4
 New code and modifications done at SWING Research Group [1]:
1152
040cba55a7d2 Copyright fixes
vranyj1
parents: 963
diff changeset
     5
952
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
     6
 COPYRIGHT (c) 2010-2011 by Jan Vrany, Jan Kurs and Marcel Hlopko
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
     7
                            SWING Research Group, Czech Technical University in Prague
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
     8
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
     9
 This software is furnished under a license and may be used
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    10
 only in accordance with the terms of that license and with the
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    11
 inclusion of the above copyright notice.   This software may not
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    12
 be provided or otherwise made available to, or used by, any
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    13
 other person.  No title to or ownership of the software is
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    14
 hereby transferred.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    15
1155
vranyj1
parents: 1152
diff changeset
    16
 [1] Code written at SWING Research Group contains a signature
vranyj1
parents: 1152
diff changeset
    17
     of one of the above copright owners. For exact set of such code,
vranyj1
parents: 1152
diff changeset
    18
     see the differences between this version and version stx:libjava
1152
040cba55a7d2 Copyright fixes
vranyj1
parents: 963
diff changeset
    19
     as of 1.9.2010
952
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    20
"
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    21
"{ Package: 'stx:libjava' }"
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    22
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    23
Object subclass:#JavaZipSupport
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    24
	instanceVariableNames:''
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    25
	classVariableNames:''
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    26
	poolDictionaries:''
1536
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
    27
	category:'Languages-Java-Support-Native'
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
    28
!
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
    29
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
    30
Object subclass:#Deflater
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
    31
	instanceVariableNames:'vm z_stream'
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
    32
	classVariableNames:''
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
    33
	poolDictionaries:''
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
    34
	privateIn:JavaZipSupport
952
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    35
!
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    36
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    37
Object subclass:#Inflater
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    38
	instanceVariableNames:'vm z_stream'
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    39
	classVariableNames:''
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    40
	poolDictionaries:''
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    41
	privateIn:JavaZipSupport
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    42
!
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    43
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    44
!JavaZipSupport primitiveDefinitions!
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    45
%{
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    46
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    47
#include <stdio.h>
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    48
#include <stdlib.h>
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    49
#include <errno.h>
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    50
#include <string.h>
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    51
#include "zlib.h"
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    52
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    53
#define MIN2(x, y)  ((x) < (y) ? (x) : (y))
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    54
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    55
#define __zStreamVal(x) ((z_stream *)(__ExternalBytesInstPtr(x)->e_address))
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    56
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    57
%}
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    58
! !
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    59
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    60
!JavaZipSupport class methodsFor:'documentation'!
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    61
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    62
copyright
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    63
"
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    64
 COPYRIGHT (c) 1996-2011 by Claus Gittinger
1152
040cba55a7d2 Copyright fixes
vranyj1
parents: 963
diff changeset
    65
1155
vranyj1
parents: 1152
diff changeset
    66
 New code and modifications done at SWING Research Group [1]:
1152
040cba55a7d2 Copyright fixes
vranyj1
parents: 963
diff changeset
    67
952
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    68
 COPYRIGHT (c) 2010-2011 by Jan Vrany, Jan Kurs and Marcel Hlopko
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    69
                            SWING Research Group, Czech Technical University in Prague
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    70
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    71
 This software is furnished under a license and may be used
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    72
 only in accordance with the terms of that license and with the
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    73
 inclusion of the above copyright notice.   This software may not
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    74
 be provided or otherwise made available to, or used by, any
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    75
 other person.  No title to or ownership of the software is
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    76
 hereby transferred.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    77
1155
vranyj1
parents: 1152
diff changeset
    78
 [1] Code written at SWING Research Group contains a signature
vranyj1
parents: 1152
diff changeset
    79
     of one of the above copright owners. For exact set of such code,
vranyj1
parents: 1152
diff changeset
    80
     see the differences between this version and version stx:libjava
1152
040cba55a7d2 Copyright fixes
vranyj1
parents: 963
diff changeset
    81
     as of 1.9.2010
952
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    82
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    83
"
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    84
! !
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    85
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    86
!JavaZipSupport class methodsFor:'instance creation'!
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    87
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    88
inflaterFor: vm
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    89
1536
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
    90
    ^Deflater new vm: vm
952
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    91
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    92
    "Created: / 30-08-2011 / 09:05:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    93
! !
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    94
1536
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
    95
!JavaZipSupport::Deflater methodsFor:'accessing'!
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
    96
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
    97
vm: javaVM
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
    98
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
    99
    vm := javaVM.
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   100
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   101
    "Created: / 30-08-2011 / 09:05:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   102
! !
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   103
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   104
!JavaZipSupport::Deflater methodsFor:'inflater methods'!
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   105
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   106
adler
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   107
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   108
%{
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   109
	RETURN ( __MKEXTERNALADDRESS ( __zStreamVal(__INST(z_stream))->adler ) );
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   110
%}
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   111
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   112
"
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   113
OpenJDK 7 Implementation:
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   114
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   115
JNIEXPORT jint JNICALL
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   116
Java_java_util_zip_Inflater_getAdler(JNIEnv *env, jclass cls, jlong addr)
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   117
{
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   118
    return ((z_stream *)jlong_to_ptr(addr))->adler;
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   119
}
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   120
"
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   121
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   122
    "Created: / 31-08-2011 / 09:30:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   123
!
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   124
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   125
bytesRead
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   126
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   127
%{
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   128
	RETURN ( __MKSMALLINT( __zStreamVal(__INST(z_stream))->total_in));
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   129
%}
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   130
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   131
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   132
"
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   133
OpenJDK 7 Implementation:
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   134
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   135
JNIEXPORT jlong JNICALL
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   136
Java_java_util_zip_Inflater_getBytesRead(JNIEnv *env, jclass cls, jlong addr)
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   137
{
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   138
    return ((z_stream *)jlong_to_ptr(addr))->total_in;
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   139
}
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   140
"
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   141
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   142
    "Created: / 31-08-2011 / 09:30:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   143
!
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   144
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   145
bytesWritten
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   146
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   147
%{
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   148
	RETURN ( __MKSMALLINT( __zStreamVal(__INST(z_stream))->total_out));
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   149
%}
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   150
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   151
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   152
"
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   153
OpenJDK 7 Implementation:
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   154
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   155
JNIEXPORT jlong JNICALL
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   156
Java_java_util_zip_Inflater_getBytesWritten(JNIEnv *env, jclass cls, jlong addr)
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   157
{
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   158
    return ((z_stream *)jlong_to_ptr(addr))->total_out;
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   159
}
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   160
"
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   161
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   162
    "Created: / 31-08-2011 / 09:30:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   163
!
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   164
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   165
deflate:"byte[]" out_buf offset: "int" out_off length: "int" out_len flush: flush deflaterr: deflater
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   166
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   167
        | in_buf in_off in_len finished needDict errorType errorMsg ret |
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   168
        in_buf := deflater instVarNamed:#buf.
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   169
        in_off := deflater instVarNamed:#off.
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   170
        in_len := deflater instVarNamed:#len.
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   171
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   172
        finished := needDict := 0.
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   173
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   174
%{
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   175
#define strm (__zStreamVal(__INST(z_stream)))
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   176
        int code, consumed;
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   177
        
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   178
        strm->next_in = (Bytef *) (__ByteArrayInstPtr(in_buf)->ba_element + __intVal(in_off));
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   179
        strm->next_out = (Bytef *) (__ByteArrayInstPtr(out_buf)->ba_element + __intVal(out_off));
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   180
        strm->avail_in = __intVal(in_len);      
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   181
        strm->avail_out = __intVal(out_len);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   182
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   183
        
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   184
        code = inflate(strm, Z_PARTIAL_FLUSH);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   185
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   186
        switch (code) {
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   187
                case Z_STREAM_END:
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   188
                        finished = __MKSMALLINT(1);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   189
                        /* fall through */
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   190
                case Z_OK:
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   191
                        consumed = __intVal(in_len) - strm->avail_in;
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   192
                        in_off = __MKSMALLINT(_intVal(in_off) + consumed);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   193
                        in_len = __MKSMALLINT(_intVal(in_len) - consumed);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   194
                        ret = __MKSMALLINT(__intVal(out_len) - strm->avail_out);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   195
                        break;
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   196
                case Z_NEED_DICT:
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   197
                        needDict = __MKSMALLINT(1);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   198
                        /* Might have consumed some input here! */
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   199
                        consumed = __intVal(in_len) - strm->avail_in;
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   200
                        in_off = __MKSMALLINT(_intVal(in_off) + consumed);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   201
                        in_len = __MKSMALLINT(_intVal(in_len) - consumed);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   202
                        ret = __MKSMALLINT(0);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   203
                        break;
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   204
                case Z_BUF_ERROR:
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   205
                        ret = __MKSMALLINT(0);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   206
                        break;
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   207
                case Z_DATA_ERROR:
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   208
            errorMsg = __MKSTRING(__zStreamVal(__INST(z_stream))->msg);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   209
            errorType = @symbol(DataFormatException);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   210
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   211
                        break;
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   212
                case Z_MEM_ERROR:
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   213
            errorType = @symbol(OutOfMemoryError);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   214
                        break;
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   215
                default:
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   216
            errorMsg = __MKSTRING(__zStreamVal(__INST(z_stream))->msg);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   217
            errorType = @symbol(InternalError);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   218
                        break;
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   219
    }   
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   220
#undef strm
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   221
%}.
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   222
    errorType == #DataFormatException ifTrue:[
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   223
        vm throwDataFormatException: errorMsg.
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   224
        ^0.
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   225
    ].
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   226
    errorType == #OutOfMemoryError ifTrue:[
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   227
        vm throwOutOfMemoryError.
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   228
        ^0.
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   229
    ].
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   230
    errorType == #InternalError ifTrue:[
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   231
        vm internalError: errorMsg.
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   232
        ^0.
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   233
    ].
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   234
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   235
        deflater instVarNamed:#off put: in_off.
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   236
        deflater instVarNamed:#len put: in_len.
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   237
        deflater instVarNamed:#finished put: finished.
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   238
        deflater instVarNamed:#needDict put: needDict.
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   239
        ^ret
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   240
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   241
"
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   242
OpenJDK 7 Implementation
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   243
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   244
JNIEXPORT jint JNICALL
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   245
Java_java_util_zip_Inflater_inflateBytes(JNIEnv *env, jobject this, jlong addr,
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   246
                                         jarray b, jint off, jint len)
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   247
{
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   248
    z_stream *strm = jlong_to_ptr(addr);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   249
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   250
    jarray this_buf = (jarray)(*env)->GetObjectField(env, this, bufID);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   251
    jint this_off = (*env)->GetIntField(env, this, offID);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   252
    jint this_len = (*env)->GetIntField(env, this, lenID);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   253
    jbyte *in_buf;
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   254
    jbyte *out_buf;
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   255
    int ret;
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   256
    /*
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   257
     * Avoid excess copying.
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   258
     *   zlib stream usually has a few bytes of overhead for header info
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   259
     *   (depends on the underlying data)
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   260
     *
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   261
     *   (a) 5 bytes per 16KB
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   262
     *   (b) 6 bytes for entire stream
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   263
     *   (c) 4 bytes for gzip header
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   264
     *   (d) 2 bytes for crc
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   265
     *
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   266
     * Use 20 bytes as the 'safe cutoff' number.
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   267
     */
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   268
    jint in_len = MIN2(this_len, len + 20);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   269
    jint consumed;
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   270
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   271
    in_buf = (jbyte *) malloc(in_len);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   272
    if (in_buf == 0) {
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   273
        JNU_ThrowOutOfMemoryError(env, 0);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   274
        return 0;
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   275
    }
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   276
    (*env)->GetByteArrayRegion(env, this_buf, this_off, in_len, in_buf);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   277
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   278
    out_buf = (jbyte *) malloc(len);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   279
    if (out_buf == 0) {
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   280
        free(in_buf);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   281
        JNU_ThrowOutOfMemoryError(env, 0);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   282
        return 0;
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   283
    }
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   284
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   285
    strm->next_in  = (Bytef *) in_buf;
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   286
    strm->next_out = (Bytef *) out_buf;
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   287
    strm->avail_in  = in_len;
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   288
    strm->avail_out = len;
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   289
    ret = inflate(strm, Z_PARTIAL_FLUSH);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   290
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   291
    if (ret == Z_STREAM_END || ret == Z_OK) {
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   292
        (*env)->SetByteArrayRegion(env, b, off, len - strm->avail_out, out_buf);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   293
    }
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   294
    free(out_buf);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   295
    free(in_buf);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   296
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   297
    switch (ret) {
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   298
    case Z_STREAM_END:
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   299
        (*env)->SetBooleanField(env, this, finishedID, JNI_TRUE);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   300
        /* fall through */
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   301
    case Z_OK:
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   302
        consumed = in_len - strm->avail_in;
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   303
        (*env)->SetIntField(env, this, offID, this_off + consumed);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   304
        (*env)->SetIntField(env, this, lenID, this_len - consumed);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   305
        return len - strm->avail_out;
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   306
    case Z_NEED_DICT:
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   307
        (*env)->SetBooleanField(env, this, needDictID, JNI_TRUE);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   308
        /* Might have consumed some input here!! */
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   309
        consumed = in_len - strm->avail_in;
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   310
        (*env)->SetIntField(env, this, offID, this_off + consumed);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   311
        (*env)->SetIntField(env, this, lenID, this_len - consumed);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   312
        return 0;
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   313
    case Z_BUF_ERROR:
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   314
        return 0;
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   315
    case Z_DATA_ERROR:
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   316
        ThrowDataFormatException(env, strm->msg);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   317
        return 0;
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   318
    case Z_MEM_ERROR:
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   319
        JNU_ThrowOutOfMemoryError(env, 0);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   320
        return 0;
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   321
    default:
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   322
        JNU_ThrowInternalError(env, strm->msg);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   323
        return 0;
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   324
    }
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   325
}
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   326
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   327
"
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   328
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   329
    "Created: / 20-07-2012 / 17:55:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   330
!
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   331
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   332
end
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   333
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   334
	| ok |
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   335
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   336
	ok := true.
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   337
	
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   338
%{
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   339
    if (inflateEnd(__zStreamVal(__INST(z_stream))) == Z_STREAM_ERROR) {
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   340
		ok = false;
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   341
	}
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   342
%}.
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   343
	z_stream free.
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   344
	ok ifFalse:[
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   345
        vm internalError: 'Cannot call inflateEnd()'.
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   346
	].
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   347
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   348
"
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   349
OpenJDK 7 Implementation:
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   350
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   351
JNIEXPORT void JNICALL
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   352
Java_java_util_zip_Inflater_end(JNIEnv *env, jclass cls, jlong addr)
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   353
{
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   354
    if (inflateEnd(jlong_to_ptr(addr)) == Z_STREAM_ERROR) {
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   355
        JNU_ThrowInternalError(env, 0);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   356
    } else {
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   357
        free(jlong_to_ptr(addr));
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   358
    }
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   359
}
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   360
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   361
"
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   362
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   363
    "Created: / 30-08-2011 / 20:50:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   364
!
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   365
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   366
init: nowrap
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   367
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   368
    | z_stream_size errorType errorMsg |
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   369
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   370
%{  z_stream_size = __MKSMALLINT(sizeof(z_stream)); %}.
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   371
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   372
    z_stream := ExternalBytes unprotectedNew: z_stream_size.
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   373
    
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   374
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   375
%{
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   376
    switch (inflateInit2(__zStreamVal(__INST(z_stream)), nowrap ? -MAX_WBITS : MAX_WBITS)) {
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   377
        case Z_OK:
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   378
            RETURN ( self );
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   379
        case Z_MEM_ERROR:
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   380
            errorType = @symbol(OutOfMemoryError);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   381
            break;
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   382
        default:
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   383
            errorMsg = __MKSTRING(__zStreamVal(__INST(z_stream))->msg);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   384
            errorType = @symbol(InternalError);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   385
            break;
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   386
    }    
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   387
%}.
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   388
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   389
    z_stream free.
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   390
    errorType == #OutOfMemoryError ifTrue:[
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   391
        vm throwOutOfMemoryError.
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   392
        ^self.
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   393
    ].
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   394
    errorType == #InternalError ifTrue:[
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   395
        vm internalError: errorMsg.
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   396
        ^self.
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   397
    ].
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   398
    
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   399
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   400
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   401
    "
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   402
OpenJDK 7 Implementation:
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   403
JNIEXPORT jlong JNICALL
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   404
Java_java_util_zip_Inflater_init(JNIEnv *env, jclass cls, jboolean nowrap)
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   405
{
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   406
    z_stream *strm = calloc(1, sizeof(z_stream));
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   407
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   408
    if (strm == 0) {
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   409
        JNU_ThrowOutOfMemoryError(env, 0);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   410
        return jlong_zero;
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   411
    } else {
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   412
        char *msg;
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   413
        switch (inflateInit2(strm, nowrap ? -MAX_WBITS : MAX_WBITS)) {
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   414
          case Z_OK:
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   415
            return ptr_to_jlong(strm);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   416
          case Z_MEM_ERROR:
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   417
            free(strm);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   418
            JNU_ThrowOutOfMemoryError(env, 0);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   419
            return jlong_zero;
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   420
          default:
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   421
            msg = strm->msg;
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   422
            free(strm);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   423
            JNU_ThrowInternalError(env, msg);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   424
            return jlong_zero;
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   425
        }
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   426
    }
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   427
}
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   428
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   429
    "
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   430
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   431
    "Created: / 29-08-2011 / 17:22:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   432
!
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   433
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   434
reset
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   435
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   436
%{
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   437
	if (inflateReset(__zStreamVal(__INST(z_stream))) == Z_OK) {
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   438
		RETURN ( self );
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   439
	}
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   440
%}.
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   441
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   442
	vm internalError: 'Cannot reset inflater'.
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   443
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   444
"
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   445
OpenJDK 7 Implementation:
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   446
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   447
JNIEXPORT void JNICALL
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   448
Java_java_util_zip_Inflater_reset(JNIEnv *env, jclass cls, jlong addr)
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   449
{
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   450
    if (inflateReset(jlong_to_ptr(addr)) !!= Z_OK) {
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   451
        JNU_ThrowInternalError(env, 0);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   452
    }
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   453
}
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   454
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   455
"
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   456
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   457
    "Created: / 30-08-2011 / 12:45:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   458
! !
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   459
952
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   460
!JavaZipSupport::Inflater methodsFor:'accessing'!
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   461
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   462
vm: javaVM
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   463
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   464
    vm := javaVM.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   465
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   466
    "Created: / 30-08-2011 / 09:05:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   467
! !
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   468
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   469
!JavaZipSupport::Inflater methodsFor:'inflater methods'!
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   470
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   471
adler
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   472
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   473
%{
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   474
	RETURN ( __MKEXTERNALADDRESS ( __zStreamVal(__INST(z_stream))->adler ) );
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   475
%}
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   476
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   477
"
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   478
OpenJDK 7 Implementation:
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   479
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   480
JNIEXPORT jint JNICALL
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   481
Java_java_util_zip_Inflater_getAdler(JNIEnv *env, jclass cls, jlong addr)
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   482
{
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   483
    return ((z_stream *)jlong_to_ptr(addr))->adler;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   484
}
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   485
"
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   486
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   487
    "Created: / 31-08-2011 / 09:30:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   488
!
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   489
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   490
bytesRead
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   491
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   492
%{
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   493
	RETURN ( __MKSMALLINT( __zStreamVal(__INST(z_stream))->total_in));
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   494
%}
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   495
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   496
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   497
"
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   498
OpenJDK 7 Implementation:
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   499
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   500
JNIEXPORT jlong JNICALL
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   501
Java_java_util_zip_Inflater_getBytesRead(JNIEnv *env, jclass cls, jlong addr)
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   502
{
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   503
    return ((z_stream *)jlong_to_ptr(addr))->total_in;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   504
}
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   505
"
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   506
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   507
    "Created: / 31-08-2011 / 09:30:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   508
!
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   509
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   510
bytesWritten
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   511
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   512
%{
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   513
	RETURN ( __MKSMALLINT( __zStreamVal(__INST(z_stream))->total_out));
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   514
%}
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   515
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   516
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   517
"
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   518
OpenJDK 7 Implementation:
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   519
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   520
JNIEXPORT jlong JNICALL
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   521
Java_java_util_zip_Inflater_getBytesWritten(JNIEnv *env, jclass cls, jlong addr)
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   522
{
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   523
    return ((z_stream *)jlong_to_ptr(addr))->total_out;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   524
}
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   525
"
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   526
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   527
    "Created: / 31-08-2011 / 09:30:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   528
!
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   529
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   530
end
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   531
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   532
	| ok |
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   533
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   534
	ok := true.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   535
	
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   536
%{
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   537
    if (inflateEnd(__zStreamVal(__INST(z_stream))) == Z_STREAM_ERROR) {
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   538
		ok = false;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   539
	}
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   540
%}.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   541
	z_stream free.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   542
	ok ifFalse:[
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   543
        vm internalError: 'Cannot call inflateEnd()'.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   544
	].
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   545
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   546
"
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   547
OpenJDK 7 Implementation:
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   548
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   549
JNIEXPORT void JNICALL
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   550
Java_java_util_zip_Inflater_end(JNIEnv *env, jclass cls, jlong addr)
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   551
{
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   552
    if (inflateEnd(jlong_to_ptr(addr)) == Z_STREAM_ERROR) {
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   553
        JNU_ThrowInternalError(env, 0);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   554
    } else {
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   555
        free(jlong_to_ptr(addr));
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   556
    }
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   557
}
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   558
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   559
"
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   560
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   561
    "Created: / 30-08-2011 / 20:50:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   562
!
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   563
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   564
inflate:"byte[]" out_buf offset: "int" out_off length: "int" out_len inflater: jinflater
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   565
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   566
	| in_buf in_off in_len finished needDict errorType errorMsg ret |
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   567
	in_buf := jinflater instVarNamed:#buf.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   568
	in_off := jinflater instVarNamed:#off.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   569
	in_len := jinflater instVarNamed:#len.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   570
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   571
	finished := needDict := 0.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   572
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   573
%{
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   574
#define strm (__zStreamVal(__INST(z_stream)))
963
7181c835cc9d Fixes for Borland C compiler
vranyj1
parents: 952
diff changeset
   575
        int code, consumed;
7181c835cc9d Fixes for Borland C compiler
vranyj1
parents: 952
diff changeset
   576
        
952
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   577
	strm->next_in = (Bytef *) (__ByteArrayInstPtr(in_buf)->ba_element + __intVal(in_off));
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   578
	strm->next_out = (Bytef *) (__ByteArrayInstPtr(out_buf)->ba_element + __intVal(out_off));
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   579
	strm->avail_in = __intVal(in_len);	
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   580
	strm->avail_out = __intVal(out_len);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   581
963
7181c835cc9d Fixes for Borland C compiler
vranyj1
parents: 952
diff changeset
   582
	
952
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   583
	code = inflate(strm, Z_PARTIAL_FLUSH);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   584
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   585
	switch (code) {
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   586
		case Z_STREAM_END:
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   587
			finished = __MKSMALLINT(1);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   588
			/* fall through */
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   589
		case Z_OK:
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   590
			consumed = __intVal(in_len) - strm->avail_in;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   591
			in_off = __MKSMALLINT(_intVal(in_off) + consumed);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   592
			in_len = __MKSMALLINT(_intVal(in_len) - consumed);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   593
			ret = __MKSMALLINT(__intVal(out_len) - strm->avail_out);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   594
			break;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   595
		case Z_NEED_DICT:
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   596
			needDict = __MKSMALLINT(1);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   597
			/* Might have consumed some input here! */
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   598
			consumed = __intVal(in_len) - strm->avail_in;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   599
			in_off = __MKSMALLINT(_intVal(in_off) + consumed);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   600
			in_len = __MKSMALLINT(_intVal(in_len) - consumed);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   601
			ret = __MKSMALLINT(0);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   602
			break;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   603
		case Z_BUF_ERROR:
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   604
			ret = __MKSMALLINT(0);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   605
			break;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   606
		case Z_DATA_ERROR:
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   607
            errorMsg = __MKSTRING(__zStreamVal(__INST(z_stream))->msg);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   608
            errorType = @symbol(DataFormatException);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   609
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   610
			break;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   611
		case Z_MEM_ERROR:
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   612
            errorType = @symbol(OutOfMemoryError);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   613
			break;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   614
		default:
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   615
            errorMsg = __MKSTRING(__zStreamVal(__INST(z_stream))->msg);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   616
            errorType = @symbol(InternalError);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   617
			break;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   618
    }	
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   619
#undef strm
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   620
%}.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   621
    errorType == #DataFormatException ifTrue:[
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   622
        vm throwDataFormatException: errorMsg.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   623
        ^0.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   624
    ].
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   625
    errorType == #OutOfMemoryError ifTrue:[
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   626
        vm throwOutOfMemoryError.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   627
        ^0.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   628
    ].
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   629
    errorType == #InternalError ifTrue:[
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   630
        vm internalError: errorMsg.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   631
        ^0.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   632
    ].
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   633
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   634
	jinflater instVarNamed:#off put: in_off.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   635
	jinflater instVarNamed:#len put: in_len.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   636
	jinflater instVarNamed:#finished put: finished.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   637
	jinflater instVarNamed:#needDict put: needDict.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   638
	^ret
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   639
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   640
"
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   641
OpenJDK 7 Implementation
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   642
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   643
JNIEXPORT jint JNICALL
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   644
Java_java_util_zip_Inflater_inflateBytes(JNIEnv *env, jobject this, jlong addr,
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   645
                                         jarray b, jint off, jint len)
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   646
{
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   647
    z_stream *strm = jlong_to_ptr(addr);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   648
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   649
    jarray this_buf = (jarray)(*env)->GetObjectField(env, this, bufID);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   650
    jint this_off = (*env)->GetIntField(env, this, offID);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   651
    jint this_len = (*env)->GetIntField(env, this, lenID);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   652
    jbyte *in_buf;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   653
    jbyte *out_buf;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   654
    int ret;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   655
    /*
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   656
     * Avoid excess copying.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   657
     *   zlib stream usually has a few bytes of overhead for header info
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   658
     *   (depends on the underlying data)
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   659
     *
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   660
     *   (a) 5 bytes per 16KB
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   661
     *   (b) 6 bytes for entire stream
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   662
     *   (c) 4 bytes for gzip header
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   663
     *   (d) 2 bytes for crc
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   664
     *
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   665
     * Use 20 bytes as the 'safe cutoff' number.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   666
     */
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   667
    jint in_len = MIN2(this_len, len + 20);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   668
    jint consumed;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   669
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   670
    in_buf = (jbyte *) malloc(in_len);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   671
    if (in_buf == 0) {
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   672
        JNU_ThrowOutOfMemoryError(env, 0);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   673
        return 0;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   674
    }
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   675
    (*env)->GetByteArrayRegion(env, this_buf, this_off, in_len, in_buf);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   676
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   677
    out_buf = (jbyte *) malloc(len);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   678
    if (out_buf == 0) {
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   679
        free(in_buf);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   680
        JNU_ThrowOutOfMemoryError(env, 0);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   681
        return 0;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   682
    }
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   683
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   684
    strm->next_in  = (Bytef *) in_buf;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   685
    strm->next_out = (Bytef *) out_buf;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   686
    strm->avail_in  = in_len;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   687
    strm->avail_out = len;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   688
    ret = inflate(strm, Z_PARTIAL_FLUSH);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   689
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   690
    if (ret == Z_STREAM_END || ret == Z_OK) {
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   691
        (*env)->SetByteArrayRegion(env, b, off, len - strm->avail_out, out_buf);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   692
    }
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   693
    free(out_buf);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   694
    free(in_buf);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   695
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   696
    switch (ret) {
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   697
    case Z_STREAM_END:
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   698
        (*env)->SetBooleanField(env, this, finishedID, JNI_TRUE);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   699
        /* fall through */
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   700
    case Z_OK:
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   701
        consumed = in_len - strm->avail_in;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   702
        (*env)->SetIntField(env, this, offID, this_off + consumed);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   703
        (*env)->SetIntField(env, this, lenID, this_len - consumed);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   704
        return len - strm->avail_out;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   705
    case Z_NEED_DICT:
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   706
        (*env)->SetBooleanField(env, this, needDictID, JNI_TRUE);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   707
        /* Might have consumed some input here!! */
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   708
        consumed = in_len - strm->avail_in;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   709
        (*env)->SetIntField(env, this, offID, this_off + consumed);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   710
        (*env)->SetIntField(env, this, lenID, this_len - consumed);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   711
        return 0;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   712
    case Z_BUF_ERROR:
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   713
        return 0;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   714
    case Z_DATA_ERROR:
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   715
        ThrowDataFormatException(env, strm->msg);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   716
        return 0;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   717
    case Z_MEM_ERROR:
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   718
        JNU_ThrowOutOfMemoryError(env, 0);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   719
        return 0;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   720
    default:
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   721
        JNU_ThrowInternalError(env, strm->msg);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   722
        return 0;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   723
    }
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   724
}
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   725
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   726
"
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   727
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   728
    "Created: / 30-08-2011 / 09:31:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   729
!
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   730
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   731
init: nowrap
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   732
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   733
    | z_stream_size errorType errorMsg |
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   734
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   735
%{  z_stream_size = __MKSMALLINT(sizeof(z_stream)); %}.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   736
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   737
    z_stream := ExternalBytes unprotectedNew: z_stream_size.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   738
    
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   739
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   740
%{
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   741
    switch (inflateInit2(__zStreamVal(__INST(z_stream)), nowrap ? -MAX_WBITS : MAX_WBITS)) {
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   742
        case Z_OK:
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   743
            RETURN ( self );
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   744
        case Z_MEM_ERROR:
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   745
            errorType = @symbol(OutOfMemoryError);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   746
            break;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   747
        default:
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   748
            errorMsg = __MKSTRING(__zStreamVal(__INST(z_stream))->msg);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   749
            errorType = @symbol(InternalError);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   750
            break;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   751
    }    
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   752
%}.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   753
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   754
    z_stream free.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   755
    errorType == #OutOfMemoryError ifTrue:[
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   756
        vm throwOutOfMemoryError.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   757
        ^self.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   758
    ].
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   759
    errorType == #InternalError ifTrue:[
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   760
        vm internalError: errorMsg.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   761
        ^self.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   762
    ].
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   763
    
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   764
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   765
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   766
    "
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   767
OpenJDK 7 Implementation:
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   768
JNIEXPORT jlong JNICALL
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   769
Java_java_util_zip_Inflater_init(JNIEnv *env, jclass cls, jboolean nowrap)
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   770
{
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   771
    z_stream *strm = calloc(1, sizeof(z_stream));
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   772
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   773
    if (strm == 0) {
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   774
        JNU_ThrowOutOfMemoryError(env, 0);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   775
        return jlong_zero;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   776
    } else {
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   777
        char *msg;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   778
        switch (inflateInit2(strm, nowrap ? -MAX_WBITS : MAX_WBITS)) {
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   779
          case Z_OK:
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   780
            return ptr_to_jlong(strm);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   781
          case Z_MEM_ERROR:
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   782
            free(strm);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   783
            JNU_ThrowOutOfMemoryError(env, 0);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   784
            return jlong_zero;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   785
          default:
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   786
            msg = strm->msg;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   787
            free(strm);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   788
            JNU_ThrowInternalError(env, msg);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   789
            return jlong_zero;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   790
        }
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   791
    }
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   792
}
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   793
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   794
    "
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   795
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   796
    "Created: / 29-08-2011 / 17:22:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   797
!
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   798
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   799
reset
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   800
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   801
%{
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   802
	if (inflateReset(__zStreamVal(__INST(z_stream))) == Z_OK) {
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   803
		RETURN ( self );
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   804
	}
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   805
%}.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   806
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   807
	vm internalError: 'Cannot reset inflater'.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   808
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   809
"
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   810
OpenJDK 7 Implementation:
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   811
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   812
JNIEXPORT void JNICALL
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   813
Java_java_util_zip_Inflater_reset(JNIEnv *env, jclass cls, jlong addr)
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   814
{
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   815
    if (inflateReset(jlong_to_ptr(addr)) !!= Z_OK) {
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   816
        JNU_ThrowInternalError(env, 0);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   817
    }
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   818
}
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   819
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   820
"
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   821
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   822
    "Created: / 30-08-2011 / 12:45:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   823
! !
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   824
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   825
!JavaZipSupport class methodsFor:'documentation'!
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   826
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   827
version_SVN
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   828
    ^ '$Id$'
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   829
! !