Blame view

circus/src/jcircus/complementaryenvs/ActStackVarEnv.java 1.84 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
  package jcircus.complementaryenvs;
  
  import java.util.HashMap;
  import java.util.LinkedHashMap;
  
  public class ActStackVarEnv {
  	private HashMap <String, StackVarEnv> map;
  	public HashMap <String, StackVarEnv> getMap () {
  		return this.map;
  	}
  	public ActStackVarEnv () {
  		map = new LinkedHashMap <String, StackVarEnv> ();
  	}
  	public ActStackVarEnv (ActStackVarEnv asve) {
  		map = new LinkedHashMap <String, StackVarEnv> (asve.getMap());
  	}
  	private boolean containsKeySubstring (String substring) {
  		Object [] o = this.map.keySet().toArray();
  		boolean aux = false;
  		for (int i = 0; i < o.length; i++) {
  			if (((String)o [i]).contains(substring)) {
  				aux = true;
  			}
  		}
  		return aux;
  	}
  	private String getKeyFromSubstring (String substring) {
  		Object [] o = this.map.keySet().toArray();
  		String aux = "";
  		for (int i = 0; i < o.length; i++) {
  			if (((String)o [i]).contains(substring)) {
  				aux = (String) o[i];
  			}
  		}
  		return aux;
  	}
  	public void update (String act, StackVarEnv sve) {
  		if (!this.map.containsKey(act)) {
  			if (act.contains("$$") && containsKeySubstring (act)) {
  				String key = getKeyFromSubstring (act);
  				this.map.put(key, sve);
  			}
  			this.map.put(act, sve);
  		}
  		else {
  			this.map.remove(act);
  			this.map.put(act, sve);
  		}
  	}
  	public StackVarEnv get (String act) {
  		if (this.map.containsKey(act))
  			return this.map.get(act);
  		/*else if (this.containsKeySubstring ("$$mainAction")) {
  			return this.map.get(this.getKeyFromSubstring("$$mainAction"));
  		}*/
  		return new StackVarEnv ();
  	}
  	public void push (String act, String var) {
  		StackVarEnv sve = new StackVarEnv (this.get(act));
  		sve.push(var);
  		this.update(act, sve);
  	}
  	public void pop (String act, String var) {
  		StackVarEnv sve = new StackVarEnv (this.get(act));
  		sve.pop(var);
  		this.update(act, sve);
  	}
  }