view dstep/coreservices/carboncore/Collections.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.Collections;

//import dstep.AvailabilityMacros;
import dstep.coreservices.carboncore.MacTypes;
import dstep.coreservices.carboncore.MixedMode;
import dstep.internal.Types;
import dstep.internal.Version;

struct OpaqueCollection;
alias OpaqueCollection* Collection;
alias uint CollectionTag;
alias CollectionFlattenProcPtr CollectionFlattenUPP;
alias CollectionExceptionProcPtr CollectionExceptionUPP;

extern (C)
{
	alias short function (Collection, short) CollectionExceptionProcPtr;
	alias short function (int, void*, void*) CollectionFlattenProcPtr;
}

enum
{
	kCollectionDontWantTag = 0L,
	kCollectionDontWantId = 0L,
	kCollectionDontWantSize = 0L,
	kCollectionDontWantAttributes = 0L,
	kCollectionDontWantIndex = 0L,
	kCollectionDontWantData = 0L
}

enum
{
	kCollectionNoAttributes = 0x00000000,
	kCollectionAllAttributes = cast(c_long)0xFFFFFFFF,
	kCollectionUserAttributes = 0x0000FFFF,
	kCollectionDefaultAttributes = 0x40000000
}

enum
{
	kCollectionUser0Bit = 0,
	kCollectionUser1Bit = 1,
	kCollectionUser2Bit = 2,
	kCollectionUser3Bit = 3,
	kCollectionUser4Bit = 4,
	kCollectionUser5Bit = 5,
	kCollectionUser6Bit = 6,
	kCollectionUser7Bit = 7,
	kCollectionUser8Bit = 8,
	kCollectionUser9Bit = 9,
	kCollectionUser10Bit = 10,
	kCollectionUser11Bit = 11,
	kCollectionUser12Bit = 12,
	kCollectionUser13Bit = 13,
	kCollectionUser14Bit = 14,
	kCollectionUser15Bit = 15,
	kCollectionReserved0Bit = 16,
	kCollectionReserved1Bit = 17,
	kCollectionReserved2Bit = 18,
	kCollectionReserved3Bit = 19,
	kCollectionReserved4Bit = 20,
	kCollectionReserved5Bit = 21,
	kCollectionReserved6Bit = 22,
	kCollectionReserved7Bit = 23,
	kCollectionReserved8Bit = 24,
	kCollectionReserved9Bit = 25,
	kCollectionReserved10Bit = 26,
	kCollectionReserved11Bit = 27,
	kCollectionReserved12Bit = 28,
	kCollectionReserved13Bit = 29,
	kCollectionPersistenceBit = 30,
	kCollectionLockBit = 31
}

static if (D_LP64)
{
	enum : long
	{
		kCollectionUser0Mask = 1L << kCollectionUser0Bit,
		kCollectionUser1Mask = 1L << kCollectionUser1Bit,
		kCollectionUser2Mask = 1L << kCollectionUser2Bit,
		kCollectionUser3Mask = 1L << kCollectionUser3Bit,
		kCollectionUser4Mask = 1L << kCollectionUser4Bit,
		kCollectionUser5Mask = 1L << kCollectionUser5Bit,
		kCollectionUser6Mask = 1L << kCollectionUser6Bit,
		kCollectionUser7Mask = 1L << kCollectionUser7Bit,
		kCollectionUser8Mask = 1L << kCollectionUser8Bit,
		kCollectionUser9Mask = 1L << kCollectionUser9Bit,
		kCollectionUser10Mask = 1L << kCollectionUser10Bit,
		kCollectionUser11Mask = 1L << kCollectionUser11Bit,
		kCollectionUser12Mask = 1L << kCollectionUser12Bit,
		kCollectionUser13Mask = 1L << kCollectionUser13Bit,
		kCollectionUser14Mask = 1L << kCollectionUser14Bit,
		kCollectionUser15Mask = 1L << kCollectionUser15Bit,
		kCollectionReserved0Mask = 1L << kCollectionReserved0Bit,
		kCollectionReserved1Mask = 1L << kCollectionReserved1Bit,
		kCollectionReserved2Mask = 1L << kCollectionReserved2Bit,
		kCollectionReserved3Mask = 1L << kCollectionReserved3Bit,
		kCollectionReserved4Mask = 1L << kCollectionReserved4Bit,
		kCollectionReserved5Mask = 1L << kCollectionReserved5Bit,
		kCollectionReserved6Mask = 1L << kCollectionReserved6Bit,
		kCollectionReserved7Mask = 1L << kCollectionReserved7Bit,
		kCollectionReserved8Mask = 1L << kCollectionReserved8Bit,
		kCollectionReserved9Mask = 1L << kCollectionReserved9Bit,
		kCollectionReserved10Mask = 1L << kCollectionReserved10Bit,
		kCollectionReserved11Mask = 1L << kCollectionReserved11Bit,
		kCollectionReserved12Mask = 1L << kCollectionReserved12Bit,
		kCollectionReserved13Mask = 1L << kCollectionReserved13Bit,
		kCollectionPersistenceMask = 1L << kCollectionPersistenceBit,
		kCollectionLockMask = 1L << kCollectionLockBit
	}
}

