#ifndef __7Z_H
#define __7Z_H
-/* #ifndef __cplusplus
-extern "C++" {
-#endif */
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int compress_deflate_7z(const unsigned char* in_data, unsigned in_size, unsigned char* out_data, unsigned *out_size, unsigned num_passes, unsigned num_fast_bytes);
-bool compress_deflate_7z(const unsigned char* in_data, unsigned in_size, unsigned char* out_data, unsigned& out_size, unsigned num_passes, unsigned num_fast_bytes) throw ();
-/* #ifndef __cplusplus
+#ifdef __cplusplus
}
-#endif */
+#endif
#endif
#include "DeflateEncoder.h"
-bool compress_deflate_7z(const unsigned char* in_data, unsigned in_size, unsigned char* out_data, unsigned& out_size, unsigned num_passes, unsigned num_fast_bytes) throw ()
+extern "C" int compress_deflate_7z(const unsigned char* in_data, unsigned in_size,
+ unsigned char* out_data, unsigned *out_size, unsigned num_passes, unsigned num_fast_bytes)
{
- try {
NDeflate::NEncoder::CCoder cc;
if (cc.SetEncoderNumPasses(num_passes) != S_OK)
return false;
ISequentialInStream in(reinterpret_cast<const char*>(in_data), in_size);
- ISequentialOutStream out(reinterpret_cast<char*>(out_data), out_size);
+ ISequentialOutStream out(reinterpret_cast<char*>(out_data), *out_size);
UINT64 in_size_l = in_size;
if (cc.Code(&in, &out, &in_size_l) != S_OK)
return false;
- out_size = out.size_get();
+ *out_size = out.size_get();
if (out.overflow_get())
return false;
return true;
- } catch (...) {
- return false;
- }
}
break;\r
}\r
// limits: passes [1-255], fastbytes [3-257(kMatchMaxLen)]\r
- if(!compress_deflate_7z((unsigned char*)src, srcLen, destPtr, outSize, passes, fastbytes))\r
+ if(!compress_deflate_7z((unsigned char*)src, srcLen, destPtr, &outSize, passes, fastbytes))\r
return 0;\r
\r
if(outSize+6 > destLen) return 0;\r