Joos1W Compiler Framework
All Classes Functions Typedefs Pages
Modifiers.cc
1 #include "ast/AstNode.h"
2 
3 namespace ast {
4 
5 void Modifiers::set(parsetree::Modifier target) {
6  Type modifier;
7  switch(target.get_type()) {
8  case parsetree::Modifier::Type::Public:
9  modifier = Type::Public;
10  break;
11  case parsetree::Modifier::Type::Protected:
12  modifier = Type::Protected;
13  break;
14  case parsetree::Modifier::Type::Static:
15  modifier = Type::Static;
16  break;
17  case parsetree::Modifier::Type::Final:
18  modifier = Type::Final;
19  break;
20  case parsetree::Modifier::Type::Abstract:
21  modifier = Type::Abstract;
22  break;
23  case parsetree::Modifier::Type::Native:
24  modifier = Type::Native;
25  break;
26  default:
27  assert(false && "Unknown modifier type");
28  }
29  set(modifier);
30  modifierLocations[(int)modifier] = target.location();
31 }
32 
33 std::string Modifiers::toString() const {
34  std::string result;
35  if(test(modifiers, Type::Public)) result += "public ";
36  if(test(modifiers, Type::Protected)) result += "protected ";
37  if(test(modifiers, Type::Static)) result += "static ";
38  if(test(modifiers, Type::Final)) result += "final ";
39  if(test(modifiers, Type::Abstract)) result += "abstract ";
40  if(test(modifiers, Type::Native)) result += "native ";
41  return result;
42 }
43 
44 } // namespace ast