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

//import dstep.AvailabilityMacros;
import dstep.coreservices.carboncore.IntlResources;
import dstep.coreservices.carboncore.MacTypes;
import dstep.internal.Types;

alias byte TokenResults;
alias short ScriptTokenType;
alias TokenRec* TokenRecPtr;
alias TokenBlock* TokenBlockPtr;

enum
{
	smSystemScript = -1,
	smCurrentScript = -2,
	smAllScripts = -3
}

enum
{
	smRoman = 0,
	smJapanese = 1,
	smTradChinese = 2,
	smKorean = 3,
	smArabic = 4,
	smHebrew = 5,
	smGreek = 6,
	smCyrillic = 7,
	smRSymbol = 8,
	smDevanagari = 9,
	smGurmukhi = 10,
	smGujarati = 11,
	smOriya = 12,
	smBengali = 13,
	smTamil = 14,
	smTelugu = 15,
	smKannada = 16,
	smMalayalam = 17,
	smSinhalese = 18,
	smBurmese = 19,
	smKhmer = 20,
	smThai = 21,
	smLao = 22,
	smGeorgian = 23,
	smArmenian = 24,
	smSimpChinese = 25,
	smTibetan = 26,
	smMongolian = 27,
	smEthiopic = 28,
	smGeez = 28,
	smCentralEuroRoman = 29,
	smVietnamese = 30,
	smExtArabic = 31,
	smUninterp = 32
}

enum
{
	smUnicodeScript = 0x7E
}

enum
{
	smChinese = 2,
	smRussian = 7,
	smLaotian = 22,
	smAmharic = 28,
	smSlavic = 29,
	smEastEurRoman = 29,
	smSindhi = 31,
	smKlingon = 32
}

enum
{
	langEnglish = 0,
	langFrench = 1,
	langGerman = 2,
	langItalian = 3,
	langDutch = 4,
	langSwedish = 5,
	langSpanish = 6,
	langDanish = 7,
	langPortuguese = 8,
	langNorwegian = 9,
	langHebrew = 10,
	langJapanese = 11,
	langArabic = 12,
	langFinnish = 13,
	langGreek = 14,
	langIcelandic = 15,
	langMaltese = 16,
	langTurkish = 17,
	langCroatian = 18,
	langTradChinese = 19,
	langUrdu = 20,
	langHindi = 21,
	langThai = 22,
	langKorean = 23
}

enum
{
	langLithuanian = 24,
	langPolish = 25,
	langHungarian = 26,
	langEstonian = 27,
	langLatvian = 28,
	langSami = 29,
	langFaroese = 30,
	langFarsi = 31,
	langPersian = 31,
	langRussian = 32,
	langSimpChinese = 33,
	langFlemish = 34,
	langIrishGaelic = 35,
	langAlbanian = 36,
	langRomanian = 37,
	langCzech = 38,
	langSlovak = 39,
	langSlovenian = 40,
	langYiddish = 41,
	langSerbian = 42,
	langMacedonian = 43,
	langBulgarian = 44,
	langUkrainian = 45,
	langByelorussian = 46,
	langBelorussian = 46
}

enum
{
	langUzbek = 47,
	langKazakh = 48,
	langAzerbaijani = 49,
	langAzerbaijanAr = 50,
	langArmenian = 51,
	langGeorgian = 52,
	langMoldavian = 53,
	langKirghiz = 54,
	langTajiki = 55,
	langTurkmen = 56,
	langMongolian = 57,
	langMongolianCyr = 58,
	langPashto = 59,
	langKurdish = 60,
	langKashmiri = 61,
	langSindhi = 62,
	langTibetan = 63,
	langNepali = 64,
	langSanskrit = 65,
	langMarathi = 66,
	langBengali = 67,
	langAssamese = 68,
	langGujarati = 69,
	langPunjabi = 70
}

enum
{
	langOriya = 71,
	langMalayalam = 72,
	langKannada = 73,
	langTamil = 74,
	langTelugu = 75,
	langSinhalese = 76,
	langBurmese = 77,
	langKhmer = 78,
	langLao = 79,
	langVietnamese = 80,
	langIndonesian = 81,
	langTagalog = 82,
	langMalayRoman = 83,
	langMalayArabic = 84,
	langAmharic = 85,
	langTigrinya = 86,
	langOromo = 87,
	langSomali = 88,
	langSwahili = 89,
	langKinyarwanda = 90,
	langRuanda = 90,
	langRundi = 91,
	langNyanja = 92,
	langChewa = 92,
	langMalagasy = 93,
	langEsperanto = 94
}