else
{
	enum
	{
		kCollectionUser0Mask = 1 << kCollectionUser0Bit,
		kCollectionUser1Mask = 1 << kCollectionUser1Bit,
		kCollectionUser2Mask = 1 << kCollectionUser2Bit,
		kCollectionUser3Mask = 1 << kCollectionUser3Bit,
		kCollectionUser4Mask = 1 << kCollectionUser4Bit,
		kCollectionUser5Mask = 1 << kCollectionUser5Bit,
		kCollectionUser6Mask = 1 << kCollectionUser6Bit,
		kCollectionUser7Mask = 1 << kCollectionUser7Bit,
		kCollectionUser8Mask = 1 << kCollectionUser8Bit,
		kCollectionUser9Mask = 1 << kCollectionUser9Bit,
		kCollectionUser10Mask = 1 << kCollectionUser10Bit,
		kCollectionUser11Mask = 1 << kCollectionUser11Bit,
		kCollectionUser12Mask = 1 << kCollectionUser12Bit,
		kCollectionUser13Mask = 1 << kCollectionUser13Bit,
		kCollectionUser14Mask = 1 << kCollectionUser14Bit,
		kCollectionUser15Mask = 1 << kCollectionUser15Bit,
		kCollectionReserved0Mask = 1 << kCollectionReserved0Bit,
		kCollectionReserved1Mask = 1 << kCollectionReserved1Bit,
		kCollectionReserved2Mask = 1 << kCollectionReserved2Bit,
		kCollectionReserved3Mask = 1 << kCollectionReserved3Bit,
		kCollectionReserved4Mask = 1 << kCollectionReserved4Bit,
		kCollectionReserved5Mask = 1 << kCollectionReserved5Bit,
		kCollectionReserved6Mask = 1 << kCollectionReserved6Bit,
		kCollectionReserved7Mask = 1 << kCollectionReserved7Bit,
		kCollectionReserved8Mask = 1 << kCollectionReserved8Bit,
		kCollectionReserved9Mask = 1 << kCollectionReserved9Bit,
		kCollectionReserved10Mask = 1 << kCollectionReserved10Bit,
		kCollectionReserved11Mask = 1 << kCollectionReserved11Bit,
		kCollectionReserved12Mask = 1 << kCollectionReserved12Bit,
		kCollectionReserved13Mask = 1 << kCollectionReserved13Bit,
		kCollectionPersistenceMask = 1 << kCollectionPersistenceBit,
		kCollectionLockMask = 1 << kCollectionLockBit
	}
}

