JavaZipSupport.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Sun, 16 Dec 2012 21:04:02 +0100
branchdirectory_structure_refactoring
changeset 1899 800c0f76adce
parent 1818 2e5ed72e7dfd
child 1864 60a8dc26c8c6
permissions -rw-r--r--
Closing branch directory_structure_refactoring
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
1537
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
    55
#define DEF_MEM_LEVEL 8
952
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    56
#define __zStreamVal(x) ((z_stream *)(__ExternalBytesInstPtr(x)->e_address))
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
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    61
!JavaZipSupport class methodsFor:'documentation'!
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    62
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    63
copyright
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    64
"
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    65
 COPYRIGHT (c) 1996-2011 by Claus Gittinger
1152
040cba55a7d2 Copyright fixes
vranyj1
parents: 963
diff changeset
    66
1155
vranyj1
parents: 1152
diff changeset
    67
 New code and modifications done at SWING Research Group [1]:
1152
040cba55a7d2 Copyright fixes
vranyj1
parents: 963
diff changeset
    68
952
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    69
 COPYRIGHT (c) 2010-2011 by Jan Vrany, Jan Kurs and Marcel Hlopko
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    70
                            SWING Research Group, Czech Technical University in Prague
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    71
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    72
 This software is furnished under a license and may be used
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    73
 only in accordance with the terms of that license and with the
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    74
 inclusion of the above copyright notice.   This software may not
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    75
 be provided or otherwise made available to, or used by, any
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    76
 other person.  No title to or ownership of the software is
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    77
 hereby transferred.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    78
1155
vranyj1
parents: 1152
diff changeset
    79
 [1] Code written at SWING Research Group contains a signature
vranyj1
parents: 1152
diff changeset
    80
     of one of the above copright owners. For exact set of such code,
vranyj1
parents: 1152
diff changeset
    81
     see the differences between this version and version stx:libjava
1152
040cba55a7d2 Copyright fixes
vranyj1
parents: 963
diff changeset
    82
     as of 1.9.2010
952
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
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    87
!JavaZipSupport class methodsFor:'instance creation'!
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    88
1537
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
    89
deflaterFor: vm
952
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    90
1536
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
    91
    ^Deflater new vm: vm
952
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    92
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
    93
    "Created: / 30-08-2011 / 09:05:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1537
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
    94
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
    95
!
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
    96
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
    97
inflaterFor: vm
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
    98
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
    99
    ^Inflater new vm: vm
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   100
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   101
    "Created: / 30-08-2011 / 09:05:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   102
952
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   103
! !
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   104
1539
6d8621e0f106 Fixes in inflater/deflater
vranyj1
parents: 1538
diff changeset
   105
!JavaZipSupport::Deflater methodsFor:'* As yet uncategorized *'!
6d8621e0f106 Fixes in inflater/deflater
vranyj1
parents: 1538
diff changeset
   106
6d8621e0f106 Fixes in inflater/deflater
vranyj1
parents: 1538
diff changeset
   107
> aSmallInteger
6d8621e0f106 Fixes in inflater/deflater
vranyj1
parents: 1538
diff changeset
   108
    ^(z_stream address ? 0) > aSmallInteger
6d8621e0f106 Fixes in inflater/deflater
vranyj1
parents: 1538
diff changeset
   109
6d8621e0f106 Fixes in inflater/deflater
vranyj1
parents: 1538
diff changeset
   110
    "Created: / 20-07-2012 / 22:21:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6d8621e0f106 Fixes in inflater/deflater
vranyj1
parents: 1538
diff changeset
   111
! !
6d8621e0f106 Fixes in inflater/deflater
vranyj1
parents: 1538
diff changeset
   112
1536
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   113
!JavaZipSupport::Deflater methodsFor:'accessing'!
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   114
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   115
vm: javaVM
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   116
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   117
    vm := javaVM.
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   118
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   119
    "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
   120
! !
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   121
1537
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   122
!JavaZipSupport::Deflater methodsFor:'deflater methods'!
1536
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   123
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   124
adler
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   125
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   126
%{
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   127
	RETURN ( __MKEXTERNALADDRESS ( __zStreamVal(__INST(z_stream))->adler ) );
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   128
%}
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
OpenJDK 7 Implementation:
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   132
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   133
JNIEXPORT jint JNICALL
1537
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   134
Java_java_util_zip_Deflater_getAdler(JNIEnv *env, jclass cls, jlong addr)
1536
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   135
{
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   136
    return ((z_stream *)jlong_to_ptr(addr))->adler;
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   137
}
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   138
"
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   139
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   140
    "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
   141
!
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   142
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   143
bytesRead
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   144
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   145
%{
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   146
	RETURN ( __MKSMALLINT( __zStreamVal(__INST(z_stream))->total_in));
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   147
%}
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   148
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
OpenJDK 7 Implementation:
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   152
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   153
JNIEXPORT jlong JNICALL
1537
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   154
Java_java_util_zip_Deflater_getBytesRead(JNIEnv *env, jclass cls, jlong addr)
1536
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   155
{
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   156
    return ((z_stream *)jlong_to_ptr(addr))->total_in;
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   157
}
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   158
"
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   159
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   160
    "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
   161
