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

//import dstep.AvailabilityMacros;
import dstep.coreservices.carboncore.MacTypes;
import dstep.coreservices.carboncore.MixedMode;
import dstep.coreservices.carboncore.TextCommon;

struct OpaqueTextToUnicodeInfo;
struct OpaqueUnicodeToTextInfo;
struct OpaqueUnicodeToTextRunInfo;

alias OpaqueTextToUnicodeInfo* TextToUnicodeInfo;
alias OpaqueUnicodeToTextInfo* UnicodeToTextInfo;
alias OpaqueUnicodeToTextRunInfo* UnicodeToTextRunInfo;
alias TextToUnicodeInfo ConstTextToUnicodeInfo;
alias UnicodeToTextInfo ConstUnicodeToTextInfo;
alias int UnicodeMapVersion;
alias UnicodeMapping* UnicodeMappingPtr;
alias UnicodeMapping* ConstUnicodeMappingPtr;
alias UnicodeToTextFallbackProcPtr UnicodeToTextFallbackUPP;

extern (C)
{
	alias int function (wchar*, uint, ByteCount*, char*, uint, ByteCount*, LogicalAddress, ConstUnicodeMappingPtr) UnicodeToTextFallbackProcPtr;
}

enum
{
	kUnicodeUseLatestMapping = -1,
	kUnicodeUseHFSPlusMapping = 4
}

enum
{
	kUnicodeUseFallbacksBit = 0,
	kUnicodeKeepInfoBit = 1,
	kUnicodeDirectionalityBits = 2,
	kUnicodeVerticalFormBit = 4,
	kUnicodeLooseMappingsBit = 5,
	kUnicodeStringUnterminatedBit = 6,
	kUnicodeTextRunBit = 7,
	kUnicodeKeepSameEncodingBit = 8,
	kUnicodeForceASCIIRangeBit = 9,
	kUnicodeNoHalfwidthCharsBit = 10,
	kUnicodeTextRunHeuristicsBit = 11,
	kUnicodeMapLineFeedToReturnBit = 12,
	kUnicodeUseExternalEncodingFormBit = 13
}

enum
{
	kUnicodeUseFallbacksMask = 1L << kUnicodeUseFallbacksBit,
	kUnicodeKeepInfoMask = 1L << kUnicodeKeepInfoBit,
	kUnicodeDirectionalityMask = 3L << kUnicodeDirectionalityBits,
	kUnicodeVerticalFormMask = 1L << kUnicodeVerticalFormBit,
	kUnicodeLooseMappingsMask = 1L << kUnicodeLooseMappingsBit,
	kUnicodeStringUnterminatedMask = 1L << kUnicodeStringUnterminatedBit,
	kUnicodeTextRunMask = 1L << kUnicodeTextRunBit,
	kUnicodeKeepSameEncodingMask = 1L << kUnicodeKeepSameEncodingBit,
	kUnicodeForceASCIIRangeMask = 1L << kUnicodeForceASCIIRangeBit,
	kUnicodeNoHalfwidthCharsMask = 1L << kUnicodeNoHalfwidthCharsBit,
	kUnicodeTextRunHeuristicsMask = 1L << kUnicodeTextRunHeuristicsBit,
	kUnicodeMapLineFeedToReturnMask = 1L << kUnicodeMapLineFeedToReturnBit,
	kUnicodeUseExternalEncodingFormMask = 1L << kUnicodeUseExternalEncodingFormBit
}

enum
{
	kUnicodeDefaultDirection = 0,
	kUnicodeLeftToRight = 1,
	kUnicodeRightToLeft = 2
}

enum
{
	kUnicodeDefaultDirectionMask = kUnicodeDefaultDirection << kUnicodeDirectionalityBits,
	kUnicodeLeftToRightMask = kUnicodeLeftToRight << kUnicodeDirectionalityBits,
	kUnicodeRightToLeftMask = kUnicodeRightToLeft << kUnicodeDirectionalityBits
}

