view 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 source

/**
 * 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);
}