1 /* -*- c-basic-offset:2; tab-width:2; indent-tabs-mode:nil -*- */ 2 3 #include "ef_eucjp_parser.h" 4 5 #include <stdio.h> /* NULL */ 6 7 #include "ef_iso2022_parser.h" 8 9 #if 0 10 #define __DEBUG 11 #endif 12 13 /* --- static functions --- */ 14 eucjp_parser_init(ef_parser_t * parser)15static void eucjp_parser_init(ef_parser_t *parser) { 16 ef_iso2022_parser_t *iso2022_parser; 17 18 ef_parser_init(parser); 19 20 iso2022_parser = (ef_iso2022_parser_t*)parser; 21 22 iso2022_parser->g0 = US_ASCII; 23 iso2022_parser->g1 = JISX0208_1983; 24 iso2022_parser->g2 = JISX0201_KATA; 25 iso2022_parser->g3 = JISX0212_1990; 26 27 iso2022_parser->gl = &iso2022_parser->g0; 28 iso2022_parser->gr = &iso2022_parser->g1; 29 30 iso2022_parser->non_iso2022_cs = UNKNOWN_CS; 31 32 iso2022_parser->is_single_shifted = 0; 33 } 34 eucjisx0213_parser_init(ef_parser_t * parser)35static void eucjisx0213_parser_init(ef_parser_t *parser) { 36 ef_iso2022_parser_t *iso2022_parser; 37 38 ef_parser_init(parser); 39 40 iso2022_parser = (ef_iso2022_parser_t*)parser; 41 42 iso2022_parser->g0 = US_ASCII; 43 iso2022_parser->g1 = JISX0213_2000_1; 44 iso2022_parser->g2 = JISX0201_KATA; 45 iso2022_parser->g3 = JISX0213_2000_2; 46 47 iso2022_parser->gl = &iso2022_parser->g0; 48 iso2022_parser->gr = &iso2022_parser->g1; 49 50 iso2022_parser->is_single_shifted = 0; 51 } 52 53 /* --- global functions --- */ 54 ef_eucjp_parser_new(void)55ef_parser_t *ef_eucjp_parser_new(void) { 56 ef_iso2022_parser_t *iso2022_parser; 57 58 if ((iso2022_parser = ef_iso2022_parser_new()) == NULL) { 59 return NULL; 60 } 61 62 /* override */ 63 iso2022_parser->parser.init = eucjp_parser_init; 64 65 eucjp_parser_init((ef_parser_t*)iso2022_parser); 66 67 return (ef_parser_t*)iso2022_parser; 68 } 69 ef_eucjisx0213_parser_new(void)70ef_parser_t *ef_eucjisx0213_parser_new(void) { 71 ef_iso2022_parser_t *iso2022_parser; 72 73 if ((iso2022_parser = ef_iso2022_parser_new()) == NULL) { 74 return NULL; 75 } 76 77 eucjisx0213_parser_init((ef_parser_t*)iso2022_parser); 78 79 /* overwrite */ 80 iso2022_parser->parser.init = eucjisx0213_parser_init; 81 82 return (ef_parser_t*)iso2022_parser; 83 } 84