!
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   162
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   163
bytesWritten
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   164
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   165
%{
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   166
	RETURN ( __MKSMALLINT( __zStreamVal(__INST(z_stream))->total_out));
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   167
%}
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   168
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   169
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   170
"
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   171
OpenJDK 7 Implementation:
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   172
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   173
JNIEXPORT jlong JNICALL
1537
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   174
Java_java_util_zip_Deflater_getBytesWritten(JNIEnv *env, jclass cls, jlong addr)
1536
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   175
{
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   176
    return ((z_stream *)jlong_to_ptr(addr))->total_out;
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   177
}
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   178
"
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   179
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   180
    "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
   181
!
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   182
1537
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   183
deflate:"byte[]" out_buf offset: "int" out_off length: "int" out_len flush: flush deflater: deflater
1536
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   184
1537
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   185
        | in_buf in_off in_len setParams level strategy finish finished ret errorType errorMsg|
1536
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   186
        in_buf := deflater instVarNamed:#buf.
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   187
        in_off := deflater instVarNamed:#off.
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   188
        in_len := deflater instVarNamed:#len.
1537
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   189
        setParams := deflater instVarNamed:#setParams.
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   190
        level := deflater instVarNamed:#level.
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   191
        strategy := deflater instVarNamed:#strategy.
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   192
        finish := deflater instVarNamed:#finish.
1536
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   193
%{
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   194
#define strm (__zStreamVal(__INST(z_stream)))
1537
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   195
    int code; 
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   196
    int consumed;
1536
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   197
        
1537
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   198
    strm->next_in = (Bytef *)(__ByteArrayInstPtr(in_buf)->ba_element+__intVal(in_off));
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   199
    strm->next_out = (Bytef *)(__ByteArrayInstPtr(out_buf)->ba_element+__intVal(out_off));
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   200
    strm->avail_in = __intVal(in_len);      
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   201
    strm->avail_out = __intVal(out_len);
1536
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   202
1537
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   203
    if (__intVal(setParams)) {
1543
6ade2e8a1403 Fix in JavaZipSupport C code (added __intVal())
vranyj1
parents: 1539
diff changeset
   204
        code = deflateParams(strm, __intVal(level), __intVal(strategy));
1536
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   205
        switch (code) {
1537
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   206
            case Z_OK:
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   207
                setParams = __intVal(0);
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   208
                consumed = __intVal(in_len) - strm->avail_in;
1536
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   209
1537
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   210
                in_off = __MKSMALLINT(_intVal(in_off) + consumed);
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   211
                in_len = __MKSMALLINT(_intVal(in_len) - consumed);
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   212
                ret = __MKSMALLINT(__intVal(out_len) - strm->avail_out);
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   213
                break;
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   214
            case Z_BUF_ERROR:
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   215
                setParams = __intVal(0);
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   216
                ret = __MKSMALLINT(0);
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   217
                break;
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   218
            default:
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   219
                errorMsg = __MKSTRING(__zStreamVal(__INST(z_stream))->msg);
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   220
                errorType = @symbol(InternalError);
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   221
                break;
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   222
       }
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   223
    } else {
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   224
        code = deflate(strm, __intVal(finish) ? Z_FINISH : __intVal(flush));        
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   225
        switch (code) {
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   226
            case Z_STREAM_END:
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   227
                finished = __MKSMALLINT(1);
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   228
                /* fall through */
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   229
            case Z_OK:
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   230
                consumed = __intVal(in_len) - strm->avail_in;
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   231
                in_off = __MKSMALLINT(_intVal(in_off) + consumed);
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   232
                in_len = __MKSMALLINT(_intVal(in_len) - consumed);
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   233
                ret = __MKSMALLINT(__intVal(out_len) - strm->avail_in);
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   234
                break;
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   235
            case Z_BUF_ERROR:
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   236
                ret = __MKSMALLINT(0);
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   237
                break;
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   238
            default:
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   239
                errorMsg = __MKSTRING(__zStreamVal(__INST(z_stream))->msg);
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   240
                errorType = @symbol(InternalError);
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   241
                break;
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   242
       }   
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   243
    }
1536
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   244
#undef strm
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   245
%}.
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   246
    errorType == #OutOfMemoryError ifTrue:[
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   247
        vm throwOutOfMemoryError.
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   248
        ^0.
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   249
    ].
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   250
    errorType == #InternalError ifTrue:[
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   251
        vm internalError: errorMsg.
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   252
        ^0.
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   253
    ].
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   254
1537
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   255
    deflater instVarNamed:#off put: in_off.
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   256
    deflater instVarNamed:#len put: in_len.
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   257
    deflater instVarNamed:#finished put: finished.
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   258
    deflater instVarNamed:#setParams put: setParams.
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   259
       
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   260
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   261
    ^ret
1536
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   262
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   263
"
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   264
OpenJDK 7 Implementation
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   265
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   266
JNIEXPORT jint JNICALL
1537
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   267
Java_java_util_zip_Deflater_deflateBytes(JNIEnv *env, jobject this, jlong addr,
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   268
                                         jarray b, jint off, jint len, jint flush)
