/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ /* * COPYRIGHT AND PERMISSION NOTICE * * Copyright (c) 1991-2005 Unicode, Inc. All rights reserved. Distributed * under the Terms of Use in http://www.unicode.org/copyright.html. * * This file has been modified by Sun Microsystems, Inc. * */ #include utf8%system { direction { @condition { inputsize >= 1; @between 0X0...0X7F; } @map { 0x00 0x00 // U+0000 0x01 0x01 // U+0001 0x02 0x02 // U+0002 0x03 0x03 // U+0003 0x04 0x04 // U+0004 0x05 0x05 // U+0005 0x06 0x06 // U+0006 0x07 0x07 // U+0007 0x08 0x08 // U+0008 0x09 0x09 // U+0009 0x0A 0x0A // U+000a 0x0B 0x0B // U+000b 0x0C 0x0C // U+000c 0x0D 0x0D // U+000d 0x0E 0x0E // U+000e 0x0F 0x0F // U+000f 0x10 0x10 // U+0010 0x11 0x11 // U+0011 0x12 0x12 // U+0012 0x13 0x13 // U+0013 0x14 0x14 // U+0014 0x15 0x15 // U+0015 0x16 0x16 // U+0016 0x17 0x17 // U+0017 0x18 0x18 // U+0018 0x19 0x19 // U+0019 0x1A 0x1A // U+001a 0x1B 0x1B // U+001b 0x1C 0x1C // U+001c 0x1D 0x1D // U+001d 0x1E 0x1E // U+001e 0x1F 0x1F // U+001f 0x20 0x20 // U+0020 0x21 0x21 // U+0021 0x22 0x22 // U+0022 0x23 0x23 // U+0023 0x24 0x24 // U+0024 0x25 0x25 // U+0025 0x26 0x26 // U+0026 0x27 0x27 // U+0027 0x28 0x28 // U+0028 0x29 0x29 // U+0029 0x2A 0x2A // U+002a 0x2B 0x2B // U+002b 0x2C 0x2C // U+002c 0x2D 0x2D // U+002d 0x2E 0x2E // U+002e 0x2F 0x2F // U+002f 0x30 0x30 // U+0030 0x31 0x31 // U+0031 0x32 0x32 // U+0032 0x33 0x33 // U+0033 0x34 0x34 // U+0034 0x35 0x35 // U+0035 0x36 0x36 // U+0036 0x37 0x37 // U+0037 0x38 0x38 // U+0038 0x39 0x39 // U+0039 0x3A 0x3A // U+003a 0x3B 0x3B // U+003b 0x3C 0x3C // U+003c 0x3D 0x3D // U+003d 0x3E 0x3E // U+003e 0x3F 0x3F // U+003f 0x40 0x40 // U+0040 0x41 0x41 // U+0041 0x42 0x42 // U+0042 0x43 0x43 // U+0043 0x44 0x44 // U+0044 0x45 0x45 // U+0045 0x46 0x46 // U+0046 0x47 0x47 // U+0047 0x48 0x48 // U+0048 0x49 0x49 // U+0049 0x4A 0x4A // U+004a 0x4B 0x4B // U+004b 0x4C 0x4C // U+004c 0x4D 0x4D // U+004d 0x4E 0x4E // U+004e 0x4F 0x4F // U+004f 0x50 0x50 // U+0050 0x51 0x51 // U+0051 0x52 0x52 // U+0052 0x53 0x53 // U+0053 0x54 0x54 // U+0054 0x55 0x55 // U+0055 0x56 0x56 // U+0056 0x57 0x57 // U+0057 0x58 0x58 // U+0058 0x59 0x59 // U+0059 0x5A 0x5A // U+005a 0x5B 0x5B // U+005b 0x5C 0x5C // U+005c 0x5D 0x5D // U+005d 0x5E 0x5E // U+005e 0x5F 0x5F // U+005f 0x60 0x60 // U+0060 0x61 0x61 // U+0061 0x62 0x62 // U+0062 0x63 0x63 // U+0063 0x64 0x64 // U+0064 0x65 0x65 // U+0065 0x66 0x66 // U+0066 0x67 0x67 // U+0067 0x68 0x68 // U+0068 0x69 0x69 // U+0069 0x6A 0x6A // U+006a 0x6B 0x6B // U+006b 0x6C 0x6C // U+006c 0x6D 0x6D // U+006d 0x6E 0x6E // U+006e 0x6F 0x6F // U+006f 0x70 0x70 // U+0070 0x71 0x71 // U+0071 0x72 0x72 // U+0072 0x73 0x73 // U+0073 0x74 0x74 // U+0074 0x75 0x75 // U+0075 0x76 0x76 // U+0076 0x77 0x77 // U+0077 0x78 0x78 // U+0078 0x79 0x79 // U+0079 0x7A 0x7A // U+007a 0x7B 0x7B // U+007b 0x7C 0x7C // U+007c 0x7D 0x7D // U+007d 0x7E 0x7E // U+007e 0x7F 0x7F // U+007f default 0x3f }; @condition { inputsize <= 1; @between 0XC0...0XFD; } @operation { error EINVAL; }; @condition { inputsize >= 2; @between 0XC080...0XDFBF; } @map { 0xC2A0 0xA0 // U+00a0 0xC2A1 0xA1 // U+00a1 0xC2A2 0xA2 // U+00a2 0xC2A3 0xA3 // U+00a3 0xC2A5 0xA5 // U+00a5 0xC2A6 0xA6 // U+00a6 0xC2A7 0xA7 // U+00a7 0xC2A8 0xA8 // U+00a8 0xC2A9 0xA9 // U+00a9 0xC2AB 0xAB // U+00ab 0xC2AC 0xAC // U+00ac 0xC2AD 0xAD // U+00ad 0xC2AE 0xAE // U+00ae 0xC2AF 0xAF // U+00af 0xC2B0 0xB0 // U+00b0 0xC2B1 0xB1 // U+00b1 0xC2B2 0xB2 // U+00b2 0xC2B3 0xB3 // U+00b3 0xC2B4 0xB4 // U+00b4 0xC2B5 0xB5 // U+00b5 0xC2B6 0xB6 // U+00b6 0xC2B7 0xB7 // U+00b7 0xC2B8 0xB8 // U+00b8 0xC2B9 0xB9 // U+00b9 0xC2BB 0xBB // U+00bb 0xC2BC 0xBC // U+00bc 0xC2BD 0xBD // U+00bd 0xC2BE 0xBE // U+00be 0xC2BF 0xBF // U+00bf 0xC397 0xAA // U+00d7 0xC3B7 0xBA // U+00f7 0xC692 0x83 // U+0192 0xCB86 0x88 // U+02c6 0xCB9C 0x98 // U+02dc 0xD6B0 0xC0 // U+05b0 0xD6B1 0xC1 // U+05b1 0xD6B2 0xC2 // U+05b2 0xD6B3 0xC3 // U+05b3 0xD6B4 0xC4 // U+05b4 0xD6B5 0xC5 // U+05b5 0xD6B6 0xC6 // U+05b6 0xD6B7 0xC7 // U+05b7 0xD6B8 0xC8 // U+05b8 0xD6B9 0xC9 // U+05b9 0xD6BB 0xCB // U+05bb 0xD6BC 0xCC // U+05bc 0xD6BD 0xCD // U+05bd 0xD6BE 0xCE // U+05be 0xD6BF 0xCF // U+05bf 0xD780 0xD0 // U+05c0 0xD781 0xD1 // U+05c1 0xD782 0xD2 // U+05c2 0xD783 0xD3 // U+05c3 0xD790 0xE0 // U+05d0 0xD791 0xE1 // U+05d1 0xD792 0xE2 // U+05d2 0xD793 0xE3 // U+05d3 0xD794 0xE4 // U+05d4 0xD795 0xE5 // U+05d5 0xD796 0xE6 // U+05d6 0xD797 0xE7 // U+05d7 0xD798 0xE8 // U+05d8 0xD799 0xE9 // U+05d9 0xD79A 0xEA // U+05da 0xD79B 0xEB // U+05db 0xD79C 0xEC // U+05dc 0xD79D 0xED // U+05dd 0xD79E 0xEE // U+05de 0xD79F 0xEF // U+05df 0xD7A0 0xF0 // U+05e0 0xD7A1 0xF1 // U+05e1 0xD7A2 0xF2 // U+05e2 0xD7A3 0xF3 // U+05e3 0xD7A4 0xF4 // U+05e4 0xD7A5 0xF5 // U+05e5 0xD7A6 0xF6 // U+05e6 0xD7A7 0xF7 // U+05e7 0xD7A8 0xF8 // U+05e8 0xD7A9 0xF9 // U+05e9 0xD7AA 0xFA // U+05ea 0xD7B0 0xD4 // U+05f0 0xD7B1 0xD5 // U+05f1 0xD7B2 0xD6 // U+05f2 0xD7B3 0xD7 // U+05f3 0xD7B4 0xD8 // U+05f4 default 0x3f }; @condition { inputsize <= 2; @between 0XE0...0XFD; } @operation { error EINVAL; }; @condition { inputsize >= 3; @between 0XE08080...0XECBFBF, 0XED8080...0XED9FBF, 0XEE8080...0XEFBFBF; } @map { 0xE2808E 0xFD // U+200e 0xE2808F 0xFE // U+200f 0xE28093 0x96 // U+2013 0xE28094 0x97 // U+2014 0xE28098 0x91 // U+2018 0xE28099 0x92 // U+2019 0xE2809A 0x82 // U+201a 0xE2809C 0x93 // U+201c 0xE2809D 0x94 // U+201d 0xE2809E 0x84 // U+201e 0xE280A0 0x86 // U+2020 0xE280A1 0x87 // U+2021 0xE280A2 0x95 // U+2022 0xE280A6 0x85 // U+2026 0xE280B0 0x89 // U+2030 0xE280B9 0x8B // U+2039 0xE280BA 0x9B // U+203a 0xE282AA 0xA4 // U+20aa 0xE282AC 0x80 // U+20ac 0xE284A2 0x99 // U+2122 0xefbfbe error 0xefbfbf error default 0x3f }; // for last @map syntax @condition { inputsize <= 3; @between 0XF0...0XFD; } @operation { error EINVAL; }; @condition { inputsize >= 4; @between 0XF0808080...0XF7BFBFBF; } @operation { output = 0x3f; discard 4; }; @condition { inputsize <= 4; @between 0XF8...0XFD; } @operation { error EINVAL; }; @condition { inputsize >= 5; @between 0XF880808080...0XFBBFBFBFBF; } @operation { output = 0x3f; discard 5; }; @condition { inputsize <= 5; @between 0XFC...0XFD; } @operation { error EINVAL; }; @condition { inputsize >= 6; @between 0XFC8080808080...0XFDBFBFBFBFBF; } @operation { output = 0x3f; discard 6; }; }; // for direction } // for conversion name