1/* -*- mode: C; coding: macintosh; -*- (nowrap) 2 * ################################################################### 3 * tclAE - AppleEvent extension for Tcl 4 * 5 * FILE: "tclAEInt.h" 6 * created: 8/20/1999 {9:28:03 PM} 7 * last update: 2/6/04 {11:54:51 PM} 8 * Author: Jonathan Guyer 9 * E-mail: jguyer@his.com 10 * mail: POMODORO no seisan 11 * www: http://www.his.com/~jguyer/ 12 * 13 * ======================================================================== 14 * Copyright � 1999-2000 Jonathan Guyer 15 * ======================================================================== 16 * Permission to use, copy, modify, and distribute this software and its 17 * documentation for any purpose and without fee is hereby granted, 18 * provided that the above copyright notice appear in all copies and that 19 * both that the copyright notice and warranty disclaimer appear in 20 * supporting documentation. 21 * 22 * Jonathan Guyer disclaims all warranties with regard to this software, 23 * including all implied warranties of merchantability and fitness. In 24 * no event shall Jonathan Guyer be liable for any special, indirect or 25 * consequential damages or any damages whatsoever resulting from loss of 26 * use, data or profits, whether in an action of contract, negligence or 27 * other tortuous action, arising out of or in connection with the use or 28 * performance of this software. 29 * ======================================================================== 30 * Description: 31 * 32 * History 33 * 34 * modified by rev reason 35 * ---------- --- --- ----------- 36 * 8/20/1999 JEG 1.0 original 37 * ################################################################### 38 */ 39 40#pragma once 41 42#ifndef _TCLAE_INT 43#define _TCLAE_INT 44 45#if TARGET_API_MAC_OSX 46#define TCLAE_NO_EPPC 47#endif 48 49#ifdef TCLAE_USE_FRAMEWORK_INCLUDES 50#include <Carbon/Carbon.h> 51#else 52#include <AppleEvents.h> 53#if !defined(TCLAE_NO_EPPC) || defined(TCLAE_CW) 54#include <EPPC.h> 55#endif 56#endif 57 58#include "tclAE.h" 59 60typedef struct cmd_return { 61 int status; 62 Tcl_Obj *object; 63} CmdReturn; 64 65/* global storing the macRoman Tcl_Encoding */ 66extern Tcl_Encoding tclAE_macRoman_encoding; 67 68/* Build commands */ 69 70int Tclae_BuildCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); 71int Tclae_SendCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); 72 73/* Handler commands */ 74 75int Tclae_GetCoercionHandlerCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); 76int Tclae_GetEventHandlerCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); 77int Tclae_InstallCoercionHandlerCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); 78int Tclae_InstallEventHandlerCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); 79int Tclae_RemoveCoercionHandlerCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); 80int Tclae_RemoveEventHandlerCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); 81 82OSErr TclaeErrorCodeFromInterp(Tcl_Interp *interp); 83int TclaeInitEventHandlers(Tcl_Interp *interp); 84void TclaeInitCoercionHandlers(Tcl_Interp *interp); 85AEReturnID TclaeRegisterQueueHandler(Tcl_Interp *interp, Tcl_Obj *replyHandlerProc); 86 87/* Address commands */ 88 89int Tclae_LaunchCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); 90int Tclae_ProcessesCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); 91int Tclae_RemoteProcessResolverGetProcessesCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); 92int Tclae_IPCListPortsCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); 93int Tclae_PPCBrowserCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); 94int Tclae_GetAEAddressDescFromObj(Tcl_Interp *interp, Tcl_Obj *objPtr, AEAddressDesc **addressDescPtr); 95#if TARGET_API_MAC_CARBON 96int Tclae_GetPOSIXPathCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); 97int Tclae_GetHFSPathCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); 98#endif // TARGET_API_MAC_CARBON 99 100void TclaeInitAEAddresses(); 101CmdReturn* TclaeParse( Tcl_Interp *interp, register AEDesc *desc, Tcl_Obj *parentPtr ); 102 103/* AEDesc objects */ 104 105void TclaeInitAEDescs(); 106 107Tcl_Obj * Tclae_NewAEDescObj(AEDesc *descPtr); 108Tcl_Obj * Tclae_NewConstAEDescObj(const AEDesc *descPtr); 109Tcl_Obj * Tclae_NewAEDescRefObj(AEDesc *descPtr); 110Tcl_Obj * Tclae_NewConstAEDescRefObj(const AEDesc *descPtr); 111int Tclae_GetAEDescObjFromObj(Tcl_Interp *interp, Tcl_Obj *objPtr, Tcl_Obj **descObjHdl, int parseGizmo); 112int Tclae_GetAEDescFromObj(Tcl_Interp *interp, Tcl_Obj *objPtr, AEDesc **descPtr, int parseGizmo); 113int Tclae_GetConstAEDescFromObj(Tcl_Interp *interp, Tcl_Obj *objPtr, const AEDesc **descPtr, int parseGizmo); 114int Tclae_ConvertToAEDesc(Tcl_Interp *interp, Tcl_Obj *objPtr); 115 116void TclaeUpdateStringOfAEDesc(Tcl_Obj *objPtr); 117 118void TclaeDetachAEDescObj(Tcl_Obj *obj); 119 120/* AEDesc commands */ 121 122int Tclae_CoerceDataCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); 123int Tclae_CoerceDescCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); 124int Tclae_CountItemsCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); 125int Tclae_CreateDescCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); 126int Tclae_CreateListCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); 127int Tclae_DeleteItemCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); 128int Tclae_DeleteKeyDescCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); 129int Tclae_DuplicateDescCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); 130int Tclae_GetAttributeDataCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); 131int Tclae_GetAttributeDescCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); 132int Tclae_GetDataCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); 133int Tclae_GetDescTypeCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); 134int Tclae_GetKeyDataCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); 135int Tclae_GetKeyDescCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); 136int Tclae_GetNthDataCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); 137int Tclae_GetNthDescCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); 138int Tclae_PutDataCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); 139int Tclae_PutDescCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); 140int Tclae_PutKeyDataCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); 141int Tclae_PutKeyDescCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); 142int Tclae_ReplaceDescDataCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); 143int Tclae_SetDescTypeCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); 144 145int Tclae__GetAEDescCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); 146 147 148CmdReturn* TclaeCoerceDesc(Tcl_Interp *interp, AEDesc *fromAEDesc, Tcl_Obj *toTypeObjPtr); 149void* TclaeDataFromObj(Tcl_Interp* interp, OSType typeCode, Tcl_Obj* dataObjPtr, Size* dataSizePtr); 150int TclaeGetAttributeDesc(Tcl_Interp *interp, Tcl_Obj *theAppleEventObjPtr, Tcl_Obj *theAttributeObjPtr, Tcl_Obj *theDesiredTypeObjPtr, AEDesc *keyAEDescPtr); 151int TclaeGetKeyDesc(Tcl_Interp *interp, Tcl_Obj *theAERecordObjPtr, Tcl_Obj *theAEKeywordObjPtr, Tcl_Obj *theDesiredTypeObjPtr, AEDesc *keyAEDescPtr); 152int TclaeGetNthDesc(Tcl_Interp *interp, Tcl_Obj *theAEDescListObjPtr, Tcl_Obj *theIndexObjPtr, Tcl_Obj *theDesiredTypeObjPtr, Tcl_Obj *theKeywordVarObjPtr, AEDesc *nthAEDescPtr); 153OSType TclaeGetOSTypeFromObj(Tcl_Obj *objPtr); 154Tcl_Obj* TclaeNewOSTypeObj(OSType theOSType); 155int TclaePrint(Tcl_Interp *interp, AEDesc *inAEDescPtr); 156int TclaePutDesc(Tcl_Interp *interp, Tcl_Obj *theAEDescListObjPtr, Tcl_Obj *theIndexObjPtr, AEDesc *nthAEDescPtr); 157int TclaePutKeyDesc(Tcl_Interp *interp, Tcl_Obj *theAERecordObjPtr, Tcl_Obj *theAEKeywordObjPtr, AEDesc *keyAEDescPtr); 158CmdReturn * TclaeDataFromAEDesc(Tcl_Interp *interp, const AEDesc *theAEDescPtr, Tcl_Obj *desiredTypePtr, Tcl_Obj *typeCodeVarPtr); 159 160Size TclaeGetDescDataSize(const AEDesc * theAEDesc); 161OSErr TclaeGetDescData(const AEDesc *theAEDesc, void *dataPtr, Size maximumSize); 162void * TclaeAllocateAndGetDescData(const AEDesc *theAEDesc, Size *sizePtr); 163 164/* Object commands */ 165 166int Tclae_SetObjectCallbacksCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); 167int Tclae_ResolveCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); 168int Tclae_CallObjectAccessorCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); 169int Tclae_GetObjectAccessorCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); 170int Tclae_InstallObjectAccessorCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); 171int Tclae_RemoveObjectAccessorCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); 172int Tclae_DisposeTokenCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); 173 174void TclaeInitObjectAccessors(Tcl_Interp *interp); 175 176#endif /* _TCLAE_INT */ 177