//package Char // import NoWurst // import String // import LinkedList // // /** // * Credits go here: http://www.hiveworkshop.com/forums/jass-resources-412/snippet-ascii-190746/ // */ // // string array c2s // int array s2c // real array width // constant int MAX_INDEX = '~' + 1 // constant real DEFAULT_WIDTH = 0 // constant string DEFAULT_STRING = "" // // public tuple char(int c) // // public function char(string s) returns char // if ("\\" == s) // return char('\') // int a = s2c[StringHash(s) div 0x1F0748 + 0x3EA] // if (s != c2s[a]) // return char(a + 32) // return char(a) // // public function char.toString() returns string // if (this.c > MAX_INDEX) // return DEFAULT_STRING // return c2s[this.c] // // public function char.toInt() returns int // return this.c // // public function char.getWidth() returns real // if (this.c > MAX_INDEX) // return DEFAULT_WIDTH // return width[this.c] // // public function string.toChar() returns char // return char(this) // // public function string.toCharList() returns LinkedList // LinkedList res = new LinkedList() // for int i = 0 to this.length() - 1 // res.add(char(this.charAt(i))) // return res // // public function int.toChar() returns char // return char(this) // // public function charToIndex(char c) returns int // return c.toInt() // // public function charFromIndex(int index) returns char // return char(index) // // init // c2sInit() // s2cInit() // widthInit() // // function widthInit() // width[0] = 0 // width[1] = 0 // width[2] = 0 // width[3] = 0 // width[4] = 0 // width[5] = 0 // width[6] = 0 // width[7] = 0 //\a // width[8] = 0 //\b // width[9] = 0 //\t // width[10] = 1000000000 //\n // width[11] = 0 //\v // width[12] = 0 //\f // width[13] = 0 //\r // width[14] = 0 // width[15] = 0 // width[16] = 0 // width[17] = 0 // width[18] = 0 // width[19] = 0 // width[20] = 0 // width[21] = 0 // width[22] = 0 // width[23] = 0 // width[24] = 0 // width[25] = 0 // width[26] = 0 // width[27] = 0 //\e // width[28] = 0 // width[29] = 0 // width[30] = 0 // width[31] = 0 // width[' '] = 1.5 // width['!'] = 1.2 // width['"'] = 1.95 // width['#'] = 4 // width['$'] = 3.1 // width['%'] = 4.2 // width['&'] = 5.1 // width['''] = 0.85 // width['('] = 1.8 // width[')'] = 1.6 // width['*'] = 2.5 // width['+'] = 3.1 // width[','] = 1.25 // width['-'] = 2.2 // width['.'] = 1.05 // width['/'] = 2.7 // width['0'] = 2 // width['1'] = 2 // width['2'] = 3.65 // width['3'] = 3.25 // width['4'] = 3.8 // width['5'] = 3.3 // width['6'] = 3.5 // width['7'] = 3.3 // width['8'] = 3.65 // width['9'] = 3.65 // width[':'] = 1.05 // width[';'] = 1.25 // width['<'] = 2.9 // width['='] = 3.1 // width['>'] = 2.9 // width['?'] = 2.7 // width['@'] = 4.5 // width['A'] = 4.8 // width['B'] = 3.5 // width['C'] = 4 // width['D'] = 4.2 // width['E'] = 3.3 // width['F'] = 2.75 // width['G'] = 4.35 // width['H'] = 4.35 // width['I'] = 1.6 // width['J'] = 2 // width['K'] = 4.0 // width['L'] = 3.25 // width['M'] = 6 // width['N'] = 4.4 // width['O'] = 4.95 // width['P'] = 3.3 // width['Q'] = 5.3 // width['R'] = 4 // width['S'] = 3.3 // width['T'] = 3.4 // width['U'] = 4.2 // width['V'] = 4 // width['W'] = 6.25 // width['X'] = 4.35 // width['Y'] = 3.45 // width['Z'] = 3.3 // width['['] = 1.8 // width['\'] = 2.3 // width[']'] = 1.55 // width['^'] = 3.3 // width['_'] = 3.3 // width['`'] = 1.8 // width['a'] = 3.3 // width['b'] = 3.3 // width['c'] = 3.1 // width['d'] = 3.5 // width['e'] = 3.3 // width['f'] = 2.1 // width['g'] = 3.8 // width['h'] = 3.3 // width['i'] = 1.25 // width['j'] = 1.6 // width['k'] = 3.3 // width['l'] = 1.3 // width['m'] = 5.3 // width['n'] = 3.3 // width['o'] = 3.5 // width['p'] = 3.5 // width['q'] = 3.5 // width['r'] = 2 // width['s'] = 2.9 // width['t'] = 2.15 // width['u'] = 3.3 // width['v'] = 3.65 // width['w'] = 5.15 // width['x'] = 3.4 // width['y'] = 3.45 // width['z'] = 3.3 // width['{'] = 1.8 // width['|'] = 1 // width['}'] = 1.8 // width['~'] = 3.3 // width[127] = 0 // // function s2cInit() // for int i = 0 to MAX_INDEX // if StringCase(c2s[i], true) == c2s[i] // s2c[StringHash(c2s[i]) div 0x1F0748 + 0x3EA] = i // else // skip // // function c2sInit() // c2s[0] = "" // c2s[1] = "" // c2s[2] = "" // c2s[3] = "" // c2s[4] = "" // c2s[5] = "" // c2s[6] = "" // c2s[7] = "" //\a // c2s[8] = "" //\b // c2s[9] = "\t" // c2s[10] = "\n" // c2s[11] = "" //\v // c2s[12] = "" //\f // c2s[13] = "\r" // c2s[14] = "" // c2s[15] = "" // c2s[16] = "" // c2s[17] = "" // c2s[18] = "" // c2s[19] = "" // c2s[20] = "" // c2s[21] = "" // c2s[22] = "" // c2s[23] = "" // c2s[24] = "" // c2s[25] = "" // c2s[26] = "" // c2s[27] = "" //\e // c2s[28] = "" // c2s[29] = "" // c2s[30] = "" // c2s[31] = "" // c2s[' '] = " " // c2s['!'] = "!" // c2s['"'] = "\"" // c2s['#'] = "#" // c2s['$'] = "$" // c2s['%'] = "%" // c2s['&'] = "&" // c2s['''] = "'" // c2s['('] = "(" // c2s[')'] = ")" // c2s['*'] = "*" // c2s['+'] = "+" // c2s[','] = "," // c2s['-'] = "-" // c2s['.'] = "." // c2s['/'] = "/" // c2s['0'] = "0" // c2s['1'] = "1" // c2s['2'] = "2" // c2s['3'] = "3" // c2s['4'] = "4" // c2s['5'] = "5" // c2s['6'] = "6" // c2s['7'] = "7" // c2s['8'] = "8" // c2s['9'] = "9" // c2s[':'] = ":" // c2s[';'] = ";" // c2s['<'] = "<" // c2s['='] = "=" // c2s['>'] = ">" // c2s['?'] = "?" // c2s['@'] = "@" // c2s['A'] = "A" // c2s['B'] = "B" // c2s['C'] = "C" // c2s['D'] = "D" // c2s['E'] = "E" // c2s['F'] = "F" // c2s['G'] = "G" // c2s['H'] = "H" // c2s['I'] = "I" // c2s['J'] = "J" // c2s['K'] = "K" // c2s['L'] = "L" // c2s['M'] = "M" // c2s['N'] = "N" // c2s['O'] = "O" // c2s['P'] = "P" // c2s['Q'] = "Q" // c2s['R'] = "R" // c2s['S'] = "S" // c2s['T'] = "T" // c2s['U'] = "U" // c2s['V'] = "V" // c2s['W'] = "W" // c2s['X'] = "X" // c2s['Y'] = "Y" // c2s['Z'] = "Z" // c2s['['] = "[" // c2s['\'] = "\\" // c2s[']'] = "]" // c2s['^'] = "^" // c2s['_'] = "_" // c2s['`'] = "`" // c2s['a'] = "a" // c2s['b'] = "b" // c2s['c'] = "c" // c2s['d'] = "d" // c2s['e'] = "e" // c2s['f'] = "f" // c2s['g'] = "g" // c2s['h'] = "h" // c2s['i'] = "i" // c2s['j'] = "j" // c2s['k'] = "k" // c2s['l'] = "l" // c2s['m'] = "m" // c2s['n'] = "n" // c2s['o'] = "o" // c2s['p'] = "p" // c2s['q'] = "q" // c2s['r'] = "r" // c2s['s'] = "s" // c2s['t'] = "t" // c2s['u'] = "u" // c2s['v'] = "v" // c2s['w'] = "w" // c2s['x'] = "x" // c2s['y'] = "y" // c2s['z'] = "z" // c2s['{'] = "{" // c2s['|'] = "|" // c2s['}'] = "}" // c2s['~'] = "~" // c2s[127] = "" // //endpackage