enum
{
	langWelsh = 128,
	langBasque = 129,
	langCatalan = 130,
	langLatin = 131,
	langQuechua = 132,
	langGuarani = 133,
	langAymara = 134,
	langTatar = 135,
	langUighur = 136,
	langDzongkha = 137,
	langJavaneseRom = 138,
	langSundaneseRom = 139,
	langGalician = 140,
	langAfrikaans = 141
}

enum
{
	langBreton = 142,
	langInuktitut = 143,
	langScottishGaelic = 144,
	langManxGaelic = 145,
	langIrishGaelicScript = 146,
	langTongan = 147,
	langGreekAncient = 148,
	langGreenlandic = 149,
	langAzerbaijanRoman = 150,
	langNynorsk = 151
}

enum
{
	langUnspecified = 32767
}

enum
{
	langPortugese = 8,
	langMalta = 16,
	langYugoslavian = 18,
	langChinese = 19,
	langLettish = 28,
	langLapponian = 29,
	langLappish = 29,
	langSaamisk = 29,
	langFaeroese = 30,
	langIrish = 35,
	langGalla = 87,
	langAfricaans = 141,
	langGreekPoly = 148
}

enum
{
	verUS = 0,
	verFrance = 1,
	verBritain = 2,
	verGermany = 3,
	verItaly = 4,
	verNetherlands = 5,
	verFlemish = 6,
	verSweden = 7,
	verSpain = 8,
	verDenmark = 9,
	verPortugal = 10,
	verFrCanada = 11,
	verNorway = 12,
	verIsrael = 13,
	verJapan = 14,
	verAustralia = 15,
	verArabic = 16,
	verFinland = 17,
	verFrSwiss = 18,
	verGrSwiss = 19,
	verGreece = 20,
	verIceland = 21,
	verMalta = 22,
	verCyprus = 23,
	verTurkey = 24,
	verYugoCroatian = 25
}

enum
{
	verNetherlandsComma = 26,
	verFlemishPoint = 27,
	verCanadaComma = 28,
	verCanadaPoint = 29,
	vervariantPortugal = 30,
	vervariantNorway = 31,
	vervariantDenmark = 32
}

enum
{
	verIndiaHindi = 33,
	verPakistanUrdu = 34,
	verTurkishModified = 35,
	verItalianSwiss = 36,
	verInternational = 37,
	verRomania = 39,
	verGreekAncient = 40,
	verLithuania = 41,
	verPoland = 42,
	verHungary = 43,
	verEstonia = 44,
	verLatvia = 45,
	verSami = 46,
	verFaroeIsl = 47,
	verIran = 48,
	verRussia = 49,
	verIreland = 50,
	verKorea = 51,
	verChina = 52,
	verTaiwan = 53,
	verThailand = 54,
	verScriptGeneric = 55,
	verCzech = 56,
	verSlovak = 57,
	verEastAsiaGeneric = 58,
	verMagyar = 59,
	verBengali = 60,
	verBelarus = 61
}

enum
{
	verUkraine = 62,
	verGreeceAlt = 64,
	verSerbian = 65,
	verSlovenian = 66,
	verMacedonian = 67,
	verCroatia = 68,
	verGermanReformed = 70,
	verBrazil = 71,
	verBulgaria = 72,
	verCatalonia = 73,
	verMultilingual = 74,
	verScottishGaelic = 75,
	verManxGaelic = 76,
	verBreton = 77,
	verNunavut = 78,
	verWelsh = 79,
	verIrishGaelicScript = 81,
	verEngCanada = 82,
	verBhutan = 83,
	verArmenian = 84,
	verGeorgian = 85,
	verSpLatinAmerica = 86,
	verTonga = 88,
	verFrenchUniversal = 91,
	verAustria = 92,
	verGujarati = 94,
	verPunjabi = 95,
	verIndiaUrdu = 96,
	verVietnam = 97
}

enum
{
	verFrBelgium = 98,
	verUzbek = 99,
	verSingapore = 100,
	verNynorsk = 101,
	verAfrikaans = 102,
	verEsperanto = 103,
	verMarathi = 104,
	verTibetan = 105,
	verNepal = 106,
	verGreenland = 107,
	verIrelandEnglish = 108
}

