topical media & game development
lib-of-vs-libs-QTDevWin-CIncludes-StringCompare.h / h
/*
File: StringCompare.h
Contains: Public interfaces for String Comparison and related operations
Version: Technology: Mac OS 8
Release: QuickTime 6.0.2
Copyright: (c) 1985-2001 by Apple Computer, Inc., all rights reserved.
Bugs?: For bug reports, consult the following page on
the World Wide Web:
http://developer.apple.com/bugreporter/
*/
ifndef __STRINGCOMPARE__
define __STRINGCOMPARE__
ifndef __MACTYPES__
include <MacTypes.h>
endif
ifndef __TEXTCOMMON__
include <TextCommon.h>
endif
ifndef __SCRIPT__
include <Script.h>
endif
if PRAGMA_ONCE
#pragma once
endif
ifdef __cplusplus
extern "C" {
endif
if PRAGMA_IMPORT
#pragma import on
endif
if PRAGMA_STRUCT_ALIGN
#pragma options align=mac68k
#elif PRAGMA_STRUCT_PACKPUSH
#pragma pack(push, 2)
#elif PRAGMA_STRUCT_PACK
#pragma pack(2)
endif
/*
Here are the current System 7 routine names and the translations to the older forms.
Please use the newer forms in all new code and migrate the older names out of existing
code as maintenance permits.
NEW NAME OLD NAME OBSOLETE FORM (no handle)
CompareString (Str255) IUCompPString (hp only) IUCompString (hp only)
CompareText (ptr/len) IUMagPString IUMagString
IdenticalString (Str255) IUEqualPString (hp only) IUEqualString (hp only)
IdenticalText (ptr/len) IUMagIDPString IUMagIDString
LanguageOrder IULangOrder
ScriptOrder IUScriptOrder
StringOrder (Str255) IUStringOrder (hp only)
TextOrder (ptr/len) IUTextOrder
RelString
CmpString (a only)
EqualString (hp only)
ReplaceText
Carbon only supports the new names. The old names are undefined for Carbon targets.
InterfaceLib always has exported the old names. For C macros have been defined to allow
the use of the new names. For Pascal and Assembly using the new names will result
in link errors.
*/
enum {
/* Special language code values for Language Order*/
systemCurLang = -2, /* current (itlbLang) lang for system script*/
systemDefLang = -3, /* default (table) lang for system script*/
currentCurLang = -4, /* current (itlbLang) lang for current script*/
currentDefLang = -5, /* default lang for current script*/
scriptCurLang = -6, /* current (itlbLang) lang for specified script*/
scriptDefLang = -7 /* default language for a specified script*/
};
/* obsolete names*/
enum {
iuSystemCurLang = systemCurLang,
iuSystemDefLang = systemDefLang,
iuCurrentCurLang = currentCurLang,
iuCurrentDefLang = currentDefLang,
iuScriptCurLang = scriptCurLang,
iuScriptDefLang = scriptDefLang
};
/*
* Type Select Utils - now public in Carbon
*/
typedef SInt16 TSCode;
enum {
tsPreviousSelectMode = -1,
tsNormalSelectMode = 0,
tsNextSelectMode = 1
};
struct TypeSelectRecord {
unsigned long tsrLastKeyTime;
ScriptCode tsrScript;
Str63 tsrKeyStrokes;
};
typedef struct TypeSelectRecord TypeSelectRecord;
typedef CALLBACK_API( Boolean , IndexToStringProcPtr )(short item, ScriptCode *itemsScript, StringPtr *itemsStringPtr, void *yourDataPtr);
typedef STACK_UPP_TYPE(IndexToStringProcPtr) IndexToStringUPP;
EXTERN_API( void )
TypeSelectClear (TypeSelectRecord * tsr) THREEWORDINLINE(0x3F3C, 0x0028, 0xA9ED);
/*
Long ago the implementation of TypeSelectNewKey had a bug that
required the high word of D0 to be zero or the function did not work.
Although fixed now, we are continuing to clear the high word
just in case someone tries to run on an older system.
*/
EXTERN_API( Boolean )
TypeSelectNewKey (const EventRecord * theEvent,
TypeSelectRecord * tsr) FOURWORDINLINE(0x7000, 0x3F3C, 0x002A, 0xA9ED);
EXTERN_API( short )
TypeSelectFindItem (const TypeSelectRecord * tsr,
short listSize,
TSCode selectMode,
IndexToStringUPP getStringProc,
void * yourDataPtr) THREEWORDINLINE(0x3F3C, 0x002C, 0xA9ED);
EXTERN_API( short )
TypeSelectCompare (const TypeSelectRecord * tsr,
ScriptCode testStringScript,
StringPtr testStringPtr) THREEWORDINLINE(0x3F3C, 0x002E, 0xA9ED);
if OPAQUE_UPP_TYPES
EXTERN_API(IndexToStringUPP)
NewIndexToStringUPP (IndexToStringProcPtr userRoutine);
EXTERN_API(void)
DisposeIndexToStringUPP (IndexToStringUPP userUPP);
EXTERN_API(Boolean)
InvokeIndexToStringUPP (short item,
ScriptCode * itemsScript,
StringPtr * itemsStringPtr,
void * yourDataPtr,
IndexToStringUPP userUPP);
else
enum { uppIndexToStringProcInfo = 0x00003F90 }; /* pascal 1_byte Func(2_bytes, 4_bytes, 4_bytes, 4_bytes) */
#define NewIndexToStringUPP(userRoutine) (IndexToStringUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppIndexToStringProcInfo, GetCurrentArchitecture())
#define DisposeIndexToStringUPP(userUPP) DisposeRoutineDescriptor(userUPP)
#define InvokeIndexToStringUPP(item, itemsScript, itemsStringPtr, yourDataPtr, userUPP) (Boolean)CALL_FOUR_PARAMETER_UPP((userUPP), uppIndexToStringProcInfo, (item), (itemsScript), (itemsStringPtr), (yourDataPtr))
endif
/* support for pre-Carbon UPP routines: NewXXXProc and CallXXXProc */
define NewIndexToStringProc(userRoutine) NewIndexToStringUPP(userRoutine)
define CallIndexToStringProc(userRoutine, item, itemsScript, itemsStringPtr, yourDataPtr) InvokeIndexToStringUPP(item, itemsScript, itemsStringPtr, yourDataPtr, userRoutine)
/*
* These routines are available in Carbon with the new names.
*/
if TARGET_OS_MAC
#define MacReplaceText ReplaceText
endif
EXTERN_API( short )
MacReplaceText (Handle baseText,
Handle substitutionText,
Str15 key) FOURWORDINLINE(0x2F3C, 0x820C, 0xFFDC, 0xA8B5);
EXTERN_API( short )
ScriptOrder (ScriptCode script1,
ScriptCode script2) THREEWORDINLINE(0x3F3C, 0x001E, 0xA9ED);
if TARGET_OS_MAC
#define MacCompareString CompareString
endif
EXTERN_API( short )
MacCompareString (ConstStr255Param aStr,
ConstStr255Param bStr,
Handle itl2Handle);
EXTERN_API( short )
IdenticalString (ConstStr255Param aStr,
ConstStr255Param bStr,
Handle itl2Handle);
EXTERN_API( short )
StringOrder (ConstStr255Param aStr,
ConstStr255Param bStr,
ScriptCode aScript,
ScriptCode bScript,
LangCode aLang,
LangCode bLang);
EXTERN_API( short )
CompareText (const void * aPtr,
const void * bPtr,
short aLen,
short bLen,
Handle itl2Handle) THREEWORDINLINE(0x3F3C, 0x001A, 0xA9ED);
EXTERN_API( short )
IdenticalText (const void * aPtr,
const void * bPtr,
short aLen,
short bLen,
Handle itl2Handle) THREEWORDINLINE(0x3F3C, 0x001C, 0xA9ED);
EXTERN_API( short )
TextOrder (const void * aPtr,
const void * bPtr,
short aLen,
short bLen,
ScriptCode aScript,
ScriptCode bScript,
LangCode aLang,
LangCode bLang) THREEWORDINLINE(0x3F3C, 0x0022, 0xA9ED);
EXTERN_API( short )
LanguageOrder (LangCode language1,
LangCode language2) THREEWORDINLINE(0x3F3C, 0x0020, 0xA9ED);
/*
* These routines are available in InterfaceLib with old names.
* Macros are provided for C to allow source code use to the new names.
*/
if CALL_NOT_IN_CARBON
EXTERN_API( short )
IUMagPString (const void * aPtr,
const void * bPtr,
short aLen,
short bLen,
Handle itl2Handle) THREEWORDINLINE(0x3F3C, 0x001A, 0xA9ED);
EXTERN_API( short )
IUMagIDPString (const void * aPtr,
const void * bPtr,
short aLen,
short bLen,
Handle itl2Handle) THREEWORDINLINE(0x3F3C, 0x001C, 0xA9ED);
EXTERN_API( short )
IUTextOrder (const void * aPtr,
const void * bPtr,
short aLen,
short bLen,
ScriptCode aScript,
ScriptCode bScript,
LangCode aLang,
LangCode bLang) THREEWORDINLINE(0x3F3C, 0x0022, 0xA9ED);
EXTERN_API( short )
IULangOrder (LangCode language1,
LangCode language2) THREEWORDINLINE(0x3F3C, 0x0020, 0xA9ED);
EXTERN_API( short )
IUScriptOrder (ScriptCode script1,
ScriptCode script2) THREEWORDINLINE(0x3F3C, 0x001E, 0xA9ED);
EXTERN_API( short )
IUMagString (const void * aPtr,
const void * bPtr,
short aLen,
short bLen) THREEWORDINLINE(0x3F3C, 0x000A, 0xA9ED);
EXTERN_API( short )
IUMagIDString (const void * aPtr,
const void * bPtr,
short aLen,
short bLen) THREEWORDINLINE(0x3F3C, 0x000C, 0xA9ED);
endif /* CALL_NOT_IN_CARBON */
if CALL_NOT_IN_CARBON
EXTERN_API( short )
IUCompPString (ConstStr255Param aStr,
ConstStr255Param bStr,
Handle itl2Handle);
EXTERN_API( short )
IUEqualPString (ConstStr255Param aStr,
ConstStr255Param bStr,
Handle itl2Handle);
EXTERN_API( short )
IUStringOrder (ConstStr255Param aStr,
ConstStr255Param bStr,
ScriptCode aScript,
ScriptCode bScript,
LangCode aLang,
LangCode bLang);
EXTERN_API( short )
IUCompString (ConstStr255Param aStr,
ConstStr255Param bStr);
EXTERN_API( short )
IUEqualString (ConstStr255Param aStr,
ConstStr255Param bStr);
endif /* CALL_NOT_IN_CARBON */
if CALL_NOT_IN_CARBON
if TARGET_OS_MAC
#define CompareString(aStr, bStr, itl2Handle) \
IUCompPString(aStr, bStr, itl2Handle)
endif
ifdef MacCompareString
#undef MacCompareString
endif
define MacCompareString(aStr, bStr, itl2Handle) \
IUCompPString(aStr, bStr, itl2Handle)
define CompareText(aPtr, bPtr, aLen, bLen, itl2Handle) \
IUMagPString(aPtr, bPtr, aLen, bLen, itl2Handle)
define IdenticalString(aStr, bStr, itl2Handle) \
IUEqualPString(aStr, bStr, itl2Handle)
define IdenticalText(aPtr, bPtr, aLen, bLen, itl2Handle) \
IUMagIDPString(aPtr, bPtr, aLen, bLen, itl2Handle)
define StringOrder(aStr, bStr, aScript, bScript, aLang, bLang) \
IUStringOrder(aStr, bStr, aScript, bScript, aLang, bLang)
define TextOrder(aPtr, bPtr, aLen, bLen, aScript, bScript, aLang, bLang) \
IUTextOrder(aPtr, bPtr, aLen, bLen, aScript, bScript, aLang, bLang)
define LanguageOrder(language1, language2) \
IULangOrder(language1, language2)
endif /* CALL_NOT_IN_CARBON */
if CALL_NOT_IN_CARBON
EXTERN_API_C( short )
iucomppstring (const char * aStr,
const char * bStr,
Handle intlHandle);
EXTERN_API_C( short )
iuequalpstring (const char * aStr,
const char * bStr,
Handle intlHandle);
EXTERN_API_C( short )
iustringorder (const char * aStr,
const char * bStr,
ScriptCode aScript,
ScriptCode bScript,
LangCode aLang,
LangCode bLang);
EXTERN_API_C( short )
iucompstring (const char * aStr,
const char * bStr);
EXTERN_API_C( short )
iuequalstring (const char * aStr,
const char * bStr);
endif /* CALL_NOT_IN_CARBON */
EXTERN_API( short )
RelString (ConstStr255Param str1,
ConstStr255Param str2,
Boolean caseSensitive,
Boolean diacSensitive);
EXTERN_API( Boolean )
EqualString (ConstStr255Param str1,
ConstStr255Param str2,
Boolean caseSensitive,
Boolean diacSensitive);
EXTERN_API_C( short )
relstring (const char * str1,
const char * str2,
Boolean caseSensitive,
Boolean diacSensitive);
if CALL_NOT_IN_CARBON
EXTERN_API_C( Boolean )
equalstring (const char * str1,
const char * str2,
Boolean caseSensitive,
Boolean diacSensitive);
endif /* CALL_NOT_IN_CARBON */
if PRAGMA_STRUCT_ALIGN
#pragma options align=reset
#elif PRAGMA_STRUCT_PACKPUSH
#pragma pack(pop)
#elif PRAGMA_STRUCT_PACK
#pragma pack()
endif
ifdef PRAGMA_IMPORT_OFF
#pragma import off
#elif PRAGMA_IMPORT
#pragma import reset
endif
ifdef __cplusplus
}
endif
endif /* __STRINGCOMPARE__ */
(C) Æliens
04/09/2009
You may not copy or print any of this material without explicit permission of the author or the publisher.
In case of other copyright issues, contact the author.