View Javadoc

1   /*
2    * #%L
3    * prolobjectlink-jpi-jlog
4    * %%
5    * Copyright (C) 2019 Prolobjectlink Project
6    * %%
7    * This program is free software: you can redistribute it and/or modify
8    * it under the terms of the GNU General Public License as
9    * published by the Free Software Foundation, either version 3 of the
10   * License, or (at your option) any later version.
11   * 
12   * This program is distributed in the hope that it will be useful,
13   * but WITHOUT ANY WARRANTY; without even the implied warranty of
14   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15   * GNU General Public License for more details.
16   * 
17   * You should have received a copy of the GNU General Public
18   * License along with this program.  If not, see
19   * <http://www.gnu.org/licenses/gpl-3.0.html>.
20   * #L%
21   */
22  package io.github.prolobjectlink.prolog.jlog;
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   * @author Jose Zalacain
33   * @since 1.0
34   */
35  class JLogClause extends AbstractClause implements PrologClause {
36  
37  	private final PrologIndicator indicator;
38  
39  	protected JLogClause(PrologProvider provider, PrologTerm head, boolean dynamic, boolean multifile,
40  			boolean discontiguous) {
41  		super(provider, head, dynamic, multifile, discontiguous);
42  		this.indicator = new JLogIndicator(head.getFunctor(), head.getArity());
43  	}
44  
45  	protected JLogClause(PrologProvider provider, PrologTerm head, PrologTerm body, boolean dynamic, boolean multifile,
46  			boolean discontiguous) {
47  		super(provider, head, body, dynamic, multifile, discontiguous);
48  		this.indicator = new JLogIndicator(head.getFunctor(), head.getArity());
49  	}
50  
51  	public PrologIndicator getPrologIndicator() {
52  		return indicator;
53  	}
54  
55  	@Override
56  	public int hashCode() {
57  		final int prime = 31;
58  		int result = super.hashCode();
59  		result = prime * result + ((indicator == null) ? 0 : indicator.hashCode());
60  		return result;
61  	}
62  
63  	@Override
64  	public boolean equals(Object obj) {
65  		if (this == obj)
66  			return true;
67  		if (!super.equals(obj))
68  			return false;
69  		if (getClass() != obj.getClass())
70  			return false;
71  		JLogClause other = (JLogClause) obj;
72  		if (indicator == null) {
73  			if (other.indicator != null)
74  				return false;
75  		} else if (!indicator.equals(other.indicator)) {
76  			return false;
77  		}
78  		return true;
79  	}
80  
81  }