Unicode C
Unicode C
Transition from BeginCompressStringENC to FirstChunk/LastChunk
Provides instructions for replacing deprecated BeginCompressStringENC method calls with using FirstChunk/LastChunk properties.Chilkat Unicode C Downloads
#include <C_CkStringBuilderW.h>
#include <C_CkCompressionW.h>
#include <C_CkBinDataW.h>
void ChilkatSample(void)
{
BOOL success;
HCkStringBuilderW sbCompressedBase64;
HCkCompressionW compress;
HCkStringBuilderW sbIndex;
int i;
const wchar_t *originalText;
HCkBinDataW bdCompressed;
HCkStringBuilderW sbUncompressedChunk;
success = FALSE;
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
sbCompressedBase64 = CkStringBuilderW_Create();
compress = CkCompressionW_Create();
CkCompressionW_putAlgorithm(compress,L"deflate");
CkCompressionW_putCharset(compress,L"utf-8");
CkCompressionW_putEncodingMode(compress,L"base64");
sbIndex = CkStringBuilderW_Create();
// ----------------------------------------------------------------------------------
// This is the deprecated way of compressing in chunks using Begin/More/End methods..
// ----------------------------------------------------------------------------------
for (i = 0; i <= 24; i++) {
// Note: It is possible (and normal) for a BeginCompress* or MoreCompress* method to return
// an empty string (or 0 bytes). When this happens, the input data is not lost. It will be flushed
// in a subsequent call.
CkStringBuilderW_Clear(sbIndex);
CkStringBuilderW_AppendInt(sbIndex,i);
if (i == 0) {
CkStringBuilderW_Append(sbCompressedBase64,CkCompressionW_beginCompressStringENC(compress,CkStringBuilderW_getAsString(sbIndex)));
}
else {
CkStringBuilderW_Append(sbCompressedBase64,CkCompressionW_moreCompressStringENC(compress,CkStringBuilderW_getAsString(sbIndex)));
}
CkStringBuilderW_Append(sbCompressedBase64,CkCompressionW_moreCompressStringENC(compress,L": This is a line of data to be compressed...\r\n"));
}
// Flush any remaining output.
CkStringBuilderW_Append(sbCompressedBase64,CkCompressionW_endCompressStringENC(compress));
wprintf(L"The base64 encoded compressed text:\n");
wprintf(L"%s\n",CkStringBuilderW_getAsString(sbCompressedBase64));
// Decompress in one call:
originalText = CkCompressionW_decompressStringENC(compress,CkStringBuilderW_getAsString(sbCompressedBase64));
wprintf(L"%s\n",originalText);
// ----------------------------------------------------------------------------------
// This is new way of compressing in chunks using FirstChunk and LastChunk properties
// ----------------------------------------------------------------------------------
CkStringBuilderW_Clear(sbCompressedBase64);
CkCompressionW_putFirstChunk(compress,TRUE);
CkCompressionW_putLastChunk(compress,FALSE);
bdCompressed = CkBinDataW_Create();
sbUncompressedChunk = CkStringBuilderW_Create();
for (i = 0; i <= 24; i++) {
if (i == 24) {
CkCompressionW_putLastChunk(compress,TRUE);
}
CkStringBuilderW_Clear(sbUncompressedChunk);
CkStringBuilderW_AppendInt(sbUncompressedChunk,i);
CkStringBuilderW_Append(sbUncompressedChunk,L": This is a line of data to be compressed...\r\n");
CkCompressionW_CompressSb(compress,sbUncompressedChunk,bdCompressed);
CkCompressionW_putFirstChunk(compress,FALSE);
}
wprintf(L"The base64 encoded compressed text:\n");
wprintf(L"%s\n",CkBinDataW_getEncoded(bdCompressed,L"base64"));
// Decompress in one call:
originalText = CkCompressionW_decompressStringENC(compress,CkBinDataW_getEncoded(bdCompressed,L"base64"));
wprintf(L"%s\n",originalText);
CkStringBuilderW_Dispose(sbCompressedBase64);
CkCompressionW_Dispose(compress);
CkStringBuilderW_Dispose(sbIndex);
CkBinDataW_Dispose(bdCompressed);
CkStringBuilderW_Dispose(sbUncompressedChunk);
}