1536
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   269
{
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   270
    z_stream *strm = jlong_to_ptr(addr);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   271
1537
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   272
    jarray this_buf = (*env)->GetObjectField(env, this, bufID);
1536
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   273
    jint this_off = (*env)->GetIntField(env, this, offID);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   274
    jint this_len = (*env)->GetIntField(env, this, lenID);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   275
    jbyte *in_buf;
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   276
    jbyte *out_buf;
1537
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   277
    int res;
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   278
    if ((*env)->GetBooleanField(env, this, setParamsID)) {
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   279
        int level = (*env)->GetIntField(env, this, levelID);
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   280
        int strategy = (*env)->GetIntField(env, this, strategyID);
1536
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   281
1537
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   282
        in_buf = (jbyte *) malloc(this_len);
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   283
        if (in_buf == 0) {
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   284
            JNU_ThrowOutOfMemoryError(env, 0);
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   285
            return 0;
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   286
        }
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   287
        (*env)->GetByteArrayRegion(env, this_buf, this_off, this_len, in_buf);
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   288
        out_buf = (jbyte *) malloc(len);
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   289
        if (out_buf == 0) {
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   290
            free(in_buf);
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   291
            JNU_ThrowOutOfMemoryError(env, 0);
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   292
            return 0;
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   293
        }
1536
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   294
1537
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   295
        strm->next_in = (Bytef *) in_buf;
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   296
        strm->next_out = (Bytef *) out_buf;
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   297
        strm->avail_in = this_len;
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   298
        strm->avail_out = len;
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   299
        res = deflateParams(strm, level, strategy);
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   300
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   301
        if (res == Z_OK) {
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   302
            (*env)->SetByteArrayRegion(env, b, off, len - strm->avail_out, out_buf);
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   303
        }
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   304
        free(out_buf);
1536
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   305
        free(in_buf);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   306
1537
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   307
        switch (res) {
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   308
        case Z_OK:
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   309
            (*env)->SetBooleanField(env, this, setParamsID, JNI_FALSE);
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   310
            this_off += this_len - strm->avail_in;
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   311
            (*env)->SetIntField(env, this, offID, this_off);
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   312
            (*env)->SetIntField(env, this, lenID, strm->avail_in);
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   313
            return len - strm->avail_out;
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   314
        case Z_BUF_ERROR:
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   315
            (*env)->SetBooleanField(env, this, setParamsID, JNI_FALSE);
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   316
            return 0;
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   317
        default:
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   318
            JNU_ThrowInternalError(env, strm->msg);
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   319
            return 0;
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   320
        }
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   321
    } else {
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   322
        jboolean finish = (*env)->GetBooleanField(env, this, finishID);
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   323
        in_buf = (jbyte *) malloc(this_len);
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   324
        if (in_buf == 0) {
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   325
            JNU_ThrowOutOfMemoryError(env, 0);
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   326
            return 0;
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   327
        }
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   328
        (*env)->GetByteArrayRegion(env, this_buf, this_off, this_len, in_buf);
1536
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   329
1537
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   330
        out_buf = (jbyte *) malloc(len);
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   331
        if (out_buf == 0) {
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   332
            free(in_buf);
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   333
            JNU_ThrowOutOfMemoryError(env, 0);
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   334
            return 0;
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   335
        }
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   336
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   337
        strm->next_in = (Bytef *) in_buf;
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   338
        strm->next_out = (Bytef *) out_buf;
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   339
        strm->avail_in = this_len;
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   340
        strm->avail_out = len;
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   341
        res = deflate(strm, finish ? Z_FINISH : flush);
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   342
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   343
        if (res == Z_STREAM_END || res == Z_OK) {
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   344
            (*env)->SetByteArrayRegion(env, b, off, len - strm->avail_out, out_buf);
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   345
        }
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   346
        free(out_buf);
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   347
        free(in_buf);
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   348
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   349
        switch (res) {
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   350
        case Z_STREAM_END:
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   351
            (*env)->SetBooleanField(env, this, finishedID, JNI_TRUE);
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   352
            /* fall through */
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   353
        case Z_OK:
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   354
            this_off += this_len - strm->avail_in;
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   355
            (*env)->SetIntField(env, this, offID, this_off);
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   356
            (*env)->SetIntField(env, this, lenID, strm->avail_in);
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   357
            return len - strm->avail_out;
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   358
        case Z_BUF_ERROR:
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   359
            return 0;
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   360
            default:
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   361
            JNU_ThrowInternalError(env, strm->msg);
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   362
            return 0;
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   363
        }
1536
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
"
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   367
1538
baa8e06aac40 - finalization hack for ZipFile, Inflater and Deflater
vranyj1
parents: 1537
diff changeset
   368
    "Created: / 20-07-2012 / 17:55:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1536
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   369
!
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   370
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   371
end
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   372
1537
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   373
    | ok |
1536
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   374
1537
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   375
    ok := true.	
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   376
%{  
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   377
    if (deflateEnd(__zStreamVal(__INST(z_stream))) == Z_STREAM_ERROR) {
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   378
	ok = false;
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   379
    }                                                                    
1536
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   380
%}.
1537
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   381
    z_stream free.
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   382
    ok ifFalse:[
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   383
       vm internalError: 'deflateEnd() failed!!'.
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   384
    ].
1536
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   385
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   386
"
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   387
OpenJDK 7 Implementation:
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   388
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   389
JNIEXPORT void JNICALL
1537
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   390
Java_java_util_zip_Deflater_end(JNIEnv *env, jclass cls, jlong addr)
1536
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   391
{
1537
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   392
    if (deflateEnd((z_stream *)jlong_to_ptr(addr)) == Z_STREAM_ERROR) {
1536
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   393
        JNU_ThrowInternalError(env, 0);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   394
    } else {
1537
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   395
        free((z_stream *)jlong_to_ptr(addr));
1536
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   396
    }
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
    "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
   401
!
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   402
1537
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   403
init: strategy level: level nowrap: nowrap
1536
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   404
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   405
    | z_stream_size errorType errorMsg |
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   406
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   407
%{  z_stream_size = __MKSMALLINT(sizeof(z_stream)); %}.
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   408
    z_stream := ExternalBytes unprotectedNew: z_stream_size.
1537
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   409
    z_stream address == 0 ifTrue:[
1538
baa8e06aac40 - finalization hack for ZipFile, Inflater and Deflater
vranyj1
parents: 1537
diff changeset
   410
        vm throwOutOfMemoryError
1537
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   411
    ].
1536
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   412
    
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   413
%{
1537
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   414
    switch (deflateInit2(__zStreamVal(__INST(z_stream)), 
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   415
                         __intVal(level), 
1538
baa8e06aac40 - finalization hack for ZipFile, Inflater and Deflater
vranyj1
parents: 1537
diff changeset
   416
                         Z_DEFLATED,
1537
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   417
                         (nowrap ? -MAX_WBITS : MAX_WBITS),
1538
baa8e06aac40 - finalization hack for ZipFile, Inflater and Deflater
vranyj1
parents: 1537
diff changeset
   418
                         DEF_MEM_LEVEL,
baa8e06aac40 - finalization hack for ZipFile, Inflater and Deflater
vranyj1
parents: 1537
diff changeset
   419
                         __intVal(strategy) )) {
1536
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   420
        case Z_OK:
1538
baa8e06aac40 - finalization hack for ZipFile, Inflater and Deflater
vranyj1
parents: 1537
diff changeset
   421
            break;
1536
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   422
        case Z_MEM_ERROR:
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   423
            errorType = @symbol(OutOfMemoryError);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   424
            break;
1537
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   425
        case Z_STREAM_ERROR:
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   426
            errorType = @symbol(StreamError);
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   427
            break;
1536
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   428
        default:
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   429
            errorMsg = __MKSTRING(__zStreamVal(__INST(z_stream))->msg);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   430
            errorType = @symbol(InternalError);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   431
            break;
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
1538
baa8e06aac40 - finalization hack for ZipFile, Inflater and Deflater
vranyj1
parents: 1537
diff changeset
   435
    errorType isNil ifTrue:[
1746
475fce490520 - Use ZipInflaters array (no direct referenceto JavaZipSupport::Inflater/Deflater in Java objects)
vranyj1
parents: 1546
diff changeset
   436
"/        self registerForFinalization.
1539
6d8621e0f106 Fixes in inflater/deflater
vranyj1
parents: 1538
diff changeset
   437
        ^self
1538
baa8e06aac40 - finalization hack for ZipFile, Inflater and Deflater
vranyj1
parents: 1537
diff changeset
   438
    ].
baa8e06aac40 - finalization hack for ZipFile, Inflater and Deflater
vranyj1
parents: 1537
diff changeset
   439
1536
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   440
    z_stream free.
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   441
    errorType == #OutOfMemoryError ifTrue:[
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   442
        vm throwOutOfMemoryError.
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   443
        ^self.
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   444
    ].
1537
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   445
    errorType == #StreamError ifTrue:[
1539
6d8621e0f106 Fixes in inflater/deflater
vranyj1
parents: 1538
diff changeset
   446
        vm throwIllegalArgumentException:
1538
baa8e06aac40 - finalization hack for ZipFile, Inflater and Deflater
vranyj1
parents: 1537
diff changeset
   447
            'Z_STREAM_ERROR returned from inflateInit2'.
1537
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   448
        ^self.
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   449
    ].
1536
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   450
    errorType == #InternalError ifTrue:[
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   451
        vm internalError: errorMsg.
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   452
        ^self.
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   453
    ].
1538
baa8e06aac40 - finalization hack for ZipFile, Inflater and Deflater
vranyj1
parents: 1537
diff changeset
   454
baa8e06aac40 - finalization hack for ZipFile, Inflater and Deflater
vranyj1
parents: 1537
diff changeset
   455
    vm internalError: 'Unknown error: ', errorMsg asString.
1536
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   456
    
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   457
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   458
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   459
    "
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   460
OpenJDK 7 Implementation:
1537
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   461
1536
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   462
JNIEXPORT jlong JNICALL
1537
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   463
Java_java_util_zip_Deflater_init(JNIEnv *env, jclass cls, jint level,
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   464
                                 jint strategy, jboolean nowrap)
1536
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   465
{
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   466
    z_stream *strm = calloc(1, sizeof(z_stream));
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   467
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   468
    if (strm == 0) {
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   469
        JNU_ThrowOutOfMemoryError(env, 0);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   470
        return jlong_zero;
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   471
    } else {
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   472
        char *msg;
1537
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   473
        switch (deflateInit2(strm, level, Z_DEFLATED,
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   474
                             nowrap ? -MAX_WBITS : MAX_WBITS,
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   475
                             DEF_MEM_LEVEL, strategy)) {
1536
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   476
          case Z_OK:
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   477
            return ptr_to_jlong(strm);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   478
          case Z_MEM_ERROR:
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   479
            free(strm);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   480
            JNU_ThrowOutOfMemoryError(env, 0);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   481
            return jlong_zero;
1537
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   482
          case Z_STREAM_ERROR:
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   483
            free(strm);
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   484
            JNU_ThrowIllegalArgumentException(env, 0);
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   485
            return jlong_zero;
1536
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   486
          default:
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   487
            msg = strm->msg;
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   488
            free(strm);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   489
            JNU_ThrowInternalError(env, msg);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   490
            return jlong_zero;
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   491
        }
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   492
    }
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   493
    "
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   494
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   495
    "Created: / 29-08-2011 / 17:22:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1746
475fce490520 - Use ZipInflaters array (no direct referenceto JavaZipSupport::Inflater/Deflater in Java objects)
vranyj1
parents: 1546
diff changeset
   496
    "Modified: / 25-10-2012 / 20:27:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1536
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   497
!
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   498
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   499
reset
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   500
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   501
%{
1537
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   502
    if (deflateReset(__zStreamVal(__INST(z_stream))) == Z_OK) {
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   503
	RETURN ( self );
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   504
    }
1536
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   505
%}.
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   506
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   507
	vm internalError: 'Cannot reset inflater'.
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   508
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   509
"
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   510
OpenJDK 7 Implementation:
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   511
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   512
JNIEXPORT void JNICALL
1537
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   513
Java_java_util_zip_Deflater_reset(JNIEnv *env, jclass cls, jlong addr)
1536
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   514
{
1537
0072327ccc71 - JavaVM: some new natives for zip, mainly Deflater. No ZipFile finalization hack yet.
vranyj1
parents: 1536
diff changeset
   515
    if (deflateReset((z_stream *)jlong_to_ptr(addr)) !!= Z_OK) {
1536
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   516
        JNU_ThrowInternalError(env, 0);
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   517
    }
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   518
}
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   519
"
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   520
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   521
    "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
   522
! !
8d5abf068003 - JavaZipSupport: added stub for Deflater
vranyj1
parents: 1155
diff changeset
   523
1538
baa8e06aac40 - finalization hack for ZipFile, Inflater and Deflater
vranyj1
parents: 1537
diff changeset
   524
!JavaZipSupport::Deflater methodsFor:'initialization & release'!
baa8e06aac40 - finalization hack for ZipFile, Inflater and Deflater
vranyj1
parents: 1537
diff changeset
   525
baa8e06aac40 - finalization hack for ZipFile, Inflater and Deflater
vranyj1
parents: 1537
diff changeset
   526
finalize
baa8e06aac40 - finalization hack for ZipFile, Inflater and Deflater
vranyj1
parents: 1537
diff changeset
   527
1539
6d8621e0f106 Fixes in inflater/deflater
vranyj1
parents: 1538
diff changeset
   528
    (z_stream notNil and:[z_stream isValid]) ifTrue:[self end].
1538
baa8e06aac40 - finalization hack for ZipFile, Inflater and Deflater
vranyj1
parents: 1537
diff changeset
   529
baa8e06aac40 - finalization hack for ZipFile, Inflater and Deflater
vranyj1
parents: 1537
diff changeset
   530
    "Created: / 20-07-2012 / 21:50:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
baa8e06aac40 - finalization hack for ZipFile, Inflater and Deflater
vranyj1
parents: 1537
diff changeset
   531
! !
baa8e06aac40 - finalization hack for ZipFile, Inflater and Deflater
vranyj1
parents: 1537
diff changeset
   532
1546
1293d14946b6 - JavaVM
vranyj1
parents: 1543
diff changeset
   533
!JavaZipSupport::Inflater methodsFor:'* As yet uncategorized *'!
1293d14946b6 - JavaVM
vranyj1
parents: 1543
diff changeset
   534
1293d14946b6 - JavaVM
vranyj1
parents: 1543
diff changeset
   535
> aSmallInteger
1293d14946b6 - JavaVM
vranyj1
parents: 1543
diff changeset
   536
    ^z_stream address > 0
1293d14946b6 - JavaVM
vranyj1
parents: 1543
diff changeset
   537
1293d14946b6 - JavaVM
vranyj1
parents: 1543
diff changeset
   538
    "Created: / 23-07-2012 / 21:06:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1293d14946b6 - JavaVM
vranyj1
parents: 1543
diff changeset
   539
! !
1293d14946b6 - JavaVM
vranyj1
parents: 1543
diff changeset
   540
952
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   541
!JavaZipSupport::Inflater methodsFor:'accessing'!
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   542
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   543
vm: javaVM
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
    vm := javaVM.
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
    "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
   548
! !
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   549
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   550
!JavaZipSupport::Inflater methodsFor:'inflater methods'!
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
adler
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   553
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   554
%{
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   555
	RETURN ( __MKEXTERNALADDRESS ( __zStreamVal(__INST(z_stream))->adler ) );
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
OpenJDK 7 Implementation:
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
JNIEXPORT jint JNICALL
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   562
Java_java_util_zip_Inflater_getAdler(JNIEnv *env, jclass cls, jlong addr)
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
    return ((z_stream *)jlong_to_ptr(addr))->adler;
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
"
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   567
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   568
    "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
   569
!
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
bytesRead
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
	RETURN ( __MKSMALLINT( __zStreamVal(__INST(z_stream))->total_in));
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   575
%}
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   576
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   577
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   578
"
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   579
OpenJDK 7 Implementation:
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   580
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   581
JNIEXPORT jlong JNICALL
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   582
Java_java_util_zip_Inflater_getBytesRead(JNIEnv *env, jclass cls, jlong addr)
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   583
{
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   584
    return ((z_stream *)jlong_to_ptr(addr))->total_in;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   585
}
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   586
"
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   587
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   588
    "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
   589
!
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   590
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   591
bytesWritten
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   592
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   593
%{
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   594
	RETURN ( __MKSMALLINT( __zStreamVal(__INST(z_stream))->total_out));
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   595
%}
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   596
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   597
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   598
"
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   599
OpenJDK 7 Implementation:
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   600
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   601
JNIEXPORT jlong JNICALL
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   602
Java_java_util_zip_Inflater_getBytesWritten(JNIEnv *env, jclass cls, jlong addr)
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   603
{
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   604
    return ((z_stream *)jlong_to_ptr(addr))->total_out;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   605
}
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   606
"
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   607
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   608
    "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
   609
!
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   610
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   611
end
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   612
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   613
	| ok |
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   614
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   615
	ok := true.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   616
	
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   617
%{
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   618
    if (inflateEnd(__zStreamVal(__INST(z_stream))) == Z_STREAM_ERROR) {
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   619
		ok = false;
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
%}.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   622
	z_stream free.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   623
	ok ifFalse:[
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   624
        vm internalError: 'Cannot call inflateEnd()'.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   625
	].
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   626
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   627
"
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   628
OpenJDK 7 Implementation:
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   629
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   630
JNIEXPORT void JNICALL
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   631
Java_java_util_zip_Inflater_end(JNIEnv *env, jclass cls, jlong addr)
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
    if (inflateEnd(jlong_to_ptr(addr)) == Z_STREAM_ERROR) {
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   634
        JNU_ThrowInternalError(env, 0);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   635
    } else {
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   636
        free(jlong_to_ptr(addr));
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   637
    }
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   638
}
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
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   642
    "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
   643
!
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   644
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   645
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
   646
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   647
	| in_buf in_off in_len finished needDict errorType errorMsg ret |
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   648
	in_buf := jinflater instVarNamed:#buf.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   649
	in_off := jinflater instVarNamed:#off.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   650
	in_len := jinflater instVarNamed:#len.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   651
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   652
	finished := needDict := 0.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   653
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   654
%{
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   655
#define strm (__zStreamVal(__INST(z_stream)))
963
7181c835cc9d Fixes for Borland C compiler
vranyj1
parents: 952
diff changeset
   656
        int code, consumed;
7181c835cc9d Fixes for Borland C compiler
vranyj1
parents: 952
diff changeset
   657
        
952
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   658
	strm->next_in = (Bytef *) (__ByteArrayInstPtr(in_buf)->ba_element + __intVal(in_off));
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   659
	strm->next_out = (Bytef *) (__ByteArrayInstPtr(out_buf)->ba_element + __intVal(out_off));
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   660
	strm->avail_in = __intVal(in_len);	
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   661
	strm->avail_out = __intVal(out_len);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   662
963
7181c835cc9d Fixes for Borland C compiler
vranyj1
parents: 952
diff changeset
   663
	
952
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   664
	code = inflate(strm, Z_PARTIAL_FLUSH);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   665
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   666
	switch (code) {
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   667
		case Z_STREAM_END:
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   668
			finished = __MKSMALLINT(1);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   669
			/* fall through */
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   670
		case Z_OK:
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   671
			consumed = __intVal(in_len) - strm->avail_in;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   672
			in_off = __MKSMALLINT(_intVal(in_off) + consumed);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   673
			in_len = __MKSMALLINT(_intVal(in_len) - consumed);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   674
			ret = __MKSMALLINT(__intVal(out_len) - strm->avail_out);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   675
			break;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   676
		case Z_NEED_DICT:
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   677
			needDict = __MKSMALLINT(1);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   678
			/* Might have consumed some input here! */
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   679
			consumed = __intVal(in_len) - strm->avail_in;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   680
			in_off = __MKSMALLINT(_intVal(in_off) + consumed);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   681
			in_len = __MKSMALLINT(_intVal(in_len) - consumed);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   682
			ret = __MKSMALLINT(0);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   683
			break;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   684
		case Z_BUF_ERROR:
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   685
			ret = __MKSMALLINT(0);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   686
			break;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   687
		case Z_DATA_ERROR:
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   688
            errorMsg = __MKSTRING(__zStreamVal(__INST(z_stream))->msg);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   689
            errorType = @symbol(DataFormatException);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   690
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   691
			break;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   692
		case Z_MEM_ERROR:
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   693
            errorType = @symbol(OutOfMemoryError);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   694
			break;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   695
		default:
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   696
            errorMsg = __MKSTRING(__zStreamVal(__INST(z_stream))->msg);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   697
            errorType = @symbol(InternalError);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   698
			break;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   699
    }	
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   700
#undef strm
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   701
%}.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   702
    errorType == #DataFormatException ifTrue:[
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   703
        vm throwDataFormatException: errorMsg.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   704
        ^0.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   705
    ].
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   706
    errorType == #OutOfMemoryError ifTrue:[
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   707
        vm throwOutOfMemoryError.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   708
        ^0.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   709
    ].
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   710
    errorType == #InternalError ifTrue:[
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   711
        vm internalError: errorMsg.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   712
        ^0.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   713
    ].
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   714
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   715
	jinflater instVarNamed:#off put: in_off.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   716
	jinflater instVarNamed:#len put: in_len.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   717
	jinflater instVarNamed:#finished put: finished.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   718
	jinflater instVarNamed:#needDict put: needDict.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   719
	^ret
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   720
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   721
"
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   722
OpenJDK 7 Implementation
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
JNIEXPORT jint JNICALL
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   725
Java_java_util_zip_Inflater_inflateBytes(JNIEnv *env, jobject this, jlong addr,
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   726
                                         jarray b, jint off, jint len)
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
    z_stream *strm = jlong_to_ptr(addr);
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
    jarray this_buf = (jarray)(*env)->GetObjectField(env, this, bufID);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   731
    jint this_off = (*env)->GetIntField(env, this, offID);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   732
    jint this_len = (*env)->GetIntField(env, this, lenID);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   733
    jbyte *in_buf;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   734
    jbyte *out_buf;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   735
    int ret;
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
     * Avoid excess copying.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   738
     *   zlib stream usually has a few bytes of overhead for header info
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   739
     *   (depends on the underlying data)
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
     *   (a) 5 bytes per 16KB
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   742
     *   (b) 6 bytes for entire stream
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   743
     *   (c) 4 bytes for gzip header
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   744
     *   (d) 2 bytes for crc
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   745
     *
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   746
     * Use 20 bytes as the 'safe cutoff' number.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   747
     */
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   748
    jint in_len = MIN2(this_len, len + 20);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   749
    jint consumed;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   750
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   751
    in_buf = (jbyte *) malloc(in_len);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   752
    if (in_buf == 0) {
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   753
        JNU_ThrowOutOfMemoryError(env, 0);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   754
        return 0;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   755
    }
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   756
    (*env)->GetByteArrayRegion(env, this_buf, this_off, in_len, in_buf);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   757
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   758
    out_buf = (jbyte *) malloc(len);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   759
    if (out_buf == 0) {
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   760
        free(in_buf);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   761
        JNU_ThrowOutOfMemoryError(env, 0);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   762
        return 0;
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
    strm->next_in  = (Bytef *) in_buf;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   766
    strm->next_out = (Bytef *) out_buf;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   767
    strm->avail_in  = in_len;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   768
    strm->avail_out = len;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   769
    ret = inflate(strm, Z_PARTIAL_FLUSH);
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
    if (ret == Z_STREAM_END || ret == Z_OK) {
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   772
        (*env)->SetByteArrayRegion(env, b, off, len - strm->avail_out, out_buf);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   773
    }
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   774
    free(out_buf);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   775
    free(in_buf);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   776
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   777
    switch (ret) {
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   778
    case Z_STREAM_END:
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   779
        (*env)->SetBooleanField(env, this, finishedID, JNI_TRUE);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   780
        /* fall through */
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   781
    case Z_OK:
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   782
        consumed = in_len - strm->avail_in;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   783
        (*env)->SetIntField(env, this, offID, this_off + consumed);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   784
        (*env)->SetIntField(env, this, lenID, this_len - consumed);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   785
        return len - strm->avail_out;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   786
    case Z_NEED_DICT:
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   787
        (*env)->SetBooleanField(env, this, needDictID, JNI_TRUE);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   788
        /* Might have consumed some input here!! */
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   789
        consumed = in_len - strm->avail_in;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   790
        (*env)->SetIntField(env, this, offID, this_off + consumed);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   791
        (*env)->SetIntField(env, this, lenID, this_len - consumed);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   792
        return 0;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   793
    case Z_BUF_ERROR:
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   794
        return 0;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   795
    case Z_DATA_ERROR:
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   796
        ThrowDataFormatException(env, strm->msg);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   797
        return 0;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   798
    case Z_MEM_ERROR:
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   799
        JNU_ThrowOutOfMemoryError(env, 0);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   800
        return 0;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   801
    default:
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   802
        JNU_ThrowInternalError(env, strm->msg);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   803
        return 0;
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
"
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
    "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
   810
!
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
init: nowrap
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   813
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   814
    | z_stream_size errorType errorMsg |
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   815
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   816
%{  z_stream_size = __MKSMALLINT(sizeof(z_stream)); %}.
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
    z_stream := ExternalBytes unprotectedNew: z_stream_size.
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
    switch (inflateInit2(__zStreamVal(__INST(z_stream)), nowrap ? -MAX_WBITS : MAX_WBITS)) {
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   823
        case Z_OK:
1538
baa8e06aac40 - finalization hack for ZipFile, Inflater and Deflater
vranyj1
parents: 1537
diff changeset
   824
            break;
952
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   825
        case Z_MEM_ERROR:
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   826
            errorType = @symbol(OutOfMemoryError);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   827
            break;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   828
        default:
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   829
            errorMsg = __MKSTRING(__zStreamVal(__INST(z_stream))->msg);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   830
            errorType = @symbol(InternalError);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   831
            break;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   832
    }    
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   833
%}.
1538
baa8e06aac40 - finalization hack for ZipFile, Inflater and Deflater
vranyj1
parents: 1537
diff changeset
   834
    errorType isNil ifTrue:[
1746
475fce490520 - Use ZipInflaters array (no direct referenceto JavaZipSupport::Inflater/Deflater in Java objects)
vranyj1
parents: 1546
diff changeset
   835
"/        self registerForFinalization.
1539
6d8621e0f106 Fixes in inflater/deflater
vranyj1
parents: 1538
diff changeset
   836
        ^self
1538
baa8e06aac40 - finalization hack for ZipFile, Inflater and Deflater
vranyj1
parents: 1537
diff changeset
   837
    ].
952
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   838
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   839
    z_stream free.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   840
    errorType == #OutOfMemoryError ifTrue:[
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   841
        vm throwOutOfMemoryError.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   842
        ^self.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   843
    ].
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   844
    errorType == #InternalError ifTrue:[
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   845
        vm internalError: errorMsg.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   846
        ^self.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   847
    ].
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   848
    
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   849
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   850
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   851
    "
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   852
OpenJDK 7 Implementation:
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   853
JNIEXPORT jlong JNICALL
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   854
Java_java_util_zip_Inflater_init(JNIEnv *env, jclass cls, jboolean nowrap)
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   855
{
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   856
    z_stream *strm = calloc(1, sizeof(z_stream));
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   857
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   858
    if (strm == 0) {
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   859
        JNU_ThrowOutOfMemoryError(env, 0);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   860
        return jlong_zero;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   861
    } else {
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   862
        char *msg;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   863
        switch (inflateInit2(strm, nowrap ? -MAX_WBITS : MAX_WBITS)) {
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   864
          case Z_OK:
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   865
            return ptr_to_jlong(strm);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   866
          case Z_MEM_ERROR:
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   867
            free(strm);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   868
            JNU_ThrowOutOfMemoryError(env, 0);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   869
            return jlong_zero;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   870
          default:
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   871
            msg = strm->msg;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   872
            free(strm);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   873
            JNU_ThrowInternalError(env, msg);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   874
            return jlong_zero;
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   875
        }
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   876
    }
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   877
}
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   878
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   879
    "
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   880
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   881
    "Created: / 29-08-2011 / 17:22:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1746
