source: proto/s2k/trunk/framework/src/toolchain/b2k/lang/B2KBuiltins2CPP.java @ 3820

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

Harmonized names.

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