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
74 return null;
75 }
76 }
77 }