<<>> <> <> <> <> DIRECTORY IPtoPS, RefTab; IPtoPSCharCodesImpl: CEDAR PROGRAM IMPORTS RefTab EXPORTS IPtoPS <<>> ~ BEGIN EncodingVectorType: TYPE ~ IPtoPS.EncodingVectorType; Entry: TYPE ~ RECORD [code: BYTE, encodingVector: EncodingVectorType]; table: RefTab.Ref ¬ NIL; <> <> <> <> <> <> <> <> <<};>> <<>> Initialize: PROC ~ { Insert: PROC [name: ATOM, code: BYTE, type: EncodingVectorType] ~ { [] ¬ RefTab.Insert[table, name, NEW[Entry ¬ [code, type]]]; }; InsertISO: PROC [name: ATOM, code: BYTE] ~ {Insert[name, code, isoLatin1]}; InsertSymbol: PROC [name: ATOM, code: BYTE] ~ {Insert[name, code, symbol]}; InsertStandard: PROC [name: ATOM, code: BYTE] ~ {Insert[name, code, standard]}; table ¬ RefTab.Create[]; <> <> <> <> <> <> <> <> InsertISO[$Aacute, 301B]; InsertISO[$Acircumflex, 302B]; InsertISO[$Adieresis, 304B]; InsertISO[$Agrave, 300B]; InsertISO[$Aring, 305B]; InsertISO[$Atilde, 303B]; InsertISO[$AE, 306B]; InsertISO[$Ccedilla, 307B]; InsertISO[$Eacute, 311B]; InsertISO[$Ecircumflex, 312B]; InsertISO[$Edieresis, 313B]; InsertISO[$Egrave, 310B]; InsertISO[$Eth, 320B]; InsertISO[$Iacute, 315B]; InsertISO[$Icircumflex, 316B]; InsertISO[$Idieresis, 317B]; InsertISO[$Igrave, 314B]; InsertISO[$Ntilde, 321B]; InsertISO[$Oacute, 323B]; InsertISO[$Ocircumflex, 324B]; InsertISO[$Odieresis, 326B]; InsertISO[$Ograve, 322B]; InsertISO[$Oslash, 330B]; InsertISO[$Otilde, 325B]; InsertISO[$Uacute, 332B]; InsertISO[$Ucircumflex, 333B]; InsertISO[$Udieresis, 334B]; InsertISO[$Ugrave, 331B]; InsertISO[$Yacute, 335B]; InsertISO[$aacute, 341B]; InsertISO[$acircumflex, 342B]; InsertISO[$adieresis, 344B]; InsertISO[$ae, 346B]; InsertISO[$agrave, 340B]; InsertISO[$aring, 345B]; InsertISO[$atilde, 343B]; InsertISO[$brokenbar, 246B]; InsertISO[$bullet, 267B]; InsertISO[$largebullet, 267B]; InsertISO[$ccedilla, 347B]; InsertISO[$eacute, 351B]; InsertISO[$ecircumflex, 352B]; InsertISO[$copyright, 251B]; InsertISO[$degree, 260B]; InsertISO[$divide, 367B]; InsertISO[$edieresis, 353B]; InsertISO[$egrave, 350B]; InsertISO[$eth, 360B]; InsertISO[$hyphen, 255B]; InsertISO[$iacute, 355B]; InsertISO[$icircumflex, 356B]; InsertISO[$idieresis, 357B]; InsertISO[$igrave, 354B]; InsertISO[$minus, 055B]; InsertISO[$minute, 242B]; InsertISO[$ntilde, 361B]; InsertISO[$oacute, 363B]; InsertISO[$multiply, 327B]; InsertISO[$plusminus, 261B]; InsertISO[$registered, 256B]; InsertISO[$ocircumflex, 364B]; InsertISO[$odieresis, 366B]; InsertISO[$ograve, 362B]; InsertISO[$onehalf, 275B]; InsertISO[$onequarter, 274B]; InsertISO[$oslash, 370B]; InsertISO[$otilde, 365B]; InsertISO[$quoteright, 047B]; InsertISO[$a98, 047B]; InsertISO[$threequarters, 276B]; InsertISO[$uacute, 372B]; InsertISO[$ucircumflex, 373B]; InsertISO[$udieresis, 374B]; InsertISO[$ugrave, 371B]; InsertISO[$yacute, 375B]; <> InsertSymbol[$Alpha, 101B]; InsertSymbol[$Beta, 102B]; InsertSymbol[$Chi, 103B]; InsertSymbol[$Delta, 104B]; InsertSymbol[$Epsilon, 105B]; InsertSymbol[$Eta, 110B]; InsertSymbol[$Gamma, 107B]; InsertSymbol[$Iota, 111B]; InsertSymbol[$Kappa, 113B]; InsertSymbol[$Lambda, 114B]; InsertSymbol[$Mu, 115B]; InsertSymbol[$Nu, 116B]; InsertSymbol[$Omega, 127B]; InsertSymbol[$Omicron, 117B]; InsertSymbol[$Phi, 106B]; InsertSymbol[$Pi, 120B]; InsertSymbol[$Psi, 131B]; InsertSymbol[$Rfraktur, 302B]; InsertSymbol[$Rho, 122B]; InsertSymbol[$Sigma, 123B]; InsertSymbol[$Tau, 124B]; InsertSymbol[$Theta, 121B]; InsertSymbol[$Upsilon, 125B]; InsertSymbol[$Upsilon1, 241B]; InsertSymbol[$Xi, 130B]; InsertSymbol[$Zeta, 132B]; InsertSymbol[$aleph, 300B]; InsertSymbol[$alpha, 141B]; InsertSymbol[$angle, 320B]; InsertSymbol[$angleleft, 341B]; InsertSymbol[$a91, 341B]; InsertSymbol[$angleright, 361B]; InsertSymbol[$a92, 361B]; InsertSymbol[$approxequal, 273B]; InsertSymbol[$arrowboth, 253B]; InsertSymbol[$a163, 253B]; InsertSymbol[$arrowdown, 257B]; InsertSymbol[$arrowleft, 254B]; InsertSymbol[$arrowright, 256B]; InsertSymbol[$a161, 256B]; InsertSymbol[$arrowup, 255B]; InsertSymbol[$arrowdblboth, 333B]; InsertSymbol[$arrowdbldown, 337B]; InsertSymbol[$arrowdblleft, 334B]; InsertSymbol[$arrowdblright, 336B]; InsertSymbol[$arrowdblup, 335B]; InsertSymbol[$arrowhorizex, 276B]; InsertSymbol[$arrowvertex, 275B]; InsertSymbol[$asteriskmath, 052B]; InsertSymbol[$beta, 142B]; InsertSymbol[$braceleftbt, 356B]; InsertSymbol[$braceex, 357B]; InsertSymbol[$braceleftmid, 355B]; InsertSymbol[$bracelefttp, 354B]; InsertSymbol[$bracerightbt, 376B]; InsertSymbol[$bracerightmid, 375B]; InsertSymbol[$bracerighttp, 374B]; InsertSymbol[$bracketleftbt, 353B]; InsertSymbol[$bracketleftex, 352B]; InsertSymbol[$bracketlefttp, 351B]; InsertSymbol[$bracketrightbt, 373B]; InsertSymbol[$bracketrightex, 372B]; InsertSymbol[$bracketrighttp, 371B]; InsertSymbol[$chi, 143B]; InsertSymbol[$circlemultiply, 304B]; InsertSymbol[$carriagereturn, 277B]; InsertSymbol[$copyrightsans, 343B]; InsertSymbol[$copyrightserif, 323B]; InsertSymbol[$circleplus, 305B]; InsertSymbol[$club, 247B]; InsertSymbol[$a112, 247B]; InsertSymbol[$congruent, 100B]; InsertSymbol[$copyrightserif, 323B]; InsertSymbol[$delta, 144B]; InsertSymbol[$diamond, 250B]; InsertSymbol[$dotmath, 327B]; InsertSymbol[$element, 316B]; InsertSymbol[$ellipsis, 274B]; InsertSymbol[$emptyset, 306B]; InsertSymbol[$epsilon, 145B]; InsertSymbol[$equivalence, 272B]; InsertSymbol[$eta, 150B]; InsertSymbol[$existential, 044B]; InsertSymbol[$fraction, 244B]; InsertSymbol[$gamma, 147B]; InsertSymbol[$gradient, 321B]; InsertSymbol[$greaterequal, 263B]; InsertSymbol[$heart, 251B]; InsertSymbol[$infinity, 245B]; InsertSymbol[$integral, 362B]; InsertSymbol[$integralbt, 365B]; InsertSymbol[$integralex, 364B]; InsertSymbol[$integraltp, 363B]; InsertSymbol[$intersection, 307B]; InsertSymbol[$iota, 151B]; InsertSymbol[$kappa, 153B]; InsertSymbol[$lambda, 154B]; InsertSymbol[$lessequal, 243B]; InsertSymbol[$logicaland, 331B]; InsertSymbol[$logicalnot, 330B]; InsertSymbol[$logicalor, 332B]; InsertSymbol[$lozenge, 340B]; InsertSymbol[$mu, 155B]; InsertSymbol[$notelement, 317B]; InsertSymbol[$notequal, 271B]; InsertSymbol[$notsubset, 313B]; InsertSymbol[$nu, 156B]; InsertSymbol[$omega, 167B]; InsertSymbol[$omega1, 166B]; InsertSymbol[$omicron, 157B]; InsertSymbol[$parenleftbt, 350B]; InsertSymbol[$parenleftex, 347B]; InsertSymbol[$parenlefttp, 346B]; InsertSymbol[$parenrightbt, 370B]; InsertSymbol[$parenrightex, 367B]; InsertSymbol[$parenrighttp, 366B]; InsertSymbol[$partialdiff, 266B]; InsertSymbol[$perpendicular, 136B]; InsertSymbol[$phi, 146B]; InsertSymbol[$phi1, 152B]; InsertSymbol[$pi, 160B]; InsertSymbol[$product, 325B]; InsertSymbol[$propersubset, 314B]; InsertSymbol[$propersuperset, 311B]; InsertSymbol[$proportional, 265B]; InsertSymbol[$psi, 171B]; InsertSymbol[$radical, 326B]; InsertSymbol[$radicale, 140B]; InsertSymbol[$reflexsubset, 315B]; InsertSymbol[$registersans, 342B]; InsertSymbol[$reflexsuperset, 312B]; InsertSymbol[$registerserif, 322B]; InsertSymbol[$rho, 162B]; InsertSymbol[$second, 262B]; InsertSymbol[$sigma, 163B]; InsertSymbol[$sigma1, 126B]; InsertSymbol[$similar, 176B]; InsertSymbol[$spade, 252B]; InsertSymbol[$a109, 252B]; InsertSymbol[$suchthat, 047B]; InsertSymbol[$summation, 345B]; InsertSymbol[$tau, 164B]; InsertSymbol[$therefore, 134B]; InsertSymbol[$theta, 161B]; InsertSymbol[$theta1, 112B]; InsertSymbol[$trademark, 324B]; InsertSymbol[$trademarksans, 344B]; InsertSymbol[$trademarkserif, 324B]; InsertSymbol[$union, 310B]; InsertSymbol[$universal, 042B]; InsertSymbol[$upsilon, 165B]; InsertSymbol[$weierstrass, 303B]; InsertSymbol[$xi, 170B]; InsertSymbol[$zeta, 172B]; <> InsertStandard[$L, 114B]; InsertStandard[$acute, 302B]; InsertStandard[$breve, 306B]; InsertStandard[$caron, 317B]; InsertStandard[$cedilla, 313B]; InsertStandard[$cent, 242B]; InsertStandard[$circumflex, 303B]; InsertStandard[$comma, 054B]; InsertStandard[$dagger, 262B]; InsertStandard[$daggerdbl, 263B]; InsertStandard[$dieresis, 310B]; InsertStandard[$dollar, 044B]; InsertStandard[$dotaccent, 307B]; InsertStandard[$emdash, 320B]; InsertStandard[$endash, 261B]; InsertStandard[$exclamdown, 241B]; InsertStandard[$fi, 256B]; InsertStandard[$fl, 256B]; InsertStandard[$florin, 246B]; InsertStandard[$grave, 301B]; InsertStandard[$germandbls, 373B]; InsertStandard[$guillemotleft, 253B]; InsertStandard[$guillemotright,273B]; InsertStandard[$guilsinglleft, 254B]; InsertStandard[$guilsinglright, 255B]; InsertStandard[$hungarumlaut,315B]; InsertStandard[$macron, 305B]; InsertStandard[$ogonek, 316B]; InsertStandard[$ordfeminine, 343B]; InsertStandard[$ordmasculine, 353B]; InsertStandard[$paragraph, 266B]; InsertStandard[$periodcentered,264B]; InsertStandard[$perthousand, 275B]; InsertStandard[$question, 077B]; InsertStandard[$questiondown, 277B]; InsertStandard[$quotedblbase, 271B]; InsertStandard[$quotedblleft, 252B]; InsertStandard[$a99, 252B]; InsertStandard[$quotedbllright, 272B]; InsertStandard[$a100, 272B]; InsertStandard[$quoteleft, 140B]; InsertStandard[$a97, 140B]; InsertStandard[$quotesinglbase,270B]; InsertStandard[$section, 247B]; InsertStandard[$space, 040B]; InsertStandard[$sterling, 243B]; InsertStandard[$tilde, 304B]; InsertStandard[$yen, 245B]; }; DoWithCode: PUBLIC PROC [name: ATOM, action: IPtoPS.DoWithCodeProc] ~ { val: REF ¬ RefTab.Fetch[table, name].val; IF val = NIL THEN [] ¬ action[0, standard] ELSE { entry: REF Entry ¬ NARROW[val]; [] ¬ action[entry.code, entry.encodingVector]; }; }; Initialize[]; END.