Mercurial > projects > dstep
view dstep/coreservices/carboncore/TextEncodingPlugin.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.TextEncodingPlugin; //import dstep.AvailabilityMacros; import dstep.coreservices.carboncore.MacTypes; import dstep.coreservices.carboncore.TextCommon; import dstep.coreservices.carboncore.TextEncodingConverter; import dstep.objc.bridge.TypeEncoding; alias TECEncodingsListRec* TECEncodingsListPtr; alias TECEncodingsListPtr* TECEncodingsListHandle; alias TECSubTextEncodingsRec* TECSubTextEncodingsPtr; alias TECSubTextEncodingsPtr* TECSubTextEncodingsHandle; alias TECEncodingPairsRec* TECEncodingPairsPtr; alias TECEncodingPairsPtr* TECEncodingPairsHandle; alias TECLocaleListToEncodingListRec* TECLocaleListToEncodingListPtr; alias TECLocaleToEncodingsListRec* TECLocaleToEncodingsListPtr; alias TECLocaleToEncodingsListPtr* TECLocaleToEncodingsListHandle; alias TECInternetNamesRec* TECInternetNamesPtr; alias TECInternetNamesPtr* TECInternetNamesHandle; extern (C) { alias int function (TextEncoding*, uint, ItemCount*) TECPluginGetCountAvailableSniffersPtr; alias int function (uint, TextEncoding*, uint, ItemCount*) TECPluginGetCountSubTextEncodingsPtr; alias int function (uint, TextEncoding*, uint, ItemCount*) TECPluginGetCountDestinationTextEncodingsPtr; alias int function (TECObjectRef, TECConverterContextRec*) TECPluginFlushConversionPtr; alias int function (TECObjectRef, TECConverterContextRec*) TECPluginClearContextInfoPtr; alias int function (TextEncoding*, uint, ItemCount*) TECPluginGetCountWebEncodingsPtr; alias int function (TECConversionInfo*, uint, ItemCount*) TECPluginGetCountAvailableTextEncodingPairsPtr; alias int function (TECSnifferObjectRef, TECSnifferContextRec*) TECPluginDisposeEncodingSnifferPtr; alias int function (TECSnifferObjectRef, TECSnifferContextRec*) TECPluginClearSnifferContextInfoPtr; alias int function (TECObjectRef, TECConverterContextRec*) TECPluginConvertTextEncodingPtr; alias int function (TECSnifferObjectRef*, TECSnifferContextRec*, uint) TECPluginNewEncodingSnifferPtr; alias int function (TextEncoding*, uint, ItemCount*) TECPluginGetCountMailEncodingsPtr; alias int function (TextEncoding*, char*) TECPluginGetTextEncodingFromInternetNamePtr; alias TECPluginDispatchTable * function () TECPluginGetPluginDispatchTablePtr; alias int function (TECSnifferObjectRef, TECSnifferContextRec*) TECPluginSniffTextEncodingPtr; alias int function (TECObjectRef, TECConverterContextRec*) TECPluginDisposeEncodingConverterPtr; alias int function (uint, Str255) TECPluginGetTextEncodingInternetNamePtr; alias int function (TextEncoding*, uint, ItemCount*) TECPluginGetCountAvailableTextEncodingsPtr; alias int function (TECObjectRef*, TECConverterContextRec*, uint, uint) TECPluginNewEncodingConverterPtr; } // This is needed otherwise the enums will fail compiling with gdc version (GNU) { private { const __kTECAvailableEncodingsResType = getOSType!("cven"); const __kTECAvailableSniffersResType = getOSType!("cvsf"); const __kTECSubTextEncodingsResType = getOSType!("cvsb"); const __kTECConversionInfoResType = getOSType!("cvif"); const __kTECMailEncodingsResType = getOSType!("cvml"); const __kTECWebEncodingsResType = getOSType!("cvwb"); const __kTECInternetNamesResType = getOSType!("cvmm"); } } // This is needed otherwise the enums will fail compiling with gdc version (GNU) { private { const __kTECPluginType = getOSType!("ecpg"); const __kTECPluginCreator = getOSType!("encv"); const __kTECPluginOneToOne = getOSType!("otoo"); const __kTECPluginOneToMany = getOSType!("otom"); const __kTECPluginManyToOne = getOSType!("mtoo"); const __kTECPluginSniffObj = getOSType!("snif"); } } enum { kTECAvailableEncodingsResType = getOSType!("cven"), kTECAvailableSniffersResType = getOSType!("cvsf"), kTECSubTextEncodingsResType = getOSType!("cvsb"), kTECConversionInfoResType = getOSType!("cvif"), kTECMailEncodingsResType = getOSType!("cvml"), kTECWebEncodingsResType = getOSType!("cvwb"), kTECInternetNamesResType = getOSType!("cvmm") } enum { kTECPluginType = getOSType!("ecpg"), kTECPluginCreator = getOSType!("encv"), kTECPluginOneToOne = getOSType!("otoo"), kTECPluginOneToMany = getOSType!("otom"), kTECPluginManyToOne = getOSType!("mtoo"), kTECPluginSniffObj = getOSType!("snif") } enum { verUnspecified = 32767, kTECResourceID = 128 } enum { kTECPluginDispatchTableVersion1 = 0x00010000, kTECPluginDispatchTableVersion1_1 = 0x00010001, kTECPluginDispatchTableVersion1_2 = 0x00010002, kTECPluginDispatchTableCurrentVersion = kTECPluginDispatchTableVersion1_2 } struct TextEncodingRec { uint base; uint variant; uint format; } struct TECEncodingsListRec { uint count; TextEncodingRec encodings; } struct TECSubTextEncodingRec { uint offset; TextEncodingRec searchEncoding; uint count; TextEncodingRec subEncodings; } struct TECSubTextEncodingsRec { uint count; TECSubTextEncodingRec subTextEncodingRec; } struct TECEncodingPairRec { TextEncodingRec source; TextEncodingRec dest; } struct TECEncodingPairs { TECEncodingPairRec encodingPair; uint flags; uint speed; } struct TECEncodingPairsRec { uint count; TECEncodingPairs encodingPairs; } struct TECLocaleListToEncodingListRec { uint offset; uint count; short locales; } struct TECLocaleToEncodingsListRec { uint count; TECLocaleListToEncodingListRec localeListToEncodingList; } struct TECInternetNameRec { uint offset; TextEncodingRec searchEncoding; ubyte encodingNameLength; char* encodingName; } struct TECInternetNamesRec { uint count; TECInternetNameRec InternetNames; } struct TECBufferContextRec { char* textInputBuffer; char* textInputBufferEnd; char* textOutputBuffer; char* textOutputBufferEnd; ConstTextEncodingRunPtr encodingInputBuffer; ConstTextEncodingRunPtr encodingInputBufferEnd; TextEncodingRunPtr encodingOutputBuffer; TextEncodingRunPtr encodingOutputBufferEnd; } struct TECPluginStateRec { ubyte state1; ubyte state2; ubyte state3; ubyte state4; uint longState1; uint longState2; uint longState3; uint longState4; } struct TECConverterContextRec { char* pluginRec; uint sourceEncoding; uint destEncoding; uint reserved1; uint reserved2; TECBufferContextRec bufferContext; uint contextRefCon; ProcPtr conversionProc; ProcPtr flushProc; ProcPtr clearContextInfoProc; uint options1; uint options2; TECPluginStateRec pluginState; } struct TECSnifferContextRec { char* pluginRec; uint encoding; uint maxErrors; uint maxFeatures; char* textInputBuffer; char* textInputBufferEnd; uint numFeatures; uint numErrors; uint contextRefCon; ProcPtr sniffProc; ProcPtr clearContextInfoProc; TECPluginStateRec pluginState; } struct TECPluginDispatchTable { uint version_; uint compatibleVersion; uint PluginID; TECPluginNewEncodingConverterPtr PluginNewEncodingConverter; TECPluginClearContextInfoPtr PluginClearContextInfo; TECPluginConvertTextEncodingPtr PluginConvertTextEncoding; TECPluginFlushConversionPtr PluginFlushConversion; TECPluginDisposeEncodingConverterPtr PluginDisposeEncodingConverter; TECPluginNewEncodingSnifferPtr PluginNewEncodingSniffer; TECPluginClearSnifferContextInfoPtr PluginClearSnifferContextInfo; TECPluginSniffTextEncodingPtr PluginSniffTextEncoding; TECPluginDisposeEncodingSnifferPtr PluginDisposeEncodingSniffer; TECPluginGetCountAvailableTextEncodingsPtr PluginGetCountAvailableTextEncodings; TECPluginGetCountAvailableTextEncodingPairsPtr PluginGetCountAvailableTextEncodingPairs; TECPluginGetCountDestinationTextEncodingsPtr PluginGetCountDestinationTextEncodings; TECPluginGetCountSubTextEncodingsPtr PluginGetCountSubTextEncodings; TECPluginGetCountAvailableSniffersPtr PluginGetCountAvailableSniffers; TECPluginGetCountWebEncodingsPtr PluginGetCountWebTextEncodings; TECPluginGetCountMailEncodingsPtr PluginGetCountMailTextEncodings; TECPluginGetTextEncodingInternetNamePtr PluginGetTextEncodingInternetName; TECPluginGetTextEncodingFromInternetNamePtr PluginGetTextEncodingFromInternetName; }