19 #ifndef __UNICODECONVERTER__
20 #define __UNICODECONVERTER__
26 #ifndef __TEXTCOMMON__
46 #if PRAGMA_STRUCT_ALIGN
47 #pragma options align = mac68k
48 #elif PRAGMA_STRUCT_PACKPUSH
50 #elif PRAGMA_STRUCT_PACK
56 typedef struct OpaqueUnicodeToTextInfo *UnicodeToTextInfo;
57 typedef struct OpaqueUnicodeToTextRunInfo *UnicodeToTextRunInfo;
59 typedef const UnicodeToTextInfo ConstUnicodeToTextInfo;
62 enum { kUnicodeUseLatestMapping = -1, kUnicodeUseHFSPlusMapping = 4 };
66 TextEncoding unicodeEncoding;
67 TextEncoding otherEncoding;
75 kUnicodeUseFallbacksBit = 0,
76 kUnicodeKeepInfoBit = 1,
77 kUnicodeDirectionalityBits = 2,
78 kUnicodeVerticalFormBit = 4,
79 kUnicodeLooseMappingsBit = 5,
80 kUnicodeStringUnterminatedBit = 6,
81 kUnicodeTextRunBit = 7,
82 kUnicodeKeepSameEncodingBit = 8,
83 kUnicodeForceASCIIRangeBit = 9,
84 kUnicodeNoHalfwidthCharsBit = 10,
85 kUnicodeTextRunHeuristicsBit = 11
89 kUnicodeUseFallbacksMask = 1L << kUnicodeUseFallbacksBit,
90 kUnicodeKeepInfoMask = 1L << kUnicodeKeepInfoBit,
91 kUnicodeDirectionalityMask = 3L << kUnicodeDirectionalityBits,
92 kUnicodeVerticalFormMask = 1L << kUnicodeVerticalFormBit,
93 kUnicodeLooseMappingsMask = 1L << kUnicodeLooseMappingsBit,
94 kUnicodeStringUnterminatedMask = 1L << kUnicodeStringUnterminatedBit,
95 kUnicodeTextRunMask = 1L << kUnicodeTextRunBit,
96 kUnicodeKeepSameEncodingMask = 1L << kUnicodeKeepSameEncodingBit,
97 kUnicodeForceASCIIRangeMask = 1L << kUnicodeForceASCIIRangeBit,
98 kUnicodeNoHalfwidthCharsMask = 1L << kUnicodeNoHalfwidthCharsBit,
99 kUnicodeTextRunHeuristicsMask = 1L << kUnicodeTextRunHeuristicsBit
104 kUnicodeDefaultDirection = 0,
105 kUnicodeLeftToRight = 1,
106 kUnicodeRightToLeft = 2
111 kUnicodeDefaultDirectionMask = kUnicodeDefaultDirection
112 << kUnicodeDirectionalityBits,
113 kUnicodeLeftToRightMask = kUnicodeLeftToRight << kUnicodeDirectionalityBits,
114 kUnicodeRightToLeftMask = kUnicodeRightToLeft << kUnicodeDirectionalityBits
140 kUnicodeMatchUnicodeBaseBit = 0,
141 kUnicodeMatchUnicodeVariantBit = 1,
142 kUnicodeMatchUnicodeFormatBit = 2,
143 kUnicodeMatchOtherBaseBit = 3,
144 kUnicodeMatchOtherVariantBit = 4,
145 kUnicodeMatchOtherFormatBit = 5
149 kUnicodeMatchUnicodeBaseMask = 1L << kUnicodeMatchUnicodeBaseBit,
150 kUnicodeMatchUnicodeVariantMask = 1L << kUnicodeMatchUnicodeVariantBit,
151 kUnicodeMatchUnicodeFormatMask = 1L << kUnicodeMatchUnicodeFormatBit,
152 kUnicodeMatchOtherBaseMask = 1L << kUnicodeMatchOtherBaseBit,
153 kUnicodeMatchOtherVariantMask = 1L << kUnicodeMatchOtherVariantBit,
154 kUnicodeMatchOtherFormatMask = 1L << kUnicodeMatchOtherFormatBit
158 enum { kUnicodeFallbackSequencingBits = 0 };
161 kUnicodeFallbackSequencingMask = 3L << kUnicodeFallbackSequencingBits,
162 kUnicodeFallbackInterruptSafeMask =
168 kUnicodeFallbackDefaultOnly = 0L,
169 kUnicodeFallbackCustomOnly = 1L,
170 kUnicodeFallbackDefaultFirst = 2L,
171 kUnicodeFallbackCustomFirst = 3L
176 UniChar *iSrcUniStr, ByteCount iSrcUniStrLen, ByteCount *oSrcConvLen,
177 TextPtr oDestStr, ByteCount iDestStrLen, ByteCount *oDestConvLen,
179 typedef STACK_UPP_TYPE(UnicodeToTextFallbackProcPtr) UnicodeToTextFallbackUPP;
188 UnicodeToTextFallbackUPP
190 #if !OPAQUE_UPP_TYPES
192 uppUnicodeToTextFallbackProcInfo = 0x003FFFF0
196 inline UnicodeToTextFallbackUPP
199 (ProcPtr)(userRoutine), uppUnicodeToTextFallbackProcInfo,
200 GetCurrentArchitecture());
203 #define NewUnicodeToTextFallbackUPP(userRoutine) \
204 (UnicodeToTextFallbackUPP) NewRoutineDescriptor( \
205 (ProcPtr)(userRoutine), uppUnicodeToTextFallbackProcInfo, \
206 GetCurrentArchitecture())
220 #if !OPAQUE_UPP_TYPES
226 #define DisposeUnicodeToTextFallbackUPP(userUPP) \
227 DisposeRoutineDescriptor(userUPP)
241 ByteCount *oSrcConvLen, TextPtr oDestStr,
242 ByteCount iDestStrLen, ByteCount *oDestConvLen,
243 LogicalAddress iInfoPtr,
245 UnicodeToTextFallbackUPP userUPP);
246 #if !OPAQUE_UPP_TYPES
249 UniChar *iSrcUniStr, ByteCount iSrcUniStrLen, ByteCount *oSrcConvLen,
250 TextPtr oDestStr, ByteCount iDestStrLen, ByteCount *oDestConvLen,
252 UnicodeToTextFallbackUPP userUPP) {
253 return (OSStatus)CALL_EIGHT_PARAMETER_UPP(
254 userUPP, uppUnicodeToTextFallbackProcInfo, iSrcUniStr, iSrcUniStrLen,
255 oSrcConvLen, oDestStr, iDestStrLen, oDestConvLen, iInfoPtr,
259 #define InvokeUnicodeToTextFallbackUPP(iSrcUniStr, iSrcUniStrLen, oSrcConvLen, \
260 oDestStr, iDestStrLen, oDestConvLen, \
261 iInfoPtr, iUnicodeMappingPtr, userUPP) \
262 (OSStatus) CALL_EIGHT_PARAMETER_UPP( \
263 (userUPP), uppUnicodeToTextFallbackProcInfo, (iSrcUniStr), \
264 (iSrcUniStrLen), (oSrcConvLen), (oDestStr), (iDestStrLen), \
265 (oDestConvLen), (iInfoPtr), (iUnicodeMappingPtr))
269 #if CALL_NOT_IN_CARBON || OLDROUTINENAMES
271 #define NewUnicodeToTextFallbackProc(userRoutine) \
272 NewUnicodeToTextFallbackUPP(userRoutine)
273 #define CallUnicodeToTextFallbackProc( \
274 userRoutine, iSrcUniStr, iSrcUniStrLen, oSrcConvLen, oDestStr, \
275 iDestStrLen, oDestConvLen, iInfoPtr, iUnicodeMappingPtr) \
276 InvokeUnicodeToTextFallbackUPP(iSrcUniStr, iSrcUniStrLen, oSrcConvLen, \
277 oDestStr, iDestStrLen, oDestConvLen, \
278 iInfoPtr, iUnicodeMappingPtr, userRoutine)
282 #if TARGET_CPU_68K && !TARGET_RT_MAC_CFM
287 #if CALL_NOT_IN_CARBON
297 InitializeUnicodeConverter(
StringPtr TECFileName);
308 TerminateUnicodeConverter(
void);
350 UnicodeToTextInfo *oUnicodeToTextInfo);
362 UnicodeToTextInfo *oUnicodeToTextInfo);
375 UnicodeToTextRunInfo *oUnicodeToTextInfo);
387 const TextEncoding iEncodings[],
388 UnicodeToTextRunInfo *oUnicodeToTextInfo);
400 ItemCount iNumberOfScriptCodes,
const ScriptCode iScripts[],
401 UnicodeToTextRunInfo *oUnicodeToTextInfo);
472 ByteCount iSourceLen, ConstLogicalAddress iSourceStr,
473 OptionBits iControlFlags, ItemCount iOffsetCount,
474 ByteOffset iOffsetArray[],
475 ItemCount *oOffsetCount,
476 ByteOffset oOffsetArray[],
477 ByteCount iOutputBufLen, ByteCount *oSourceRead,
478 ByteCount *oUnicodeLen, UniChar oUnicodeStr[]);
490 ByteCount iUnicodeLen,
const UniChar iUnicodeStr[],
491 OptionBits iControlFlags, ItemCount iOffsetCount,
492 ByteOffset iOffsetArray[],
493 ItemCount *oOffsetCount,
494 ByteOffset oOffsetArray[],
495 ByteCount iOutputBufLen, ByteCount *oInputRead,
496 ByteCount *oOutputLen, LogicalAddress oOutputStr);
508 ByteCount iUnicodeLen,
const UniChar iUnicodeStr[],
509 OptionBits iControlFlags, ItemCount iOffsetCount,
510 ByteOffset iOffsetArray[],
511 ItemCount *oOffsetCount,
512 ByteOffset oOffsetArray[],
513 ByteCount iOutputBufLen, ByteCount *oInputRead,
514 ByteCount *oOutputLen, LogicalAddress oOutputStr,
515 ItemCount iEncodingRunBufLen,
516 ItemCount *oEncodingRunOutLen,
529 UnicodeToTextRunInfo iUnicodeToTextInfo, ByteCount iUnicodeLen,
530 const UniChar iUnicodeStr[], OptionBits iControlFlags,
531 ItemCount iOffsetCount, ByteOffset iOffsetArray[],
532 ItemCount *oOffsetCount,
533 ByteOffset oOffsetArray[],
534 ByteCount iOutputBufLen, ByteCount *oInputRead, ByteCount *oOutputLen,
535 LogicalAddress oOutputStr, ItemCount iScriptRunBufLen,
536 ItemCount *oScriptRunOutLen,
ScriptCodeRun oScriptCodeRuns[]);
549 ByteCount iSourceLen, ConstLogicalAddress iSourceStr,
550 ByteCount iMaxLen, ByteCount *oTruncatedLen);
563 ByteCount iSourceLen,
const UniChar iSourceStr[],
564 OptionBits iControlFlags, ByteCount iMaxLen,
565 ByteCount *oTruncatedLen);
578 ConstStr255Param iPascalStr,
579 ByteCount iOutputBufLen, ByteCount *oUnicodeLen,
580 UniChar oUnicodeStr[]);
593 ByteCount iUnicodeLen,
const UniChar iUnicodeStr[],
607 ItemCount *oActualCount);
620 ItemCount iMaxCount, ItemCount *oActualCount,
634 UnicodeToTextFallbackUPP iFallback,
635 OptionBits iControlFlags, LogicalAddress iInfoPtr);
648 UnicodeToTextFallbackUPP iFallback,
649 OptionBits iControlFlags, LogicalAddress iInfoPtr);
688 #if PRAGMA_STRUCT_ALIGN
689 #pragma options align = reset
690 #elif PRAGMA_STRUCT_PACKPUSH
692 #elif PRAGMA_STRUCT_PACK
696 #ifdef PRAGMA_IMPORT_OFF
Basic Macintosh data types.
unsigned char * StringPtr
Definition: MacTypes.h:477
Mixed Mode Manager Interfaces.
void DisposeRoutineDescriptor(UniversalProcPtr theUPP)
#define STACK_UPP_TYPE(name)
Definition: MixedMode.h:734
UniversalProcPtr NewRoutineDescriptor(ProcPtr theProc, ProcInfoType theProcInfo, ISAType theISA)
TextEncoding-related types and constants, and prototypes for related functions.
OSStatus ConvertFromTextToUnicode(TextToUnicodeInfo iTextToUnicodeInfo, ByteCount iSourceLen, ConstLogicalAddress iSourceStr, OptionBits iControlFlags, ItemCount iOffsetCount, ByteOffset iOffsetArray[], ItemCount *oOffsetCount, ByteOffset oOffsetArray[], ByteCount iOutputBufLen, ByteCount *oSourceRead, ByteCount *oUnicodeLen, UniChar oUnicodeStr[])
OSStatus TruncateForTextToUnicode(ConstTextToUnicodeInfo iTextToUnicodeInfo, ByteCount iSourceLen, ConstLogicalAddress iSourceStr, ByteCount iMaxLen, ByteCount *oTruncatedLen)
OSStatus TruncateForUnicodeToText(ConstUnicodeToTextInfo iUnicodeToTextInfo, ByteCount iSourceLen, const UniChar iSourceStr[], OptionBits iControlFlags, ByteCount iMaxLen, ByteCount *oTruncatedLen)
OSStatus CreateUnicodeToTextRunInfoByScriptCode(ItemCount iNumberOfScriptCodes, const ScriptCode iScripts[], UnicodeToTextRunInfo *oUnicodeToTextInfo)
OSStatus CreateUnicodeToTextRunInfo(ItemCount iNumberOfMappings, const UnicodeMapping iUnicodeMappings[], UnicodeToTextRunInfo *oUnicodeToTextInfo)
OSStatus CreateUnicodeToTextInfo(ConstUnicodeMappingPtr iUnicodeMapping, UnicodeToTextInfo *oUnicodeToTextInfo)
SInt32 UnicodeMapVersion
Definition: UnicodeConverter.h:61
OSStatus ConvertFromUnicodeToPString(UnicodeToTextInfo iUnicodeToTextInfo, ByteCount iUnicodeLen, const UniChar iUnicodeStr[], Str255 oPascalStr)
OSStatus CreateTextToUnicodeInfoByEncoding(TextEncoding iEncoding, TextToUnicodeInfo *oTextToUnicodeInfo)
OSStatus InvokeUnicodeToTextFallbackUPP(UniChar *iSrcUniStr, ByteCount iSrcUniStrLen, ByteCount *oSrcConvLen, TextPtr oDestStr, ByteCount iDestStrLen, ByteCount *oDestConvLen, LogicalAddress iInfoPtr, ConstUnicodeMappingPtr iUnicodeMappingPtr, UnicodeToTextFallbackUPP userUPP)
void DisposeUnicodeToTextFallbackUPP(UnicodeToTextFallbackUPP userUPP)
#define NewUnicodeToTextFallbackUPP(userRoutine)
Definition: UnicodeConverter.h:203
OSStatus ResetTextToUnicodeInfo(TextToUnicodeInfo ioTextToUnicodeInfo)
OSStatus ResetUnicodeToTextInfo(UnicodeToTextInfo ioUnicodeToTextInfo)
OSStatus ConvertFromUnicodeToText(UnicodeToTextInfo iUnicodeToTextInfo, ByteCount iUnicodeLen, const UniChar iUnicodeStr[], OptionBits iControlFlags, ItemCount iOffsetCount, ByteOffset iOffsetArray[], ItemCount *oOffsetCount, ByteOffset oOffsetArray[], ByteCount iOutputBufLen, ByteCount *oInputRead, ByteCount *oOutputLen, LogicalAddress oOutputStr)
struct OpaqueTextToUnicodeInfo * TextToUnicodeInfo
Definition: UnicodeConverter.h:55
OSStatus DisposeUnicodeToTextRunInfo(UnicodeToTextRunInfo *ioUnicodeToTextRunInfo)
OSStatus ResetUnicodeToTextRunInfo(UnicodeToTextRunInfo ioUnicodeToTextRunInfo)
OSStatus CreateUnicodeToTextRunInfoByEncoding(ItemCount iNumberOfEncodings, const TextEncoding iEncodings[], UnicodeToTextRunInfo *oUnicodeToTextInfo)
OSStatus QueryUnicodeMappings(OptionBits iFilter, ConstUnicodeMappingPtr iFindMapping, ItemCount iMaxCount, ItemCount *oActualCount, UnicodeMapping oReturnedMappings[])
OSStatus SetFallbackUnicodeToText(UnicodeToTextInfo iUnicodeToTextInfo, UnicodeToTextFallbackUPP iFallback, OptionBits iControlFlags, LogicalAddress iInfoPtr)
OSStatus CreateUnicodeToTextInfoByEncoding(TextEncoding iEncoding, UnicodeToTextInfo *oUnicodeToTextInfo)
OSStatus ConvertFromUnicodeToScriptCodeRun(UnicodeToTextRunInfo iUnicodeToTextInfo, ByteCount iUnicodeLen, const UniChar iUnicodeStr[], OptionBits iControlFlags, ItemCount iOffsetCount, ByteOffset iOffsetArray[], ItemCount *oOffsetCount, ByteOffset oOffsetArray[], ByteCount iOutputBufLen, ByteCount *oInputRead, ByteCount *oOutputLen, LogicalAddress oOutputStr, ItemCount iScriptRunBufLen, ItemCount *oScriptRunOutLen, ScriptCodeRun oScriptCodeRuns[])
OSStatus SetFallbackUnicodeToTextRun(UnicodeToTextRunInfo iUnicodeToTextRunInfo, UnicodeToTextFallbackUPP iFallback, OptionBits iControlFlags, LogicalAddress iInfoPtr)
OSStatus CreateTextToUnicodeInfo(ConstUnicodeMappingPtr iUnicodeMapping, TextToUnicodeInfo *oTextToUnicodeInfo)
OSStatus ConvertFromUnicodeToTextRun(UnicodeToTextRunInfo iUnicodeToTextInfo, ByteCount iUnicodeLen, const UniChar iUnicodeStr[], OptionBits iControlFlags, ItemCount iOffsetCount, ByteOffset iOffsetArray[], ItemCount *oOffsetCount, ByteOffset oOffsetArray[], ByteCount iOutputBufLen, ByteCount *oInputRead, ByteCount *oOutputLen, LogicalAddress oOutputStr, ItemCount iEncodingRunBufLen, ItemCount *oEncodingRunOutLen, TextEncodingRun oEncodingRuns[])
OSStatus ConvertFromPStringToUnicode(TextToUnicodeInfo iTextToUnicodeInfo, ConstStr255Param iPascalStr, ByteCount iOutputBufLen, ByteCount *oUnicodeLen, UniChar oUnicodeStr[])
OSStatus ChangeTextToUnicodeInfo(TextToUnicodeInfo ioTextToUnicodeInfo, ConstUnicodeMappingPtr iUnicodeMapping)
OSStatus ChangeUnicodeToTextInfo(UnicodeToTextInfo ioUnicodeToTextInfo, ConstUnicodeMappingPtr iUnicodeMapping)
typedef CALLBACK_API(OSStatus, UnicodeToTextFallbackProcPtr)(UniChar *iSrcUniStr
OSStatus DisposeUnicodeToTextInfo(UnicodeToTextInfo *ioUnicodeToTextInfo)
OSStatus CountUnicodeMappings(OptionBits iFilter, ConstUnicodeMappingPtr iFindMapping, ItemCount *oActualCount)
OSStatus DisposeTextToUnicodeInfo(TextToUnicodeInfo *ioTextToUnicodeInfo)
Definition: TextCommon.h:524
Definition: TextCommon.h:516
Definition: UnicodeConverter.h:65