1 /*
2 (C) Copyright IBM Corp. 2006, 2013
3
4 THIS FILE IS PROVIDED UNDER THE TERMS OF THE ECLIPSE PUBLIC LICENSE
5 ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS FILE
6 CONSTITUTES RECIPIENTS ACCEPTANCE OF THE AGREEMENT.
7
8 You can obtain a current copy of the Eclipse Public License from
9 http://www.opensource.org/licenses/eclipse-1.0.php
10
11 @author : Endre Bak, ebak@de.ibm.com
12 *
13 * Flag Date Prog Description
14 * -------------------------------------------------------------------------------
15 * 1565892 2006-10-09 ebak Make SBLIM client JSR48 compliant
16 * 2003590 2008-06-30 blaschke-oss Change licensing from CPL to EPL
17 * 2524131 2009-01-21 raman_arora Upgrade client to JDK 1.5 (Phase 1)
18 * 2531371 2009-02-10 raman_arora Upgrade client to JDK 1.5 (Phase 2)
19 * 2750520 2009-04-10 blaschke-oss Code cleanup from empty statement et al
20 * 2795671 2009-05-22 raman_arora Add Type to Comparable <T>
21 * 2935258 2010-01-19 blaschke-oss Sync up javax.cim.* javadoc with JSR48 1.0.0
22 * 2973230 2010-03-19 blaschke-oss TCK: UnsignedInteger64.equals() does not handle null
23 * 2719 2013-12-10 blaschke-oss TCK: CIM APIs should not generate NullPointerException
24 * 2716 2013-12-11 blaschke-oss Sync up javax.* javadoc with JSR48 1.0.0 Final V
25 */
26
27 package org.metricshub.wbem.javax.cim;
28
29 /*-
30 * ╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲
31 * WBEM Java Client
32 * ჻჻჻჻჻჻
33 * Copyright 2023 - 2025 MetricsHub
34 * ჻჻჻჻჻჻
35 * Licensed under the Apache License, Version 2.0 (the "License");
36 * you may not use this file except in compliance with the License.
37 * You may obtain a copy of the License at
38 *
39 * http://www.apache.org/licenses/LICENSE-2.0
40 *
41 * Unless required by applicable law or agreed to in writing, software
42 * distributed under the License is distributed on an "AS IS" BASIS,
43 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
44 * See the License for the specific language governing permissions and
45 * limitations under the License.
46 * ╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱
47 */
48
49 import java.math.BigInteger;
50
51 //Sync'd against JSR48 1.0.0 javadoc (version 1.7.0_03) on Tue Dec 10 07:02:50 EST 2013
52 /**
53 * This class represents an <code>UnsignedInteger64</code>. A
54 * <code>uint64</code> data type is defined by the (<a
55 * href=http://www.dmtf.org>DMTF</a>) CIM Infrastructure Specification (<a
56 * href=http://www.dmtf.org/standards/published_documents/DSP0004V2.3_final.pdf
57 * >DSP004</a>).
58 */
59 public class UnsignedInteger64 extends Number implements Comparable<UnsignedInteger64> {
60 private static final long serialVersionUID = -3734165689168941119L;
61
62 /**
63 * The maximum value for an <code>UnsignedInteger64</code>.
64 */
65 public static final BigInteger MAX_VALUE = new BigInteger("18446744073709551615");
66
67 /**
68 * The minimum value for an <code>UnsignedInteger64</code>.
69 */
70 public static final BigInteger MIN_VALUE = BigInteger.ZERO;
71
72 private BigInteger iValue;
73
74 /**
75 * Sets the value of this integer object if it falls within the range of
76 * minimum and maximum values.
77 *
78 * @param pValue
79 * The integer.
80 * @throws NumberFormatException
81 * If the integer is out of range.
82 */
83 private void setValue(BigInteger pValue) throws NumberFormatException {
84 if (pValue.compareTo(MAX_VALUE) > 0 || pValue.compareTo(MIN_VALUE) < 0) {
85 String msg = "uint64:" + pValue + " is out of range!";
86 throw new NumberFormatException(msg);
87 }
88 this.iValue = pValue;
89 }
90
91 /**
92 * Constructs an unsigned 64-bit integer object for the specified
93 * <code>BigInteger</code>. Only the lower 64 bits are considered.
94 *
95 * @param pValue
96 * The <code>BigInteger</code> to be represented as an unsigned
97 * 64-bit integer.
98 * @throws NumberFormatException
99 * If the number is out of range.
100 * @throws IllegalArgumentException
101 * If value is <code>null</code>.
102 */
103 public UnsignedInteger64(BigInteger pValue) throws NumberFormatException {
104 if (pValue == null) throw new IllegalArgumentException("BigInteger value cannot be null!");
105 setValue(pValue);
106 }
107
108 /**
109 * Constructs an unsigned 64-bit integer object for the specified array of
110 * bytes. Only the lower 64 bits are considered.
111 *
112 * @param pValue
113 * The byte array to be represented as an unsigned 64-bit
114 * integer.
115 * @throws NumberFormatException
116 * If the number is out of range.
117 * @throws IllegalArgumentException
118 * If value is <code>null</code>.
119 */
120 public UnsignedInteger64(byte[] pValue) throws NumberFormatException {
121 if (pValue == null) throw new IllegalArgumentException("byte[] value cannot be null!");
122 setValue(new BigInteger(pValue));
123 }
124
125 /**
126 * Constructs an unsigned 64-bit integer object from the specified string.
127 * Only the lower 64 bits are considered.
128 *
129 * @param pValue
130 * The string to be represented as an unsigned 64-bit integer.
131 * @throws NumberFormatException
132 * If the number is out of range.
133 * @throws IllegalArgumentException
134 * If value is <code>null</code>.
135 */
136 public UnsignedInteger64(String pValue) throws NumberFormatException {
137 if (pValue == null) throw new IllegalArgumentException("String value cannot be null!");
138 setValue(new BigInteger(pValue));
139 }
140
141 /**
142 * Get the value as a <code>BigInteger</code>.
143 *
144 * @return <code>BigInteger</code> representation of this object.
145 */
146 public BigInteger bigIntegerValue() {
147 return this.iValue;
148 }
149
150 /**
151 * Compares this object with the specified object for order. Returns a
152 * negative integer, zero, or a positive integer as this object is less
153 * than, equal to, or greater than the specified object.
154 *
155 * @param pOther
156 * The Object to be compared.
157 * @return A negative integer, zero, or a positive integer as this object is
158 * less than, equal to, or greater than the specified object.
159 * @throws ClassCastException
160 * If the specified object's type prevents it from being
161 * compared to this Object.
162 * @throws IllegalArgumentException
163 * If value is <code>null</code>.
164 */
165 public int compareTo(UnsignedInteger64 pOther) {
166 if (pOther == null) throw new IllegalArgumentException("Other UnsignedInteger64 cannot be null!");
167 UnsignedInteger64 that = pOther;
168 int d = this.iValue.compareTo(that.iValue);
169 if (d == 0) return 0;
170 return d < 0 ? -1 : 1;
171 }
172
173 /**
174 * Compares this object against the specified object. The result is
175 * <code>true</code> if and only if the argument is not <code>null</code>
176 * and is an <code>UnsignedInteger64</code> object that represents the same
177 * value as this object.
178 *
179 * @param pOther
180 * The object to compare.
181 * @return <code>true</code> if the objects are the same; <code>false</code>
182 * otherwise.
183 */
184 @Override
185 public boolean equals(Object pOther) {
186 if (!(pOther instanceof UnsignedInteger64)) return false;
187 return this.iValue.equals(((UnsignedInteger64) pOther).iValue);
188 }
189
190 /**
191 * Returns the value of this unsigned integer object as a <code>byte</code>.
192 *
193 * @return The <code>byte</code> value of this unsigned integer object.
194 */
195 @Override
196 public byte byteValue() {
197 return this.iValue.byteValue();
198 }
199
200 /**
201 * Returns the value of this unsigned integer object as a
202 * <code>double</code>.
203 *
204 * @return Value of this unsigned integer object as a <code>double</code>.
205 */
206 @Override
207 public double doubleValue() {
208 return this.iValue.doubleValue();
209 }
210
211 /**
212 * Returns the value of this unsigned integer object as a <code>float</code>
213 * .
214 *
215 * @return Value of this unsigned integer object as a <code>float</code>.
216 */
217 @Override
218 public float floatValue() {
219 return this.iValue.floatValue();
220 }
221
222 /**
223 * Computes the hash code for this unsigned integer object.
224 *
225 * @return The integer representing the hash code for this unsigned integer
226 * object.
227 */
228 @Override
229 public int hashCode() {
230 return this.iValue.hashCode();
231 }
232
233 /**
234 * Returns the value of this unsigned integer object as an <code>int</code>.
235 *
236 * @return Value of this unsigned integer object as an <code>int</code>.
237 */
238 @Override
239 public int intValue() {
240 return this.iValue.intValue();
241 }
242
243 /**
244 * Returns the value of this unsigned integer object as a <code>long</code>.
245 *
246 * @return Value of this unsigned integer object as a <code>long</code>.
247 */
248 @Override
249 public long longValue() {
250 return this.iValue.longValue();
251 }
252
253 /**
254 * Returns the value of this unsigned integer object as a <code>short</code>
255 * .
256 *
257 * @return Value of this unsigned integer object as a <code>short</code>.
258 */
259 @Override
260 public short shortValue() {
261 return this.iValue.shortValue();
262 }
263
264 /**
265 * Returns the text representation of this unsigned integer object.
266 *
267 * @return Text representation of this unsigned integer.
268 */
269 @Override
270 public String toString() {
271 return this.iValue.toString();
272 }
273 }