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.jpl;
23
24 import io.github.prolobjectlink.prolog.AbstractClause;
25 import io.github.prolobjectlink.prolog.PrologClause;
26 import io.github.prolobjectlink.prolog.PrologIndicator;
27 import io.github.prolobjectlink.prolog.PrologProvider;
28 import io.github.prolobjectlink.prolog.PrologTerm;
29
30
31
32
33
34
35 final class JplClause extends AbstractClause implements PrologClause {
36
37 private final PrologIndicator indicator;
38
39 JplClause(PrologProvider provider, PrologTerm head, boolean dynamic, boolean multifile, boolean discontiguous) {
40 super(provider, head, dynamic, multifile, discontiguous);
41 this.indicator = new JplIndicator(head.getFunctor(), head.getArity());
42 }
43
44 JplClause(PrologProvider provider, PrologTerm head, PrologTerm body, boolean dynamic, boolean multifile,
45 boolean discontiguous) {
46 super(provider, head, body, dynamic, multifile, discontiguous);
47 this.indicator = new JplIndicator(head.getFunctor(), head.getArity());
48 }
49
50 public PrologIndicator getPrologIndicator() {
51 return indicator;
52 }
53
54 @Override
55 public int hashCode() {
56 final int prime = 31;
57 int result = super.hashCode();
58 result = prime * result + ((indicator == null) ? 0 : indicator.hashCode());
59 return result;
60 }
61
62 @Override
63 public boolean equals(Object obj) {
64 if (this == obj)
65 return true;
66 if (!super.equals(obj))
67 return false;
68 if (getClass() != obj.getClass())
69 return false;
70 JplClause other = (JplClause) obj;
71 if (indicator == null) {
72 if (other.indicator != null)
73 return false;
74 } else if (!indicator.equals(other.indicator)) {
75 return false;
76 }
77 return true;
78 }
79 }