enum
{
	verFrBelgiumLux = 6,
	verBelgiumLux = 6,
	verArabia = 16,
	verYugoslavia = 25,
	verBelgiumLuxPoint = 27,
	verIndia = 33,
	verPakistan = 34,
	verRumania = 39,
	verGreecePoly = 40,
	verLapland = 46,
	verFaeroeIsl = 47,
	verGenericFE = 58,
	verFarEastGeneric = 58,
	verByeloRussian = 61,
	verUkrania = 62,
	verAlternateGr = 64,
	verSerbia = 65,
	verSlovenia = 66,
	verMacedonia = 67,
	verBrittany = 77,
	verWales = 79,
	verArmenia = 84,
	verGeorgia = 85,
	verAustriaGerman = 92,
	verTibet = 105
}

enum
{
	minCountry = verUS,
	maxCountry = verIrelandEnglish
}

enum
{
	calGregorian = 0,
	calArabicCivil = 1,
	calArabicLunar = 2,
	calJapanese = 3,
	calJewish = 4,
	calCoptic = 5,
	calPersian = 6
}

enum
{
	intWestern = 0,
	intArabic = 1,
	intRoman = 2,
	intJapanese = 3,
	intEuropean = 4,
	intOutputMask = 0x8000
}

enum
{
	smSingleByte = 0,
	smFirstByte = -1,
	smLastByte = 1,
	smMiddleByte = 2
}

enum
{
	smcTypeMask = 0x000F,
	smcReserved = 0x00F0,
	smcClassMask = 0x0F00,
	smcOrientationMask = 0x1000,
	smcRightMask = 0x2000,
	smcUpperMask = 0x4000,
	smcDoubleMask = 0x8000
}

enum
{
	smCharPunct = 0x0000,
	smCharAscii = 0x0001,
	smCharEuro = 0x0007,
	smCharExtAscii = 0x0007,
	smCharKatakana = 0x0002,
	smCharHiragana = 0x0003,
	smCharIdeographic = 0x0004,
	smCharTwoByteGreek = 0x0005,
	smCharTwoByteRussian = 0x0006,
	smCharBidirect = 0x0008,
	smCharContextualLR = 0x0009,
	smCharNonContextualLR = 0x000A,
	smCharHangul = 0x000C,
	smCharJamo = 0x000D,
	smCharBopomofo = 0x000E,
	smCharGanaKana = 0x000F,
	smCharFISKana = 0x0002,
	smCharFISGana = 0x0003,
	smCharFISIdeo = 0x0004
}

enum
{
	smCharFISGreek = 0x0005,
	smCharFISRussian = 0x0006,
	smPunctNormal = 0x0000,
	smPunctNumber = 0x0100,
	smPunctSymbol = 0x0200,
	smPunctBlank = 0x0300,
	smPunctRepeat = 0x0400,
	smPunctGraphic = 0x0500,
	smKanaSmall = 0x0100,
	smKanaHardOK = 0x0200,
	smKanaSoftOK = 0x0300,
	smIdeographicLevel1 = 0x0000,
	smIdeographicLevel2 = 0x0100,
	smIdeographicUser = 0x0200,
	smFISClassLvl1 = 0x0000,
	smFISClassLvl2 = 0x0100,
	smFISClassUser = 0x0200,
	smJamoJaeum = 0x0000,
	smJamoBogJaeum = 0x0100,
	smJamoMoeum = 0x0200,
	smJamoBogMoeum = 0x0300
}

enum
{
	smCharHorizontal = 0x0000,
	smCharVertical = 0x1000,
	smCharLeft = 0x0000,
	smCharRight = 0x2000,
	smCharLower = 0x0000,
	smCharUpper = 0x4000,
	smChar1byte = 0x0000,
	smChar2byte = 0x8000
}

enum
{
	smTransAscii = 0,
	smTransNative = 1,
	smTransCase = 0xFE,
	smTransSystem = 0xFF,
	smTransAscii1 = 2,
	smTransAscii2 = 3,
	smTransKana1 = 4,
	smTransKana2 = 5
}

