View Javadoc

1   /********************************************************************************
2    *
3    *	Copyright (C) 2008 Fujitsu Services Ltd.
4    *
5    *	Author: Nick Battle
6    *
7    *	This file is part of VDMJ.
8    *
9    *	VDMJ is free software: you can redistribute it and/or modify
10   *	it under the terms of the GNU General Public License as published by
11   *	the Free Software Foundation, either version 3 of the License, or
12   *	(at your option) any later version.
13   *
14   *	VDMJ is distributed in the hope that it will be useful,
15   *	but WITHOUT ANY WARRANTY; without even the implied warranty of
16   *	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17   *	GNU General Public License for more details.
18   *
19   *	You should have received a copy of the GNU General Public License
20   *	along with VDMJ.  If not, see <http://www.gnu.org/licenses/>.
21   *
22   ******************************************************************************/
23  
24  package org.overturetool.vdmj.values;
25  
26  import org.overturetool.vdmj.runtime.Context;
27  import org.overturetool.vdmj.runtime.ValueException;
28  import org.overturetool.vdmj.types.RationalType;
29  import org.overturetool.vdmj.types.Type;
30  
31  public class RationalValue extends RealValue
32  {
33  	private static final long serialVersionUID = 1L;
34  
35  	public RationalValue(double value) throws Exception
36  	{
37  		super(value);
38  	}
39  
40  	public RationalValue(long value)
41  	{
42  		super(value);
43  	}
44  
45  	@Override
46  	public String kind()
47  	{
48  		return "rat";
49  	}
50  
51  	@Override
52  	public Value convertValueTo(Type to, Context ctxt) throws ValueException
53  	{
54  		if (to instanceof RationalType)
55  		{
56  			return this;
57  		}
58  		else
59  		{
60  			return super.convertValueTo(to, ctxt);
61  		}
62  	}
63  
64  	@Override
65  	public Object clone()
66  	{
67  		try
68  		{
69  			return new RationalValue(value);
70  		}
71  		catch (Exception e)
72  		{
73  			// Can't happen?
74  			return null;
75  		}
76  	}
77  }