Mercurial > projects > dstep
view 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 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.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 }