Mercurial > projects > dstep
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