StuffIt Engine SDK
The SDK performs five major functions: determining file types based on their contents; creating archives from original files (encoding, stuffing, compressing), re-creating original files from archives (decoding, unstuffing, expanding), manipulating items within existing archives (moving, renaming, deleting archive items, and adding new items), and browsing archives content.
StuffIt SDK Specifications:
The SDK provides C interface and includes dynamic libraries only. StuffIt SDK Mac OS X 10.4 and higher and was designed to work with Xcode 2.5 and higher and the following Windows platforms: NT, 2000, XP, 2003 and Vista. The SDK was designed to work with MS Visual Studio 2005 Visual C++ 8.0.
To improve compression/expansion performance SDK has an option to create optimum number of threads per operation on machines with multiple processors and/or hyper-threading processors. Thus, SDK will create four threads for a single compression operation on a machine with four processors. On average you will see 20% to 85% time improvement compare to single thread compression depending on the machine characteristics and a number of processors.
StuffIt SDK multi-threading implementation is based on PThreads and uses QpThread library designed and implemented by Pavel Krauz Copyright (C) 1999. The thread library is free software and distributed under the Lesser GNU Public License (LGPL).
- Expansion support for 7z archives
- Expansion support for segmented Zip
- Expansion support for split archives
- Expansion support for LZMA
- Browse/extract support for compressed tar
The StuffIt Engine SDK is a cross-platform suite of APIs allowing a client to access the StuffIt Engine for basic compression and expansion as well as more advanced tasks such as manipulation of an archive's contents.
In order for the SDK to be cross platform, certain data types and object representations needed to be abstracted. String and references to file system objects need to be converted from their platform specific types to their respective StuffIt SDK types.
StringRef is the data type used to expose string functionality in the SDK. A StringRef can be created in a number of ways depending on the platform. For instance, a C string or Pascal string may be used to create a StringRef on Windows or Mac OS X, but only the Mac supports creating a StringRef from the native CFString object.
An FSObjectRef is the sole way of providing objects to the SDK that represent an item within the file system. Similar to StringRefs, creation of an FSObjectRef varies by platform.
The SDK uses notifications so that the client can provide it's own progress user interface as well as other interactions that might require user feedback.
Updates from previous version.
Version 12 of the StuffIt SDK added specific file formats compressors were added to sitx format to support the following file types: jpeg, mp3, bmp, gif, png, tiff, pdf, psd, jpeg2k, jpeg lossless, pict, ptt5 and pxm.
Version 12 also added zip content recompression option to sitx format. This allows to recompress zip archives content when being added to sitx archive that results in better compression ratio. The zip archive is reconstructed on expansion.
The SDK kit, sdk-13.0.0.*-win32-msvc9-release.zip kit was built with MS Visual C++ 2008 - Microsoft Visual Studio 2008 Version 9.0
For more runtime control, the SDK has an option of using notifications and callbacks mechanism.
We included sample applications projects and sources for your references on how to use the SDK to perform the five major functions.