enum
{
	kUnicodeMatchUnicodeBaseBit = 0,
	kUnicodeMatchUnicodeVariantBit = 1,
	kUnicodeMatchUnicodeFormatBit = 2,
	kUnicodeMatchOtherBaseBit = 3,
	kUnicodeMatchOtherVariantBit = 4,
	kUnicodeMatchOtherFormatBit = 5
}

enum
{
	kUnicodeMatchUnicodeBaseMask = 1L << kUnicodeMatchUnicodeBaseBit,
	kUnicodeMatchUnicodeVariantMask = 1L << kUnicodeMatchUnicodeVariantBit,
	kUnicodeMatchUnicodeFormatMask = 1L << kUnicodeMatchUnicodeFormatBit,
	kUnicodeMatchOtherBaseMask = 1L << kUnicodeMatchOtherBaseBit,
	kUnicodeMatchOtherVariantMask = 1L << kUnicodeMatchOtherVariantBit,
	kUnicodeMatchOtherFormatMask = 1L << kUnicodeMatchOtherFormatBit
}

enum
{
	kUnicodeFallbackSequencingBits = 0
}

enum
{
	kUnicodeFallbackSequencingMask = 3L << kUnicodeFallbackSequencingBits,
	kUnicodeFallbackInterruptSafeMask = 1L << 2
}

enum
{
	kUnicodeFallbackDefaultOnly = 0L,
	kUnicodeFallbackCustomOnly = 1L,
	kUnicodeFallbackDefaultFirst = 2L,
	kUnicodeFallbackCustomFirst = 3L
}

struct UnicodeMapping
{
	uint unicodeEncoding;
	uint otherEncoding;
	int mappingVersion;
}