475fce490520 - Use ZipInflaters array (no direct referenceto JavaZipSupport::Inflater/Deflater in Java objects)
vranyj1
parents: 1546
diff changeset
   882
    "Modified: / 25-10-2012 / 20:28:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
952
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   883
!
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   884
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   885
reset
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   886
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   887
%{
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   888
	if (inflateReset(__zStreamVal(__INST(z_stream))) == Z_OK) {
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   889
		RETURN ( self );
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   890
	}
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   891
%}.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   892
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   893
	vm internalError: 'Cannot reset inflater'.
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   894
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   895
"
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   896
OpenJDK 7 Implementation:
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   897
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   898
JNIEXPORT void JNICALL
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   899
Java_java_util_zip_Inflater_reset(JNIEnv *env, jclass cls, jlong addr)
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   900
{
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   901
    if (inflateReset(jlong_to_ptr(addr)) !!= Z_OK) {
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   902
        JNU_ThrowInternalError(env, 0);
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   903
    }
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   904
}
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   905
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   906
"
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   907
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   908
    "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
   909
! !
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   910
1538
baa8e06aac40 - finalization hack for ZipFile, Inflater and Deflater
vranyj1
parents: 1537
diff changeset
   911
!JavaZipSupport::Inflater methodsFor:'initialization & release'!
baa8e06aac40 - finalization hack for ZipFile, Inflater and Deflater
vranyj1
parents: 1537
diff changeset
   912
