+ Author: Alexander Hanel
+ Notes: Python Script for compressing and decompressing data using aPLib. Requires
+ dll or shared libary depending on your os. Libraries can be downloaded from Ibsen
+ software - http://www.ibsensoftware.com/products_aPLib.html
+__all__ = [ 'pack', 'pack_safe', 'depack', 'depack_safe', 'aP_depack_asm_fast', 'CB_COMPRESS']
+ CB_COMPRESS = WINFUNCTYPE(c_uint, c_uint, c_uint, c_uint, c_void_p)
+ except Exception as error:
+ CB_COMPRESS = CFUNCTYPE(c_uint, c_uint, c_uint, c_uint, c_void_p)
+ _aplib = CDLL("libaplib.so")
+ except Exception as error:
+ dstlen = _aplib.aPsafe_get_orig_size(data)
+ dst = create_string_buffer(dstlen)
+ dstlen = _aplib.aPsafe_depack(data, srclen, dst, dstlen)
+ return buffer(dst, 0, dstlen)
+ dst = create_string_buffer(dstlen)
+ dstlen = _aplib.aP_depack_asm_fast(data, dst)
+ return buffer(dst, 0, dstlen)
+def compress(data, header=True):
+ dstlen = _aplib.aP_max_packed_size(srclen)
+ dst = create_string_buffer(dstlen)
+ wrkmem = create_string_buffer(_aplib.aP_workmem_size(srclen))
+ dstlen = _aplib.aPsafe_pack(data, dst, srclen, wrkmem, None, 0)
+ compressed = buffer(dst, 0, dstlen)
+ return compressed[HEADER_SIZE:]