From 43d65dc03325bcce8561423b9607f7e114355f7d Mon Sep 17 00:00:00 2001 From: ferbas Date: Wed, 13 Jan 2010 09:41:29 +0000 Subject: initial import git-svn-id: https://joinup.ec.europa.eu/svn/pdf-as/trunk@545 7b5415b0-85f9-ee4d-85bd-d5d0c3b42d1c --- .../sources/import/SDK/UnicodeAPI.h | 171 +++++++++++++++++++++ 1 file changed, 171 insertions(+) create mode 100644 Adobe_SigHandler/Adobe.PDF-AS-SigHandler/sources/import/SDK/UnicodeAPI.h (limited to 'Adobe_SigHandler/Adobe.PDF-AS-SigHandler/sources/import/SDK/UnicodeAPI.h') diff --git a/Adobe_SigHandler/Adobe.PDF-AS-SigHandler/sources/import/SDK/UnicodeAPI.h b/Adobe_SigHandler/Adobe.PDF-AS-SigHandler/sources/import/SDK/UnicodeAPI.h new file mode 100644 index 0000000..ad5c683 --- /dev/null +++ b/Adobe_SigHandler/Adobe.PDF-AS-SigHandler/sources/import/SDK/UnicodeAPI.h @@ -0,0 +1,171 @@ +/***********************************************************************/ +/* */ +/* Copyright 1990-1998 Adobe Systems Incorporated. */ +/* All Rights Reserved. */ +/* */ +/* Patents Pending */ +/* */ +/* NOTICE: All information contained herein is the property of Adobe */ +/* Systems Incorporated. Many of the intellectual and technical */ +/* concepts contained herein are proprietary to Adobe, are protected */ +/* as trade secrets, and are made available only to Adobe licensees */ +/* for their internal use. Any reproduction or dissemination of this */ +/* software is strictly forbidden unless prior written permission is */ +/* obtained from Adobe. */ +/* */ +/* PostScript and Display PostScript are trademarks of Adobe Systems */ +/* Incorporated or its subsidiaries and may be registered in certain */ +/* jurisdictions. */ +/* */ +/***********************************************************************/ + +/* + * Name: UnicodeAPI.h + * Purpose: Unicode conversion engine API. + * Author: Jon Reid + * Created: December 7, 1998 + */ + +#ifndef __UnicodeAPI__ +#define __UnicodeAPI__ + + +#ifndef __ASTypes__ +#include "ASTypes.h" +#endif + +#include // Define size_t. + +#ifdef __cplusplus +extern "C" { +#endif + + +/* + ZStrings are represented internally as unterminated Unicode strings. + A conversion engine handles conversions between Unicode and local + encodings. Different clients can provide different conversion engines + according to their needs. + + Each conversion engine can represent encodings in different ways. To + pass different representations through the same C-based API, we use + "poor man's run-time type identification." The following data structure + identifies the type: +*/ + +typedef struct EncodingInfo +{ + long typeID; +} EncodingInfo; + +/* + The typeID is an arbitrary value that identifies the actual + representation. To use "poor man's inheritance," EncodingInfo must be + the first element of the actual data structure. Here is an example of + a simple representation of a Mac script: + + struct MacScript + { + EncodingInfo type; // Set type.typeID to 'MacS' + short script; + }; + + A pointer to an actual representation is cast to an EncodingInfo* for + use in one of the following functions: +*/ + +// Return size of buffer needed to convert multi-byte string to Unicode +// string without terminating null character. +typedef ASAPI ASErr +(*ToUnicodeSizeProc)( + const ASByte* source, // Multi-byte string. + ASUInt32 sourceLength, // Number of bytes to convert. + ASUInt32* bufferSize, + EncodingInfo* encodingInfo + ); + +// Convert multi-byte string to Unicode, up to destBufferSize characters. +// Do not add terminating null character. +typedef ASAPI ASErr +(*ConvertToUnicodeProc)( + const ASByte* source, // Multi-byte string. + ASUInt32 sourceLength, // Number of bytes to convert. + ASUnicode* destination, + ASUInt32 destBufferSize, // Size of destination buffer. + EncodingInfo* encodingInfo + ); + +// Return size of buffer needed to convert from Unicode. Be sure to include +// extra byte for terminating null character or Pascal length. +typedef ASAPI ASErr +(*FromUnicodeSizeProc)( + const ASUnicode* source, // Unterminated Unicode string. + ASUInt32 sourceLength, // Number of characters to convert. + ASUInt32* bufferSize, + EncodingInfo* encodingInfo + ); + +// Convert Unicode to multi-byte string, up to destBufferSize-1 bytes. +// Do *not* add a terminating null character, because this routine is used +// for both C and Pascal strings. +typedef ASAPI ASErr +(*ConvertFromUnicodeProc)( + const ASUnicode* source, // Unterminated Unicode string. + ASUInt32 sourceLength, // Number of characters to convert. + ASByte* destination, + ASUInt32 destBufferSize, // Size of destination buffer. + ASUInt32* convertedLength, // Number of converted bytes (without null). + EncodingInfo* encodingInfo + ); + +/* + These functions must be registered as callbacks with the ZString + plug-in. If the Unicode conversion engine is packaged as a plug-in, + make sure it cannot be unloaded so that its callbacks are always + available. + + The conversion engine takes the encodingInfo and casts it back to a + pointer to the data structure associated with the particular typeID. + If it does not recognize the typeID, it should return kUnknownEncodingType. +*/ + +#define kUnknownEncodingType 'UETp' + + +/* + The Unicode conversion engine may modify the contents of the data + structure passed in encodingInfo. This allows the conversion engine to + pass back more than just an error value and the converted string; it + can more fully describe the conversion results, such as whether + fallback representations were used for characters that do not have + precise representations in the local encoding. One could also ask that + a Unicode string be converted to an encoding that best represents the + string, and the conversion engine would pass back the encoding it chose. + + The byte-order of the Unicode data (big-endian / little-endian) is the + platform's native order, unless specified otherwise in encodingInfo. + + If a conversion routine detects that the buffer is not large enough to + hold the result of a conversion, it should convert as much as it can + and then return an error value of kBufferTooSmallErr. +*/ + +#define kBufferTooSmallErr 'BUFF' + + +/* + The following function is registered separately from the other callbacks: +*/ + +// Compare two Unicode strings, analogous to strcmp except that the strings +// are not null-terminated. +typedef ASAPI int +(*UnicodeCompareProc)( const ASUnicode* str1, ASUInt32 len1, + const ASUnicode* str2, ASUInt32 len2 ); + + +#ifdef __cplusplus +} +#endif + +#endif // __UnicodeAPI__ -- cgit v1.2.3