Mercurial > projects > dstep
diff dstep/coreservices/carboncore/Aliases.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/carboncore/Aliases.d Sat Aug 01 15:03:28 2009 +0200 @@ -0,0 +1,125 @@ +/** + * 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.carboncore.Aliases; + +//import dstep.AvailabilityMacros; +import dstep.corefoundation.CFBase; +import dstep.coreservices.carboncore.Files; +import dstep.coreservices.carboncore.MacTypes; +import dstep.coreservices.carboncore.UTCUtils; +import dstep.objc.bridge.TypeEncoding; + +alias uint FSAliasInfoBitmap; +alias AliasRecord* AliasPtr; +alias AliasPtr* AliasHandle; +alias FSAliasInfo* FSAliasInfoPtr; +alias short AliasInfoType; + +extern (C) +{ + alias ubyte function (FSRef*, char*, char*) FSAliasFilterProcPtr; +} + +// This is needed otherwise the enums will fail compiling with gdc +version (GNU) +{ + private + { + const __rAliasType = getOSType!("alis"); + + } +} + +enum +{ + kFSAliasInfoNone = 0x00000000, + kFSAliasInfoVolumeCreateDate = 0x00000001, + kFSAliasInfoTargetCreateDate = 0x00000002, + kFSAliasInfoFinderInfo = 0x00000004, + kFSAliasInfoIsDirectory = 0x00000008, + kFSAliasInfoIDs = 0x00000010, + kFSAliasInfoFSInfo = 0x00000020, + kFSAliasInfoVolumeFlags = 0x00000040 +} + +enum +{ + rAliasType = getOSType!("alis") +} + +enum +{ + kARMMountVol = 0x00000001, + kARMNoUI = 0x00000002, + kARMMultVols = 0x00000008, + kARMSearch = 0x00000100, + kARMSearchMore = 0x00000200, + kARMSearchRelFirst = 0x00000400, + kARMTryFileIDFirst = 0x00000800 +} + +enum +{ + asiZoneName = -3, + asiServerName = -2, + asiVolumeName = -1, + asiAliasName = 0, + asiParentName = 1 +} + +enum +{ + kResolveAliasFileNoUI = 0x00000001, + kResolveAliasTryFileIDFirst = 0x00000002 +} + +struct AliasRecord +{ + char* hidden; +} + + +struct FSAliasInfo +{ + UTCDateTime volumeCreateDate; + UTCDateTime targetCreateDate; + uint fileType; + uint fileCreator; + uint parentDirID; + uint nodeID; + ushort filesystemID; + ushort signature; + ubyte volumeIsBootVolume; + ubyte volumeIsAutomounted; + ubyte volumeIsEjectable; + ubyte volumeHasPersistentFileIDs; + ubyte isDirectory; +} + +extern (C) +{ + short FSNewAlias (FSRef* fromFile, FSRef* target, AliasHandle* inAlias); + short FSNewAliasMinimal (FSRef* target, AliasHandle* inAlias); + short FSIsAliasFile (FSRef* fileRef, char* aliasFileFlag, char* folderFlag); + short FSResolveAliasWithMountFlags (FSRef* fromFile, AliasHandle inAlias, FSRef* target, char* wasChanged, uint mountFlags); + short FSResolveAlias (FSRef* fromFile, AliasHandle alias_, FSRef* target, char* wasChanged); + short FSResolveAliasFileWithMountFlags (FSRef* theRef, ubyte resolveAliasChains, char* targetIsFolder, char* wasAliased, uint mountFlags); + short FSResolveAliasFile (FSRef* theRef, ubyte resolveAliasChains, char* targetIsFolder, char* wasAliased); + short FSFollowFinderAlias (FSRef* fromFile, AliasHandle alias_, ubyte logon, FSRef* target, char* wasChanged); + short FSUpdateAlias (FSRef* fromFile, FSRef* target, AliasHandle alias_, char* wasChanged); + short FSNewAliasUnicode (FSRef* fromFile, FSRef* targetParentRef, uint targetNameLength, wchar* targetName, AliasHandle* inAlias, char* isDirectory); + short FSNewAliasMinimalUnicode (FSRef* targetParentRef, uint targetNameLength, wchar* targetName, AliasHandle* inAlias, char* isDirectory); + int FSNewAliasFromPath (char* fromFilePath, char* targetPath, uint flags, AliasHandle* inAlias, char* isDirectory); + int FSMatchAliasBulk (FSRef* fromFile, uint rulesMask, AliasHandle inAlias, short* aliasCount, FSRef* aliasList, char* needsUpdate, FSAliasFilterProcPtr aliasFilter, void* yourDataPtr); + int FSCopyAliasInfo (AliasHandle inAlias, HFSUniStr255* targetName, HFSUniStr255* volumeName, CFStringRef* pathString, FSAliasInfoBitmap* whichInfo, FSAliasInfo* info); + int GetAliasSize (AliasHandle alias_); + uint GetAliasUserType (AliasHandle alias_); + void SetAliasUserType (AliasHandle alias_, uint userType); + int GetAliasSizeFromPtr (AliasRecord* alias_); + uint GetAliasUserTypeFromPtr (AliasRecord* alias_); + void SetAliasUserTypeWithPtr (AliasPtr alias_, uint userType); +} \ No newline at end of file