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)15 static 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)35 static 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)55 ef_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)70 ef_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