diff dstep/coreservices/carboncore/CodeFragments.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/CodeFragments.d	Sat Aug 01 15:03:28 2009 +0200
@@ -0,0 +1,365 @@
+/**
+ * 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.CodeFragments;
+
+//import dstep.AvailabilityMacros;
+import dstep.coreservices.carboncore.Files;
+import dstep.coreservices.carboncore.MacTypes;
+import dstep.coreservices.carboncore.Multiprocessing;
+import dstep.corefoundation.CFBundle;
+import dstep.internal.Version;
+import dstep.objc.bridge.Bridge;
+import dstep.objc.bridge.TypeEncoding;
+import dstep.objc.objc : id;
+
+static if (!D_LP64):
+align (2):
+	
+version (GNU)
+{
+	private
+	{
+		const __kPowerPCCFragArch = getOSType!("pwpc");
+		const __kMotorola68KCFragArch = getOSType!("m68k");
+		const __kCFragResourceType = getOSType!("cfrg");
+		const __kCFragLibraryFileType = getOSType!("shlb");
+		const __kCompiledCFragArch = getOSType!("none");
+	}
+}
+
+template CFragHasFileLocation (alias a)
+{
+	const CFragHasFileLocation = a == kDataForkCFragLocator || a == kResourceCFragLocator;
+}
+	
+struct CFragCFBundleLocator
+{
+	CFBundleRef fragmentBundle;
+	uint offset;
+	uint length;
+}
+
+struct OpaqueCFragClosureID;
+alias OpaqueCFragClosureID* CFragClosureID;
+
+struct OpaqueCFragConnectionID;
+alias OpaqueCFragConnectionID* CFragConnectionID;
+
+struct OpaqueCFragContainerID;
+alias OpaqueCFragContainerID* CFragContainerID;
+
+alias MPProcessID CFragContextID;
+alias CFragSystem7DiskFlatLocator CFragHFSDiskFlatLocator;
+alias CFragSystem7Locator CFragHFSLocator;
+alias CFragSystem7LocatorPtr CFragHFSLocatorPtr;
+alias CFragSystem7MemoryLocator CFragHFSMemoryLocator;
+alias CFragSystem7SegmentedLocator CFragHFSSegmentedLocator;
+alias CFragSystem7InitBlock CFragInitBlock;
+alias CFragSystem7InitBlockPtr CFragInitBlockPtr;
+
+struct CFragResource
+{
+	uint reservedA;
+	uint reservedB;
+	ushort reservedC;
+	ushort version_;
+	uint reservedD;
+	uint reservedE;
+	uint reservedF;
+	uint reservedG;
+	ushort reservedH;
+	ushort memberCount;
+	CFragResourceMember firstMember;
+}
+
+alias CFragResource* CFragResourcePtr;
+alias CFragResourcePtr* CFragResourceHandle;
+
+struct CFragResourceExtensionHeader
+{
+	ushort extensionKind;
+	ushort extensionSize;
+}
+
+alias CFragResourceExtensionHeader* CFragResourceExtensionHeaderPtr;
+
+struct CFragResourceMember
+{
+	CFragArchitecture architecture;
+	ushort reservedA;
+	ubyte reservedB;
+	ubyte updateLevel;
+	CFragVersionNumber currentVersion;
+	CFragVersionNumber oldDefVersion;
+	CFragUsage1Union uUsage1;
+	CFragUsage2Union uUsage2;
+	CFragUsage usage;
+	CFragLocatorKind where;
+	uint offset;
+	uint length;
+	CFragWhere1Union uWhere1;
+	CFragWhere2Union uWhere2;
+	ushort extensionCount;
+	ushort memberSize;
+	ubyte[16] name;
+}
+
+alias CFragResourceMember* CFragResourceMemberPtr;
+
+struct CFragResourceSearchExtension
+{
+	CFragResourceExtensionHeader header;
+	OSType libKind;
+	ubyte[1] qualifiers;
+}
+
+alias CFragResourceSearchExtension* CFragResourceSearchExtensionPtr;
+
+struct CFragSystem7DiskFlatLocator
+{
+	FSSpec* fileSpec;
+	uint offset;
+	uint length;
+}
+
+struct CFragSystem7InitBlock
+{
+	CFragContextID contextID;
+	CFragContextID closureID;
+	CFragConnectionID connectionID;
+	CFragSystem7Locator fragLocator;
+	StringPtr libName;
+	uint reservedA;
+}
+
+alias CFragSystem7InitBlock* CFragSystem7InitBlockPtr;
+
+struct CFragSystem7Locator
+{
+	int where;
+	
+	union
+	{
+		CFragSystem7DiskFlatLocator onDisk;
+		CFragSystem7MemoryLocator inMem;
+		CFragSystem7SegmentedLocator inSegs;
+		CFragCFBundleLocator inBundle;
+	}
+}
+
+alias CFragSystem7Locator* CFragSystem7LocatorPtr;
+
+struct CFragSystem7MemoryLocator
+{
+	LogicalAddress address;
+	uint length;
+	bool inPlace;
+	ubyte reservedA;
+	ushort reservedB;
+}
+
+struct CFragSystem7SegmentedLocator
+{
+	FSSpec* fileSpec;
+	OSType rsrcType;
+	short rsrcID;
+	ushort reservedA;
+}
+
+union CFragUsage1Union
+{
+	uint appStackSize;
+}
+
+union CFragUsage2Union
+{
+	short appSubdirID;
+	ushort libFlags;
+}
+
+union CFragWhere1Union
+{
+	uint spaceID;
+}
+
+union CFragWhere2Union
+{
+	ushort reserved;
+}
+
+alias CFragConnectionID ConnectionID;
+alias CFragSystem7DiskFlatLocator DiskFragment;
+alias CFragSystem7Locator FragmentLocator;
+alias CFragSystem7LocatorPtr FragmentLocatorPtr;
+alias CFragInitBlock InitBlock;
+alias CFragInitBlockPtr InitBlockPtr;
+alias CFragLoadOptions LoadFlags;
+alias CFragSystem7MemoryLocator MemFragment;
+alias CFragSystem7SegmentedLocator SegmentedFragment;
+alias CFragSymbolClass SymClass;
+
+alias OSType CFragArchitecture;
+enum : OSType
+{
+	kPowerPCCFragArch = getOSType!("pwpc"),
+	kMotorola68KCFragArch = getOSType!("m68k"),
+	kAnyCFragArch = 0x3F3F3F3F
+}
+
+enum
+{
+	kIsCompleteCFrag = 0,
+	kFirstCFragUpdate = 1
+}
+
+enum
+{
+	kCurrCFragResourceVersion = 1
+}
+
+enum
+{
+	kDefaultCFragNameLen = 16
+}
+
+alias CFragHasFileLocation IsFileLocation;
+
+enum
+{
+	kCFragGoesToEOF = 0
+}
+
+enum
+{
+	kCFragLibUsageMapPrivatelyMask = 0x0001
+}
+
+enum
+{
+	kCFragResourceSearchExtensionKind = 0x30EE
+}
+
+enum
+{
+	kCFragResourceType = getOSType!("cfrg"),
+	kCFragResourceID = 0,
+	kCFragLibraryFileType = getOSType!("shlb"),
+	kCFragAllFileTypes = 0xFFFFFFFF
+}
+
+static if (PPC)
+{
+	enum
+	{
+		kCompiledCFragArch = kPowerPCCFragArch
+	}
+}
+
+else static if (X86)
+{
+	enum
+	{
+		kCompiledCFragArch = getOSType!("none")
+	}
+}
+
+enum : OptionBits
+{
+	kReferenceCFrag = 0x0001,
+	kFindCFrag = 0x0002,
+	kPrivateCFragCopy = 0x0005
+}
+
+enum
+{
+	kLoadCFrag = kReferenceCFrag
+}
+
+enum
+{
+	kPowerPC = kPowerPCCFragArch,
+	kMotorola68K = kMotorola68KCFragArch
+}
+
+enum : ubyte
+{
+	kCodeCFragSymbol = 0,
+	kDataCFragSymbol = 1,
+	kTVectorCFragSymbol = 2,
+	kTOCCFragSymbol = 3,
+	kGlueCFragSymbol = 4
+}
+
+enum : ubyte
+{
+	kMemoryCFragLocator = 0,
+	kDataForkCFragLocator = 1,
+	kResourceCFragLocator = 2,
+	kNamedFragmentCFragLocator = 4,
+	kCFBundleCFragLocator = 5,
+	kCFBundlePreCFragLocator = 6
+}
+
+
+enum : ubyte
+{
+	kImportLibraryCFrag = 0,
+	kApplicationCFrag = 1,
+	kDropInAdditionCFrag = 2,
+	kStubLibraryCFrag = 3,
+	kWeakStubLibraryCFrag = 4
+}
+
+enum
+{
+	kUnresolvedCFragSymbolAddress = 0
+}
+
+
+enum
+{
+	kPowerPCArch = kPowerPCCFragArch,
+	kMotorola68KArch = kMotorola68KCFragArch,
+	kAnyArchType = kAnyCFragArch,
+	kNoLibName = 0,
+	kNoConnectionID = 0,
+	kLoadLib = kLoadCFrag,
+	kFindLib = kFindCFrag,
+	kNewCFragCopy = kPrivateCFragCopy,
+	kLoadNewCopy = kPrivateCFragCopy,
+	kUseInPlace = 0x80,
+	kCodeSym = kCodeCFragSymbol,
+	kDataSym = kDataCFragSymbol,
+	kTVectSym = kTVectorCFragSymbol,
+	kTOCSym = kTOCCFragSymbol,
+	kGlueSym = kGlueCFragSymbol,
+	kInMem = kMemoryCFragLocator,
+	kOnDiskFlat = kDataForkCFragLocator,
+	kOnDiskSegmented = kResourceCFragLocator,
+	kIsLib = kImportLibraryCFrag,
+	kIsApp = kApplicationCFrag,
+	kIsDropIn = kDropInAdditionCFrag,
+	kFullLib = kIsCompleteCFrag,
+	kUpdateLib = kFirstCFragUpdate,
+	kWholeFork = kCFragGoesToEOF,
+	kCFMRsrcType = kCFragResourceType,
+	kCFMRsrcID = kCFragResourceID,
+	kSHLBFileType = kCFragLibraryFileType,
+	kUnresolvedSymbolAddress = kUnresolvedCFragSymbolAddress
+}
+
+alias OptionBits CFragLoadOptions;
+alias ubyte CFragLocatorKind;
+alias ubyte CFragSymbolClass;
+alias ubyte CFragUsage;
+alias uint CFragVersionNumber;
+
+enum : uint
+{
+	kNullCFragVersion = 0,
+	kWildcardCFragVersion = 0xFFFFFFFF
+}
\ No newline at end of file