source: src/CodeGen/OperatorTable.cc@ 2bae7307

ADT aaron-thesis arm-eh ast-experimental cleanup-dtors ctor deferred_resn demangler enum forall-pointer-decay gc_noraii jacob/cs343-translation jenkins-sandbox memory new-ast new-ast-unique-expr new-env no_list persistent-indexer pthread-emulation qualifiedEnum resolv-new string with_gc
Last change on this file since 2bae7307 was 843054c2, checked in by Peter A. Buhr <pabuhr@…>, 10 years ago

licencing: seventh groups of files

  • Property mode set to 100644
File size: 3.5 KB
Line 
1//
2// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
3//
4// The contents of this file are covered under the licence agreement in the
5// file "LICENCE" distributed with Cforall.
6//
7// OperatorTable.cc --
8//
9// Author : Richard C. Bilson
10// Created On : Mon May 18 07:44:20 2015
11// Last Modified By : Peter A. Buhr
12// Last Modified On : Mon May 18 23:42:07 2015
13// Update Count : 2
14//
15
16#include <map>
17#include "OperatorTable.h"
18
19namespace CodeGen {
20 namespace {
21 const OperatorInfo tableValues[] = {
22 { "?[?]", "", "_operator_index", OT_INDEX },
23 { "?()", "", "_operator_call", OT_CALL },
24 { "?++", "++", "_operator_postincr", OT_POSTFIXASSIGN },
25 { "?--", "--", "_operator_postdecr", OT_POSTFIXASSIGN },
26 { "*?", "*", "_operator_deref", OT_PREFIX },
27 { "+?", "+", "_operator_unaryplus", OT_PREFIX },
28 { "-?", "-", "_operator_unaryminus", OT_PREFIX },
29 { "~?", "~", "_operator_bitnot", OT_PREFIX },
30 { "!?", "!", "_operator_lognot", OT_PREFIX },
31 { "++?", "++", "_operator_preincr", OT_PREFIXASSIGN },
32 { "--?", "--", "_operator_predecr", OT_PREFIXASSIGN },
33 { "?*?", "*", "_operator_multiply", OT_INFIX },
34 { "?/?", "/", "_operator_divide", OT_INFIX },
35 { "?%?", "%", "_operator_modulus", OT_INFIX },
36 { "?+?", "+", "_operator_add", OT_INFIX },
37 { "?-?", "-", "_operator_subtract", OT_INFIX },
38 { "?<<?", "<<", "_operator_shiftleft", OT_INFIX },
39 { "?>>?", ">>", "_operator_shiftright", OT_INFIX },
40 { "?<?", "<", "_operator_less", OT_INFIX },
41 { "?>?", ">", "_operator_greater", OT_INFIX },
42 { "?<=?", "<=", "_operator_lessequal", OT_INFIX },
43 { "?>=?", ">=", "_operator_greaterequal", OT_INFIX },
44 { "?==?", "==", "_operator_equal", OT_INFIX },
45 { "?!=?", "!=", "_operator_notequal", OT_INFIX },
46 { "?&?", "&", "_operator_bitand", OT_INFIX },
47 { "?^?", "^", "_operator_bitxor", OT_INFIX },
48 { "?|?", "|", "_operator_bitor", OT_INFIX },
49 { "?=?", "=", "_operator_assign", OT_INFIXASSIGN },
50 { "?*=?", "*=", "_operator_multassign", OT_INFIXASSIGN },
51 { "?/=?", "/=", "_operator_divassign", OT_INFIXASSIGN },
52 { "?%=?", "%=", "_operator_modassign", OT_INFIXASSIGN },
53 { "?+=?", "+=", "_operator_addassign", OT_INFIXASSIGN },
54 { "?-=?", "-=", "_operator_subassign", OT_INFIXASSIGN },
55 { "?<<=?", "<<=", "_operator_shiftleftassign", OT_INFIXASSIGN },
56 { "?>>=?", ">>=", "_operator_shiftrightassign", OT_INFIXASSIGN },
57 { "?&=?", "&=", "_operator_bitandassign", OT_INFIXASSIGN },
58 { "?^=?", "^=", "_operator_bitxorassign", OT_INFIXASSIGN },
59 { "?|=?", "|=", "_operator_bitorassign", OT_INFIXASSIGN },
60 { "0", "0", "_constant_zero", OT_CONSTANT },
61 { "1", "1", "_constant_one", OT_CONSTANT }
62 };
63
64 const int numOps = sizeof( tableValues ) / sizeof( OperatorInfo );
65
66 std::map< std::string, OperatorInfo > table;
67
68 void initialize() {
69 for ( int i = 0; i < numOps; ++i ) {
70 table[ tableValues[i].inputName ] = tableValues[i];
71 } // for
72 }
73 } // namespace
74
75 bool operatorLookup( std::string funcName, OperatorInfo &info ) {
76 static bool init = false;
77 if ( ! init ) {
78 initialize();
79 } // if
80 std::map< std::string, OperatorInfo >::const_iterator i = table.find( funcName );
81 if ( i == table.end() ) {
82 return false;
83 } else {
84 info = i->second;
85 return true;
86 } // if
87 }
88} // namespace CodeGen
89
90// Local Variables: //
91// tab-width: 4 //
92// mode: c++ //
93// compile-command: "make install" //
94// End: //
Note: See TracBrowser for help on using the repository browser.