1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 package io.github.prolobjectlink.prolog.tuprolog;
23
24 import java.util.AbstractSet;
25 import java.util.HashSet;
26 import java.util.Iterator;
27 import java.util.List;
28 import java.util.Set;
29
30 import alice.tuprolog.Operator;
31 import alice.tuprolog.Prolog;
32 import io.github.prolobjectlink.prolog.AbstractOperator;
33 import io.github.prolobjectlink.prolog.PrologOperator;
34 import io.github.prolobjectlink.prolog.PrologOperatorSet;
35
36
37
38
39
40
41 final class TuPrologOperatorSet extends AbstractSet<PrologOperator> implements PrologOperatorSet {
42
43 private final Set<PrologOperator> operators;
44 private final List<Operator> operatorsList;
45
46 public TuPrologOperatorSet() {
47 Prolog engine = new Prolog();
48 operatorsList = engine.getOperatorManager().getOperators();
49 operators = new HashSet<PrologOperator>(operatorsList.size());
50 for (Operator operator : operatorsList) {
51 String name = operator.name;
52 int priority = operator.prio;
53 String specifier = operator.type;
54 AbstractOperator op = new TuPrologOperator(priority, specifier, name);
55 operators.add(op);
56 }
57 }
58
59 public boolean currentOp(String opreator) {
60 for (Operator op : operatorsList) {
61 if (op.name.equals(opreator)) {
62 return true;
63 }
64 }
65 return false;
66 }
67
68 @Override
69 public Iterator<PrologOperator> iterator() {
70 return operators.iterator();
71 }
72
73 @Override
74 public int size() {
75 return operators.size();
76 }
77
78 @Override
79 public int hashCode() {
80 final int prime = 31;
81 int result = super.hashCode();
82 result = prime * result + operators.hashCode();
83 return result;
84 }
85
86 @Override
87 public boolean equals(Object obj) {
88 if (this == obj)
89 return true;
90 if (!super.equals(obj))
91 return false;
92 TuPrologOperatorSet other = (TuPrologOperatorSet) obj;
93 return operators.equals(other.operators);
94
95 }
96
97 }