Home | History | Annotate | Download | only in native
      1 /*
      2  * Licensed to the Apache Software Foundation (ASF) under one or more
      3  * contributor license agreements.  See the NOTICE file distributed with
      4  * this work for additional information regarding copyright ownership.
      5  * The ASF licenses this file to You under the Apache License, Version 2.0
      6  * (the "License"); you may not use this file except in compliance with
      7  * the License.  You may obtain a copy of the License at
      8  *
      9  *     http://www.apache.org/licenses/LICENSE-2.0
     10  *
     11  * Unless required by applicable law or agreed to in writing, software
     12  * distributed under the License is distributed on an "AS IS" BASIS,
     13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     14  * See the License for the specific language governing permissions and
     15  * limitations under the License.
     16  */
     17 
     18 #ifndef ZIP_UTILITIES_H_included
     19 #define ZIP_UTILITIES_H_included
     20 
     21 #include "UniquePtr.h"
     22 #include "jni.h"
     23 #include "zlib.h"
     24 
     25 class NativeZipStream {
     26 public:
     27     UniquePtr<jbyte[]> input;
     28     int inCap;
     29     z_stream stream;
     30 
     31     NativeZipStream();
     32     ~NativeZipStream();
     33     void setDictionary(JNIEnv* env, jbyteArray javaDictionary, int off, int len, bool inflate);
     34     void setInput(JNIEnv* env, jbyteArray buf, jint off, jint len);
     35 
     36 private:
     37     UniquePtr<jbyte[]> mDict;
     38 
     39     // Disallow copy and assignment.
     40     NativeZipStream(const NativeZipStream&);
     41     void operator=(const NativeZipStream&);
     42 };
     43 
     44 NativeZipStream* toNativeZipStream(jlong address);
     45 
     46 void throwExceptionForZlibError(JNIEnv* env, const char* exceptionClassName, int error,
     47         NativeZipStream* stream);
     48 
     49 #endif  // ZIP_UTILITIES_H_included
     50