enum
{
	smTransGana2 = 7,
	smTransHangul2 = 8,
	smTransJamo2 = 9,
	smTransBopomofo2 = 10,
	smTransLower = 0x4000,
	smTransUpper = 0x8000,
	smTransRuleBaseFormat = 1,
	smTransHangulFormat = 2,
	smTransPreDoubleByting = 1,
	smTransPreLowerCasing = 2
}

enum
{
	smMaskAll = cast(c_long)0xFFFFFFFF,
	smMaskAscii = 0x00000001,
	smMaskNative = 0x00000002,
	smMaskAscii1 = 0x00000004,
	smMaskAscii2 = 0x00000008,
	smMaskKana1 = 0x00000010,
	smMaskKana2 = 0x00000020,
	smMaskGana2 = 0x00000080,
	smMaskHangul2 = 0x00000100,
	smMaskJamo2 = 0x00000200,
	smMaskBopomofo2 = 0x00000400
}

enum
{
	iuSystemScript = -1,
	iuCurrentScript = -2
}

enum
{
	smKeyNextScript = -1,
	smKeySysScript = -2,
	smKeySwapScript = -3,
	smKeyNextKybd = -4,
	smKeySwapKybd = -5,
	smKeyDisableKybds = -6,
	smKeyEnableKybds = -7,
	smKeyToggleInline = -8,
	smKeyToggleDirection = -9,
	smKeyNextInputMethod = -10,
	smKeySwapInputMethod = -11,
	smKeyDisableKybdSwitch = -12,
	smKeySetDirLeftRight = -15,
	smKeySetDirRightLeft = -16,
	smKeyRoman = -17
}

enum
{
	smKeyForceKeyScriptBit = 7,
	smKeyForceKeyScriptMask = 1 << smKeyForceKeyScriptBit
}

enum
{
	romanSysFond = 0x3FFF,
	romanAppFond = 3,
	romanFlags = 0x0007,
	smFondStart = 0x4000,
	smFondEnd = 0xC000,
	smUprHalfCharSet = 0x80
}

enum
{
	diaeresisUprY = 0xD9,
	fraction = 0xDA,
	intlCurrency = 0xDB,
	leftSingGuillemet = 0xDC,
	rightSingGuillemet = 0xDD,
	fiLigature = 0xDE,
	flLigature = 0xDF,
	dblDagger = 0xE0,
	centeredDot = 0xE1,
	baseSingQuote = 0xE2,
	baseDblQuote = 0xE3,
	perThousand = 0xE4,
	circumflexUprA = 0xE5,
	circumflexUprE = 0xE6,
	acuteUprA = 0xE7,
	diaeresisUprE = 0xE8,
	graveUprE = 0xE9,
	acuteUprI = 0xEA,
	circumflexUprI = 0xEB,
	diaeresisUprI = 0xEC,
	graveUprI = 0xED,
	acuteUprO = 0xEE,
	circumflexUprO = 0xEF,
	appleLogo = 0xF0,
	graveUprO = 0xF1,
	acuteUprU = 0xF2,
	circumflexUprU = 0xF3,
	graveUprU = 0xF4,
	dotlessLwrI = 0xF5,
	circumflex = 0xF6,
	tilde = 0xF7,
	macron = 0xF8,
	breveMark = 0xF9,
	overDot = 0xFA,
	ringMark = 0xFB,
	cedilla = 0xFC,
	doubleAcute = 0xFD,
	ogonek = 0xFE,
	hachek = 0xFF
}

enum
{
	tokenIntl = 4,
	tokenEmpty = -1
}

enum
{
	tokenUnknown = 0,
	tokenWhite = 1,
	tokenLeftLit = 2,
	tokenRightLit = 3,
	tokenAlpha = 4,
	tokenNumeric = 5,
	tokenNewLine = 6,
	tokenLeftComment = 7,
	tokenRightComment = 8,
	tokenLiteral = 9,
	tokenEscape = 10,
	tokenAltNum = 11,
	tokenRealNum = 12,
	tokenAltReal = 13,
	tokenReserve1 = 14,
	tokenReserve2 = 15,
	tokenLeftParen = 16,
	tokenRightParen = 17,
	tokenLeftBracket = 18,
	tokenRightBracket = 19
}

