Mercurial > projects > dstep
diff dstep/coreservices/carboncore/TextEncodingConverter.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/TextEncodingConverter.d Sat Aug 01 15:03:28 2009 +0200 @@ -0,0 +1,104 @@ +/** + * 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.TextEncodingConverter; + +//import dstep.AvailabilityMacros; +import dstep.corefoundation.CFBase; +import dstep.coreservices.carboncore.MacTypes; +import dstep.coreservices.carboncore.TextCommon; +import dstep.corefoundation.CFString; +import dstep.objc.bridge.TypeEncoding; + +struct OpaqueTECObjectRef; +struct OpaqueTECSnifferObjectRef; + +alias uint TECPluginSignature; +alias uint TECPluginVersion; +alias OpaqueTECObjectRef* TECObjectRef; +alias OpaqueTECSnifferObjectRef* TECSnifferObjectRef; +alias uint TECPluginSig; +alias uint TECInternetNameUsageMask; + +// This is needed otherwise the enums will fail compiling with gdc +version (GNU) +{ + private + { + const __kTECSignature = getOSType!("encv"); + const __kTECUnicodePluginSignature = getOSType!("puni"); + const __kTECJapanesePluginSignature = getOSType!("pjpn"); + const __kTECChinesePluginSignature = getOSType!("pzho"); + const __kTECKoreanPluginSignature = getOSType!("pkor"); + + } +} + +enum +{ + kTECSignature = getOSType!("encv"), + kTECUnicodePluginSignature = getOSType!("puni"), + kTECJapanesePluginSignature = getOSType!("pjpn"), + kTECChinesePluginSignature = getOSType!("pzho"), + kTECKoreanPluginSignature = getOSType!("pkor") +} + +enum +{ + kTECInternetNameDefaultUsageMask = 0, + kTECInternetNameStrictUsageMask = 1, + kTECInternetNameTolerantUsageMask = 2 +} + +enum +{ + kTEC_MIBEnumDontCare = -1 +} + +struct TECConversionInfo +{ + uint sourceEncoding; + uint destinationEncoding; + ushort reserved1; + ushort reserved2; +} + +extern (C) +{ + int TECCountAvailableTextEncodings (ItemCount* numberEncodings); + int TECGetAvailableTextEncodings (TextEncoding* availableEncodings, uint maxAvailableEncodings, ItemCount* actualAvailableEncodings); + int TECCountDirectTextEncodingConversions (ItemCount* numberOfEncodings); + int TECGetDirectTextEncodingConversions (TECConversionInfo* availableConversions, uint maxAvailableConversions, ItemCount* actualAvailableConversions); + int TECCountDestinationTextEncodings (uint inputEncoding, ItemCount* numberOfEncodings); + int TECGetDestinationTextEncodings (uint inputEncoding, TextEncoding* destinationEncodings, uint maxDestinationEncodings, ItemCount* actualDestinationEncodings); + int TECGetTextEncodingInternetName (uint textEncoding, ubyte[256] encodingName); + int TECGetTextEncodingFromInternetName (TextEncoding* textEncoding, char* encodingName); + int TECCreateConverter (TECObjectRef* newEncodingConverter, uint inputEncoding, uint outputEncoding); + int TECCreateConverterFromPath (TECObjectRef* newEncodingConverter, TextEncoding* inPath, uint inEncodings); + int TECDisposeConverter (TECObjectRef newEncodingConverter); + int TECClearConverterContextInfo (TECObjectRef encodingConverter); + int TECConvertText (TECObjectRef encodingConverter, char* inputBuffer, uint inputBufferLength, ByteCount* actualInputLength, char* outputBuffer, uint outputBufferLength, ByteCount* actualOutputLength); + int TECFlushText (TECObjectRef encodingConverter, char* outputBuffer, uint outputBufferLength, ByteCount* actualOutputLength); + int TECCountSubTextEncodings (uint inputEncoding, ItemCount* numberOfEncodings); + int TECGetSubTextEncodings (uint inputEncoding, TextEncoding* subEncodings, uint maxSubEncodings, ItemCount* actualSubEncodings); + int TECGetEncodingList (TECObjectRef encodingConverter, ItemCount* numEncodings, Handle* encodingList); + int TECCreateOneToManyConverter (TECObjectRef* newEncodingConverter, uint inputEncoding, uint numOutputEncodings, TextEncoding* outputEncodings); + int TECConvertTextToMultipleEncodings (TECObjectRef encodingConverter, char* inputBuffer, uint inputBufferLength, ByteCount* actualInputLength, char* outputBuffer, uint outputBufferLength, ByteCount* actualOutputLength, TextEncodingRun* outEncodingsBuffer, uint maxOutEncodingRuns, ItemCount* actualOutEncodingRuns); + int TECFlushMultipleEncodings (TECObjectRef encodingConverter, char* outputBuffer, uint outputBufferLength, ByteCount* actualOutputLength, TextEncodingRun* outEncodingsBuffer, uint maxOutEncodingRuns, ItemCount* actualOutEncodingRuns); + int TECCountWebTextEncodings (short locale, ItemCount* numberEncodings); + int TECGetWebTextEncodings (short locale, TextEncoding* availableEncodings, uint maxAvailableEncodings, ItemCount* actualAvailableEncodings); + int TECCountMailTextEncodings (short locale, ItemCount* numberEncodings); + int TECGetMailTextEncodings (short locale, TextEncoding* availableEncodings, uint maxAvailableEncodings, ItemCount* actualAvailableEncodings); + int TECCountAvailableSniffers (ItemCount* numberOfEncodings); + int TECGetAvailableSniffers (TextEncoding* availableSniffers, uint maxAvailableSniffers, ItemCount* actualAvailableSniffers); + int TECCreateSniffer (TECSnifferObjectRef* encodingSniffer, TextEncoding* testEncodings, uint numTextEncodings); + int TECSniffTextEncoding (TECSnifferObjectRef encodingSniffer, char* inputBuffer, uint inputBufferLength, TextEncoding* testEncodings, uint numTextEncodings, ItemCount* numErrsArray, uint maxErrs, ItemCount* numFeaturesArray, uint maxFeatures); + int TECDisposeSniffer (TECSnifferObjectRef encodingSniffer); + int TECClearSnifferContextInfo (TECSnifferObjectRef encodingSniffer); + int TECSetBasicOptions (TECObjectRef encodingConverter, uint controlFlags); + int TECCopyTextEncodingInternetNameAndMIB (uint textEncoding, uint usage, CFStringRef* encodingNamePtr, SInt32* mibEnumPtr); + int TECGetTextEncodingFromInternetNameOrMIB (TextEncoding* textEncodingPtr, uint usage, CFStringRef encodingName, int mibEnum); +} \ No newline at end of file