View Javadoc

1   /*
2    * #%L
3    * prolobjectlink-jpi-tuprolog
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 Lesser General Public License as 
9    * published by the Free Software Foundation, either version 2.1 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 Lesser Public License for more details.
16   * 
17   * You should have received a copy of the GNU General Lesser Public 
18   * License along with this program.  If not, see
19   * <http://www.gnu.org/licenses/lgpl-2.1.html>.
20   * #L%
21   */
22  package io.github.prolobjectlink.prolog.tuprolog;
23  
24  import static io.github.prolobjectlink.prolog.PrologTermType.FLOAT_TYPE;
25  
26  import alice.tuprolog.Float;
27  import io.github.prolobjectlink.prolog.ArityError;
28  import io.github.prolobjectlink.prolog.FunctorError;
29  import io.github.prolobjectlink.prolog.PrologDouble;
30  import io.github.prolobjectlink.prolog.PrologFloat;
31  import io.github.prolobjectlink.prolog.PrologInteger;
32  import io.github.prolobjectlink.prolog.PrologLong;
33  import io.github.prolobjectlink.prolog.PrologProvider;
34  import io.github.prolobjectlink.prolog.PrologTerm;
35  
36  /**
37   * 
38   * @author Jose Zalacain
39   * @since 1.0
40   */
41  final class TuPrologFloat extends TuPrologTerm implements PrologFloat {
42  
43  	TuPrologFloat(PrologProvider provider, Number value) {
44  		super(FLOAT_TYPE, provider, new Float(value.floatValue()));
45  	}
46  
47  	public PrologInteger getPrologInteger() {
48  		return new TuPrologInteger(provider, getIntegerValue());
49  	}
50  
51  	public PrologFloat getPrologFloat() {
52  		return new TuPrologFloat(provider, getFloatValue());
53  	}
54  
55  	public PrologDouble getPrologDouble() {
56  		return new TuPrologDouble(provider, getDoubleValue());
57  	}
58  
59  	public PrologLong getPrologLong() {
60  		return new TuPrologLong(provider, getLongValue());
61  	}
62  
63  	public long getLongValue() {
64  		return ((Float) value).longValue();
65  	}
66  
67  	public double getDoubleValue() {
68  		return ((Float) value).doubleValue();
69  	}
70  
71  	public int getIntegerValue() {
72  		return ((Float) value).intValue();
73  	}
74  
75  	public float getFloatValue() {
76  		return ((Float) value).floatValue();
77  	}
78  
79  	public PrologTerm[] getArguments() {
80  		return new TuPrologFloat[0];
81  	}
82  
83  	public int getArity() {
84  		throw new ArityError(this);
85  	}
86  
87  	public String getFunctor() {
88  		throw new FunctorError(this);
89  	}
90  
91  }