enum
{
	tokenLeftCurly = 20,
	tokenRightCurly = 21,
	tokenLeftEnclose = 22,
	tokenRightEnclose = 23,
	tokenPlus = 24,
	tokenMinus = 25,
	tokenAsterisk = 26,
	tokenDivide = 27,
	tokenPlusMinus = 28,
	tokenSlash = 29,
	tokenBackSlash = 30,
	tokenLess = 31,
	tokenGreat = 32,
	tokenEqual = 33,
	tokenLessEqual2 = 34,
	tokenLessEqual1 = 35,
	tokenGreatEqual2 = 36,
	tokenGreatEqual1 = 37,
	token2Equal = 38,
	tokenColonEqual = 39
}

enum
{
	tokenNotEqual = 40,
	tokenLessGreat = 41,
	tokenExclamEqual = 42,
	tokenExclam = 43,
	tokenTilde = 44,
	tokenComma = 45,
	tokenPeriod = 46,
	tokenLeft2Quote = 47,
	tokenRight2Quote = 48,
	tokenLeft1Quote = 49,
	tokenRight1Quote = 50,
	token2Quote = 51,
	token1Quote = 52,
	tokenSemicolon = 53,
	tokenPercent = 54,
	tokenCaret = 55,
	tokenUnderline = 56,
	tokenAmpersand = 57,
	tokenAtSign = 58,
	tokenBar = 59
}

enum
{
	tokenQuestion = 60,
	tokenPi = 61,
	tokenRoot = 62,
	tokenSigma = 63,
	tokenIntegral = 64,
	tokenMicro = 65,
	tokenCapPi = 66,
	tokenInfinity = 67,
	tokenColon = 68,
	tokenHash = 69,
	tokenDollar = 70,
	tokenNoBreakSpace = 71,
	tokenFraction = 72,
	tokenIntlCurrency = 73,
	tokenLeftSingGuillemet = 74,
	tokenRightSingGuillemet = 75,
	tokenPerThousand = 76,
	tokenEllipsis = 77,
	tokenCenterDot = 78,
	tokenNil = 127
}

enum
{
	delimPad = -2,
	tokenTilda = 44,
	tokenCarat = 55
}

enum
{
	smWordSelectTable = 0,
	smWordWrapTable = 1,
	smNumberPartsTable = 2,
	smUnTokenTable = 3,
	smWhiteSpaceList = 4,
	iuWordSelectTable = 0,
	iuWordWrapTable = 1,
	iuNumberPartsTable = 2,
	iuUnTokenTable = 3,
	iuWhiteSpaceList = 4
}

enum
{
	tokenOK = 0,
	tokenOverflow = 1,
	stringOverflow = 2,
	badDelim = 3,
	badEnding = 4,
	crash = 5
}

enum
{
	smNotInstalled = 0,
	smBadVerb = -1,
	smBadScript = -2
}

enum
{
	smfShowIcon = 31,
	smfDualCaret = 30,
	smfNameTagEnab = 29,
	smfUseAssocFontInfo = 28,
	smfDisableKeyScriptSync = 27
}

enum
{
	smfDisableKeyScriptSyncMask = 1L << smfDisableKeyScriptSync
}

enum
{
	smSysScript = 18,
	smKeyScript = 22,
	smKCHRCache = 38,
	smRegionCode = 40
}

enum
{
	smsfIntellCP = 0,
	smsfSingByte = 1,
	smsfNatCase = 2,
	smsfContext = 3,
	smsfNoForceFont = 4,
	smsfB0Digits = 5,
	smsfAutoInit = 6,
	smsfUnivExt = 7,
	smsfSynchUnstyledTE = 8,
	smsfForms = 13,
	smsfLigatures = 14,
	smsfReverse = 15
}

struct TokenRec
{
	short theToken;
	char* position;
	int length;
	char* stringPosition;
}


struct TokenBlock
{
	char* source;
	int sourceLength;
	char* tokenList;
	int tokenLength;
	int tokenCount;
	char* stringList;
	int stringLength;
	int stringCount;
	ubyte doString;
	ubyte doAppend;
	ubyte doAlphanumeric;
	ubyte doNest;
	ScriptTokenType* leftDelims;
	ScriptTokenType* rightDelims;
	ScriptTokenType* leftComment;
	ScriptTokenType* rightComment;
	short escapeCode;
	short decimalCode;
	Handle itlResource;
	long* reserved;
}

extern (C)
{
	int GetScriptManagerVariable (short selector);
	short SetScriptManagerVariable (short selector, int param);
}