1 2 29 package com.puppycrawl.tools.checkstyle.checks.usage.transmogrify; 30 31 import com.puppycrawl.tools.checkstyle.api.TokenTypes; 32 33 34 35 42 public class VariableDef extends Definition implements IVariable { 43 44 public static final int PRIVATE_VISIBILITY = 0; 45 public static final int PROTECTED_VISIBILITY = 1; 46 public static final int PUBLIC_VISIBILITY = 2; 47 public static final int DEFAULT_VISIBILITY = 3; 48 49 private IClass _type = null; 50 51 public VariableDef(String name, Scope parentScope, SymTabAST node) { 52 super(name, parentScope, node); 53 } 54 55 62 public IClass getType() { 63 return _type; 64 } 65 66 74 public void setType(IClass type) { 75 _type = type; 76 } 77 78 public int getVisibility() { 79 int result = DEFAULT_VISIBILITY; 80 81 SymTabAST visibilityNode = getVisibilityNode(); 82 if (visibilityNode != null) { 83 if (visibilityNode.getType() == TokenTypes.LITERAL_PRIVATE) { 84 result = PRIVATE_VISIBILITY; 85 } 86 else if ( 87 visibilityNode.getType() == TokenTypes.LITERAL_PROTECTED) { 88 result = PROTECTED_VISIBILITY; 89 } 90 else if (visibilityNode.getType() == TokenTypes.LITERAL_PUBLIC) { 91 result = PUBLIC_VISIBILITY; 92 } 93 } 94 95 return result; 96 } 97 98 private SymTabAST getVisibilityNode() { 99 SymTabAST result = null; 100 101 SymTabAST modifiersNode = 102 getTreeNode().findFirstToken(TokenTypes.MODIFIERS); 103 SymTabAST modifier = (SymTabAST) modifiersNode.getFirstChild(); 104 while (modifier != null) { 105 if (isVisibilityNode(modifier)) { 106 result = modifier; 107 break; 108 } 109 modifier = (SymTabAST) modifier.getNextSibling(); 110 } 111 112 return result; 113 } 114 115 private boolean isVisibilityNode(SymTabAST node) { 116 return ( 117 node.getType() == TokenTypes.LITERAL_PUBLIC 118 || node.getType() == TokenTypes.LITERAL_PROTECTED 119 || node.getType() == TokenTypes.LITERAL_PRIVATE); 120 } 121 122 public boolean isAssignedAtDeclaration() { 123 boolean result = false; 124 125 if (getTreeNode().findFirstToken(TokenTypes.ASSIGN) != null) { 126 result = true; 127 } 128 129 return result; 130 } 131 132 } 133 | Popular Tags |