source: proto/s2k/trunk/framework/src/toolchain/b2k/lang/builtin/B2KBuiltins2C.java @ 4023

Last change on this file since 4023 was 4023, checked in by ksherdy, 5 years ago

Restructured b2k package.

File size: 2.7 KB
Line 
1package toolchain.b2k.lang.builtin;
2
3/*
4 * KH: Refactor to translate s2k2b2k and then b2k2CLang or b2k2CPPLang.
5 */
6
7import java.util.ArrayList;
8import java.util.Arrays;
9import java.util.HashMap;
10import java.util.List;
11import java.util.Map;
12
13public class B2KBuiltins2C extends AbstractB2KBuiltinsEncoder {
14       
15        private static Map<B2KBuiltin, String> b2k2CCode;
16       
17    static {
18       
19        b2k2CCode = new HashMap<B2KBuiltin, String>();
20       
21        b2k2CCode.put(B2KBuiltins.FLOW_ADVANCE,                         "pablo_blk_Advance");
22        b2k2CCode.put(B2KBuiltins.FLOW_SCAN_TO_FIRST,                   "pablo_blk_ScanToFirst");
23        b2k2CCode.put(B2KBuiltins.FLOW_SCAN_THRU,                       "pablo_blk_ScanThru");
24        b2k2CCode.put(B2KBuiltins.FLOW_SCAN_TO,                         "pablo_blk_ScanTo");
25        b2k2CCode.put(B2KBuiltins.FLOW_ADVANCE_THEN_SCAN_THRU,          "pablo_blk_AdvanceThenScanThru");
26        b2k2CCode.put(B2KBuiltins.FLOW_ADVANCE_THEN_SCAN_TO,            "pablo_blk_AdvanceThenScanTo");
27        b2k2CCode.put(B2KBuiltins.FLOW_SPAN_UP_TO,                      "pablo_blk_SpanUpTo");
28        b2k2CCode.put(B2KBuiltins.FLOW_INCLUSIVE_SPAN,                  "pablo_blk_InclusiveSpan");
29        b2k2CCode.put(B2KBuiltins.FLOW_EXCLUSIVE_SPAN,                  "pablo_blk_ExclusiveSpan");   
30        b2k2CCode.put(B2KBuiltins.FLOW_ADVANCE_N,                       "pablo_blk_Advance_n_<%s>");
31        b2k2CCode.put(B2KBuiltins.FLOW_MASK,                            "Mask");
32        b2k2CCode.put(B2KBuiltins.FLOW_AT_EOF,                          "atEOF");
33        b2k2CCode.put(B2KBuiltins.FLOW_IN_FILE,                         "inFile"); 
34        b2k2CCode.put(B2KBuiltins.FLOW_ASSERT_ZERO,                     "assert_0_error");     
35        b2k2CCode.put(B2KBuiltins.NULL_BUILTIN,                         "null_builtin_error");         
36               
37        b2k2CCode.put(B2KBuiltins._PRINT_BITBLOCK,                                      "print_register<BitBlock>");
38        b2k2CCode.put(B2KBuiltins._ASSERT_BITBLOCK_ALIGN,                       "assert_bitblock_align");
39        b2k2CCode.put(B2KBuiltins._EOF_MASK,                                            "EOF_mask");
40        b2k2CCode.put(KernelBuiltins.DO_BLOCK,                                          "do_block");
41        b2k2CCode.put(KernelBuiltins.DO_FINAL_BLOCK,                            "do_final_block");
42        b2k2CCode.put(KernelBuiltins.CLEAR,                                             "clear");
43
44        List<B2KBuiltin> all_builtins = new ArrayList<B2KBuiltin>(); 
45        all_builtins.addAll(Arrays.asList(B2KBuiltins.values()));
46        all_builtins.addAll(Arrays.asList(KernelBuiltins.values()));
47       
48        for(B2KBuiltin builtin : all_builtins) {
49                if(!b2k2CCode.containsKey(builtin)) {
50                                throw new RuntimeException("B2K builtin to C mapping not unimplemented in :" + B2KBuiltins2C.class.getSimpleName());
51                }
52        }
53    }
54
55        @Override
56        public String getCode(B2KBuiltin builtin) {
57                return b2k2CCode.get(builtin);
58        }
59
60}
Note: See TracBrowser for help on using the repository browser.