Blame view

circus/src/jcircus/complementaryenvs/StackVarEnv.java 1.81 KB
8d0dc533f   Madiel de Souza Conserva Filho   first
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
  package jcircus.complementaryenvs;
  
  import java.util.HashMap;
  import java.util.LinkedHashMap;
  import java.util.Set;
  import java.util.Stack;
  
  public class StackVarEnv {
  	private HashMap <String, String> _map;
  
      public StackVarEnv () {
          this._map = new LinkedHashMap <String, String> ();
      }
      private HashMap <String, String> getMap () {
      	return this._map;
      }
      public StackVarEnv (StackVarEnv cde) {
      	this._map = new LinkedHashMap <String, String> (cde.getMap());
      }
  	public void push (String varName) {
  		String stackpos = this.get(varName);
  		this._map.remove(varName);
  		if (stackpos.equals("")) {
  			this._map.put (varName, "1");
  		}
  		else {
  			this._map.put(varName, (new Integer ((Integer.parseInt(stackpos) + 1))).toString());
  		}
  	}
  	public void pop (String varName) {
  		String stackpos = this.get(varName);
  		if (stackpos.equals("1")) {
  			this._map.remove (varName);
  		}
  		else if (stackpos.equals("")) {}
  		else {
  			this._map.put(varName, (new Integer ((Integer.parseInt(stackpos) - 1))).toString());
  		}
  	}
  	public String get (String varName) {
  		if (!this._map.containsKey(varName)) {
  			return "";
  		}
  		return this._map.get(varName);
  	}
  	public String getPreviousScope (String varName) {
  		if (this.get(varName).length() > 0) {
  			return this.get(varName).substring(0, this.get(varName).length() - 1);
  		}
  		else {
  			return "";
  		}
  	}
  	public String getNextScope (String varName) {
  		if (this.get(varName).length() > 0) {
  			return this.get(varName) + "1";
  		}
  		else {
  			return "1";
  		}
  	}
  	public String getNewName (String varName) {
  		return (varName + this.get(varName));
  	}
  	public boolean containsKey (String str) {
  		return this._map.keySet().contains(str);
  	}
  	public Set <String> keySet() {
  		return this._map.keySet();
  	}
  }