1 /* -*- c-basic-offset:2; tab-width:2; indent-tabs-mode:nil -*- */ 2 3 #include "ef_iso2022jp_parser.h" 4 5 #include <stdio.h> /* NULL */ 6 #include <pobl/bl_debug.h> 7 8 #include "ef_iso2022_parser.h" 9 10 /* --- static functions --- */ 11 iso2022jp_8_parser_init(ef_parser_t * parser)12static void iso2022jp_8_parser_init(ef_parser_t *parser) { 13 ef_iso2022_parser_t *iso2022_parser; 14 15 ef_parser_init(parser); 16 17 iso2022_parser = (ef_iso2022_parser_t*)parser; 18 19 iso2022_parser->g0 = US_ASCII; 20 iso2022_parser->g1 = JISX0201_KATA; 21 iso2022_parser->g2 = UNKNOWN_CS; 22 iso2022_parser->g3 = UNKNOWN_CS; 23 24 iso2022_parser->gl = &iso2022_parser->g0; 25 iso2022_parser->gr = &iso2022_parser->g1; 26 27 iso2022_parser->non_iso2022_cs = UNKNOWN_CS; 28 29 iso2022_parser->is_single_shifted = 0; 30 } 31 iso2022jp_7_parser_init(ef_parser_t * parser)32static void iso2022jp_7_parser_init(ef_parser_t *parser) { 33 ef_iso2022_parser_t *iso2022_parser; 34 35 ef_parser_init(parser); 36 37 iso2022_parser = (ef_iso2022_parser_t*)parser; 38 39 iso2022_parser->g0 = US_ASCII; 40 iso2022_parser->g1 = JISX0201_KATA; 41 iso2022_parser->g2 = UNKNOWN_CS; 42 iso2022_parser->g3 = UNKNOWN_CS; 43 44 iso2022_parser->gl = &iso2022_parser->g0; 45 46 iso2022_parser->is_single_shifted = 0; 47 } 48 iso2022jp2_parser_init(ef_parser_t * parser)49static void iso2022jp2_parser_init(ef_parser_t *parser) { 50 ef_iso2022_parser_t *iso2022_parser; 51 52 ef_parser_init(parser); 53 54 iso2022_parser = (ef_iso2022_parser_t*)parser; 55 56 iso2022_parser->g0 = US_ASCII; 57 iso2022_parser->g1 = UNKNOWN_CS; 58 iso2022_parser->g2 = UNKNOWN_CS; 59 iso2022_parser->g3 = UNKNOWN_CS; 60 61 iso2022_parser->gl = &iso2022_parser->g0; 62 iso2022_parser->gr = NULL; 63 64 iso2022_parser->is_single_shifted = 0; 65 } 66 iso2022jp3_parser_init(ef_parser_t * parser)67static void iso2022jp3_parser_init(ef_parser_t *parser) { 68 ef_iso2022_parser_t *iso2022_parser; 69 70 ef_parser_init(parser); 71 72 iso2022_parser = (ef_iso2022_parser_t*)parser; 73 74 iso2022_parser->g0 = US_ASCII; 75 iso2022_parser->g1 = UNKNOWN_CS; 76 iso2022_parser->g2 = UNKNOWN_CS; 77 iso2022_parser->g3 = UNKNOWN_CS; 78 79 iso2022_parser->gl = &iso2022_parser->g0; 80 81 iso2022_parser->is_single_shifted = 0; 82 } 83 84 /* --- global functions --- */ 85 ef_iso2022jp_8_parser_new(void)86ef_parser_t *ef_iso2022jp_8_parser_new(void) { 87 ef_iso2022_parser_t *iso2022_parser; 88 89 if ((iso2022_parser = ef_iso2022_parser_new()) == NULL) { 90 return NULL; 91 } 92 93 iso2022jp_8_parser_init((ef_parser_t*)iso2022_parser); 94 95 /* overwrite */ 96 iso2022_parser->parser.init = iso2022jp_8_parser_init; 97 98 return (ef_parser_t*)iso2022_parser; 99 } 100 ef_iso2022jp_7_parser_new(void)101ef_parser_t *ef_iso2022jp_7_parser_new(void) { 102 ef_iso2022_parser_t *iso2022_parser; 103 104 if ((iso2022_parser = ef_iso2022_parser_new()) == NULL) { 105 return NULL; 106 } 107 108 iso2022jp_7_parser_init((ef_parser_t*)iso2022_parser); 109 110 /* overwrite */ 111 iso2022_parser->parser.init = iso2022jp_7_parser_init; 112 113 return (ef_parser_t*)iso2022_parser; 114 } 115 ef_iso2022jp2_parser_new(void)116ef_parser_t *ef_iso2022jp2_parser_new(void) { 117 ef_iso2022_parser_t *iso2022_parser; 118 119 if ((iso2022_parser = ef_iso2022_parser_new()) == NULL) { 120 return NULL; 121 } 122 123 iso2022jp2_parser_init((ef_parser_t*)iso2022_parser); 124 125 /* overwrite */ 126 iso2022_parser->parser.init = iso2022jp2_parser_init; 127 128 return (ef_parser_t*)iso2022_parser; 129 } 130 ef_iso2022jp3_parser_new(void)131ef_parser_t *ef_iso2022jp3_parser_new(void) { 132 ef_iso2022_parser_t *iso2022_parser; 133 134 if ((iso2022_parser = ef_iso2022_parser_new()) == NULL) { 135 return NULL; 136 } 137 138 iso2022jp3_parser_init((ef_parser_t*)iso2022_parser); 139 140 /* overwrite */ 141 iso2022_parser->parser.init = iso2022jp3_parser_init; 142 143 return (ef_parser_t*)iso2022_parser; 144 } 145