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

//import dstep.AvailabilityMacros;
import dstep.coreservices.carboncore.DateTimeUtils;
import dstep.coreservices.carboncore.MacMemory;
import dstep.coreservices.carboncore.MacTypes;
import dstep.coreservices.carboncore.MixedMode;
import dstep.corefoundation.CFBase;
import dstep.internal.Types;

alias byte QTypes;
alias QElem* QElemPtr;
alias QHdr* QHdrPtr;
alias void* SysPPtr;
alias DeferredTaskProcPtr DeferredTaskUPP;
alias DeferredTask* DeferredTaskPtr;

extern (C)
{
	alias void function (int) DeferredTaskProcPtr;
}

enum
{
	sortsBefore = -1,
	sortsEqual = 0,
	sortsAfter = 1
}

enum
{
	dummyType = 0,
	vType = 1,
	ioQType = 2,
	drvQType = 3,
	evType = 4,
	fsQType = 5,
	sIQType = 6,
	dtQType = 7,
	nmType = 8
}

enum
{
	useFree = 0,
	useATalk = 1,
	useAsync = 2,
	useExtClk = 3,
	useMIDI = 4
}

enum
{
	false32b = 0,
	true32b = 1
}

struct QElem
{
	QElem* qLink;
	short qType;
	short* qData;
}


struct QHdr
{
	short qFlags;
	QElemPtr qHead;
	QElemPtr qTail;
}


struct MachineLocation
{
	Fract latitude;
	Fract longitude;
	
	union
	{
		version (BigEndian)
			byte dlsDelta;
		
		c_long gmtDelta;
		
		struct
		{
			version (LittleEndian)
				byte[3] pad;
			
			byte Delta;
		}
	}
}

struct DeferredTask
{
	short qLink;
	short qType;
	short dtFlags;
	int dtAddr;
	int dtParam;
	c_long dtReserved;
}

extern (C)
{
	ubyte IsMetric ();
	void Delay (c_ulong numTicks, c_ulong* finalTicks);
	void Enqueue (QElemPtr qElement, QHdrPtr qHeader);
	short Dequeue (QElemPtr qElement, QHdrPtr qHeader);
	void ReadLocation (MachineLocation* loc);
	uint TickCount ();
	CFStringRef CSCopyUserName (ubyte useShortName);
	CFStringRef CSCopyMachineName ();
	DeferredTaskUPP NewDeferredTaskUPP (DeferredTaskProcPtr userRoutine);
	void DisposeDeferredTaskUPP (DeferredTaskUPP userUPP);
	void InvokeDeferredTaskUPP (int dtParam, DeferredTaskUPP userUPP);
}