baa8e06aac40 - finalization hack for ZipFile, Inflater and Deflater
vranyj1
parents: 1537
diff changeset
   913
finalize
baa8e06aac40 - finalization hack for ZipFile, Inflater and Deflater
vranyj1
parents: 1537
diff changeset
   914
1539
6d8621e0f106 Fixes in inflater/deflater
vranyj1
parents: 1538
diff changeset
   915
    (z_stream notNil and:[z_stream isValid]) ifTrue:[self end].
1538
baa8e06aac40 - finalization hack for ZipFile, Inflater and Deflater
vranyj1
parents: 1537
diff changeset
   916
baa8e06aac40 - finalization hack for ZipFile, Inflater and Deflater
vranyj1
parents: 1537
diff changeset
   917
    "Created: / 20-07-2012 / 21:50:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
baa8e06aac40 - finalization hack for ZipFile, Inflater and Deflater
vranyj1
parents: 1537
diff changeset
   918
! !
baa8e06aac40 - finalization hack for ZipFile, Inflater and Deflater
vranyj1
parents: 1537
diff changeset
   919
952
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   920
!JavaZipSupport class methodsFor:'documentation'!
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   921
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   922
version_SVN
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   923
    ^ '$Id$'
7afd3529b9fa More natives for java.util.zip.Inflater
vranyj1
parents:
diff changeset
   924
! !