diff dstep/coreservices/carboncore/UnicodeUtilities.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/UnicodeUtilities.d	Sat Aug 01 15:03:28 2009 +0200
@@ -0,0 +1,302 @@
+/**
+ * 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.UnicodeUtilities;
+
+//import dstep.AvailabilityMacros;
+import dstep.corefoundation.CFBase;
+import dstep.coreservices.carboncore.MacLocales;
+import dstep.coreservices.carboncore.MacTypes;
+import dstep.coreservices.carboncore.MixedMode;
+import dstep.coreservices.carboncore.TextCommon;
+import dstep.corefoundation.CFCharacterSet;
+import dstep.objc.bridge.TypeEncoding;
+
+struct OpaqueCollatorRef;
+struct OpaqueUCTypeSelectRef;
+struct OpaqueTextBreakLocatorRef;
+
+alias ushort UCKeyOutput;
+alias ushort UCKeyCharSeq;
+alias OpaqueCollatorRef* CollatorRef;
+alias uint UCCollateOptions;
+alias uint UCCollationValue;
+alias OpaqueUCTypeSelectRef* UCTypeSelectRef;
+alias int UCTypeSelectCompareResult;
+alias ushort UCTSWalkDirection;
+alias ushort UCTypeSelectOptions;
+alias IndexToUCStringProcPtr IndexToUCStringUPP;
+alias OpaqueTextBreakLocatorRef* TextBreakLocatorRef;
+alias uint UCTextBreakType;
+alias uint UCTextBreakOptions;
+
+extern (C)
+{
+	alias ubyte function (uint, void*, void*, CFStringRef*, UCTypeSelectOptions*) IndexToUCStringProcPtr;
+}
+
+// This is needed otherwise the enums will fail compiling with gdc
+version (GNU)
+{
+	private
+	{
+		const __kUnicodeCollationClass = getOSType!("ucol");
+
+	}
+}
+
+// This is needed otherwise the enums will fail compiling with gdc
+version (GNU)
+{
+	private
+	{
+		const __kUnicodeTextBreakClass = getOSType!("ubrk");
+
+	}
+}
+
+enum
+{
+	kUCKeyOutputStateIndexMask = 0x4000,
+	kUCKeyOutputSequenceIndexMask = 0x8000,
+	kUCKeyOutputTestForIndexMask = 0xC000,
+	kUCKeyOutputGetIndexMask = 0x3FFF
+}
+
+enum
+{
+	kUCKeyStateEntryTerminalFormat = 0x0001,
+	kUCKeyStateEntryRangeFormat = 0x0002
+}
+
+enum
+{
+	kUCKeyLayoutHeaderFormat = 0x1002,
+	kUCKeyLayoutFeatureInfoFormat = 0x2001,
+	kUCKeyModifiersToTableNumFormat = 0x3001,
+	kUCKeyToCharTableIndexFormat = 0x4001,
+	kUCKeyStateRecordsIndexFormat = 0x5001,
+	kUCKeyStateTerminatorsFormat = 0x6001,
+	kUCKeySequenceDataIndexFormat = 0x7001
+}
+
+enum
+{
+	kUCKeyActionDown = 0,
+	kUCKeyActionUp = 1,
+	kUCKeyActionAutoKey = 2,
+	kUCKeyActionDisplay = 3
+}
+
+enum
+{
+	kUCKeyTranslateNoDeadKeysBit = 0
+}
+
+enum
+{
+	kUCKeyTranslateNoDeadKeysMask = 1L << kUCKeyTranslateNoDeadKeysBit
+}
+
+enum
+{
+	kUnicodeCollationClass = getOSType!("ucol")
+}
+
+enum
+{
+	kUCCollateComposeInsensitiveMask = 1L << 1,
+	kUCCollateWidthInsensitiveMask = 1L << 2,
+	kUCCollateCaseInsensitiveMask = 1L << 3,
+	kUCCollateDiacritInsensitiveMask = 1L << 4,
+	kUCCollatePunctuationSignificantMask = 1L << 15,
+	kUCCollateDigitsOverrideMask = 1L << 16,
+	kUCCollateDigitsAsNumberMask = 1L << 17
+}
+
+enum
+{
+	kUCCollateStandardOptions = kUCCollateComposeInsensitiveMask | kUCCollateWidthInsensitiveMask
+}
+
+enum
+{
+	kUCCollateTypeHFSExtended = 1
+}
+
+enum
+{
+	kUCCollateTypeSourceMask = 0x000000FF,
+	kUCCollateTypeShiftBits = 24
+}
+
+enum
+{
+	kUCCollateTypeMask = kUCCollateTypeSourceMask << kUCCollateTypeShiftBits
+}
+
+enum
+{
+	kUCTSDirectionNext = 0,
+	kUCTSDirectionPrevious = 1
+}
+
+enum
+{
+	kUCTSOptionsNoneMask = 0,
+	kUCTSOptionsReleaseStringMask = 1,
+	kUCTSOptionsDataIsOrderedMask = 2
+}
+
+enum
+{
+	kUCTypeSelectMaxListSize = cast(uint)0xFFFFFFFF
+}
+
+enum
+{
+	kUnicodeTextBreakClass = getOSType!("ubrk")
+}
+
+enum
+{
+	kUCTextBreakCharMask = 1L << 0,
+	kUCTextBreakClusterMask = 1L << 2,
+	kUCTextBreakWordMask = 1L << 4,
+	kUCTextBreakLineMask = 1L << 6,
+	kUCTextBreakParagraphMask = 1L << 8
+}
+
+enum
+{
+	kUCTextBreakLeadingEdgeMask = 1L << 0,
+	kUCTextBreakGoBackwardsMask = 1L << 1,
+	kUCTextBreakIterateMask = 1L << 2
+}
+
+struct UCKeyStateRecord
+{
+	ushort stateZeroCharData;
+	ushort stateZeroNextState;
+	ushort stateEntryCount;
+	ushort stateEntryFormat;
+	UInt32* stateEntryData;
+}
+
+
+struct UCKeyStateEntryTerminal
+{
+	ushort curState;
+	ushort charData;
+}
+
+
+struct UCKeyStateEntryRange
+{
+	ushort curStateStart;
+	ubyte curStateRange;
+	ubyte deltaMultiplier;
+	ushort charData;
+	ushort nextState;
+}
+
+
+struct UCKeyboardTypeHeader
+{
+	uint keyboardTypeFirst;
+	uint keyboardTypeLast;
+	uint keyModifiersToTableNumOffset;
+	uint keyToCharTableIndexOffset;
+	uint keyStateRecordsIndexOffset;
+	uint keyStateTerminatorsOffset;
+	uint keySequenceDataIndexOffset;
+}
+
+
+struct UCKeyboardLayout
+{
+	ushort keyLayoutHeaderFormat;
+	ushort keyLayoutDataVersion;
+	uint keyLayoutFeatureInfoOffset;
+	uint keyboardTypeCount;
+	UCKeyboardTypeHeader* keyboardTypeList;
+}
+
+
+struct UCKeyLayoutFeatureInfo
+{
+	ushort keyLayoutFeatureInfoFormat;
+	ushort reserved;
+	uint maxOutputStringLength;
+}
+
+
+struct UCKeyModifiersToTableNum
+{
+	ushort keyModifiersToTableNumFormat;
+	ushort defaultTableNum;
+	uint modifiersCount;
+	char* tableNum;
+}
+
+
+struct UCKeyToCharTableIndex
+{
+	ushort keyToCharTableIndexFormat;
+	ushort keyToCharTableSize;
+	uint keyToCharTableCount;
+	UInt32* keyToCharTableOffsets;
+}
+
+
+struct UCKeyStateRecordsIndex
+{
+	ushort keyStateRecordsIndexFormat;
+	ushort keyStateRecordCount;
+	UInt32* keyStateRecordOffsets;
+}
+
+
+struct UCKeyStateTerminators
+{
+	ushort keyStateTerminatorsFormat;
+	ushort keyStateTerminatorCount;
+	UCKeyCharSeq* keyStateTerminators;
+}
+
+
+struct UCKeySequenceDataIndex
+{
+	ushort keySequenceDataIndexFormat;
+	ushort charSequenceCount;
+	UInt16* charSequenceOffsets;
+}
+
+extern (C)
+{
+	IndexToUCStringUPP NewIndexToUCStringUPP (IndexToUCStringProcPtr userRoutine);
+	void DisposeIndexToUCStringUPP (IndexToUCStringUPP userUPP);
+	ubyte InvokeIndexToUCStringUPP (uint index, void* listDataPtr, void* refcon, CFStringRef* outString, UCTypeSelectOptions* tsOptions, IndexToUCStringUPP userUPP);
+	int UCKeyTranslate (UCKeyboardLayout* keyLayoutPtr, ushort virtualKeyCode, ushort keyAction, uint modifierKeyState, uint keyboardType, uint keyTranslateOptions, UInt32* deadKeyState, uint maxStringLength, UniCharCount* actualStringLength, wchar* unicodeString);
+	int UCCreateCollator (LocaleRef locale, uint opVariant, uint options, CollatorRef* collatorRef);
+	int UCGetCollationKey (CollatorRef collatorRef, wchar* textPtr, uint textLength, uint maxKeySize, ItemCount* actualKeySize, UCCollationValue* collationKey);
+	int UCCompareCollationKeys (UCCollationValue* key1Ptr, uint key1Length, UCCollationValue* key2Ptr, uint key2Length, char* equivalent, SInt32* order);
+	int UCCompareText (CollatorRef collatorRef, wchar* text1Ptr, uint text1Length, wchar* text2Ptr, uint text2Length, char* equivalent, SInt32* order);
+	int UCDisposeCollator (CollatorRef* collatorRef);
+	int UCCompareTextDefault (uint options, wchar* text1Ptr, uint text1Length, wchar* text2Ptr, uint text2Length, char* equivalent, SInt32* order);
+	int UCCompareTextNoLocale (uint options, wchar* text1Ptr, uint text1Length, wchar* text2Ptr, uint text2Length, char* equivalent, SInt32* order);
+	int UCCreateTextBreakLocator (LocaleRef locale, uint opVariant, uint breakTypes, TextBreakLocatorRef* breakRef);
+	int UCFindTextBreak (TextBreakLocatorRef breakRef, uint breakType, uint options, wchar* textPtr, uint textLength, uint startOffset, UniCharArrayOffset* breakOffset);
+	int UCDisposeTextBreakLocator (TextBreakLocatorRef* breakRef);
+	int UCTypeSelectCreateSelector (LocaleRef locale, uint opVariant, uint options, UCTypeSelectRef* newSelector);
+	int UCTypeSelectFlushSelectorData (UCTypeSelectRef ref_);
+	int UCTypeSelectReleaseSelector (UCTypeSelectRef* ref_);
+	ubyte UCTypeSelectWouldResetBuffer (UCTypeSelectRef inRef, CFStringRef inText, double inEventTime);
+	int UCTypeSelectAddKeyToSelector (UCTypeSelectRef inRef, CFStringRef inText, double inEventTime, char* updateFlag);
+	int UCTypeSelectCompare (UCTypeSelectRef ref_, CFStringRef inText, UCTypeSelectCompareResult* result);
+	int UCTypeSelectFindItem (UCTypeSelectRef ref_, uint listSize, void* listDataPtr, void* refcon, IndexToUCStringUPP userUPP, UInt32* closestItem);
+	int UCTypeSelectWalkList (UCTypeSelectRef ref_, CFStringRef currSelect, ushort direction, uint listSize, void* listDataPtr, void* refcon, IndexToUCStringUPP userUPP, UInt32* closestItem);
+}
\ No newline at end of file