|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. ! 3: * ! 4: * @APPLE_LICENSE_HEADER_START@ ! 5: * ! 6: * Portions Copyright (c) 1999 Apple Computer, Inc. All Rights ! 7: * Reserved. This file contains Original Code and/or Modifications of ! 8: * Original Code as defined in and that are subject to the Apple Public ! 9: * Source License Version 1.1 (the "License"). You may not use this file ! 10: * except in compliance with the License. Please obtain a copy of the ! 11: * License at http://www.apple.com/publicsource and read it before using ! 12: * this file. ! 13: * ! 14: * The Original Code and all software distributed under the License are ! 15: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER ! 16: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, ! 17: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, ! 18: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the ! 19: * License for the specific language governing rights and limitations ! 20: * under the License. ! 21: * ! 22: * @APPLE_LICENSE_HEADER_END@ ! 23: */ ! 24: ! 25: /* ! 26: File: HFSUnicodeWrappers.h ! 27: ! 28: Contains: IPI to Unicode routines used by File Manager. ! 29: ! 30: Version: HFS Plus 1.0 ! 31: ! 32: Written by: Mark Day ! 33: ! 34: Copyright: � 1996-1997 by Apple Computer, Inc., all rights reserved. ! 35: ! 36: File Ownership: ! 37: ! 38: DRI: xxx put dri here xxx ! 39: ! 40: Other Contact: xxx put other contact here xxx ! 41: ! 42: Technology: xxx put technology here xxx ! 43: ! 44: Writers: ! 45: ! 46: (DSH) Deric Horn ! 47: (msd) Mark Day ! 48: (djb) Don Brady ! 49: ! 50: Change History (most recent first): ! 51: ! 52: <CS11> 11/16/97 djb Change Unicode.h to UnicodeConverter.h. ! 53: <CS10> 11/7/97 msd Remove prototype for CompareUnicodeNames(). Add prototype for ! 54: FastUnicodeCompare(). ! 55: <CS9> 10/13/97 djb Add encoding/index macros and add prototypes for new Get/Set ! 56: encodding routines. ! 57: <CS8> 9/15/97 djb InitUnicodeConverter now takes a boolean. ! 58: <CS7> 9/10/97 msd Add prototype for InitializeEncodingContext. ! 59: <CS6> 6/26/97 DSH Include "MockConverter" prototype for DFA usage. ! 60: <CS5> 6/25/97 DSH Removed Prototype definitions, and checked in Unicode.h and ! 61: TextCommon.h from Julio Gonzales into InternalInterfaces. ! 62: <CS4> 6/25/97 msd Add prototypes for some new Unicode routines that haven't ! 63: appeared in MasterInterfaces yet. ! 64: <CS3> 6/18/97 djb Add more ConversionContexts routines. ! 65: <CS2> 6/13/97 djb Switched to ConvertUnicodeToHFSName, ConvertHFSNameToUnicode, & ! 66: CompareUnicodeNames. ! 67: <CS1> 4/28/97 djb first checked in ! 68: <HFS1> 12/12/96 msd first checked in ! 69: ! 70: */ ! 71: ! 72: #if TARGET_OS_MAC ! 73: #include <Types.h> ! 74: #include <UnicodeConverter.h> ! 75: #include <TextCommon.h> ! 76: #elif TARGET_OS_RHAPSODY ! 77: #ifndef __MACOSTYPES__ ! 78: #include "system/MacOSTypes.h" ! 79: #endif ! 80: #ifndef __MACOSSTUBS__ ! 81: #include "system/MacOSStubs.h" ! 82: #endif ! 83: #endif /* TARGET_OS_MAC */ ! 84: ! 85: #include "../HFSVolumes.h" ! 86: ! 87: // Encoding vs. Index ! 88: // ! 89: // For runtime table lookups and for the volume encoding bitmap we ! 90: // need to map some encodings to keep them in a reasonable range. ! 91: // ! 92: ! 93: enum { ! 94: kIndexMacUkrainian = 48, // MacUkrainian encoding is 152 ! 95: kIndexMacFarsi = 49 // MacFarsi encoding is 140 ! 96: }; ! 97: ! 98: #define MapEncodingToIndex(e) \ ! 99: ( (e) < 48 ? (e) : ( (e) == kTextEncodingMacUkrainian ? kIndexMacUkrainian : ( (e) == kTextEncodingMacFarsi ? kIndexMacFarsi : kTextEncodingMacRoman) ) ) ! 100: ! 101: #define MapIndexToEncoding(i) \ ! 102: ( (i) == kIndexMacFarsi ? kTextEncodingMacFarsi : ( (i) == kIndexMacUkrainian ? kTextEncodingMacUkrainian : (i) ) ) ! 103: ! 104: #define ValidMacEncoding(e) \ ! 105: ( ((e) < 39) || ((e) == kTextEncodingMacFarsi) || ((e) == kTextEncodingMacUkrainian) ) ! 106: ! 107: ! 108: ! 109: extern OSErr InitUnicodeConverter( Boolean forBootVolume ); ! 110: ! 111: extern TextEncoding GetDefaultTextEncoding( void ); ! 112: ! 113: extern OSErr SetDefaultTextEncoding( TextEncoding encoding ); ! 114: ! 115: extern ItemCount CountInstalledEncodings( void ); ! 116: ! 117: extern OSErr GetTextEncodingForFont( ConstStr255Param fontName, UInt32 * textEncoding ); ! 118: ! 119: ! 120: ! 121: /* ! 122: Convert a Unicode name (UniStr255) to an HFS name (Str31 or Str27). ! 123: ! 124: If cnid equals kHFSRootFolderID, then the HFS name will be limited to 27 characters ! 125: */ ! 126: #if 0 ! 127: extern OSErr ConvertUnicodeToHFSName( ConstHFSUniStr255Param unicodeName, TextEncoding encoding, HFSCatalogNodeID cnid, Str31 hfsName ); ! 128: #endif ! 129: ! 130: ! 131: /* ! 132: Convert an HFS name (Str31 or Str27) to a Unicode name (UniStr255). ! 133: */ ! 134: ! 135: extern OSErr ConvertHFSNameToUnicode( ConstStr31Param hfsName, TextEncoding encoding, HFSUniStr255 *unicodeName ); ! 136: ! 137: ! 138: extern OSErr ConvertUTF8ToUnicode ( ByteCount srcLen, ! 139: const unsigned char* srcStr, ! 140: ByteCount maxDstLen, ! 141: ByteCount *actualDstLen, ! 142: UniCharArrayPtr dstStr ); ! 143: ! 144: extern OSErr ConvertUnicodeToUTF8 ( ByteCount srcLen, ! 145: ConstUniCharArrayPtr srcStr, ! 146: ByteCount maxDstLen, ! 147: ByteCount *actualDstLen, ! 148: unsigned char* dstStr ); ! 149: ! 150: extern OSErr ConvertUTF8ToMacRoman (ByteCount srcLen, ! 151: const unsigned char* srcStr, ! 152: Str31 dstStr); ! 153: ! 154: extern OSErr ConvertMacRomanToUTF8 (Str31 srcStr, ! 155: ByteCount maxDstLen, ! 156: ByteCount *actualDstLen, ! 157: unsigned char* dstStr); ! 158: ! 159: ! 160: /* ! 161: This routine compares two Unicode names based on an ordering defined by the HFS Plus B-tree. ! 162: This ordering must stay fixed for all time. ! 163: ! 164: Output: ! 165: -n name1 < name2 (i.e. name 1 sorts before name 2) ! 166: 0 name1 = name2 ! 167: +n name1 > name2 ! 168: ! 169: NOTE: You should not depend on the magnitude of the result, just its sign. That is, when name1 < name2, then any ! 170: negative number may be returned. ! 171: */ ! 172: ! 173: extern SInt32 FastUnicodeCompare(register ConstUniCharArrayPtr str1, register ItemCount length1, ! 174: register ConstUniCharArrayPtr str2, register ItemCount length2); ! 175: ! 176: ! 177: extern SInt32 FastRelString( ConstStr255Param str1, ConstStr255Param str2 ); ! 178: ! 179: extern OSErr InstallConversionContextsForInstalledScripts( void ); ! 180: ! 181: ! 182: extern OSErr InstallVolumeConversionContexts( UInt64 encodingsBitmap ); ! 183: ! 184: ! 185: extern OSErr InitializeEncodingContext( TextEncoding encoding, FSVarsRec *fsVars ); ! 186: ! 187: ! 188: extern HFSCatalogNodeID GetEmbeddedFileID( ConstStr31Param filename, UInt32 *prefixLength ); ! 189: ! 190: extern OSErr MockConvertFromUnicodeToPString( ByteCount unicodeLength, ConstUniCharArrayPtr unicodeStr, ! 191: Str31 pascalStr ); ! 192: ! 193: extern OSErr MockConvertFromPStringToUnicode( ConstStr31Param pascalStr, ByteCount maxUnicodeLen, ! 194: ByteCount *actualUnicodeLen, UniCharArrayPtr unicodeStr );
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.