ooRexx  4.2.0-source
About: ooRexx (Open Object Rexx) is a free implementation of Object Rexx. Object Rexx is an enhancement of the classic Rexx interpreter; a full-featured programming language with a human-oriented syntax.
  Fossies Dox: ooRexx-4.2.0-source.tar.gz  ("inofficial" and yet experimental doxygen-generated source code documentation)  

NumberStringClass.hpp
Go to the documentation of this file.
1 /*----------------------------------------------------------------------------*/
2 /* */
3 /* Copyright (c) 1995, 2004 IBM Corporation. All rights reserved. */
4 /* Copyright (c) 2005-2009 Rexx Language Association. All rights reserved. */
5 /* */
6 /* This program and the accompanying materials are made available under */
7 /* the terms of the Common Public License v1.0 which accompanies this */
8 /* distribution. A copy is also available at the following address: */
9 /* http://www.oorexx.org/license.html */
10 /* */
11 /* Redistribution and use in source and binary forms, with or */
12 /* without modification, are permitted provided that the following */
13 /* conditions are met: */
14 /* */
15 /* Redistributions of source code must retain the above copyright */
16 /* notice, this list of conditions and the following disclaimer. */
17 /* Redistributions in binary form must reproduce the above copyright */
18 /* notice, this list of conditions and the following disclaimer in */
19 /* the documentation and/or other materials provided with the distribution. */
20 /* */
21 /* Neither the name of Rexx Language Association nor the names */
22 /* of its contributors may be used to endorse or promote products */
23 /* derived from this software without specific prior written permission. */
24 /* */
25 /* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS */
26 /* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT */
27 /* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS */
28 /* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT */
29 /* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */
30 /* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED */
31 /* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, */
32 /* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY */
33 /* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING */
34 /* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS */
35 /* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
36 /* */
37 /*----------------------------------------------------------------------------*/
38 /******************************************************************************/
39 /* REXX Kernel NumberStringClass.hpp */
40 /* */
41 /* Primitive NumberString Class Definitions */
42 /* */
43 /******************************************************************************/
44 #ifndef Included_RexxNumberString
45 #define Included_RexxNumberString
46 
47 #include "Numerics.hpp"
48 #include "NumberStringMath.hpp"
49 
50 /* Define char data used in OKNUMSTR */
51 #define ch_BLANK ' ' /* Define a Blank character. */
52 #define ch_MINUS '-' /* Define the MINUS character */
53 #define ch_PLUS '+' /* Define the PLUS character. */
54 #define ch_PERIOD '.' /* Define the DOT/PERIOD character. */
55 #define ch_ZERO '0' /* Define the Zero character. */
56 #define ch_ONE '1' /* Define the One character. */
57 #define ch_FIVE '5' /* Define the Five character. */
58 #define ch_NINE '9' /* Define the Nine character. */
59 #define ch_TAB '\t' /* Define the alternate whitespace char */
60 
61 #define NumFormScientific 0x00000001 /* Define Numeric form setting at Object*/
62  /* creation time. */
63 #define NumberRounded 0x00000010 /* Indicate the number was rounded once */
64  /* at NumDigits, avoid double rounding */
65 
66 #define OVERFLOWSPACE 2 /* space for numeric buffer overflow */
67 
68 #define SetNumberStringZero() \
69  this->number[0] = '\0'; /* Make value a zero.*/ \
70  this->length = 1; /* Length is 1 */ \
71  this->sign = 0; /* Make sign Zero. */ \
72  this->exp = 0; /* exponent is zero. */
73 
74 
75 #define NumberStringRound(s,d) s->roundUp(s,d)
76 
78  public:
79  inline RexxNumberStringBase() { ; }
80  void mathRound(char *);
81  char *stripLeadingZeros(char *);
82  char * adjustNumber(char *, char *, size_t, size_t);
83 
84  RexxString *stringObject; /* converted string value */
85  short NumFlags; /* Flags for use by the Numberstring met*/
86  short sign; /* sign for this number (-1 is neg) */
87  size_t NumDigits; /* Maintain a copy of digits setting of */
88  /* From when object was created */
90  size_t length;
91  };
92 
94  public:
95  void *operator new(size_t, size_t);
96  inline void *operator new(size_t size, void *ptr) {return ptr;}
97  inline void operator delete(void *) { ; }
98  inline void operator delete(void *, size_t) { }
99  inline void operator delete(void *, void *) { }
100 
101 
102  RexxNumberString(size_t) ;
103  RexxNumberString(size_t, size_t) ;
104  inline RexxNumberString(RESTORETYPE restoreType) { ; };
105  virtual HashCode getHashValue();
106  void live(size_t);
107  void liveGeneral(int reason);
108  void flatten(RexxEnvelope *);
109 
110  bool numberValue(wholenumber_t &result, size_t precision);
111  bool numberValue(wholenumber_t &result);
112  bool unsignedNumberValue(stringsize_t &result, size_t precision);
113  bool unsignedNumberValue(stringsize_t &result);
114  bool doubleValue(double &result);
115  inline RexxNumberString *numberString() { return this; }
116  RexxInteger *integerValue(size_t);
118  RexxArray *makeArray();
122  bool truthValue(int);
123  virtual bool logicalValue(logical_t &);
124 
125  bool isEqual(RexxObject *);
140  RexxObject *hashCode();
141 
143  void setString(RexxString *);
144  void roundUp(int);
146  RexxString *formatInternal(size_t, size_t, size_t, size_t, RexxNumberString *, size_t, bool);
154  RexxObject *truncInternal(size_t);
155  RexxObject *floor();
157  RexxObject *ceiling();
159  RexxObject *round();
162  bool isInstanceOf(RexxClass *);
166  inline RexxNumberString *checkNumber(size_t digits)
167  {
168  if (this->length > digits) // is the length larger than digits()?
169  {
170  // need to allocate a new number, but
171  // we chop to digits + 1
172  return this->prepareOperatorNumber(digits + 1, digits, NOROUND);
173  }
174  return this; // no adjustment required
175  }
176 
177  RexxNumberString *prepareNumber(size_t, bool);
178  RexxNumberString *prepareOperatorNumber(size_t, size_t, bool);
179  void adjustPrecision(char *, size_t);
180  void adjustPrecision();
181  inline void checkPrecision() { if (length > NumDigits) adjustPrecision(); }
182  inline void setNumericSettings(size_t digits, bool form)
183  {
184  this->NumDigits = digits;
185  if (form == Numerics::FORM_SCIENTIFIC)
186  this->NumFlags |= NumFormScientific;
187  else
188  this->NumFlags &= ~NumFormScientific;
189  }
190 
191  inline void setupNumber()
192  {
193  /* inherit the current numeric settings */
195  /* check for any required rounding */
196  checkPrecision();
197  }
198  bool createUnsignedValue(const char *thisnum, stringsize_t intlength, int carry, wholenumber_t exponent, size_t maxValue, size_t &result);
199  bool createUnsignedInt64Value(const char *thisnum, stringsize_t intlength, int carry, wholenumber_t exponent, uint64_t maxValue, uint64_t &result);
200  bool checkIntegerDigits(stringsize_t numDigits, stringsize_t &numberLength, wholenumber_t &numberExponent, bool &carry);
201  bool int64Value(int64_t *result, stringsize_t numDigits);
202  bool unsignedInt64Value(uint64_t *result, stringsize_t numDigits);
203  void formatInt64(int64_t integer);
204  void formatUnsignedInt64(uint64_t integer);
205 
206  RexxNumberString *addSub(RexxNumberString *, unsigned int, size_t);
215  RexxNumberString *Division(RexxNumberString *, unsigned int);
217  RexxInteger *Sign();
218  RexxObject *notOp();
219  RexxNumberString *Max(RexxObject **, size_t);
220  RexxNumberString *Min(RexxObject **, size_t);
221  RexxNumberString *maxMin(RexxObject **, size_t, unsigned int);
225  RexxString *d2xD2c(RexxObject *, bool);
232  void formatUnsignedNumber(size_t);
233  int format(const char *, size_t);
234  inline void setZero() {
235  this->number[0] = '\0'; /* Make value a zero.*/
236  this->length = 1; /* Length is 1 */
237  this->sign = 0; /* Make sign Zero. */
238  this->exp = 0; /* exponent is zero. */
239  }
240 
242 
243  static RexxNumberString *newInstanceFromDouble(double);
244  static RexxNumberString *newInstanceFromDouble(double, size_t);
245  static RexxNumberString *newInstanceFromFloat(float);
247  static RexxNumberString *newInstanceFromInt64(int64_t);
248  static RexxNumberString *newInstanceFromUint64(uint64_t);
250  static RexxNumberString *newInstance(const char *, stringsize_t);
251 
252 
253  static void createInstance();
255 
256  static size_t highBits(size_t);
257  static void subtractNumbers( RexxNumberString *larger, const char *largerPtr, wholenumber_t aLargerExp,
258  RexxNumberString *smaller, const char *smallerPtr, wholenumber_t aSmallerExp,
259  RexxNumberString *result, char **resultPtr);
260  static char *addMultiplier( char *, size_t, char *, int);
261  static char *subtractDivisor(char *data1, size_t length1, char *data2, size_t length2, char *result, int Mult);
262  static char *multiplyPower(char *leftPtr, RexxNumberStringBase *left, char *rightPtr, RexxNumberStringBase *right, char *OutPtr, size_t OutLen, size_t NumberDigits);
263  static char *dividePower(char *AccumPtr, RexxNumberStringBase *Accum, char *Output, size_t NumberDigits);
264  static char *addToBaseSixteen(int, char *, char *);
265  static char *addToBaseTen(int, char *, char *);
266  static char *multiplyBaseSixteen(char *, char *);
267  static char *multiplyBaseTen(char *, char *);
268 
269  char number[4];
270 };
271 
272 void AdjustPrecision(RexxNumberString *, char *, int);
273 
275 {
276  return RexxNumberString::newInstance(s, l);
277 }
278 
280 {
282 }
283 
285 {
287 }
288 
290 {
292 }
293 
295 {
297 }
298 
300 {
302 }
303 
304 inline RexxNumberString *new_numberstringFromDouble(double n, size_t p)
305 {
307 }
308 
310 {
312 }
313 
314 #endif
RexxNumberString::truthValue
bool truthValue(int)
Definition: NumberStringClass.cpp:1101
RexxNumberString::instanceMethod
RexxMethod * instanceMethod(RexxString *)
Definition: NumberStringClass.cpp:2679
RexxNumberString::strictGreaterThan
RexxInteger * strictGreaterThan(RexxObject *)
Definition: NumberStringClass.cpp:3021
RexxNumberString::instanceMethods
RexxSupplier * instanceMethods(RexxClass *)
Definition: NumberStringClass.cpp:2696
RexxNumberString::ceiling
RexxObject * ceiling()
Definition: NumberStringClass.cpp:1616
RexxNumberStringBase::length
size_t length
Definition: NumberStringClass.hpp:90
RexxExpressionStack
Definition: ExpressionStack.hpp:53
logical_t
size_t logical_t
Definition: rexx.h:230
RexxNumberString::ceilingInternal
RexxObject * ceilingInternal()
Definition: NumberStringClass.cpp:1628
RexxNumberString::operatorMethods
static PCPPM operatorMethods[]
Definition: NumberStringClass.hpp:241
RexxNumberString::equal
RexxInteger * equal(RexxObject *)
Definition: NumberStringClass.cpp:2909
RexxNumberString::divide
RexxNumberString * divide(RexxObject *)
Definition: NumberStringClass.cpp:3150
RexxArray
Definition: ArrayClass.hpp:100
RexxNumberString::concatBlank
RexxString * concatBlank(RexxObject *)
Definition: NumberStringClass.cpp:2702
RexxNumberString::isLessOrEqual
RexxInteger * isLessOrEqual(RexxObject *)
Definition: NumberStringClass.cpp:2969
RexxNumberStringBase::RexxNumberStringBase
RexxNumberStringBase()
Definition: NumberStringClass.hpp:79
RexxNumberString::addToBaseSixteen
static char * addToBaseSixteen(int, char *, char *)
Definition: NumberStringMath.cpp:1119
RexxNumberString::power
RexxNumberString * power(RexxObject *)
Definition: NumberStringMath2.cpp:681
RexxNumberString::Division
RexxNumberString * Division(RexxNumberString *, unsigned int)
Definition: NumberStringMath2.cpp:292
RexxNumberString::d2x
RexxString * d2x(RexxObject *)
Definition: NumberStringClass.cpp:3323
new_numberstringFromWholenumber
RexxNumberString * new_numberstringFromWholenumber(wholenumber_t n)
Definition: NumberStringClass.hpp:279
RexxNumberString::makeArray
RexxArray * makeArray()
Definition: NumberStringClass.cpp:195
RexxNumberString::unsignedInt64Value
bool unsignedInt64Value(uint64_t *result, stringsize_t numDigits)
Definition: NumberStringClass.cpp:1033
RexxNumberString::isInteger
RexxObject * isInteger()
Definition: NumberStringClass.cpp:3268
RexxNumberString::Sign
RexxInteger * Sign()
Definition: NumberStringClass.cpp:3220
RexxNumberString::checkPrecision
void checkPrecision()
Definition: NumberStringClass.hpp:181
RexxNumberString::createUnsignedValue
bool createUnsignedValue(const char *thisnum, stringsize_t intlength, int carry, wholenumber_t exponent, size_t maxValue, size_t &result)
Definition: NumberStringClass.cpp:707
RexxNumberString::subtractNumbers
static void subtractNumbers(RexxNumberString *larger, const char *largerPtr, wholenumber_t aLargerExp, RexxNumberString *smaller, const char *smallerPtr, wholenumber_t aSmallerExp, RexxNumberString *result, char **resultPtr)
Definition: NumberStringMath.cpp:969
RexxNumberString::prepareOperatorNumber
RexxNumberString * prepareOperatorNumber(size_t, size_t, bool)
Definition: NumberStringMath.cpp:432
RexxNumberString::maxMin
RexxNumberString * maxMin(RexxObject **, size_t, unsigned int)
Definition: NumberStringMath.cpp:59
RexxNumberString::isLessThan
RexxInteger * isLessThan(RexxObject *)
Definition: NumberStringClass.cpp:2945
RexxNumberString::setupNumber
void setupNumber()
Definition: NumberStringClass.hpp:191
RexxNumberString::formatUnsignedNumber
void formatUnsignedNumber(size_t)
Definition: NumberStringClass.cpp:2528
new_numberstringFromStringsize
RexxNumberString * new_numberstringFromStringsize(stringsize_t n)
Definition: NumberStringClass.hpp:284
RexxNumberString::highBits
static size_t highBits(size_t)
Definition: NumberStringMath.cpp:249
RexxNumberString::int64Value
bool int64Value(int64_t *result, stringsize_t numDigits)
Definition: NumberStringClass.cpp:933
RexxNumberString::roundUp
void roundUp(int)
Definition: NumberStringClass.cpp:3284
RexxNumberString::adjustPrecision
void adjustPrecision()
Definition: NumberStringMath.cpp:211
RexxNumberString::getHashValue
virtual HashCode getHashValue()
Definition: NumberStringClass.cpp:134
RexxNumberString::addMultiplier
static char * addMultiplier(char *, size_t, char *, int)
Definition: NumberStringMath2.cpp:57
RexxNumberString::newInstanceFromStringsize
static RexxNumberString * newInstanceFromStringsize(stringsize_t)
Definition: NumberStringClass.cpp:3749
RexxNumberString::formatRexx
RexxString * formatRexx(RexxObject *, RexxObject *, RexxObject *, RexxObject *)
Definition: NumberStringClass.cpp:1842
RexxNumberString::liveGeneral
void liveGeneral(int reason)
Definition: NumberStringClass.cpp:148
RexxNumberString::operatorNot
RexxObject * operatorNot(RexxObject *)
Definition: NumberStringClass.cpp:3240
new_numberstring
RexxNumberString * new_numberstring(const char *s, stringsize_t l)
Definition: NumberStringClass.hpp:274
RexxNumberString::integerValue
RexxInteger * integerValue(size_t)
Definition: NumberStringClass.cpp:686
RexxNumberString::plus
RexxNumberString * plus(RexxObject *)
Definition: NumberStringClass.cpp:3069
RexxNumberStringBase::NumDigits
size_t NumDigits
Definition: NumberStringClass.hpp:87
RexxNumberString::comp
wholenumber_t comp(RexxObject *)
Definition: NumberStringClass.cpp:2766
RexxVariableDictionary
Definition: RexxVariableDictionary.hpp:55
Numerics.hpp
RexxNumberString::numberString
RexxNumberString * numberString()
Definition: NumberStringClass.hpp:115
RexxNumberString::newInstanceFromUint64
static RexxNumberString * newInstanceFromUint64(uint64_t)
Definition: NumberStringClass.cpp:3774
RexxNumberString::getRealValue
RexxObject * getRealValue(RexxActivation *)
Definition: NumberStringClass.cpp:3600
RexxNumberString::roundInternal
RexxObject * roundInternal()
Definition: NumberStringClass.cpp:1755
RexxSupplier
Definition: SupplierClass.hpp:47
RexxNumberString::notOp
RexxObject * notOp()
Definition: NumberStringClass.cpp:3232
Numerics::FORM_SCIENTIFIC
static const bool FORM_SCIENTIFIC
Definition: Numerics.hpp:76
RexxEnvelope
Definition: RexxEnvelope.hpp:53
RexxNumberString::remainder
RexxNumberString * remainder(RexxObject *)
Definition: NumberStringClass.cpp:3187
RexxNumberString::setNumericSettings
void setNumericSettings(size_t digits, bool form)
Definition: NumberStringClass.hpp:182
RexxNumberString::RexxNumberString
RexxNumberString(size_t)
Definition: NumberStringClass.cpp:85
RexxNumberString::stringValue
RexxString * stringValue()
Definition: NumberStringClass.cpp:221
new_numberstringFromInt64
RexxNumberString * new_numberstringFromInt64(int64_t n)
Definition: NumberStringClass.hpp:289
RexxNumberString::isInstanceOf
bool isInstanceOf(RexxClass *)
Definition: NumberStringClass.cpp:2665
RexxNumberString::unsignedNumberValue
bool unsignedNumberValue(stringsize_t &result, size_t precision)
Definition: NumberStringClass.cpp:594
RexxNumberString::orOp
RexxObject * orOp(RexxObject *)
Definition: NumberStringClass.cpp:2720
RexxNumberString::getValue
RexxObject * getValue(RexxActivation *context)
Definition: NumberStringClass.cpp:3580
RexxNumberString::formatInt64
void formatInt64(int64_t integer)
Definition: NumberStringClass.cpp:2557
RexxNumberStringBase::NumFlags
short NumFlags
Definition: NumberStringClass.hpp:85
RexxNumberStringBase::adjustNumber
char * adjustNumber(char *, char *, size_t, size_t)
Definition: NumberStringMath.cpp:274
HashCode
size_t HashCode
Definition: ObjectClass.hpp:77
RexxNumberString::d2c
RexxString * d2c(RexxObject *)
Definition: NumberStringClass.cpp:3333
RexxNumberString::classObject
RexxClass * classObject()
Definition: NumberStringClass.cpp:3619
RexxNumberString::hasMethod
RexxInteger * hasMethod(RexxString *)
Definition: NumberStringClass.cpp:200
RexxNumberString::strictLessThan
RexxInteger * strictLessThan(RexxObject *)
Definition: NumberStringClass.cpp:3033
RexxNumberString::logicalValue
virtual bool logicalValue(logical_t &)
Definition: NumberStringClass.cpp:1128
RexxNumberString::newInstanceFromInt64
static RexxNumberString * newInstanceFromInt64(int64_t)
Definition: NumberStringClass.cpp:3762
RexxNumberString::RexxNumberString
RexxNumberString(RESTORETYPE restoreType)
Definition: NumberStringClass.hpp:104
RexxClass
Definition: ClassClass.hpp:49
RexxNumberString::floor
RexxObject * floor()
Definition: NumberStringClass.cpp:1487
RexxNumberStringBase::stripLeadingZeros
char * stripLeadingZeros(char *)
Definition: NumberStringMath.cpp:308
RexxNumberString::numberValue
bool numberValue(wholenumber_t &result, size_t precision)
Definition: NumberStringClass.cpp:521
RexxNumberString::abs
RexxNumberString * abs()
Definition: NumberStringClass.cpp:3206
number_form
bool number_form()
Definition: Numerics.hpp:149
RexxNumberString::makeString
RexxString * makeString()
Definition: NumberStringClass.cpp:181
RexxNumberString::unknown
RexxObject * unknown(RexxString *, RexxArray *)
Definition: NumberStringClass.cpp:2647
RexxNumberString::addSub
RexxNumberString * addSub(RexxNumberString *, unsigned int, size_t)
Definition: NumberStringMath.cpp:464
RexxNumberString::newInstanceFromWholenumber
static RexxNumberString * newInstanceFromWholenumber(wholenumber_t)
Definition: NumberStringClass.cpp:3737
RexxNumberString::setString
void setString(RexxString *)
Definition: NumberStringClass.cpp:170
RexxNumberString::isGreaterThan
RexxInteger * isGreaterThan(RexxObject *)
Definition: NumberStringClass.cpp:2933
RexxNumberString::formatUnsignedInt64
void formatUnsignedInt64(uint64_t integer)
Definition: NumberStringClass.cpp:2613
RexxNumberString::formatNumber
void formatNumber(wholenumber_t)
Definition: NumberStringClass.cpp:2506
RexxNumberString::newInstance
static RexxNumberString * newInstance(const char *, stringsize_t)
Definition: NumberStringClass.cpp:3639
RexxNumberString::evaluate
RexxObject * evaluate(RexxActivation *, RexxExpressionStack *)
Definition: NumberStringClass.cpp:3344
RexxNumberStringBase::stringObject
RexxString * stringObject
Definition: NumberStringClass.hpp:84
NumberStringMath.hpp
PCPPM
RexxObject *(RexxObject::* PCPPM)()
Definition: ObjectClass.hpp:198
RexxNumberString::addToBaseTen
static char * addToBaseTen(int, char *, char *)
Definition: NumberStringMath.cpp:1189
RexxNumberString::Max
RexxNumberString * Max(RexxObject **, size_t)
Definition: NumberStringClass.cpp:3248
RexxNumberString::createUnsignedInt64Value
bool createUnsignedInt64Value(const char *thisnum, stringsize_t intlength, int carry, wholenumber_t exponent, uint64_t maxValue, uint64_t &result)
Definition: NumberStringClass.cpp:781
RexxNumberString::strictEqual
RexxInteger * strictEqual(RexxObject *)
Definition: NumberStringClass.cpp:2995
RexxNumberString::flatten
void flatten(RexxEnvelope *)
Definition: NumberStringClass.cpp:157
RexxNumberString::multiply
RexxNumberString * multiply(RexxObject *)
Definition: NumberStringClass.cpp:3133
RexxNumberString::isEqual
bool isEqual(RexxObject *)
Definition: NumberStringClass.cpp:2735
RexxNumberString::strictGreaterOrEqual
RexxInteger * strictGreaterOrEqual(RexxObject *)
Definition: NumberStringClass.cpp:3045
RexxNumberString::notEqual
RexxInteger * notEqual(RexxObject *)
Definition: NumberStringClass.cpp:2921
RexxNumberString::multiplyBaseSixteen
static char * multiplyBaseSixteen(char *, char *)
Definition: NumberStringMath.cpp:1153
new_numberstringFromDouble
RexxNumberString * new_numberstringFromDouble(double n)
Definition: NumberStringClass.hpp:299
RexxNumberString::floorInternal
RexxObject * floorInternal()
Definition: NumberStringClass.cpp:1499
RexxNumberString::number
char number[4]
Definition: NumberStringClass.hpp:269
RexxActivation
Definition: RexxActivation.hpp:156
RexxNumberString
Definition: NumberStringClass.hpp:93
RexxNumberStringBase::sign
short sign
Definition: NumberStringClass.hpp:86
wholenumber_t
ssize_t wholenumber_t
Definition: rexx.h:229
RexxNumberString::d2xD2c
RexxString * d2xD2c(RexxObject *, bool)
Definition: NumberStringClass.cpp:3358
NOROUND
#define NOROUND
Definition: NumberStringMath.hpp:68
RexxNumberString::checkNumber
RexxNumberString * checkNumber(size_t digits)
Definition: NumberStringClass.hpp:166
AdjustPrecision
void AdjustPrecision(RexxNumberString *, char *, int)
stringsize_t
size_t stringsize_t
Definition: rexx.h:228
number_digits
size_t number_digits()
Definition: Numerics.hpp:147
RexxNumberString::multiplyBaseTen
static char * multiplyBaseTen(char *, char *)
Definition: NumberStringMath.cpp:1227
RexxNumberString::setZero
void setZero()
Definition: NumberStringClass.hpp:234
RexxNumberString::primitiveMakeString
RexxString * primitiveMakeString()
Definition: NumberStringClass.cpp:209
RexxNumberString::xorOp
RexxObject * xorOp(RexxObject *)
Definition: NumberStringClass.cpp:2730
RexxNumberString::andOp
RexxObject * andOp(RexxObject *)
Definition: NumberStringClass.cpp:2725
RexxNumberStringBase::mathRound
void mathRound(char *)
Definition: NumberStringMath.cpp:153
RexxNumberString::strictLessOrEqual
RexxInteger * strictLessOrEqual(RexxObject *)
Definition: NumberStringClass.cpp:3057
RexxNumberString::integerDivide
RexxNumberString * integerDivide(RexxObject *)
Definition: NumberStringClass.cpp:3169
RexxNumberString::createInstance
static void createInstance()
Definition: NumberStringClass.cpp:66
RexxNumberString::round
RexxObject * round()
Definition: NumberStringClass.cpp:1744
RexxNumberString::truncInternal
RexxObject * truncInternal(size_t)
Definition: NumberStringClass.cpp:1308
RexxNumberString::Multiply
RexxNumberString * Multiply(RexxNumberString *)
Definition: NumberStringMath2.cpp:101
new_numberstringFromUint64
RexxNumberString * new_numberstringFromUint64(uint64_t n)
Definition: NumberStringClass.hpp:294
RexxNumberString::strictComp
wholenumber_t strictComp(RexxObject *)
Definition: NumberStringClass.cpp:2751
RexxNumberString::dividePower
static char * dividePower(char *AccumPtr, RexxNumberStringBase *Accum, char *Output, size_t NumberDigits)
Definition: NumberStringMath2.cpp:936
new_numberstringFromFloat
RexxNumberString * new_numberstringFromFloat(float n)
Definition: NumberStringClass.hpp:309
NumFormScientific
#define NumFormScientific
Definition: NumberStringClass.hpp:61
RexxNumberString::newInstanceFromDouble
static RexxNumberString * newInstanceFromDouble(double)
Definition: NumberStringClass.cpp:3687
RexxNumberString::minus
RexxNumberString * minus(RexxObject *)
Definition: NumberStringClass.cpp:3105
RexxNumberString::hashCode
RexxObject * hashCode()
Definition: NumberStringClass.cpp:2988
RexxNumberStringBase
Definition: NumberStringClass.hpp:77
RexxNumberString::Min
RexxNumberString * Min(RexxObject **, size_t)
Definition: NumberStringClass.cpp:3258
RexxNumberString::live
void live(size_t)
Definition: NumberStringClass.cpp:139
RexxNumberString::concat
RexxString * concat(RexxObject *)
Definition: NumberStringClass.cpp:2710
RexxNumberString::trunc
RexxObject * trunc(RexxObject *)
Definition: NumberStringClass.cpp:1296
RexxNumberString::clone
RexxNumberString * clone()
Definition: NumberStringClass.cpp:114
RexxNumberString::prepareNumber
RexxNumberString * prepareNumber(size_t, bool)
Definition: NumberStringMath.cpp:388
RESTORETYPE
RESTORETYPE
Definition: ObjectClass.hpp:80
RexxNumberString::subtractDivisor
static char * subtractDivisor(char *data1, size_t length1, char *data2, size_t length2, char *result, int Mult)
Definition: NumberStringMath2.cpp:203
RexxMethod
Definition: MethodClass.hpp:101
RexxNumberStringBase::exp
wholenumber_t exp
Definition: NumberStringClass.hpp:89
RexxNumberString::formatInternal
RexxString * formatInternal(size_t, size_t, size_t, size_t, RexxNumberString *, size_t, bool)
Definition: NumberStringClass.cpp:1873
RexxInteger
Definition: IntegerClass.hpp:56
RexxNumberString::strictNotEqual
RexxInteger * strictNotEqual(RexxObject *)
Definition: NumberStringClass.cpp:3008
RexxNumberString::isGreaterOrEqual
RexxInteger * isGreaterOrEqual(RexxObject *)
Definition: NumberStringClass.cpp:2957
RexxNumberString::classInstance
static RexxClass * classInstance
Definition: NumberStringClass.hpp:254
RexxNumberString::multiplyPower
static char * multiplyPower(char *leftPtr, RexxNumberStringBase *left, char *rightPtr, RexxNumberStringBase *right, char *OutPtr, size_t OutLen, size_t NumberDigits)
Definition: NumberStringMath2.cpp:876
RexxNumberString::newInstanceFromFloat
static RexxNumberString * newInstanceFromFloat(float)
Definition: NumberStringClass.cpp:3679
RexxNumberString::format
int format(const char *, size_t)
Definition: NumberStringClass.cpp:2259
RexxObject
Definition: ObjectClass.hpp:311
RexxNumberString::doubleValue
bool doubleValue(double &result)
Definition: NumberStringClass.cpp:672
RexxString
Definition: StringClass.hpp:119
RexxNumberString::checkIntegerDigits
bool checkIntegerDigits(stringsize_t numDigits, stringsize_t &numberLength, wholenumber_t &numberExponent, bool &carry)
Definition: NumberStringClass.cpp:853