/* File: LanguageAnalysis.h Contains: Language Analysis Manager Interfaces Version: QuickTime 7.3 Copyright: (c) 2007 (c) 1996-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 __LANGUAGEANALYSIS__ #define __LANGUAGEANALYSIS__ #ifndef __MACTYPES__ #include #endif #ifndef __FILES__ #include #endif #ifndef __TEXTCOMMON__ #include #endif #ifndef __MACERRORS__ #include #endif #ifndef __AEREGISTRY__ #include #endif #ifndef __DICTIONARY__ #include #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=power #elif PRAGMA_STRUCT_PACKPUSH #pragma pack(push, 2) #elif PRAGMA_STRUCT_PACK #pragma pack(2) #endif typedef struct OpaqueLAEnvironmentRef* LAEnvironmentRef; typedef struct OpaqueLAContextRef* LAContextRef; typedef AEKeyword LAPropertyKey; typedef DescType LAPropertyType; /* Data structure for high level API */ struct LAMorphemeRec { ByteCount sourceTextLength; LogicalAddress sourceTextPtr; ByteCount morphemeTextLength; LogicalAddress morphemeTextPtr; UInt32 partOfSpeech; }; typedef struct LAMorphemeRec LAMorphemeRec; struct LAMorphemesArray { ItemCount morphemesCount; ByteCount processedTextLength; ByteCount morphemesTextLength; LAMorphemeRec morphemes[1]; }; typedef struct LAMorphemesArray LAMorphemesArray; typedef LAMorphemesArray * LAMorphemesArrayPtr; enum { kLAMorphemesArrayVersion = 0 }; /* Definitions for result path/bundle structure */ typedef AERecord LAMorphemeBundle; typedef AERecord LAMorphemePath; typedef AERecord LAMorpheme; typedef AERecord LAHomograph; enum { keyAELAMorphemeBundle = FOUR_CHAR_CODE('lmfb'), keyAELAMorphemePath = FOUR_CHAR_CODE('lmfp'), keyAELAMorpheme = FOUR_CHAR_CODE('lmfn'), keyAELAHomograph = FOUR_CHAR_CODE('lmfh') }; enum { typeLAMorphemeBundle = typeAERecord, typeLAMorphemePath = typeAERecord, typeLAMorpheme = typeAEList, typeLAHomograph = typeAEList }; /* Definitions for morpheme/homograph information */ enum { keyAEMorphemePartOfSpeechCode = FOUR_CHAR_CODE('lamc'), keyAEMorphemeTextRange = FOUR_CHAR_CODE('lamt') }; enum { typeAEMorphemePartOfSpeechCode = FOUR_CHAR_CODE('lamc'), typeAEMorphemeTextRange = FOUR_CHAR_CODE('lamt') }; typedef UInt32 MorphemePartOfSpeech; struct MorphemeTextRange { UInt32 sourceOffset; UInt32 length; }; typedef struct MorphemeTextRange MorphemeTextRange; /* Mask for High level API convert flags */ enum { kLAEndOfSourceTextMask = 0x00000001 }; /* Constants for leading/trailing path of analysis function */ enum { kLADefaultEdge = 0, kLAFreeEdge = 1, kLAIncompleteEdge = 2 }; /* Constants for confirm and shift function */ enum { kLAAllMorphemes = 0 }; /* Library version */ /* * LALibraryVersion() * * Availability: * Non-Carbon CFM: in LanguageAnalysisLib 1.0 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( UInt32 ) LALibraryVersion(void); /* High level API */ /* * LATextToMorphemes() * * Availability: * Non-Carbon CFM: in LanguageAnalysisLib 1.0 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( OSStatus ) LATextToMorphemes( LAContextRef context, TextEncoding preferedEncoding, ByteCount textLength, ConstLogicalAddress sourceText, ByteCount bufferSize, OptionBits convertFlags, UInt32 structureVersion, ByteCount * acceptedLength, LAMorphemesArrayPtr resultBuffer); /* Handling Context */ /* * LAOpenAnalysisContext() * * Availability: * Non-Carbon CFM: in LanguageAnalysisLib 1.0 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( OSStatus ) LAOpenAnalysisContext( LAEnvironmentRef environ, LAContextRef * context); /* * LACloseAnalysisContext() * * Availability: * Non-Carbon CFM: in LanguageAnalysisLib 1.0 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( OSStatus ) LACloseAnalysisContext(LAContextRef context); /* Handling Environment */ /* * LAGetEnvironmentList() * * Availability: * Non-Carbon CFM: in LanguageAnalysisLib 1.0 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( OSStatus ) LAGetEnvironmentList( UInt32 maxCount, UInt32 * actualCount, LAEnvironmentRef environmentList[]); /* * LAGetEnvironmentName() * * Availability: * Non-Carbon CFM: in LanguageAnalysisLib 1.0 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( OSStatus ) LAGetEnvironmentName( LAEnvironmentRef environment, Str63 environmentName); /* * LAGetEnvironmentRef() * * Availability: * Non-Carbon CFM: in LanguageAnalysisLib 1.0 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( OSStatus ) LAGetEnvironmentRef( ConstStr63Param targetEnvironmentName, LAEnvironmentRef * environment); /* * LACreateCustomEnvironment() * * Availability: * Non-Carbon CFM: in LanguageAnalysisLib 1.0 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( OSStatus ) LACreateCustomEnvironment( LAEnvironmentRef baseEnvironment, ConstStr63Param newEnvironmentName, Boolean persistent, LAEnvironmentRef * newEnvironment); /* * LADeleteCustomEnvironment() * * Availability: * Non-Carbon CFM: in LanguageAnalysisLib 1.0 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( OSStatus ) LADeleteCustomEnvironment(LAEnvironmentRef environment); /* Handling dictionries */ /* * LAOpenDictionary() * * Availability: * Non-Carbon CFM: in LanguageAnalysisLib 1.0 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( OSStatus ) LAOpenDictionary( LAEnvironmentRef environ, const FSSpec * dictionary); /* * LACloseDictionary() * * Availability: * Non-Carbon CFM: in LanguageAnalysisLib 1.0 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( OSStatus ) LACloseDictionary( LAEnvironmentRef environ, const FSSpec * dictionary); /* * LAListAvailableDictionaries() * * Availability: * Non-Carbon CFM: in LanguageAnalysisLib 1.0 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( OSStatus ) LAListAvailableDictionaries( LAEnvironmentRef environ, ItemCount maxCount, ItemCount * actualCount, FSSpec dictionaryList[], Boolean opened[]); /* * LAAddNewWord() * * Availability: * Non-Carbon CFM: in LanguageAnalysisLib 1.0 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( OSStatus ) LAAddNewWord( LAEnvironmentRef environ, const FSSpec * dictionary, const AEDesc * dataList); /* Analyzing text */ /* * LAMorphemeAnalysis() * * Availability: * Non-Carbon CFM: in LanguageAnalysisLib 1.0 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( OSStatus ) LAMorphemeAnalysis( LAContextRef context, ConstUniCharArrayPtr text, UniCharCount textLength, LAMorphemePath * leadingPath, LAMorphemePath * trailingPath, ItemCount pathCount, LAMorphemeBundle * result); /* * LAContinuousMorphemeAnalysis() * * Availability: * Non-Carbon CFM: in LanguageAnalysisLib 1.0 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( OSStatus ) LAContinuousMorphemeAnalysis( LAContextRef context, ConstUniCharArrayPtr text, UniCharCount textLength, Boolean incrementalText, LAMorphemePath * leadingPath, LAMorphemePath * trailingPath, Boolean * modified); /* * LAGetMorphemes() * * Availability: * Non-Carbon CFM: in LanguageAnalysisLib 1.0 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( OSStatus ) LAGetMorphemes( LAContextRef context, LAMorphemePath * result); /* * LAShiftMorphemes() * * Availability: * Non-Carbon CFM: in LanguageAnalysisLib 1.0 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( OSStatus ) LAShiftMorphemes( LAContextRef context, ItemCount morphemeCount, LAMorphemePath * path, UniCharCount * shiftedLength); /* * LAResetAnalysis() * * Availability: * Non-Carbon CFM: in LanguageAnalysisLib 1.0 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( OSStatus ) LAResetAnalysis(LAContextRef context); /* Check Language Analysis Manager availability */ #if TARGET_RT_MAC_CFM #ifdef __cplusplus inline pascal Boolean LALanguageAnalysisAvailable() { return (LALibraryVersion != (void*)kUnresolvedCFragSymbolAddress); } #else #define LALanguageAnalysisAvailable() ((LALibraryVersion != (void*)kUnresolvedCFragSymbolAddress) #endif #elif TARGET_RT_MAC_MACHO /* Language Analysis Manager is always available on OS X */ #ifdef __cplusplus inline pascal Boolean LALanguageAnalysisAvailable() { return true; } #else #define LALanguageAnalysisAvailable() (true) #endif #endif /* */ /* ============================================================================================= Definitions for Japanese Analysis Module ============================================================================================= */ /* Names for default environments for Japanese analysis */ #define kLAJapaneseKanaKanjiEnvironment "\pKanaKanjiConversion" #define kLAJapaneseMorphemeAnalysisEnvironment "\pJapaneseMorphemeAnalysis" #define kLAJapaneseTTSEnvironment "\pJapaneseTextToSpeech" /* File cretor for dictionary of Apple Japanese access method */ enum { kAppleJapaneseDictionarySignature = FOUR_CHAR_CODE('jlan') }; /* Engine limitations */ enum { kMaxInputLengthOfAppleJapaneseEngine = 200 }; /* Definitions of information in the path/bundle */ typedef MorphemePartOfSpeech JapanesePartOfSpeech; typedef UInt16 HomographWeight; typedef UInt8 HomographAccent; /* AE keywords and type definitions for morpheme/homograph information */ enum { keyAEHomographDicInfo = FOUR_CHAR_CODE('lahd'), keyAEHomographWeight = FOUR_CHAR_CODE('lahw'), keyAEHomographAccent = FOUR_CHAR_CODE('laha') }; enum { typeAEHomographDicInfo = FOUR_CHAR_CODE('lahd'), typeAEHomographWeight = typeShortInteger, typeAEHomographAccent = FOUR_CHAR_CODE('laha') }; /* Structure for dictionary information of homograph */ struct HomographDicInfoRec { DCMDictionaryID dictionaryID; DCMUniqueID uniqueID; }; typedef struct HomographDicInfoRec HomographDicInfoRec; /* ============================================================================================= Definitions for Japanese part of speeches ============================================================================================= */ /* Masks for part of speeches */ enum { kLASpeechRoughClassMask = 0x0000F000, kLASpeechMediumClassMask = 0x0000FF00, kLASpeechStrictClassMask = 0x0000FFF0, kLASpeechKatsuyouMask = 0x0000000F }; /* Part of speeches */ enum { kLASpeechMeishi = 0x00000000, /* noun */ kLASpeechFutsuuMeishi = 0x00000000, /* general noun */ kLASpeechJinmei = 0x00000100, /* person name */ kLASpeechJinmeiSei = 0x00000110, /* family name */ kLASpeechJinmeiMei = 0x00000120, /* first name */ kLASpeechChimei = 0x00000200, /* place name */ kLASpeechSetsubiChimei = 0x00000210, /* place name with suffix */ kLASpeechSoshikimei = 0x00000300, /* organization name */ kLASpeechKoyuuMeishi = 0x00000400, /* proper noun */ kLASpeechSahenMeishi = 0x00000500, /* special noun */ kLASpeechKeidouMeishi = 0x00000600, /* special noun */ kLASpeechRentaishi = 0x00001000, kLASpeechFukushi = 0x00002000, /* adverb */ kLASpeechSetsuzokushi = 0x00003000, /* conjunction */ kLASpeechKandoushi = 0x00004000, kLASpeechDoushi = 0x00005000, /* verb */ kLASpeechGodanDoushi = 0x00005000, kLASpeechKagyouGodan = 0x00005000, kLASpeechSagyouGodan = 0x00005010, kLASpeechTagyouGodan = 0x00005020, kLASpeechNagyouGodan = 0x00005030, kLASpeechMagyouGodan = 0x00005040, kLASpeechRagyouGodan = 0x00005050, kLASpeechWagyouGodan = 0x00005060, kLASpeechGagyouGodan = 0x00005070, kLASpeechBagyouGodan = 0x00005080, kLASpeechIchidanDoushi = 0x00005100, kLASpeechKahenDoushi = 0x00005200, kLASpeechSahenDoushi = 0x00005300, kLASpeechZahenDoushi = 0x00005400, kLASpeechKeiyoushi = 0x00006000, /* adjective */ kLASpeechKeiyoudoushi = 0x00007000, kLASpeechSettougo = 0x00008000, /* prefix*/ kLASpeechSuujiSettougo = 0x00008100, /* prefix for numbers */ kLASpeechSetsubigo = 0x00009000, /* suffix */ kLASpeechJinmeiSetsubigo = 0x00009100, /* suffix for person name */ kLASpeechChimeiSetsubigo = 0x00009200, /* suffix for place name */ kLASpeechSoshikimeiSetsubigo = 0x00009300, /* suffix for organization name */ kLASpeechSuujiSetsubigo = 0x00009400, /* suffix for numbers */ kLASpeechMuhinshi = 0x0000A000, /* no category */ kLASpeechTankanji = 0x0000A000, /* character */ kLASpeechKigou = 0x0000A100, /* symbol */ kLASpeechKuten = 0x0000A110, kLASpeechTouten = 0x0000A120, kLASpeechSuushi = 0x0000A200, /* numbers */ kLASpeechDokuritsugo = 0x0000A300, kLASpeechSeiku = 0x0000A400, kLASpeechJodoushi = 0x0000B000, /* auxiliary verb */ kLASpeechJoshi = 0x0000C000 /* postpositional particle */ }; /* Conjugations */ enum { kLASpeechKatsuyouGokan = 0x00000001, /* stem */ kLASpeechKatsuyouMizen = 0x00000002, kLASpeechKatsuyouRenyou = 0x00000003, kLASpeechKatsuyouSyuushi = 0x00000004, kLASpeechKatsuyouRentai = 0x00000005, kLASpeechKatsuyouKatei = 0x00000006, kLASpeechKatsuyouMeirei = 0x00000007 }; #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 /* __LANGUAGEANALYSIS__ */