extern (C)
{
	CollectionFlattenUPP NewCollectionFlattenUPP (CollectionFlattenProcPtr userRoutine);
	CollectionExceptionUPP NewCollectionExceptionUPP (CollectionExceptionProcPtr userRoutine);
	void DisposeCollectionFlattenUPP (CollectionFlattenUPP userUPP);
	void DisposeCollectionExceptionUPP (CollectionExceptionUPP userUPP);
	short InvokeCollectionFlattenUPP (int size, void* data, void* refCon, CollectionFlattenUPP userUPP);
	short InvokeCollectionExceptionUPP (Collection c, short status, CollectionExceptionUPP userUPP);
	Collection NewCollection ();
	void DisposeCollection (Collection c);
	Collection CloneCollection (Collection c);
	int CountCollectionOwners (Collection c);
	int RetainCollection (Collection c);
	int ReleaseCollection (Collection c);
	uint GetCollectionRetainCount (Collection c);
	Collection CopyCollection (Collection srcCollection, Collection dstCollection);
	int GetCollectionDefaultAttributes (Collection c);
	void SetCollectionDefaultAttributes (Collection c, int whichAttributes, int newAttributes);
	int CountCollectionItems (Collection c);
	short AddCollectionItem (Collection c, uint tag, int id, int itemSize, void* itemData);
	short GetCollectionItem (Collection c, uint tag, int id, SInt32* itemSize, void* itemData);
	short RemoveCollectionItem (Collection c, uint tag, int id);
	short SetCollectionItemInfo (Collection c, uint tag, int id, int whichAttributes, int newAttributes);
	short GetCollectionItemInfo (Collection c, uint tag, int id, SInt32* itemIndex, SInt32* itemSize, SInt32* attributes);
	short ReplaceIndexedCollectionItem (Collection c, int itemIndex, int itemSize, void* itemData);
	short GetIndexedCollectionItem (Collection c, int itemIndex, SInt32* itemSize, void* itemData);
	short RemoveIndexedCollectionItem (Collection c, int itemIndex);
	short SetIndexedCollectionItemInfo (Collection c, int itemIndex, int whichAttributes, int newAttributes);
	short GetIndexedCollectionItemInfo (Collection c, int itemIndex, CollectionTag* tag, SInt32* id, SInt32* itemSize, SInt32* attributes);
	ubyte CollectionTagExists (Collection c, uint tag);
	int CountCollectionTags (Collection c);
	short GetIndexedCollectionTag (Collection c, int tagIndex, CollectionTag* tag);
	int CountTaggedCollectionItems (Collection c, uint tag);
	short GetTaggedCollectionItem (Collection c, uint tag, int whichItem, SInt32* itemSize, void* itemData);
	short GetTaggedCollectionItemInfo (Collection c, uint tag, int whichItem, SInt32* id, SInt32* itemIndex, SInt32* itemSize, SInt32* attributes);
	void PurgeCollection (Collection c, int whichAttributes, int matchingAttributes);
	void PurgeCollectionTag (Collection c, uint tag);
	void EmptyCollection (Collection c);
	short FlattenCollection (Collection c, CollectionFlattenUPP flattenProc, void* refCon);
	short FlattenPartialCollection (Collection c, CollectionFlattenUPP flattenProc, void* refCon, int whichAttributes, int matchingAttributes);
	short UnflattenCollection (Collection c, CollectionFlattenUPP flattenProc, void* refCon);
	CollectionExceptionUPP GetCollectionExceptionProc (Collection c);
	void SetCollectionExceptionProc (Collection c, CollectionExceptionUPP exceptionProc);
	Collection GetNewCollection (short collectionID);
	short AddCollectionItemHdl (Collection aCollection, uint tag, int id, Handle itemData);
	short GetCollectionItemHdl (Collection aCollection, uint tag, int id, Handle itemData);
	short ReplaceIndexedCollectionItemHdl (Collection aCollection, int itemIndex, Handle itemData);
	short GetIndexedCollectionItemHdl (Collection aCollection, int itemIndex, Handle itemData);
	short FlattenCollectionToHdl (Collection aCollection, Handle flattened);
	short UnflattenCollectionFromHdl (Collection aCollection, Handle flattened);
}