extern (C)
{
	UnicodeToTextFallbackUPP NewUnicodeToTextFallbackUPP (UnicodeToTextFallbackProcPtr userRoutine);
	void DisposeUnicodeToTextFallbackUPP (UnicodeToTextFallbackUPP userUPP);
	int InvokeUnicodeToTextFallbackUPP (wchar* iSrcUniStr, uint iSrcUniStrLen, ByteCount* oSrcConvLen, char* oDestStr, uint iDestStrLen, ByteCount* oDestConvLen, LogicalAddress iInfoPtr, ConstUnicodeMappingPtr iUnicodeMappingPtr, UnicodeToTextFallbackUPP userUPP);
	int CreateTextToUnicodeInfo (ConstUnicodeMappingPtr iUnicodeMapping, TextToUnicodeInfo* oTextToUnicodeInfo);
	int CreateTextToUnicodeInfoByEncoding (uint iEncoding, TextToUnicodeInfo* oTextToUnicodeInfo);
	int CreateUnicodeToTextInfo (ConstUnicodeMappingPtr iUnicodeMapping, UnicodeToTextInfo* oUnicodeToTextInfo);
	int CreateUnicodeToTextInfoByEncoding (uint iEncoding, UnicodeToTextInfo* oUnicodeToTextInfo);
	int CreateUnicodeToTextRunInfo (uint iNumberOfMappings, UnicodeMapping* iUnicodeMappings, UnicodeToTextRunInfo* oUnicodeToTextInfo);
	int CreateUnicodeToTextRunInfoByEncoding (uint iNumberOfEncodings, TextEncoding* iEncodings, UnicodeToTextRunInfo* oUnicodeToTextInfo);
	int CreateUnicodeToTextRunInfoByScriptCode (uint iNumberOfScriptCodes, ScriptCode* iScripts, UnicodeToTextRunInfo* oUnicodeToTextInfo);
	int ChangeTextToUnicodeInfo (TextToUnicodeInfo ioTextToUnicodeInfo, ConstUnicodeMappingPtr iUnicodeMapping);
	int ChangeUnicodeToTextInfo (UnicodeToTextInfo ioUnicodeToTextInfo, ConstUnicodeMappingPtr iUnicodeMapping);
	int DisposeTextToUnicodeInfo (TextToUnicodeInfo* ioTextToUnicodeInfo);
	int DisposeUnicodeToTextInfo (UnicodeToTextInfo* ioUnicodeToTextInfo);
	int DisposeUnicodeToTextRunInfo (UnicodeToTextRunInfo* ioUnicodeToTextRunInfo);
	int ConvertFromTextToUnicode (TextToUnicodeInfo iTextToUnicodeInfo, uint iSourceLen, ConstLogicalAddress iSourceStr, uint iControlFlags, uint iOffsetCount, ByteOffset* iOffsetArray, ItemCount* oOffsetCount, ByteOffset* oOffsetArray, uint iOutputBufLen, ByteCount* oSourceRead, ByteCount* oUnicodeLen, wchar* oUnicodeStr);
	int ConvertFromUnicodeToText (UnicodeToTextInfo iUnicodeToTextInfo, uint iUnicodeLen, wchar* iUnicodeStr, uint iControlFlags, uint iOffsetCount, ByteOffset* iOffsetArray, ItemCount* oOffsetCount, ByteOffset* oOffsetArray, uint iOutputBufLen, ByteCount* oInputRead, ByteCount* oOutputLen, LogicalAddress oOutputStr);
	int ConvertFromUnicodeToTextRun (UnicodeToTextRunInfo iUnicodeToTextInfo, uint iUnicodeLen, wchar* iUnicodeStr, uint iControlFlags, uint iOffsetCount, ByteOffset* iOffsetArray, ItemCount* oOffsetCount, ByteOffset* oOffsetArray, uint iOutputBufLen, ByteCount* oInputRead, ByteCount* oOutputLen, LogicalAddress oOutputStr, uint iEncodingRunBufLen, ItemCount* oEncodingRunOutLen, TextEncodingRun* oEncodingRuns);
	int ConvertFromUnicodeToScriptCodeRun (UnicodeToTextRunInfo iUnicodeToTextInfo, uint iUnicodeLen, wchar* iUnicodeStr, uint iControlFlags, uint iOffsetCount, ByteOffset* iOffsetArray, ItemCount* oOffsetCount, ByteOffset* oOffsetArray, uint iOutputBufLen, ByteCount* oInputRead, ByteCount* oOutputLen, LogicalAddress oOutputStr, uint iScriptRunBufLen, ItemCount* oScriptRunOutLen, ScriptCodeRun* oScriptCodeRuns);
	int TruncateForTextToUnicode (ConstTextToUnicodeInfo iTextToUnicodeInfo, uint iSourceLen, ConstLogicalAddress iSourceStr, uint iMaxLen, ByteCount* oTruncatedLen);
	int TruncateForUnicodeToText (ConstUnicodeToTextInfo iUnicodeToTextInfo, uint iSourceLen, wchar* iSourceStr, uint iControlFlags, uint iMaxLen, ByteCount* oTruncatedLen);
	int ConvertFromPStringToUnicode (TextToUnicodeInfo iTextToUnicodeInfo, char* iPascalStr, uint iOutputBufLen, ByteCount* oUnicodeLen, wchar* oUnicodeStr);
	int ConvertFromUnicodeToPString (UnicodeToTextInfo iUnicodeToTextInfo, uint iUnicodeLen, wchar* iUnicodeStr, ubyte[256] oPascalStr);
	int CountUnicodeMappings (uint iFilter, ConstUnicodeMappingPtr iFindMapping, ItemCount* oActualCount);
	int QueryUnicodeMappings (uint iFilter, ConstUnicodeMappingPtr iFindMapping, uint iMaxCount, ItemCount* oActualCount, UnicodeMapping* oReturnedMappings);
	int SetFallbackUnicodeToText (UnicodeToTextInfo iUnicodeToTextInfo, UnicodeToTextFallbackUPP iFallback, uint iControlFlags, LogicalAddress iInfoPtr);
	int SetFallbackUnicodeToTextRun (UnicodeToTextRunInfo iUnicodeToTextRunInfo, UnicodeToTextFallbackUPP iFallback, uint iControlFlags, LogicalAddress iInfoPtr);
	int ResetTextToUnicodeInfo (TextToUnicodeInfo ioTextToUnicodeInfo);
	int ResetUnicodeToTextInfo (UnicodeToTextInfo ioUnicodeToTextInfo);
	int ResetUnicodeToTextRunInfo (UnicodeToTextRunInfo ioUnicodeToTextRunInfo);
}