OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libjava/] [classpath/] [gnu/] [CORBA/] [typecodes/] [FixedTypeCode.java] - Blame information for rev 769

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 769 jeremybenn
/* FixedTypeCode.java --
2
   Copyright (C) 2005 Free Software Foundation, Inc.
3
 
4
This file is part of GNU Classpath.
5
 
6
GNU Classpath is free software; you can redistribute it and/or modify
7
it under the terms of the GNU General Public License as published by
8
the Free Software Foundation; either version 2, or (at your option)
9
any later version.
10
 
11
GNU Classpath is distributed in the hope that it will be useful, but
12
WITHOUT ANY WARRANTY; without even the implied warranty of
13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14
General Public License for more details.
15
 
16
You should have received a copy of the GNU General Public License
17
along with GNU Classpath; see the file COPYING.  If not, write to the
18
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19
02110-1301 USA.
20
 
21
Linking this library statically or dynamically with other modules is
22
making a combined work based on this library.  Thus, the terms and
23
conditions of the GNU General Public License cover the whole
24
combination.
25
 
26
As a special exception, the copyright holders of this library give you
27
permission to link this library with independent modules to produce an
28
executable, regardless of the license terms of these independent
29
modules, and to copy and distribute the resulting executable under
30
terms of your choice, provided that you also meet, for each linked
31
independent module, the terms and conditions of the license of that
32
module.  An independent module is a module which is not derived from
33
or based on this library.  If you modify this library, you may extend
34
this exception to your version of the library, but you are not
35
obligated to do so.  If you do not wish to do so, delete this
36
exception statement from your version. */
37
 
38
 
39
package gnu.CORBA.typecodes;
40
 
41
 
42
import java.math.BigDecimal;
43
 
44
import org.omg.CORBA.TCKind;
45
import org.omg.CORBA.TypeCode;
46
import org.omg.CORBA.TypeCodePackage.BadKind;
47
 
48
/**
49
 * A typecode for CORBA <code>fixed</code>
50
 * @author Audrius Meskauskas (AudriusA@Bioinformatics.org)
51
 */
52
public class FixedTypeCode
53
  extends PrimitiveTypeCode
54
{
55
  /**
56
   * Use serialVersionUID for interoperability.
57
   */
58
  private static final long serialVersionUID = 1;
59
 
60
 
61
  /**
62
   * The number of the used digits.
63
   */
64
  private short digits;
65
 
66
  /**
67
   * The number of the digits after the decimal point.
68
   */
69
  private short scale;
70
 
71
  /**
72
   * Creates the instance of the fixed type code.
73
   */
74
  public FixedTypeCode()
75
  {
76
    super(TCKind.tk_fixed);
77
  }
78
 
79
  /**
80
   * Creates the instance of the fixed type code,
81
   * setting the digits and scale by example.
82
   */
83
  public FixedTypeCode(BigDecimal example)
84
  {
85
    super(TCKind.tk_fixed);
86
    if (example != null)
87
      {
88
        setScale(example.scale());
89
        setDigits(countDigits(example));
90
      }
91
  }
92
 
93
  /**
94
   * Set the number of digits.
95
   */
96
  public void setDigits(int a_digits)
97
  {
98
    this.digits = (short) a_digits;
99
  }
100
 
101
  /**
102
   * Set the number of digits after the decimal point.
103
   */
104
  public void setScale(int a_scale)
105
  {
106
    this.scale = (short) a_scale;
107
  }
108
 
109
  /**
110
   * Get the number of digits in thid BigDecimal
111
   *
112
   * @param number a BigDecimal to check.
113
   */
114
  public static int countDigits(BigDecimal number)
115
  {
116
    return number.unscaledValue().abs().toString().length();
117
  }
118
 
119
  /**
120
   * Compare with other type code for equality.
121
   */
122
  public boolean equal(TypeCode other)
123
  {
124
    if (other == this) return true;
125
    try
126
      {
127
        TypeCode that = (TypeCode) other;
128
        return kind() == that.kind() && digits == that.fixed_digits() &&
129
               scale == that.fixed_scale();
130
      }
131
    catch (BadKind ex)
132
      {
133
        return false;
134
      }
135
  }
136
 
137
  /**
138
   * Get the number of digits.
139
   */
140
  public short fixed_digits()
141
  {
142
    return digits;
143
  }
144
 
145
  /**
146
   * Get the number of digits after the decimal point.
147
   */
148
  public short fixed_scale()
149
  {
150
    return scale;
151
  }
152
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.