Mercurial > projects > dstep
diff dstep/coreservices/ae/AEDataModel.d @ 11:07194b026fa4
Added bindings to a couple of frameworks, new license + some other things
author | Jacob Carlborg <doob@me.com> |
---|---|
date | Sat, 01 Aug 2009 15:03:28 +0200 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dstep/coreservices/ae/AEDataModel.d Sat Aug 01 15:03:28 2009 +0200 @@ -0,0 +1,478 @@ +/** + * Copyright: Copyright (c) 2009 Jacob Carlborg. + * Authors: Jacob Carlborg + * Version: Initial created: Jul 21, 2009 + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0) + */ +module dstep.coreservices.ae.AEDataModel; + +//import dstep.AvailabilityMacros; +import dstep.coreservices.carboncore.CarbonCore; +import dstep.internal.Version; +import dstep.objc.bridge.TypeEncoding; + +struct OpaqueAEDataStorageType; + +struct AEDesc +{ + uint descriptorType; + AEDataStorage dataHandle; +} + + +struct AEKeyDesc +{ + uint descKey; + AEDesc descContent; +} + +alias uint DescType; +alias uint AEKeyword; +alias OpaqueAEDataStorageType* AEDataStorageType; +alias AEDataStorageType* AEDataStorage; +alias AEDesc* AEDescPtr; +alias AEDesc AEDescList; +alias AEDescList AERecord; +alias AEDesc AEAddressDesc; +alias AERecord AppleEvent; +alias AppleEvent* AppleEventPtr; +alias short AEReturnID; +alias int AETransactionID; +alias uint AEEventClass; +alias uint AEEventID; +alias byte AEArrayType; +alias short AESendPriority; +alias int AESendMode; +alias AECoerceDescProcPtr AECoerceDescUPP; +alias AECoercePtrProcPtr AECoercePtrUPP; +alias AECoerceDescUPP AECoercionHandlerUPP; +alias AEDisposeExternalProcPtr AEDisposeExternalUPP; +alias AEEventHandlerProcPtr AEEventHandlerUPP; +alias AEArrayData* AEArrayDataPointer; + +extern (C) +{ + alias void function (void*, int, int) AEDisposeExternalProcPtr; + alias short function (uint, void*, int, uint, int, AEDesc*) AECoercePtrProcPtr; + alias short function (AppleEvent*, AppleEvent*, int) AEEventHandlerProcPtr; + alias short function (AEDesc*, uint, int, AEDesc*) AECoerceDescProcPtr; +} + +//This is needed otherwise the enums will fail compiling with gdc +version (GNU) +{ + private + { + const __typeBoolean = getOSType!("bool"); + const __typeChar = getOSType!("TEXT"); + const __typeStyledUnicodeText = getOSType!("sutx"); + const __typeEncodedString = getOSType!("encs"); + const __typeUnicodeText = getOSType!("utxt"); + const __typeCString = getOSType!("cstr"); + const __typePString = getOSType!("pstr"); + const __typeUTF16ExternalRepresentation = getOSType!("ut16"); + const __typeUTF8Text = getOSType!("utf8"); + const __typeSInt16 = getOSType!("shor"); + const __typeUInt16 = getOSType!("ushr"); + const __typeSInt32 = getOSType!("long"); + const __typeUInt32 = getOSType!("magn"); + const __typeSInt64 = getOSType!("comp"); + const __typeUInt64 = getOSType!("ucom"); + const __typeIEEE32BitFloatingPoint = getOSType!("sing"); + const __typeIEEE64BitFloatingPoint = getOSType!("doub"); + const __type128BitFloatingPoint = getOSType!("ldbl"); + const __typeDecimalStruct = getOSType!("decm"); + const __typeAEList = getOSType!("list"); + const __typeAERecord = getOSType!("reco"); + const __typeAppleEvent = getOSType!("aevt"); + const __typeEventRecord = getOSType!("evrc"); + const __typeTrue = getOSType!("true"); + const __typeFalse = getOSType!("fals"); + const __typeAlias = getOSType!("alis"); + const __typeEnumerated = getOSType!("enum"); + const __typeType = getOSType!("type"); + const __typeAppParameters = getOSType!("appa"); + const __typeProperty = getOSType!("prop"); + const __typeFSRef = getOSType!("fsrf"); + const __typeFileURL = getOSType!("furl"); + const __typeKeyword = getOSType!("keyw"); + const __typeSectionH = getOSType!("sect"); + const __typeWildCard = getOSType!("****"); + const __typeApplSignature = getOSType!("sign"); + const __typeQDRectangle = getOSType!("qdrt"); + const __typeFixed = getOSType!("fixd"); + const __typeProcessSerialNumber = getOSType!("psn "); + const __typeApplicationURL = getOSType!("aprl"); + const __typeNull = getOSType!("null"); + const __typeCFAttributedStringRef = getOSType!("cfas"); + const __typeCFMutableAttributedStringRef = getOSType!("cfaa"); + const __typeCFStringRef = getOSType!("cfst"); + const __typeCFMutableStringRef = getOSType!("cfms"); + const __typeCFArrayRef = getOSType!("cfar"); + const __typeCFMutableArrayRef = getOSType!("cfma"); + const __typeCFDictionaryRef = getOSType!("cfdc"); + const __typeCFMutableDictionaryRef = getOSType!("cfmd"); + const __typeCFNumberRef = getOSType!("cfnb"); + const __typeCFBooleanRef = getOSType!("cftf"); + const __typeCFTypeRef = getOSType!("cfty"); + const __typeKernelProcessID = getOSType!("kpid"); + const __typeMachPort = getOSType!("port"); + const __typeApplicationBundleID = getOSType!("bund"); + const __keyTransactionIDAttr = getOSType!("tran"); + const __keyReturnIDAttr = getOSType!("rtid"); + const __keyEventClassAttr = getOSType!("evcl"); + const __keyEventIDAttr = getOSType!("evid"); + const __keyAddressAttr = getOSType!("addr"); + const __keyOptionalKeywordAttr = getOSType!("optk"); + const __keyTimeoutAttr = getOSType!("timo"); + const __keyInteractLevelAttr = getOSType!("inte"); + const __keyEventSourceAttr = getOSType!("esrc"); + const __keyMissedKeywordAttr = getOSType!("miss"); + const __keyOriginalAddressAttr = getOSType!("from"); + const __keyAcceptTimeoutAttr = getOSType!("actm"); + const __keyReplyRequestedAttr = getOSType!("repq"); + const __kSOAP1999Schema = getOSType!("ss99"); + const __kSOAP2001Schema = getOSType!("ss01"); + const __keyUserNameAttr = getOSType!("unam"); + const __keyUserPasswordAttr = getOSType!("pass"); + const __keyDisableAuthenticationAttr = getOSType!("auth"); + const __keyXMLDebuggingAttr = getOSType!("xdbg"); + const __kAERPCClass = getOSType!("rpc "); + const __kAEXMLRPCScheme = getOSType!("RPC2"); + const __kAESOAPScheme = getOSType!("SOAP"); + const __kAESharedScriptHandler = getOSType!("wscp"); + const __keyRPCMethodName = getOSType!("meth"); + const __keyRPCMethodParam = getOSType!("parm"); + const __keyRPCMethodParamOrder = getOSType!("/ord"); + const __keyAEPOSTHeaderData = getOSType!("phed"); + const __keyAEReplyHeaderData = getOSType!("rhed"); + const __keyAEXMLRequestData = getOSType!("xreq"); + const __keyAEXMLReplyData = getOSType!("xrep"); + const __keyAdditionalHTTPHeaders = getOSType!("ahed"); + const __keySOAPAction = getOSType!("sact"); + const __keySOAPMethodNameSpace = getOSType!("mspc"); + const __keySOAPMethodNameSpaceURI = getOSType!("mspu"); + const __keySOAPSchemaVersion = getOSType!("ssch"); + const __keySOAPStructureMetaData = getOSType!("/smd"); + const __keySOAPSMDNamespace = getOSType!("ssns"); + const __keySOAPSMDNamespaceURI = getOSType!("ssnu"); + const __keySOAPSMDType = getOSType!("sstp"); + const __kAEUseHTTPProxyAttr = getOSType!("xupr"); + const __kAEHTTPProxyPortAttr = getOSType!("xhtp"); + const __kAEHTTPProxyHostAttr = getOSType!("xhth"); + const __kAEUseSocksAttr = getOSType!("xscs"); + const __kAESocksProxyAttr = getOSType!("xsok"); + const __kAESocksHostAttr = getOSType!("xshs"); + const __kAESocksPortAttr = getOSType!("xshp"); + const __kAESocksUserAttr = getOSType!("xshu"); + const __kAESocksPasswordAttr = getOSType!("xshw"); + } +} + +enum +{ + typeBoolean = getOSType!("bool"), + typeChar = getOSType!("TEXT") +} + +enum +{ + typeStyledUnicodeText = getOSType!("sutx"), + typeEncodedString = getOSType!("encs"), + typeUnicodeText = getOSType!("utxt"), + typeCString = getOSType!("cstr"), + typePString = getOSType!("pstr") +} + +enum +{ + typeUTF16ExternalRepresentation = getOSType!("ut16"), + typeUTF8Text = getOSType!("utf8") +} + +enum +{ + typeSInt16 = getOSType!("shor"), + typeUInt16 = getOSType!("ushr"), + typeSInt32 = getOSType!("long"), + typeUInt32 = getOSType!("magn"), + typeSInt64 = getOSType!("comp"), + typeUInt64 = getOSType!("ucom"), + typeIEEE32BitFloatingPoint = getOSType!("sing"), + typeIEEE64BitFloatingPoint = getOSType!("doub"), + type128BitFloatingPoint = getOSType!("ldbl"), + typeDecimalStruct = getOSType!("decm") +} + +enum +{ + typeAEList = getOSType!("list"), + typeAERecord = getOSType!("reco"), + typeAppleEvent = getOSType!("aevt"), + typeEventRecord = getOSType!("evrc"), + typeTrue = getOSType!("true"), + typeFalse = getOSType!("fals"), + typeAlias = getOSType!("alis"), + typeEnumerated = getOSType!("enum"), + typeType = getOSType!("type"), + typeAppParameters = getOSType!("appa"), + typeProperty = getOSType!("prop"), + typeFSRef = getOSType!("fsrf"), + typeFileURL = getOSType!("furl"), + typeKeyword = getOSType!("keyw"), + typeSectionH = getOSType!("sect"), + typeWildCard = getOSType!("****"), + typeApplSignature = getOSType!("sign"), + typeQDRectangle = getOSType!("qdrt"), + typeFixed = getOSType!("fixd"), + typeProcessSerialNumber = getOSType!("psn "), + typeApplicationURL = getOSType!("aprl"), + typeNull = getOSType!("null") +} + +enum +{ + typeCFAttributedStringRef = getOSType!("cfas"), + typeCFMutableAttributedStringRef = getOSType!("cfaa"), + typeCFStringRef = getOSType!("cfst"), + typeCFMutableStringRef = getOSType!("cfms"), + typeCFArrayRef = getOSType!("cfar"), + typeCFMutableArrayRef = getOSType!("cfma"), + typeCFDictionaryRef = getOSType!("cfdc"), + typeCFMutableDictionaryRef = getOSType!("cfmd"), + typeCFNumberRef = getOSType!("cfnb"), + typeCFBooleanRef = getOSType!("cftf"), + typeCFTypeRef = getOSType!("cfty") +} + +enum +{ + typeKernelProcessID = getOSType!("kpid"), + typeMachPort = getOSType!("port") +} + +enum +{ + typeApplicationBundleID = getOSType!("bund") +} + +enum +{ + keyTransactionIDAttr = getOSType!("tran"), + keyReturnIDAttr = getOSType!("rtid"), + keyEventClassAttr = getOSType!("evcl"), + keyEventIDAttr = getOSType!("evid"), + keyAddressAttr = getOSType!("addr"), + keyOptionalKeywordAttr = getOSType!("optk"), + keyTimeoutAttr = getOSType!("timo"), + keyInteractLevelAttr = getOSType!("inte"), + keyEventSourceAttr = getOSType!("esrc"), + keyMissedKeywordAttr = getOSType!("miss"), + keyOriginalAddressAttr = getOSType!("from"), + keyAcceptTimeoutAttr = getOSType!("actm"), + keyReplyRequestedAttr = getOSType!("repq") +} + +static if (D_LP64) +{ + enum : long + { + kAEDebugPOSTHeader = (1 << 0), + kAEDebugReplyHeader = (1 << 1), + kAEDebugXMLRequest = (1 << 2), + kAEDebugXMLResponse = (1 << 3), + kAEDebugXMLDebugAll = 0xFFFFFFFF + } +} + +else +{ + enum + { + kAEDebugPOSTHeader = (1 << 0), + kAEDebugReplyHeader = (1 << 1), + kAEDebugXMLRequest = (1 << 2), + kAEDebugXMLResponse = (1 << 3), + kAEDebugXMLDebugAll = 0xFFFFFFFF + } +} + +enum +{ + kSOAP1999Schema = getOSType!("ss99"), + kSOAP2001Schema = getOSType!("ss01") +} + +enum +{ + keyUserNameAttr = getOSType!("unam"), + keyUserPasswordAttr = getOSType!("pass"), + keyDisableAuthenticationAttr = getOSType!("auth"), + keyXMLDebuggingAttr = getOSType!("xdbg"), + kAERPCClass = getOSType!("rpc "), + kAEXMLRPCScheme = getOSType!("RPC2"), + kAESOAPScheme = getOSType!("SOAP"), + kAESharedScriptHandler = getOSType!("wscp"), + keyRPCMethodName = getOSType!("meth"), + keyRPCMethodParam = getOSType!("parm"), + keyRPCMethodParamOrder = getOSType!("/ord"), + keyAEPOSTHeaderData = getOSType!("phed"), + keyAEReplyHeaderData = getOSType!("rhed"), + keyAEXMLRequestData = getOSType!("xreq"), + keyAEXMLReplyData = getOSType!("xrep"), + keyAdditionalHTTPHeaders = getOSType!("ahed"), + keySOAPAction = getOSType!("sact"), + keySOAPMethodNameSpace = getOSType!("mspc"), + keySOAPMethodNameSpaceURI = getOSType!("mspu"), + keySOAPSchemaVersion = getOSType!("ssch") +} + +enum +{ + keySOAPStructureMetaData = getOSType!("/smd"), + keySOAPSMDNamespace = getOSType!("ssns"), + keySOAPSMDNamespaceURI = getOSType!("ssnu"), + keySOAPSMDType = getOSType!("sstp") +} + +enum +{ + kAEUseHTTPProxyAttr = getOSType!("xupr"), + kAEHTTPProxyPortAttr = getOSType!("xhtp"), + kAEHTTPProxyHostAttr = getOSType!("xhth") +} + +enum +{ + kAESocks4Protocol = 4, + kAESocks5Protocol = 5 +} + +enum +{ + kAEUseSocksAttr = getOSType!("xscs"), + kAESocksProxyAttr = getOSType!("xsok"), + kAESocksHostAttr = getOSType!("xshs"), + kAESocksPortAttr = getOSType!("xshp"), + kAESocksUserAttr = getOSType!("xshu"), + kAESocksPasswordAttr = getOSType!("xshw") +} + +enum +{ + kAEDescListFactorNone = 0, + kAEDescListFactorType = 4, + kAEDescListFactorTypeAndSize = 8 +} + +enum +{ + kAutoGenerateReturnID = -1, + kAnyTransactionID = 0 +} + +enum +{ + kAEDataArray = 0, + kAEPackedArray = 1, + kAEDescArray = 3, + kAEKeyDescArray = 4 +} + +enum +{ + kAEHandleArray = 2 +} + +enum +{ + kAENormalPriority = 0x00000000, + kAEHighPriority = 0x00000001 +} + +enum +{ + kAENoReply = 0x00000001, + kAEQueueReply = 0x00000002, + kAEWaitReply = 0x00000003, + kAEDontReconnect = 0x00000080, + kAEWantReceipt = 0x00000200, + kAENeverInteract = 0x00000010, + kAECanInteract = 0x00000020, + kAEAlwaysInteract = 0x00000030, + kAECanSwitchLayer = 0x00000040, + kAEDontRecord = 0x00001000, + kAEDontExecute = 0x00002000, + kAEProcessNonReplyEvents = 0x00008000 +} + +enum +{ + kAEDefaultTimeout = -1, + kNoTimeOut = -2 +} + +union AEArrayData +{ + short[1] kAEDataArray; + char[1] kAEPackedArray; + Handle[1] kAEHandleArray; + AEDesc[1] kAEDescArray; + AEKeyDesc[1] kAEKeyDescArray; +} + +extern (C) +{ + AECoerceDescUPP NewAECoerceDescUPP (AECoerceDescProcPtr userRoutine); + AECoercePtrUPP NewAECoercePtrUPP (AECoercePtrProcPtr userRoutine); + void DisposeAECoerceDescUPP (AECoerceDescUPP userUPP); + void DisposeAECoercePtrUPP (AECoercePtrUPP userUPP); + short InvokeAECoerceDescUPP (AEDesc* fromDesc, uint toType, int handlerRefcon, AEDesc* toDesc, AECoerceDescUPP userUPP); + short InvokeAECoercePtrUPP (uint typeCode, void* dataPtr, int dataSize, uint toType, int handlerRefcon, AEDesc* result, AECoercePtrUPP userUPP); + short AEInstallCoercionHandler (uint fromType, uint toType, AECoercionHandlerUPP handler, int handlerRefcon, ubyte fromTypeIsDesc, ubyte isSysHandler); + short AERemoveCoercionHandler (uint fromType, uint toType, AECoercionHandlerUPP handler, ubyte isSysHandler); + short AEGetCoercionHandler (uint fromType, uint toType, AECoercionHandlerUPP* handler, SRefCon* handlerRefcon, char* fromTypeIsDesc, ubyte isSysHandler); + short AECoercePtr (uint typeCode, void* dataPtr, int dataSize, uint toType, AEDesc* result); + short AECoerceDesc (AEDesc* theAEDesc, uint toType, AEDesc* result); + void AEInitializeDesc (AEDesc* desc); + short AECreateDesc (uint typeCode, void* dataPtr, int dataSize, AEDesc* result); + short AEDisposeDesc (AEDesc* theAEDesc); + short AEDuplicateDesc (AEDesc* theAEDesc, AEDesc* result); + int AECreateDescFromExternalPtr (uint descriptorType, void* dataPtr, int dataLength, AEDisposeExternalUPP disposeCallback, int disposeRefcon, AEDesc* theDesc); + short AECreateList (void* factoringPtr, int factoredSize, ubyte isRecord, AEDescList* resultList); + short AECountItems (AEDescList* theAEDescList, long* theCount); + short AEPutPtr (AEDescList* theAEDescList, int index, uint typeCode, void* dataPtr, int dataSize); + short AEPutDesc (AEDescList* theAEDescList, int index, AEDesc* theAEDesc); + short AEGetNthPtr (AEDescList* theAEDescList, int index, uint desiredType, AEKeyword* theAEKeyword, DescType* typeCode, void* dataPtr, int maximumSize, Size* actualSize); + short AEGetNthDesc (AEDescList* theAEDescList, int index, uint desiredType, AEKeyword* theAEKeyword, AEDesc* result); + short AESizeOfNthItem (AEDescList* theAEDescList, int index, DescType* typeCode, Size* dataSize); + short AEGetArray (AEDescList* theAEDescList, byte arrayType, AEArrayDataPointer arrayPtr, int maximumSize, DescType* itemType, Size* itemSize, long* itemCount); + short AEPutArray (AEDescList* theAEDescList, byte arrayType, AEArrayData* arrayPtr, uint itemType, int itemSize, int itemCount); + short AEDeleteItem (AEDescList* theAEDescList, int index); + ubyte AECheckIsRecord (AEDesc* theDesc); + short AECreateAppleEvent (uint theAEEventClass, uint theAEEventID, AEAddressDesc* target, short returnID, int transactionID, AppleEvent* result); + short AEPutParamPtr (AppleEvent* theAppleEvent, uint theAEKeyword, uint typeCode, void* dataPtr, int dataSize); + short AEPutParamDesc (AppleEvent* theAppleEvent, uint theAEKeyword, AEDesc* theAEDesc); + short AEGetParamPtr (AppleEvent* theAppleEvent, uint theAEKeyword, uint desiredType, DescType* actualType, void* dataPtr, int maximumSize, Size* actualSize); + short AEGetParamDesc (AppleEvent* theAppleEvent, uint theAEKeyword, uint desiredType, AEDesc* result); + short AESizeOfParam (AppleEvent* theAppleEvent, uint theAEKeyword, DescType* typeCode, Size* dataSize); + short AEDeleteParam (AppleEvent* theAppleEvent, uint theAEKeyword); + short AEGetAttributePtr (AppleEvent* theAppleEvent, uint theAEKeyword, uint desiredType, DescType* typeCode, void* dataPtr, int maximumSize, Size* actualSize); + short AEGetAttributeDesc (AppleEvent* theAppleEvent, uint theAEKeyword, uint desiredType, AEDesc* result); + short AESizeOfAttribute (AppleEvent* theAppleEvent, uint theAEKeyword, DescType* typeCode, Size* dataSize); + short AEPutAttributePtr (AppleEvent* theAppleEvent, uint theAEKeyword, uint typeCode, void* dataPtr, int dataSize); + short AEPutAttributeDesc (AppleEvent* theAppleEvent, uint theAEKeyword, AEDesc* theAEDesc); + int AESizeOfFlattenedDesc (AEDesc* theAEDesc); + int AEFlattenDesc (AEDesc* theAEDesc, char* buffer, int bufferSize, Size* actualSize); + int AEUnflattenDesc (void* buffer, AEDesc* result); + short AEGetDescData (AEDesc* theAEDesc, void* dataPtr, int maximumSize); + int AEGetDescDataSize (AEDesc* theAEDesc); + short AEReplaceDescData (uint typeCode, void* dataPtr, int dataSize, AEDesc* theAEDesc); + int AEGetDescDataRange (AEDesc* dataDesc, void* buffer, int offset, int length); + AEDisposeExternalUPP NewAEDisposeExternalUPP (AEDisposeExternalProcPtr userRoutine); + AEEventHandlerUPP NewAEEventHandlerUPP (AEEventHandlerProcPtr userRoutine); + void DisposeAEDisposeExternalUPP (AEDisposeExternalUPP userUPP); + void DisposeAEEventHandlerUPP (AEEventHandlerUPP userUPP); + void InvokeAEDisposeExternalUPP (void* dataPtr, int dataLength, int refcon, AEDisposeExternalUPP userUPP); + short InvokeAEEventHandlerUPP (AppleEvent* theAppleEvent, AppleEvent* reply, int handlerRefcon, AEEventHandlerUPP userUPP); +} \ No newline at end of file