diff options
Diffstat (limited to 'packages/univint/src/OSA.pas')
-rw-r--r-- | packages/univint/src/OSA.pas | 1823 |
1 files changed, 1823 insertions, 0 deletions
diff --git a/packages/univint/src/OSA.pas b/packages/univint/src/OSA.pas new file mode 100644 index 0000000000..44d3b4f278 --- /dev/null +++ b/packages/univint/src/OSA.pas @@ -0,0 +1,1823 @@ +{ + File: OSA.p + + Contains: Open Scripting Architecture Client Interfaces. + + Version: Technology: AppleScript 1.4 + Release: Universal Interfaces 3.4.2 + + Copyright: © 1992-2002 by Apple Computer, Inc., all rights reserved + + Bugs?: For bug reports, consult the following page on + the World Wide Web: + + http://www.freepascal.org/bugs.html + +} + + +{ + Modified for use with Free Pascal + Version 200 + Please report any bugs to <gpc@microbizz.nl> +} + +{$mode macpas} +{$packenum 1} +{$macro on} +{$inline on} +{$CALLING MWPASCAL} + +unit OSA; +interface +{$setc UNIVERSAL_INTERFACES_VERSION := $0342} +{$setc GAP_INTERFACES_VERSION := $0200} + +{$ifc not defined USE_CFSTR_CONSTANT_MACROS} + {$setc USE_CFSTR_CONSTANT_MACROS := TRUE} +{$endc} + +{$ifc defined CPUPOWERPC and defined CPUI386} + {$error Conflicting initial definitions for CPUPOWERPC and CPUI386} +{$endc} +{$ifc defined FPC_BIG_ENDIAN and defined FPC_LITTLE_ENDIAN} + {$error Conflicting initial definitions for FPC_BIG_ENDIAN and FPC_LITTLE_ENDIAN} +{$endc} + +{$ifc not defined __ppc__ and defined CPUPOWERPC} + {$setc __ppc__ := 1} +{$elsec} + {$setc __ppc__ := 0} +{$endc} +{$ifc not defined __i386__ and defined CPUI386} + {$setc __i386__ := 1} +{$elsec} + {$setc __i386__ := 0} +{$endc} + +{$ifc defined __ppc__ and __ppc__ and defined __i386__ and __i386__} + {$error Conflicting definitions for __ppc__ and __i386__} +{$endc} + +{$ifc defined __ppc__ and __ppc__} + {$setc TARGET_CPU_PPC := TRUE} + {$setc TARGET_CPU_X86 := FALSE} +{$elifc defined __i386__ and __i386__} + {$setc TARGET_CPU_PPC := FALSE} + {$setc TARGET_CPU_X86 := TRUE} +{$elsec} + {$error Neither __ppc__ nor __i386__ is defined.} +{$endc} +{$setc TARGET_CPU_PPC_64 := FALSE} + +{$ifc defined FPC_BIG_ENDIAN} + {$setc TARGET_RT_BIG_ENDIAN := TRUE} + {$setc TARGET_RT_LITTLE_ENDIAN := FALSE} +{$elifc defined FPC_LITTLE_ENDIAN} + {$setc TARGET_RT_BIG_ENDIAN := FALSE} + {$setc TARGET_RT_LITTLE_ENDIAN := TRUE} +{$elsec} + {$error Neither FPC_BIG_ENDIAN nor FPC_LITTLE_ENDIAN are defined.} +{$endc} +{$setc ACCESSOR_CALLS_ARE_FUNCTIONS := TRUE} +{$setc CALL_NOT_IN_CARBON := FALSE} +{$setc OLDROUTINENAMES := FALSE} +{$setc OPAQUE_TOOLBOX_STRUCTS := TRUE} +{$setc OPAQUE_UPP_TYPES := TRUE} +{$setc OTCARBONAPPLICATION := TRUE} +{$setc OTKERNEL := FALSE} +{$setc PM_USE_SESSION_APIS := TRUE} +{$setc TARGET_API_MAC_CARBON := TRUE} +{$setc TARGET_API_MAC_OS8 := FALSE} +{$setc TARGET_API_MAC_OSX := TRUE} +{$setc TARGET_CARBON := TRUE} +{$setc TARGET_CPU_68K := FALSE} +{$setc TARGET_CPU_MIPS := FALSE} +{$setc TARGET_CPU_SPARC := FALSE} +{$setc TARGET_OS_MAC := TRUE} +{$setc TARGET_OS_UNIX := FALSE} +{$setc TARGET_OS_WIN32 := FALSE} +{$setc TARGET_RT_MAC_68881 := FALSE} +{$setc TARGET_RT_MAC_CFM := FALSE} +{$setc TARGET_RT_MAC_MACHO := TRUE} +{$setc TYPED_FUNCTION_POINTERS := TRUE} +{$setc TYPE_BOOL := FALSE} +{$setc TYPE_EXTENDED := FALSE} +{$setc TYPE_LONGLONG := TRUE} +uses MacTypes,AEDataModel,MacErrors,AppleEvents,AEObjects,AEInteraction,Components; + + +{$ALIGN MAC68K} + +{************************************************************************* + Types and Constants +*************************************************************************} + +{ The componenent manager type code for components that + support the OSA interface defined here. } +{ 0x6f736120 } + +const + kOSAComponentType = $6F736120 (* 'osa ' *); + + { 0x73637074 } + kOSAGenericScriptingComponentSubtype = $73637074 (* 'scpt' *); + + { Type of script document files. } + { 0x6f736173 } + kOSAFileType = $6F736173 (* 'osas' *); + + { + Suite and event code of the RecordedText event. + (See OSAStartRecording, below.) + } + { 0x61736372 } + kOSASuite = $61736372 (* 'ascr' *); + + { 0x72656364 } + kOSARecordedText = $72656364 (* 'recd' *); + + { Selector returns boolean } + { 0x6d6f6469 } + kOSAScriptIsModified = $6D6F6469 (* 'modi' *); + + { Selector returns boolean } + { 0x63736372 } + kOSAScriptIsTypeCompiledScript = $63736372 (* 'cscr' *); + + { Selector returns boolean } + { 0x76616c75 } + kOSAScriptIsTypeScriptValue = $76616C75 (* 'valu' *); + + { Selector returns boolean } + { 0x636e7478 } + kOSAScriptIsTypeScriptContext = $636E7478 (* 'cntx' *); + + { Selector returns a DescType which may be passed to OSACoerceToDesc } + { 0x62657374 } + kOSAScriptBestType = $62657374 (* 'best' *); + + { + This selector is used to determine whether a script has source + associated with it that when given to OSAGetSource, the call will not + fail. The selector returns a boolean. + } + { 0x67737263 } + kOSACanGetSource = $67737263 (* 'gsrc' *); + + + typeOSADialectInfo = $6469666F (* 'difo' *); { 0x6469666f } + keyOSADialectName = $646E616D (* 'dnam' *); { 0x646e616d } + keyOSADialectCode = $64636F64 (* 'dcod' *); { 0x64636f64 } + keyOSADialectLangCode = $646C6364 (* 'dlcd' *); { 0x646c6364 } + keyOSADialectScriptCode = $64736364 (* 'dscd' *); { 0x64736364 } + + +type + OSAError = ComponentResult; + { Under the Open Scripting Architecture all error results are longs } + OSAID = UInt32; + { + OSAIDs allow transparent manipulation of scripts associated with + various scripting systems. + } + +const + kOSANullScript = 0; + + { No -script constant. } + kOSANullMode = 0; { sounds better } + kOSAModeNull = 0; { tastes consistent } + + { + Some routines take flags that control their execution. This constant + declares default mode settings are used. + } + +type +{$ifc TYPED_FUNCTION_POINTERS} + OSACreateAppleEventProcPtr = function(theAEEventClass: AEEventClass; theAEEventID: AEEventID; const (*var*) target: AEAddressDesc; returnID: SInt16; transactionID: SInt32; var result: AppleEvent; refCon: SInt32): OSErr; +{$elsec} + OSACreateAppleEventProcPtr = ProcPtr; +{$endc} + +{$ifc TYPED_FUNCTION_POINTERS} + OSASendProcPtr = function(const (*var*) theAppleEvent: AppleEvent; var reply: AppleEvent; sendMode: AESendMode; sendPriority: AESendPriority; timeOutInTicks: SInt32; idleProc: AEIdleUPP; filterProc: AEFilterUPP; refCon: SInt32): OSErr; +{$elsec} + OSASendProcPtr = ProcPtr; +{$endc} + +{$ifc OPAQUE_UPP_TYPES} + OSACreateAppleEventUPP = ^SInt32; { an opaque UPP } +{$elsec} + OSACreateAppleEventUPP = UniversalProcPtr; +{$endc} +{$ifc OPAQUE_UPP_TYPES} + OSASendUPP = ^SInt32; { an opaque UPP } +{$elsec} + OSASendUPP = UniversalProcPtr; +{$endc} + +const + uppOSACreateAppleEventProcInfo = $000FEFE0; + uppOSASendProcInfo = $003FEFE0; + { + * NewOSACreateAppleEventUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + } +function NewOSACreateAppleEventUPP(userRoutine: OSACreateAppleEventProcPtr): OSACreateAppleEventUPP; external name '_NewOSACreateAppleEventUPP'; { old name was NewOSACreateAppleEventProc } +{ + * NewOSASendUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + } +function NewOSASendUPP(userRoutine: OSASendProcPtr): OSASendUPP; external name '_NewOSASendUPP'; { old name was NewOSASendProc } +{ + * DisposeOSACreateAppleEventUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + } +procedure DisposeOSACreateAppleEventUPP(userUPP: OSACreateAppleEventUPP); external name '_DisposeOSACreateAppleEventUPP'; +{ + * DisposeOSASendUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + } +procedure DisposeOSASendUPP(userUPP: OSASendUPP); external name '_DisposeOSASendUPP'; +{ + * InvokeOSACreateAppleEventUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + } +function InvokeOSACreateAppleEventUPP(theAEEventClass: AEEventClass; theAEEventID: AEEventID; const (*var*) target: AEAddressDesc; returnID: SInt16; transactionID: SInt32; var result: AppleEvent; refCon: SInt32; userRoutine: OSACreateAppleEventUPP): OSErr; external name '_InvokeOSACreateAppleEventUPP'; { old name was CallOSACreateAppleEventProc } +{ + * InvokeOSASendUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + } +function InvokeOSASendUPP(const (*var*) theAppleEvent: AppleEvent; var reply: AppleEvent; sendMode: AESendMode; sendPriority: AESendPriority; timeOutInTicks: SInt32; idleProc: AEIdleUPP; filterProc: AEFilterUPP; refCon: SInt32; userRoutine: OSASendUPP): OSErr; external name '_InvokeOSASendUPP'; { old name was CallOSASendProc } +{************************************************************************* + OSA Interface Descriptions +************************************************************************** + The OSA Interface is broken down into a required interface, and several + optional interfaces to support additional functionality. A given scripting + component may choose to support only some of the optional interfaces in + addition to the basic interface. The OSA Component Flags may be used to + query the Component Manager to find a scripting component with a particular + capability, or determine if a particular scripting component supports a + particular capability. +*************************************************************************} +{ OSA Component Flags: } + +const + kOSASupportsCompiling = $0002; + kOSASupportsGetSource = $0004; + kOSASupportsAECoercion = $0008; + kOSASupportsAESending = $0010; + kOSASupportsRecording = $0020; + kOSASupportsConvenience = $0040; + kOSASupportsDialects = $0080; + kOSASupportsEventHandling = $0100; + + { Component Selectors: } + kOSASelectLoad = $0001; + kOSASelectStore = $0002; + kOSASelectExecute = $0003; + kOSASelectDisplay = $0004; + kOSASelectScriptError = $0005; + kOSASelectDispose = $0006; + kOSASelectSetScriptInfo = $0007; + kOSASelectGetScriptInfo = $0008; + kOSASelectSetActiveProc = $0009; + kOSASelectGetActiveProc = $000A; + + { Compiling: } + kOSASelectScriptingComponentName = $0102; + kOSASelectCompile = $0103; + kOSASelectCopyID = $0104; + + kOSASelectCopyScript = $0105; + + { GetSource: } + kOSASelectGetSource = $0201; + + { AECoercion: } + kOSASelectCoerceFromDesc = $0301; + kOSASelectCoerceToDesc = $0302; + + { AESending: } + kOSASelectSetSendProc = $0401; + kOSASelectGetSendProc = $0402; + kOSASelectSetCreateProc = $0403; + kOSASelectGetCreateProc = $0404; + kOSASelectSetDefaultTarget = $0405; + + { Recording: } + kOSASelectStartRecording = $0501; + kOSASelectStopRecording = $0502; + + { Convenience: } + kOSASelectLoadExecute = $0601; + kOSASelectCompileExecute = $0602; + kOSASelectDoScript = $0603; + + { Dialects: } + kOSASelectSetCurrentDialect = $0701; + kOSASelectGetCurrentDialect = $0702; + kOSASelectAvailableDialects = $0703; + kOSASelectGetDialectInfo = $0704; + kOSASelectAvailableDialectCodeList = $0705; + + { Event Handling: } + kOSASelectSetResumeDispatchProc = $0801; + kOSASelectGetResumeDispatchProc = $0802; + kOSASelectExecuteEvent = $0803; + kOSASelectDoEvent = $0804; + kOSASelectMakeContext = $0805; + + { Debugging } + kOSADebuggerCreateSession = $0901; + kOSADebuggerGetSessionState = $0902; + kOSADebuggerSessionStep = $0903; + kOSADebuggerDisposeSession = $0904; + kOSADebuggerGetStatementRanges = $0905; + kOSADebuggerGetBreakpoint = $0910; + kOSADebuggerSetBreakpoint = $0911; + kOSADebuggerGetDefaultBreakpoint = $0912; + kOSADebuggerGetCurrentCallFrame = $0906; + kOSADebuggerGetCallFrameState = $0907; + kOSADebuggerGetVariable = $0908; + kOSADebuggerSetVariable = $0909; + kOSADebuggerGetPreviousCallFrame = $090A; + kOSADebuggerDisposeCallFrame = $090B; + kOSADebuggerCountVariables = $090C; + + { scripting component specific selectors are added beginning with this value } + kOSASelectComponentSpecificStart = $1001; + + + { Mode Flags: + + Warning: These should not conflict with the AESend mode flags in + AppleEvents.h, because we may want to use them as OSA mode flags too. + } + + { + This mode flag may be passed to OSALoad, OSAStore or OSACompile to + instruct the scripting component to not retain the "source" of an + expression. This will cause the OSAGetSource call to return the error + errOSASourceNotAvailable if used. However, some scripting components + may not retain the source anyway. This is mainly used when either space + efficiency is desired, or a script is to be "locked" so that its + implementation may not be viewed. + } + kOSAModePreventGetSource = $00000001; + + { + These mode flags may be passed to OSACompile, OSAExecute, OSALoadExecute + OSACompileExecute, OSADoScript, OSAExecuteEvent, or OSADoEvent to + indicate whether or not the script may interact with the user, switch + layer or reconnect if necessary. Any AppleEvents will be sent with the + corresponding AESend mode supplied. + } + kOSAModeNeverInteract = $00000010; + kOSAModeCanInteract = $00000020; + kOSAModeAlwaysInteract = $00000030; + kOSAModeDontReconnect = $00000080; + + { + This mode flag may be passed to OSACompile, OSAExecute, OSALoadExecute + OSACompileExecute, OSADoScript, OSAExecuteEvent, or OSADoEvent to + indicate whether or not AppleEvents should be sent with the + kAECanSwitchLayer mode flag sent or not. NOTE: This flag is exactly the + opposite sense of the AppleEvent flag kAECanSwitchLayer. This is to + provide a more convenient default, i.e. not supplying any mode + (kOSAModeNull) means to send events with kAECanSwitchLayer. Supplying + the kOSAModeCantSwitchLayer mode flag will cause AESend to be called + without kAECanSwitchLayer. + } + kOSAModeCantSwitchLayer = $00000040; + + { + This mode flag may be passed to OSACompile, OSAExecute, OSALoadExecute + OSACompileExecute, OSADoScript, OSAExecuteEvent, or OSADoEvent to + indicate whether or not AppleEvents should be sent with the kAEDontRecord + mode flag sent or not. NOTE: This flag is exactly the opposite sense of + the AppleEvent flag kAEDontRecord. This is to provide a more convenient + default, i.e. not supplying any mode (kOSAModeNull) means to send events + with kAEDontRecord. Supplying the kOSAModeDoRecord mode flag will + cause AESend to be called without kAEDontRecord. + } + kOSAModeDoRecord = $00001000; + + { + This is a mode flag for OSACompile that indicates that a context should + be created as the result of compilation. All handler definitions are + inserted into the new context, and variables are initialized by + evaluating their initial values in a null context (i.e. they must be + constant expressions). + } + kOSAModeCompileIntoContext = $00000002; + + { + This is a mode flag for OSACompile that indicates that the previous + script ID (input to OSACompile) should be augmented with any new + definitions in the sourceData rather than replaced with a new script. + This means that the previous script ID must designate a context. + The presence of this flag causes the kOSAModeCompileIntoContext flag + to be implicitly used, causing any new definitions to be initialized + in a null context. + } + kOSAModeAugmentContext = $00000004; + + { + This mode flag may be passed to OSADisplay or OSADoScript to indicate + that output only need be human-readable, not re-compilable by OSACompile. + If used, output may be arbitrarily "beautified", e.g. quotes may be left + off of string values, long lists may have elipses, etc. + } + kOSAModeDisplayForHumans = $00000008; + + { + This mode flag may be passed to OSAStore in the case where the scriptID + is a context. This causes the context to be saved, but not the context's + parent context. When the stored context is loaded back in, the parent + will be kOSANullScript. + } + kOSAModeDontStoreParent = $00010000; + + { + This mode flag may be passed to OSAExecuteEvent to cause the event to + be dispatched to the direct object of the event. The direct object (or + subject attribute if the direct object is a non-object specifier) will + be resolved, and the resulting script object will be the recipient of + the message. The context argument to OSAExecuteEvent will serve as the + root of the lookup/resolution process. + } + kOSAModeDispatchToDirectObject = $00020000; + + { + This mode flag may be passed to OSAExecuteEvent to indicate that + components do not have to get the data of object specifier arguments. + } + kOSAModeDontGetDataForArguments = $00040000; + + { ************************************************************************* + OSA Basic Scripting Interface + ************************************************************************** + Scripting components must at least support the Basic Scripting interface. + ************************************************************************* } + { Loading and Storing Scripts: + + These routines allow scripts to be loaded and stored in their internal + (possibly compiled, non-text) representation. + } + + { Resource type for scripts } + kOSAScriptResourceType = $73637074 (* 'scpt' *); + + { + Default type given to OSAStore which creates "generic" loadable script + data descriptors. + } + typeOSAGenericStorage = $73637074 (* 'scpt' *); + + { + * OSALoad() + * + * Availability: + * Non-Carbon CFM: in AppleScriptLib 1.1 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + } +function OSALoad(scriptingComponent: ComponentInstance; const (*var*) scriptData: AEDesc; modeFlags: SInt32; var resultingScriptID: OSAID): OSAError; external name '_OSALoad'; +{ + OSAComponentFunctionInline(kOSASelectLoad, 12); + + Errors: + badComponentInstance invalid scripting component instance + errOSASystemError + errOSABadStorageType: scriptData not for this scripting component + errOSACorruptData: data seems to be corrupt + errOSADataFormatObsolete script data format is no longer supported + errOSADataFormatTooNew script data format is from a newer version + + ModeFlags: + kOSAModePreventGetSource + } +{ + * OSAStore() + * + * Availability: + * Non-Carbon CFM: in AppleScriptLib 1.1 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + } +function OSAStore(scriptingComponent: ComponentInstance; scriptID: OSAID; desiredType: DescType; modeFlags: SInt32; var resultingScriptData: AEDesc): OSAError; external name '_OSAStore'; +{ + OSAComponentFunctionInline(kOSASelectStore, 16); + + Errors: + badComponentInstance invalid scripting component instance + errOSASystemError + errOSAInvalidID + errOSABadStorageType: desiredType not for this scripting component + + ModeFlags: + kOSAModePreventGetSource + kOSAModeDontStoreParent + } +{ Executing Scripts: } +{ + * OSAExecute() + * + * Availability: + * Non-Carbon CFM: in AppleScriptLib 1.1 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + } +function OSAExecute(scriptingComponent: ComponentInstance; compiledScriptID: OSAID; contextID: OSAID; modeFlags: SInt32; var resultingScriptValueID: OSAID): OSAError; external name '_OSAExecute'; +{ + OSAComponentFunctionInline(kOSASelectExecute, 16); + This call runs a script. The contextID represents the environment + with which global variables in the script are resolved. The constant + kOSANullScript may be used for the contextID if the application wishes + to not deal with context directly (a default one is associated with each + scripting component instance). The resultingScriptValueID is the + result of evaluation, and contains a value which may be displayed using + the OSAGetSource call. The modeFlags convey scripting component + specific information. + + Errors: + badComponentInstance invalid scripting component instance + errOSASystemError + errOSAInvalidID + errOSAScriptError: the executing script got an error + + ModeFlags: + kOSAModeNeverInteract + kOSAModeCanInteract + kOSAModeAlwaysInteract + kOSAModeCantSwitchLayer + kOSAModeDontReconnect + kOSAModeDoRecord + } +{ Displaying results: } +{ + * OSADisplay() + * + * Availability: + * Non-Carbon CFM: in AppleScriptLib 1.1 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + } +function OSADisplay(scriptingComponent: ComponentInstance; scriptValueID: OSAID; desiredType: DescType; modeFlags: SInt32; var resultingText: AEDesc): OSAError; external name '_OSADisplay'; +{ + OSAComponentFunctionInline(kOSASelectDisplay, 16); + This call is used to convert results (script value IDs) into displayable + text. The desiredType should be at least typeChar, and modeFlags are + scripting system specific flags to control the formatting of the + resulting text. This call differs from OSAGetSource in that (1) it + always produces at least typeChar, (2) is only works on script values, + (3) it may display it's output in non-compilable form (e.g. without + string quotes, elipses inserted in long and/or circular lists, etc.) and + (4) it is required by the basic scripting interface. + + Errors: + badComponentInstance invalid scripting component instance + errOSASystemError + errOSAInvalidID + errAECoercionFail: desiredType not supported by scripting component + + ModeFlags: + kOSAModeDisplayForHumans + } +{ Getting Error Information: } +{ + * OSAScriptError() + * + * Availability: + * Non-Carbon CFM: in AppleScriptLib 1.1 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + } +function OSAScriptError(scriptingComponent: ComponentInstance; selector: OSType; desiredType: DescType; var resultingErrorDescription: AEDesc): OSAError; external name '_OSAScriptError'; +{ + OSAComponentFunctionInline(kOSASelectScriptError, 12); + Whenever script execution returns errOSAExecutionError, this routine + may be used to get information about that error. The selector describes + the type of information desired about the error (various selectors are + listed below). The desiredType indicates the data type of the result + desired for that selector. + + Errors: + badComponentInstance invalid scripting component instance + errOSASystemError + errOSABadSelector: selector not supported by scripting component + errAECoercionFail: desiredType not supported by scripting component + } +{ OSAScriptError selectors: } +{ + This selector is used to determine the error number of a script error. + These error numbers may be either system error numbers, or error numbers + that are scripting component specific. + Required desiredTypes: + typeShortInteger + } + +const + kOSAErrorNumber = $6572726E (* 'errn' *); + + { + This selector is used to determine the full error message associated + with the error number. It should include the name of the application + which caused the error, as well as the specific error that occurred. + This selector is sufficient for simple error reporting (but see + kOSAErrorBriefMessage, below). + Required desiredTypes: + typeChar error message string + } + kOSAErrorMessage = $65727273 (* 'errs' *); + + { + This selector is used to determine a brief error message associated with + the error number. This message and should not mention the name of the + application which caused the error, any partial results or offending + object (see kOSAErrorApp, kOSAErrorPartialResult and + kOSAErrorOffendingObject, below). + Required desiredTypes: + typeChar brief error message string + } + { 0x65727262 } + kOSAErrorBriefMessage = $65727262 (* 'errb' *); + + { + This selector is used to determine which application actually got the + error (if it was the result of an AESend), or the current application + if .... + Required desiredTypes: + typeProcessSerialNumber PSN of the errant application + typeChar name of the errant application + } + { 0x65726170 } + kOSAErrorApp = $65726170 (* 'erap' *); + + { + This selector is used to determine any partial result returned by an + operation. If an AESend call failed, but a partial result was returned, + then the partial result may be returned as an AEDesc. + Required desiredTypes: + typeBest AEDesc of any partial result + } + { 0x70746c72 } + kOSAErrorPartialResult = $70746C72 (* 'ptlr' *); + + { + This selector is used to determine any object which caused the error + that may have been indicated by an application. The result is an + AEDesc. + Required desiredTypes: + typeBest AEDesc of any offending object + } + { 0x65726f62 } + kOSAErrorOffendingObject = $65726F62 (* 'erob' *); + + { + This selector is used to determine the type expected by a coercion + operation if a type error occurred. + } + { 0x65727274 } + kOSAErrorExpectedType = $65727274 (* 'errt' *); + + { + This selector is used to determine the source text range (start and + end positions) of where the error occurred. + Required desiredTypes: + typeOSAErrorRange + } + { 0x65726e67 } + kOSAErrorRange = $65726E67 (* 'erng' *); + + { + An AERecord type containing keyOSASourceStart and keyOSASourceEnd fields + of type short. + } + { 0x65726e67 } + typeOSAErrorRange = $65726E67 (* 'erng' *); + + { Field of a typeOSAErrorRange record of typeShortInteger } + { 0x73726373 } + keyOSASourceStart = $73726373 (* 'srcs' *); + + { Field of a typeOSAErrorRange record of typeShortInteger } + { 0x73726365 } + keyOSASourceEnd = $73726365 (* 'srce' *); + + { Disposing Script IDs: } + { + * OSADispose() + * + * Availability: + * Non-Carbon CFM: in AppleScriptLib 1.1 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + } +function OSADispose(scriptingComponent: ComponentInstance; scriptID: OSAID): OSAError; external name '_OSADispose'; +{ + OSAComponentFunctionInline(kOSASelectDispose, 4); + Disposes a script or context. + + Errors: + badComponentInstance invalid scripting component instance + errOSASystemError + errOSAInvalidID + } +{ Getting and Setting Script Information: } +{ + * OSASetScriptInfo() + * + * Availability: + * Non-Carbon CFM: in AppleScriptLib 1.1 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + } +function OSASetScriptInfo(scriptingComponent: ComponentInstance; scriptID: OSAID; selector: OSType; value: SInt32): OSAError; external name '_OSASetScriptInfo'; +{ + OSAComponentFunctionInline(kOSASelectSetScriptInfo, 12); + + Errors: + badComponentInstance invalid scripting component instance + errOSASystemError + errOSAInvalidID + errOSABadSelector: selector not supported by scripting component + or selector not for this scriptID + } +{ + * OSAGetScriptInfo() + * + * Availability: + * Non-Carbon CFM: in AppleScriptLib 1.1 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + } +function OSAGetScriptInfo(scriptingComponent: ComponentInstance; scriptID: OSAID; selector: OSType; var result: SInt32): OSAError; external name '_OSAGetScriptInfo'; +{ + OSAComponentFunctionInline(kOSASelectGetScriptInfo, 12); + + Errors: + badComponentInstance invalid scripting component instance + errOSASystemError + errOSAInvalidID + errOSABadSelector: selector not supported by scripting component + or selector not for this scriptID + } +{ Manipulating the ActiveProc: + + Scripting systems will supply default values for these procedures if they + are not set by the client: +} + +type +{$ifc TYPED_FUNCTION_POINTERS} + OSAActiveProcPtr = function(refCon: SInt32): OSErr; +{$elsec} + OSAActiveProcPtr = ProcPtr; +{$endc} + +{$ifc OPAQUE_UPP_TYPES} + OSAActiveUPP = ^SInt32; { an opaque UPP } +{$elsec} + OSAActiveUPP = UniversalProcPtr; +{$endc} + +const + uppOSAActiveProcInfo = $000000E0; + { + * NewOSAActiveUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + } +function NewOSAActiveUPP(userRoutine: OSAActiveProcPtr): OSAActiveUPP; external name '_NewOSAActiveUPP'; { old name was NewOSAActiveProc } +{ + * DisposeOSAActiveUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + } +procedure DisposeOSAActiveUPP(userUPP: OSAActiveUPP); external name '_DisposeOSAActiveUPP'; +{ + * InvokeOSAActiveUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + } +function InvokeOSAActiveUPP(refCon: SInt32; userRoutine: OSAActiveUPP): OSErr; external name '_InvokeOSAActiveUPP'; { old name was CallOSAActiveProc } +{ + * OSASetActiveProc() + * + * Availability: + * Non-Carbon CFM: in AppleScriptLib 1.1 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + } +function OSASetActiveProc(scriptingComponent: ComponentInstance; activeProc: OSAActiveUPP; refCon: SInt32): OSAError; external name '_OSASetActiveProc'; +{ + OSAComponentFunctionInline(kOSASelectSetActiveProc, 8); + If activeProc is nil, the default activeProc is used. + + Errors: + badComponentInstance invalid scripting component instance + errOSASystemError + } +{ + * OSAGetActiveProc() + * + * Availability: + * Non-Carbon CFM: in AppleScriptLib 1.1 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + } +function OSAGetActiveProc(scriptingComponent: ComponentInstance; var activeProc: OSAActiveUPP; var refCon: SInt32): OSAError; external name '_OSAGetActiveProc'; +{ + OSAComponentFunctionInline(kOSASelectGetActiveProc, 8); + + Errors: + badComponentInstance invalid scripting component instance + errOSASystemError + } +{************************************************************************* + OSA Optional Compiling Interface +************************************************************************** + Scripting components that support the Compiling interface have the + kOSASupportsCompiling bit set in it's ComponentDescription. +*************************************************************************} +{ + * OSAScriptingComponentName() + * + * Availability: + * Non-Carbon CFM: in AppleScriptLib 1.1 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + } +function OSAScriptingComponentName(scriptingComponent: ComponentInstance; var resultingScriptingComponentName: AEDesc): OSAError; external name '_OSAScriptingComponentName'; +{ + OSAComponentFunctionInline(kOSASelectScriptingComponentName, 4); + Given a scripting component, this routine returns the name of that + scripting component in a type that is coercable to text (typeChar). + The generic scripting component returns the name of the default + scripting component. This name should be sufficient to convey to the + user the kind of script (syntax) he is expected to write. + + Errors: + badComponentInstance invalid scripting component instance + errOSASystemError + } +{ + * OSACompile() + * + * Availability: + * Non-Carbon CFM: in AppleScriptLib 1.1 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + } +function OSACompile(scriptingComponent: ComponentInstance; const (*var*) sourceData: AEDesc; modeFlags: SInt32; var previousAndResultingScriptID: OSAID): OSAError; external name '_OSACompile'; +{ + OSAComponentFunctionInline(kOSASelectCompile, 12); + Coerces input desc (possibly text) into a script's internal format. + Once compiled, the script is ready to run. The modeFlags convey + scripting component specific information. The previous script ID + (result parameter) is made to refer to the newly compiled script, + unless it was originally kOSANullScript. In this case a new script + ID is created and used. + + Errors: + badComponentInstance invalid scripting component instance + errOSASystemError + errAECoercionFail: sourceData is not compilable + errOSAScriptError: sourceData was a bad script (syntax error) + errOSAInvalidID: previousAndResultingCompiledScriptID was not + valid on input + + ModeFlags: + kOSAModePreventGetSource + kOSAModeCompileIntoContext + kOSAModeAugmentContext + kOSAModeNeverInteract + kOSAModeCanInteract + kOSAModeAlwaysInteract + kOSAModeCantSwitchLayer + kOSAModeDontReconnect + kOSAModeDoRecord + } +{ + * OSACopyID() + * + * Availability: + * Non-Carbon CFM: in AppleScriptLib 1.1 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + } +function OSACopyID(scriptingComponent: ComponentInstance; fromID: OSAID; var toID: OSAID): OSAError; external name '_OSACopyID'; +{ + OSAComponentFunctionInline(kOSASelectCopyID, 8); + If toID is a reference to kOSANullScript then it is updated to have a + new scriptID value. This call can be used to perform undo or revert + operations on scripts. + + Errors: + badComponentInstance invalid scripting component instance + errOSASystemError + errOSAInvalidID + } +{$ifc CALL_NOT_IN_CARBON} +{ + * OSACopyScript() + * + * Availability: + * Non-Carbon CFM: in AppleScriptLib 1.5 and later + * CarbonLib: not available + * Mac OS X: not available + } +function OSACopyScript(scriptingComponent: ComponentInstance; fromID: OSAID; var toID: OSAID): OSAError; external name '_OSACopyScript'; +{ + OSAComponentFunctionInline(kOSASelectCopyScript, 8); + Creates a duplicate copy of the script with the given OSAID and returns + a new OSAID for it. Can be used by script editors or debuggers. + + Errors: + badComponentInstance invalid scripting component instance + errOSASystemError + errOSAInvalidID + } +{$endc} {CALL_NOT_IN_CARBON} + +{************************************************************************* + OSA Optional GetSource Interface +************************************************************************** + Scripting components that support the GetSource interface have the + kOSASupportsGetSource bit set in their ComponentDescription. +*************************************************************************} +{ + * OSAGetSource() + * + * Availability: + * Non-Carbon CFM: in AppleScriptLib 1.1 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + } +function OSAGetSource(scriptingComponent: ComponentInstance; scriptID: OSAID; desiredType: DescType; var resultingSourceData: AEDesc): OSAError; external name '_OSAGetSource'; +{ + OSAComponentFunctionInline(kOSASelectGetSource, 12); + This routine causes a compiled script to be output in a form (possibly + text) such that it is suitable to be passed back to OSACompile. + + Errors: + badComponentInstance invalid scripting component instance + errOSASystemError + errOSAInvalidID + errOSASourceNotAvailable can't get source for this scriptID + } +{************************************************************************* + OSA Optional AECoercion Interface +************************************************************************** + Scripting components that support the AECoercion interface have the + kOSASupportsAECoercion bit set in their ComponentDescription. +*************************************************************************} +{ + * OSACoerceFromDesc() + * + * Availability: + * Non-Carbon CFM: in AppleScriptLib 1.1 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + } +function OSACoerceFromDesc(scriptingComponent: ComponentInstance; const (*var*) scriptData: AEDesc; modeFlags: SInt32; var resultingScriptID: OSAID): OSAError; external name '_OSACoerceFromDesc'; +{ + OSAComponentFunctionInline(kOSASelectCoerceFromDesc, 12); + This routine causes script data to be coerced into a script value. + If the scriptData is an AppleEvent, then the resultingScriptID is a + compiled script ID (mode flags for OSACompile may be used in this case). + Other scriptData descriptors create script value IDs. + + Errors: + badComponentInstance invalid scripting component instance + errOSASystemError + + ModeFlags: + kOSAModePreventGetSource + kOSAModeCompileIntoContext + kOSAModeNeverInteract + kOSAModeCanInteract + kOSAModeAlwaysInteract + kOSAModeCantSwitchLayer + kOSAModeDontReconnect + kOSAModeDoRecord + } +{ + * OSACoerceToDesc() + * + * Availability: + * Non-Carbon CFM: in AppleScriptLib 1.1 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + } +function OSACoerceToDesc(scriptingComponent: ComponentInstance; scriptID: OSAID; desiredType: DescType; modeFlags: SInt32; var result: AEDesc): OSAError; external name '_OSACoerceToDesc'; +{ + OSAComponentFunctionInline(kOSASelectCoerceToDesc, 16); + This routine causes a script value to be coerced into any desired form. + If the scriptID denotes a compiled script, then it may be coerced to + typeAppleEvent. + + Errors: + badComponentInstance invalid scripting component instance + errOSASystemError + errOSAInvalidID + } +{************************************************************************* + OSA Optional AESending Interface +************************************************************************** + Scripting components that support the AESending interface have the + kOSASupportsAESending bit set in their ComponentDescription. +*************************************************************************} +{ + Scripting systems will supply default values for these procedures if they + are not set by the client: +} +{ + * OSASetSendProc() + * + * Availability: + * Non-Carbon CFM: in AppleScriptLib 1.1 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + } +function OSASetSendProc(scriptingComponent: ComponentInstance; sendProc: OSASendUPP; refCon: SInt32): OSAError; external name '_OSASetSendProc'; +{ + OSAComponentFunctionInline(kOSASelectSetSendProc, 8); + If sendProc is nil, the default sendProc is used. + + Errors: + badComponentInstance invalid scripting component instance + errOSASystemError + } +{ + * OSAGetSendProc() + * + * Availability: + * Non-Carbon CFM: in AppleScriptLib 1.1 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + } +function OSAGetSendProc(scriptingComponent: ComponentInstance; var sendProc: OSASendUPP; var refCon: SInt32): OSAError; external name '_OSAGetSendProc'; +{ + OSAComponentFunctionInline(kOSASelectGetSendProc, 8); + + Errors: + badComponentInstance invalid scripting component instance + errOSASystemError + } +{ + * OSASetCreateProc() + * + * Availability: + * Non-Carbon CFM: in AppleScriptLib 1.1 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + } +function OSASetCreateProc(scriptingComponent: ComponentInstance; createProc: OSACreateAppleEventUPP; refCon: SInt32): OSAError; external name '_OSASetCreateProc'; +{ + OSAComponentFunctionInline(kOSASelectSetCreateProc, 8); + If createProc is nil, the default createProc is used. + + Errors: + badComponentInstance invalid scripting component instance + errOSASystemError + } +{ + * OSAGetCreateProc() + * + * Availability: + * Non-Carbon CFM: in AppleScriptLib 1.1 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + } +function OSAGetCreateProc(scriptingComponent: ComponentInstance; var createProc: OSACreateAppleEventUPP; var refCon: SInt32): OSAError; external name '_OSAGetCreateProc'; +{ + OSAComponentFunctionInline(kOSASelectGetCreateProc, 8); + + Errors: + badComponentInstance invalid scripting component instance + errOSASystemError + } +{ + * OSASetDefaultTarget() + * + * Availability: + * Non-Carbon CFM: in AppleScriptLib 1.1 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + } +function OSASetDefaultTarget(scriptingComponent: ComponentInstance; const (*var*) target: AEAddressDesc): OSAError; external name '_OSASetDefaultTarget'; +{ + OSAComponentFunctionInline(kOSASelectSetDefaultTarget, 4); + This routine sets the default target application for AE sending. + It also establishes the default target from which terminologies come. + It is effectively like having an AppleScript "tell" statement around + the entire program. If this routine is not called, or if the target + is a null AEDesc, then the current application is the default target. + + Errors: + badComponentInstance invalid scripting component instance + errOSASystemError + } +{************************************************************************* + OSA Optional Recording Interface +************************************************************************** + Scripting components that support the Recording interface have the + kOSASupportsRecording bit set in their ComponentDescription. +*************************************************************************} +{ + * OSAStartRecording() + * + * Availability: + * Non-Carbon CFM: in AppleScriptLib 1.1 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + } +function OSAStartRecording(scriptingComponent: ComponentInstance; var compiledScriptToModifyID: OSAID): OSAError; external name '_OSAStartRecording'; +{ + OSAComponentFunctionInline(kOSASelectStartRecording, 4); + Starts recording. If compiledScriptToModifyID is kOSANullScript, a + new script ID is created and returned. If the current application has + a handler for the kOSARecordedText event, then kOSARecordedText events + are sent to the application containing the text of each AppleEvent + recorded. + + Errors: + badComponentInstance invalid scripting component instance + errOSASystemError + errOSAInvalidID + errOSARecordingIsAlreadyOn + } +{ + * OSAStopRecording() + * + * Availability: + * Non-Carbon CFM: in AppleScriptLib 1.1 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + } +function OSAStopRecording(scriptingComponent: ComponentInstance; compiledScriptID: OSAID): OSAError; external name '_OSAStopRecording'; +{ + OSAComponentFunctionInline(kOSASelectStopRecording, 4); + If compiledScriptID is not being recorded into or recording is not + currently on, no error is returned. + + Errors: + badComponentInstance invalid scripting component instance + errOSASystemError + errOSAInvalidID + } +{************************************************************************* + OSA Optional Convenience Interface +************************************************************************** + Scripting components that support the Convenience interface have the + kOSASupportsConvenience bit set in their ComponentDescription. +*************************************************************************} +{ + * OSALoadExecute() + * + * Availability: + * Non-Carbon CFM: in AppleScriptLib 1.1 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + } +function OSALoadExecute(scriptingComponent: ComponentInstance; const (*var*) scriptData: AEDesc; contextID: OSAID; modeFlags: SInt32; var resultingScriptValueID: OSAID): OSAError; external name '_OSALoadExecute'; +{ + OSAComponentFunctionInline(kOSASelectLoadExecute, 16); + This routine is effectively equivalent to calling OSALoad followed by + OSAExecute. After execution, the compiled source is disposed. Only the + resulting value ID is retained. + + Errors: + badComponentInstance invalid scripting component instance + errOSASystemError + errOSABadStorageType: scriptData not for this scripting component + errOSACorruptData: data seems to be corrupt + errOSADataFormatObsolete script data format is no longer supported + errOSADataFormatTooNew script data format is from a newer version + errOSAInvalidID + errOSAScriptError: the executing script got an error + + ModeFlags: + kOSAModeNeverInteract + kOSAModeCanInteract + kOSAModeAlwaysInteract + kOSAModeCantSwitchLayer + kOSAModeDontReconnect + kOSAModeDoRecord + } +{ + * OSACompileExecute() + * + * Availability: + * Non-Carbon CFM: in AppleScriptLib 1.1 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + } +function OSACompileExecute(scriptingComponent: ComponentInstance; const (*var*) sourceData: AEDesc; contextID: OSAID; modeFlags: SInt32; var resultingScriptValueID: OSAID): OSAError; external name '_OSACompileExecute'; +{ + OSAComponentFunctionInline(kOSASelectCompileExecute, 16); + This routine is effectively equivalent to calling OSACompile followed by + OSAExecute. After execution, the compiled source is disposed. Only the + resulting value ID is retained. + + Errors: + badComponentInstance invalid scripting component instance + errOSASystemError + errAECoercionFail: sourceData is not compilable + errOSAScriptError: sourceData was a bad script (syntax error) + errOSAInvalidID: previousAndResultingCompiledScriptID was not + valid on input + errOSAScriptError: the executing script got an error + + ModeFlags: + kOSAModeNeverInteract + kOSAModeCanInteract + kOSAModeAlwaysInteract + kOSAModeCantSwitchLayer + kOSAModeDontReconnect + kOSAModeDoRecord + } +{ + * OSADoScript() + * + * Availability: + * Non-Carbon CFM: in AppleScriptLib 1.1 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + } +function OSADoScript(scriptingComponent: ComponentInstance; const (*var*) sourceData: AEDesc; contextID: OSAID; desiredType: DescType; modeFlags: SInt32; var resultingText: AEDesc): OSAError; external name '_OSADoScript'; +{ + OSAComponentFunctionInline(kOSASelectDoScript, 20); + This routine is effectively equivalent to calling OSACompile followed by + OSAExecute and then OSADisplay. After execution, the compiled source + and the resulting value are is disposed. Only the resultingText + descriptor is retained. If a script error occur during processing, the + resultingText gets the error message of the error, and errOSAScriptError + is returned. OSAScriptError may still be used to extract more + information about the particular error. + + Errors: + badComponentInstance invalid scripting component instance + errOSASystemError + errAECoercionFail: sourceData is not compilable or + desiredType not supported by scripting component + errOSAScriptError: sourceData was a bad script (syntax error) + errOSAInvalidID: previousAndResultingCompiledScriptID was not + valid on input + errOSAScriptError: the executing script got an error + + ModeFlags: + kOSAModeNeverInteract + kOSAModeCanInteract + kOSAModeAlwaysInteract + kOSAModeCantSwitchLayer + kOSAModeDontReconnect + kOSAModeDoRecord + kOSAModeDisplayForHumans + } +{************************************************************************* + OSA Optional Dialects Interface +************************************************************************** + Scripting components that support the Dialects interface have the + kOSASupportsDialects bit set in their ComponentDescription. +*************************************************************************} +{ + These calls allows an scripting component that supports different dialects + to dynamically switch between those dialects. Although this interface is + specified, the particular dialect codes are scripting component dependent. +} +{ + * OSASetCurrentDialect() + * + * Availability: + * Non-Carbon CFM: in AppleScriptLib 1.1 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + } +function OSASetCurrentDialect(scriptingComponent: ComponentInstance; dialectCode: SInt16): OSAError; external name '_OSASetCurrentDialect'; +{ + OSAComponentFunctionInline(kOSASelectSetCurrentDialect, 2); + + Errors: + badComponentInstance invalid scripting component instance + errOSASystemError + errOSANoSuchDialect: invalid dialectCode + } +{ + * OSAGetCurrentDialect() + * + * Availability: + * Non-Carbon CFM: in AppleScriptLib 1.1 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + } +function OSAGetCurrentDialect(scriptingComponent: ComponentInstance; var resultingDialectCode: SInt16): OSAError; external name '_OSAGetCurrentDialect'; +{ + OSAComponentFunctionInline(kOSASelectGetCurrentDialect, 4); + + Errors: + badComponentInstance invalid scripting component instance + errOSASystemError + } +{ + * OSAAvailableDialects() + * + * Availability: + * Non-Carbon CFM: in AppleScriptLib 1.1 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + } +function OSAAvailableDialects(scriptingComponent: ComponentInstance; var resultingDialectInfoList: AEDesc): OSAError; external name '_OSAAvailableDialects'; +{ + OSAComponentFunctionInline(kOSASelectAvailableDialects, 4); + This call return an AEList containing information about each of the + currently available dialects of a scripting component. Each item + is an AERecord of typeOSADialectInfo that contains at least the fields + keyOSADialectName, keyOSADialectCode, KeyOSADialectLangCode and + keyOSADialectScriptCode. + + Errors: + badComponentInstance invalid scripting component instance + errOSASystemError + } +{ + * OSAGetDialectInfo() + * + * Availability: + * Non-Carbon CFM: in AppleScriptLib 1.1 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + } +function OSAGetDialectInfo(scriptingComponent: ComponentInstance; dialectCode: SInt16; selector: OSType; var resultingDialectInfo: AEDesc): OSAError; external name '_OSAGetDialectInfo'; +{ + OSAComponentFunctionInline(kOSASelectGetDialectInfo, 10); + This call gives information about the specified dialect of a scripting + component. It returns an AEDesc whose type depends on the selector + specified. Available selectors are the same as the field keys for a + dialect info record. The type of AEDesc returned is the same as the + type of the field that has same key as the selector. + + Errors: + badComponentInstance invalid scripting component instance + errOSASystemError + errOSABadSelector + errOSANoSuchDialect: invalid dialectCode + } +{ + * OSAAvailableDialectCodeList() + * + * Availability: + * Non-Carbon CFM: in AppleScriptLib 1.1 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + } +function OSAAvailableDialectCodeList(scriptingComponent: ComponentInstance; var resultingDialectCodeList: AEDesc): OSAError; external name '_OSAAvailableDialectCodeList'; +{ + OSAComponentFunctionInline(kOSASelectAvailableDialectCodeList, 4); + This is alternative to OSAGetAvailableDialectCodeList. Use this call + and OSAGetDialectInfo to get information on dialects. + This call return an AEList containing dialect code for each of the + currently available dialects of a scripting component. Each dialect + code is a short SInt16 of type typeShortInteger. + + Errors: + badComponentInstance invalid scripting component instance + errOSASystemError + + Type of a dialect info record containing at least keyOSADialectName + and keyOSADialectCode fields. + + keys for dialect info record, also used as selectors to OSAGetDialectInfo. + + Field of a typeOSADialectInfo record of typeChar. + Field of a typeOSADialectInfo record of typeShortInteger. + Field of a typeOSADialectInfo record of typeShortInteger. + Field of a typeOSADialectInfo record of typeShortInteger. + } +{************************************************************************* + OSA Optional Event Handling Interface +************************************************************************** + Scripting components that support the Event Handling interface have the + kOSASupportsEventHandling bit set in their ComponentDescription. +*************************************************************************} +{ + * OSASetResumeDispatchProc() + * + * Availability: + * Non-Carbon CFM: in AppleScriptLib 1.1 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + } +function OSASetResumeDispatchProc(scriptingComponent: ComponentInstance; resumeDispatchProc: AEEventHandlerUPP; refCon: SInt32): OSAError; external name '_OSASetResumeDispatchProc'; +{ + OSAComponentFunctionInline(kOSASelectSetResumeDispatchProc, 8); + This function is used to set the ResumeDispatchProc that will be used + by OSAExecuteEvent and OSADoEvent if either no event handler can be + found in the context, or the context event hander "continues" control + onward. The two constants kOSAUseStandardDispatch and kOSANoDispatch + may also be passed to this routine indicating that the handler registered + in the application with AEInstallEventHandler should be used, or no + dispatch should occur, respectively. + + Errors: + badComponentInstance invalid scripting component instance + errOSASystemError + } + +const + kOSAUseStandardDispatch = $FFFFFFFF; + + { + Special ResumeDispatchProc constant which may be passed to + OSASetResumeDispatchProc indicating that the handler registered + in the application with AEInstallEventHandler should be used. + + NOTE: Had to remove the cast (AEEventHandlerUPP). The C compiler + doesn't allow pointer types to be assigned to an enum. All + constants must be assigned as enums to translate properly to + Pascal. + } + kOSANoDispatch = 0; + + { + Special ResumeDispatchProc constant which may be passed to + OSASetResumeDispatchProc indicating that no dispatch should occur. + + NOTE: Had to remove the cast (AEEventHandlerUPP). The C compiler + doesn't allow pointer types to be assigned to an enum. All + constants must be assigned as enums to translate properly to + Pascal. + } + kOSADontUsePhac = $0001; + + { + Special refCon constant that may be given to OSASetResumeDispatchProc + only when kOSAUseStandardDispatch is used as the ResumeDispatchProc. + This causes the standard dispatch to be performed, except the phac + handler is not called. This is useful during tinkerability, when + the phac handler is used to lookup a context associated with an event's + direct parameter, and call OSAExecuteEvent or OSADoEvent. Failure to + bypass the phac handler would result in an infinite loop. + } + { + * OSAGetResumeDispatchProc() + * + * Availability: + * Non-Carbon CFM: in AppleScriptLib 1.1 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + } +function OSAGetResumeDispatchProc(scriptingComponent: ComponentInstance; var resumeDispatchProc: AEEventHandlerUPP; var refCon: SInt32): OSAError; external name '_OSAGetResumeDispatchProc'; +{ + OSAComponentFunctionInline(kOSASelectGetResumeDispatchProc, 8); + Returns the registered ResumeDispatchProc. If no ResumeDispatchProc has + been registered, then kOSAUseStandardDispatch (the default) is returned. + + Errors: + badComponentInstance invalid scripting component instance + errOSASystemError + } +{ + * OSAExecuteEvent() + * + * Availability: + * Non-Carbon CFM: in AppleScriptLib 1.1 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + } +function OSAExecuteEvent(scriptingComponent: ComponentInstance; const (*var*) theAppleEvent: AppleEvent; contextID: OSAID; modeFlags: SInt32; var resultingScriptValueID: OSAID): OSAError; external name '_OSAExecuteEvent'; +{ + OSAComponentFunctionInline(kOSASelectExecuteEvent, 16); + This call is similar to OSAExecute except the initial command to + execute comes in the form of an AppleEvent. If the contextID + defines any event handlers for that event, they are used to process + the event. If no event handler can be found in the context + errAEEventNotHandled is returned. If an event handler is found and + the hander "continues" control onward, the ResumeDispatchProc + (registered with OSASetResumeDispatchProc, above) is called given the + AppleEvent. The result is returned as a scriptValueID. + + Errors: + badComponentInstance invalid scripting component instance + errOSASystemError + errOSAInvalidID + errOSAScriptError: the executing script got an error + errAEEventNotHandled: no handler for event in contextID + + ModeFlags: + kOSAModeNeverInteract + kOSAModeCanInteract + kOSAModeAlwaysInteract + kOSAModeCantSwitchLayer + kOSAModeDontReconnect + kOSAModeDoRecord + } +{ + * OSADoEvent() + * + * Availability: + * Non-Carbon CFM: in AppleScriptLib 1.1 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + } +function OSADoEvent(scriptingComponent: ComponentInstance; const (*var*) theAppleEvent: AppleEvent; contextID: OSAID; modeFlags: SInt32; var reply: AppleEvent): OSAError; external name '_OSADoEvent'; +{ + OSAComponentFunctionInline(kOSASelectDoEvent, 16); + This call is similar to OSADoScript except the initial command to + execute comes in the form of an AppleEvent, and the result is an + AppleEvent reply record. If the contextID defines any event handlers + for that event, they are used to process the event. If no event handler + can be found in the context errAEEventNotHandled is returned. If an + event handler is found and the hander "continues" control onward, the + ResumeDispatchProc (registered with OSASetResumeDispatchProc, above) is + called given the AppleEvent. The result is returned in the form of an + AppleEvent reply descriptor. If at any time the script gets an error, or + if the ResumeDispatchProc returns a reply event indicating an error, + then the OSADoEvent call itself returns an error reply (i.e. OSADoEvent + should never return errOSAScriptError). Any error result returned by + the ResumeDispatchProc will be returned by OSADoEvent. + + Errors: + badComponentInstance invalid scripting component instance + errOSASystemError + errOSAInvalidID + errAEEventNotHandled: no handler for event in contextID + + ModeFlags: + kOSAModeNeverInteract + kOSAModeCanInteract + kOSAModeAlwaysInteract + kOSAModeCantSwitchLayer + kOSAModeDontReconnect + kOSAModeDoRecord + } +{ + * OSAMakeContext() + * + * Availability: + * Non-Carbon CFM: in AppleScriptLib 1.1 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + } +function OSAMakeContext(scriptingComponent: ComponentInstance; const (*var*) contextName: AEDesc; parentContext: OSAID; var resultingContextID: OSAID): OSAError; external name '_OSAMakeContext'; +{ + OSAComponentFunctionInline(kOSASelectMakeContext, 12); + Makes a new empty context which may be passed to OSAExecute or + OSAExecuteEvent. If contextName is typeNull, an unnamed context is + created. If parentContext is kOSANullScript then the resulting context + does not inherit bindings from any other context. + + Errors: + badComponentInstance invalid scripting component instance + errOSASystemError + errOSAInvalidID + errAECoercionFail: contextName is invalid + } +{ + * Debugging API + } +{ + * Types + } + +type + OSADebugSessionRef = OSAID; + OSADebugCallFrameRef = OSAID; + { + * Constants + } + OSAProgramState = UInt32; +const + eNotStarted = 0; + eRunnable = 1; + eRunning = 2; + eStopped = 3; + eTerminated = 4; + + +type + OSADebugStepKind = UInt32; +const + eStepOver = 0; + eStepIn = 1; + eStepOut = 2; + eRun = 3; + + +type + OSALocalOrGlobal = UInt32; +const + eLocal = 0; + eGlobal = 1; + eProperties = 2; + + { + * Session Information + } + keyProgramState = $64737073 (* 'dsps' *); + + { + * Call Frame Information + } + +type + StatementRangePtr = ^StatementRange; + StatementRange = record + startPos: UInt32; + endPos: UInt32; + end; + + +const + typeStatementRange = $73726E67 (* 'srng' *); + + keyProcedureName = $64666E6D (* 'dfnm' *); { typeChar } + keyStatementRange = $64667372 (* 'dfsr' *); { typeStatementRange } + keyLocalsNames = $64666C6E (* 'dfln' *); { typeAEList of typeChar } + keyGlobalsNames = $6466676E (* 'dfgn' *); { typeAEList of typeChar } + keyParamsNames = $6466706E (* 'dfpn' *); { typeAEList of typeChar } + + { + * Sessions + } + { + * OSADebuggerCreateSession() + * + * Availability: + * Non-Carbon CFM: in AppleScriptLib 1.5 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + } +function OSADebuggerCreateSession(scriptingComponent: ComponentInstance; inScript: OSAID; inContext: OSAID; var outSession: OSADebugSessionRef): OSAError; external name '_OSADebuggerCreateSession'; +{ + * OSADebuggerGetSessionState() + * + * Availability: + * Non-Carbon CFM: in AppleScriptLib 1.5 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + } +function OSADebuggerGetSessionState(scriptingComponent: ComponentInstance; inSession: OSADebugSessionRef; var outState: AERecord): OSAError; external name '_OSADebuggerGetSessionState'; +{ + * OSADebuggerSessionStep() + * + * Availability: + * Non-Carbon CFM: in AppleScriptLib 1.5 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + } +function OSADebuggerSessionStep(scriptingComponent: ComponentInstance; inSession: OSADebugSessionRef; inKind: OSADebugStepKind): OSAError; external name '_OSADebuggerSessionStep'; +{ + * OSADebuggerDisposeSession() + * + * Availability: + * Non-Carbon CFM: in AppleScriptLib 1.5 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + } +function OSADebuggerDisposeSession(scriptingComponent: ComponentInstance; inSession: OSADebugSessionRef): OSAError; external name '_OSADebuggerDisposeSession'; +{ + * OSADebuggerGetStatementRanges() + * + * Availability: + * Non-Carbon CFM: in AppleScriptLib 1.5 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + } +function OSADebuggerGetStatementRanges(scriptingComponent: ComponentInstance; inSession: OSADebugSessionRef; var outStatementRangeArray: AEDescList): OSAError; external name '_OSADebuggerGetStatementRanges'; +{ Returns an array of StatementRange objects. } +{ + * OSADebuggerGetBreakpoint() + * + * Availability: + * Non-Carbon CFM: in AppleScriptLib 1.5 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + } +function OSADebuggerGetBreakpoint(scriptingComponent: ComponentInstance; inSession: OSADebugSessionRef; inSrcOffset: UInt32; var outBreakpoint: OSAID): OSAError; external name '_OSADebuggerGetBreakpoint'; +{ + * OSADebuggerSetBreakpoint() + * + * Availability: + * Non-Carbon CFM: in AppleScriptLib 1.5 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + } +function OSADebuggerSetBreakpoint(scriptingComponent: ComponentInstance; inSession: OSADebugSessionRef; inSrcOffset: UInt32; inBreakpoint: OSAID): OSAError; external name '_OSADebuggerSetBreakpoint'; +{ + * OSADebuggerGetDefaultBreakpoint() + * + * Availability: + * Non-Carbon CFM: in AppleScriptLib 1.5 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + } +function OSADebuggerGetDefaultBreakpoint(scriptingComponent: ComponentInstance; inSession: OSADebugSessionRef; var outBreakpoint: OSAID): OSAError; external name '_OSADebuggerGetDefaultBreakpoint'; +{ + * Call Frames + } +{ + * OSADebuggerGetCurrentCallFrame() + * + * Availability: + * Non-Carbon CFM: in AppleScriptLib 1.5 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + } +function OSADebuggerGetCurrentCallFrame(scriptingComponent: ComponentInstance; inSession: OSADebugSessionRef; var outCallFrame: OSADebugCallFrameRef): OSAError; external name '_OSADebuggerGetCurrentCallFrame'; +{ + * OSADebuggerGetCallFrameState() + * + * Availability: + * Non-Carbon CFM: in AppleScriptLib 1.5 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + } +function OSADebuggerGetCallFrameState(scriptingComponent: ComponentInstance; inCallFrame: OSADebugCallFrameRef; var outState: AERecord): OSAError; external name '_OSADebuggerGetCallFrameState'; +{ + * OSADebuggerGetVariable() + * + * Availability: + * Non-Carbon CFM: in AppleScriptLib 1.5 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + } +function OSADebuggerGetVariable(scriptingComponent: ComponentInstance; inCallFrame: OSADebugCallFrameRef; const (*var*) inVariableName: AEDesc; var outVariable: OSAID): OSAError; external name '_OSADebuggerGetVariable'; +{ + * OSADebuggerSetVariable() + * + * Availability: + * Non-Carbon CFM: in AppleScriptLib 1.5 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + } +function OSADebuggerSetVariable(scriptingComponent: ComponentInstance; inCallFrame: OSADebugCallFrameRef; const (*var*) inVariableName: AEDesc; inVariable: OSAID): OSAError; external name '_OSADebuggerSetVariable'; +{ + * OSADebuggerGetPreviousCallFrame() + * + * Availability: + * Non-Carbon CFM: in AppleScriptLib 1.5 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + } +function OSADebuggerGetPreviousCallFrame(scriptingComponent: ComponentInstance; inCurrentFrame: OSADebugCallFrameRef; var outPrevFrame: OSADebugCallFrameRef): OSAError; external name '_OSADebuggerGetPreviousCallFrame'; +{ + * OSADebuggerDisposeCallFrame() + * + * Availability: + * Non-Carbon CFM: in AppleScriptLib 1.5 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + } +function OSADebuggerDisposeCallFrame(scriptingComponent: ComponentInstance; inCallFrame: OSADebugCallFrameRef): OSAError; external name '_OSADebuggerDisposeCallFrame'; +{ + * OSADebuggerCountVariables() + * + * Availability: + * Non-Carbon CFM: in AppleScriptLib 1.5 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + } +function OSADebuggerCountVariables(scriptingComponent: ComponentInstance; inSession: OSADebugSessionRef; inCallFrame: OSADebugCallFrameRef; inWhichSet: OSALocalOrGlobal; var outVariableCount: SInt32): OSAError; external name '_OSADebuggerCountVariables'; +{$ALIGN MAC68K} + + +end. |