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