74 #define string_forwarder(method)\
75 RexxObject *RexxNumberString::##method(RexxObject *operand)\
77 return (RexxObject *)this->stringValue()->##method(operand);\
227 char expstring[17], num;
229 size_t createdDigits;
230 size_t MaxNumSize, LenValue;
242 if (this->
sign == 0 )
256 ExpValue = this->
exp;
263 MaxNumSize = LenValue;
277 for (numindex=0; (size_t)numindex < LenValue; numindex++)
281 StringObj->
putChar(charpos++, num);
344 strcpy(expstring,
"E+");
355 MaxNumSize = (size_t)ExpValue + LenValue;
367 MaxNumSize = LenValue + 1;
373 MaxNumSize += strlen(expstring);
397 charpos = MaxNumSize - strlen(expstring);
402 StringObj->
put(charpos, expstring, strlen(expstring));
419 for (numindex = (
wholenumber_t)(LenValue-1);numindex >= 0 ;numindex-- )
422 num = this->
number[numindex];
424 StringObj->
putChar(--charpos, num);
445 else if ((
size_t)temp >= LenValue)
460 for (numindex = (
wholenumber_t)LenValue-1;numindex >= 0 ;numindex-- )
462 num = this->
number[numindex];
464 StringObj->
putChar(--charpos, num);
472 for (numindex = (
wholenumber_t)LenValue - 1; numindex > temp - 1 ;numindex-- )
474 num = this->
number[numindex];
477 StringObj->
putChar(--charpos, num);
484 for (numindex = temp - 1; numindex >= 0; numindex-- )
486 num = this->
number[numindex];
488 StringObj->
putChar(--charpos, num);
541 if (length <= numDigits && numberExp >= 0)
568 result = carry ? 1 : 0;
620 if (length <= numDigits && numberExp >= 0)
646 result = carry ? 1 : 0;
720 for (
stringsize_t numpos = 1; numpos <= intlength; numpos++ )
726 if (newNumber < intNumber)
731 intNumber = newNumber;
739 if (newNumber < intNumber)
743 intNumber = newNumber;
753 exponentMultiplier *= 10;
761 if (newNumber < intNumber)
765 intNumber = newNumber;
769 if (intNumber >= maxValue)
794 for (
stringsize_t numpos = 1; numpos <= intlength; numpos++ )
800 if (newNumber < intNumber)
805 intNumber = newNumber;
813 if (newNumber < intNumber)
817 intNumber = newNumber;
827 exponentMultiplier *= 10;
832 uint64_t newNumber = intNumber * exponentMultiplier;
836 if (newNumber < intNumber)
840 intNumber = newNumber;
844 if (intNumber > maxValue)
861 numberExponent = this->
exp;
862 numberLength = this->
length;
868 if (this->
length > numDigits)
871 numberExponent += (this->
length - numDigits);
873 numberLength = numDigits;
877 if (*(this->
number + numberLength) >= 5)
884 if (numberExponent < 0)
889 char compareChar = 0;
899 if (decimalPos > numberLength)
907 const char *numberData;
908 if (decimalPos >= numberLength )
912 decimalPos = numberLength;
913 numberData = this->
number;
918 numberData = this->
number + numberLength + numberExponent;
921 for ( ; decimalPos > 0 ; decimalPos--)
924 if ( *numberData++ != compareChar)
953 if (length <= numDigits && numberExp >= 0)
994 *result = carry ? 1 : 0;
1046 if (this->
sign == 0)
1059 if (length <= numDigits && numberExp >= 0)
1084 *result = carry ? 1 : 0;
1108 if (this->
sign == 0 )
1113 else if (!(this->
sign == 1 && this->
exp == 0 && this->
length == 1L && *(this->
number) == 1))
1131 if (this->
sign == 0 )
1158 const char *EndData;
1173 EndData = InPtr + length;
1196 if (ch < ch_ZERO || ch >
ch_NINE)
1209 if (InPtr >= EndData)
1219 if (InPtr >= EndData)
1236 if (InPtr >= EndData)
1242 if (toupper(*InPtr) ==
'E')
1244 if (++InPtr >= EndData)
1254 if (InPtr >= EndData)
1259 if (*InPtr < ch_ZERO || *InPtr >
ch_NINE)
1275 if (InPtr >= EndData)
1293 *outPtr++ = *number++ +
'0';
1310 size_t needed_digits)
1322 if (this->
sign == 0)
1324 if (needed_digits == 0)
1335 strcpy(resultPtr,
"0.");
1337 memset(resultPtr + 2,
'0', needed_digits);
1344 signValue = this->
sign;
1351 if (needed_digits != 0)
1353 size += needed_digits + 1;
1360 if (integer_digits > 0)
1362 size += integer_digits;
1363 if (needed_digits != 0)
1365 size += needed_digits + 1;
1370 if (needed_digits == 0)
1378 size = needed_digits + 2;
1383 size += needed_digits + 2;
1405 resultPtr += this->
length;
1407 memset(resultPtr,
'0', this->
exp);
1408 resultPtr += this->
exp;
1409 if (needed_digits != 0)
1413 memset(resultPtr,
'0', needed_digits);
1418 integer_digits = this->
length + this->
exp;
1419 if (integer_digits > 0)
1423 resultPtr += integer_digits;
1424 if (needed_digits != 0)
1432 needed_digits -= temp;
1433 if (needed_digits != 0)
1436 memset(resultPtr,
'0', needed_digits);
1446 strcpy(resultPtr,
"0.");
1449 memset(resultPtr,
'0', needed_digits);
1453 strcpy(resultPtr,
"0.");
1456 memset(resultPtr,
'0', -integer_digits);
1457 resultPtr += -integer_digits;
1458 needed_digits += integer_digits;
1464 needed_digits -= temp;
1465 if (needed_digits != 0)
1468 memset(resultPtr,
'0', needed_digits);
1503 if (this->
sign == 0)
1508 else if (this->
sign > 0)
1533 bool foundNonZero =
false;
1537 if (this->
number[lastDecimal--] != 0)
1539 foundNonZero =
true;
1558 if (integer_digits <= 0)
1567 this->
length = integer_digits;
1572 char *current = this->
number + integer_digits - 1;
1574 while (current >= this->
number)
1576 int ch = *current + 1;
1632 if (this->
sign == 0)
1637 else if (this->
sign < 0)
1662 bool foundNonZero =
false;
1666 if (this->
number[lastDecimal--] != 0)
1668 foundNonZero =
true;
1687 if (integer_digits <= 0)
1696 this->length = integer_digits;
1701 char *current = this->
number + integer_digits - 1;
1703 while (current >= this->
number)
1705 int ch = *current + 1;
1759 if (this->
sign == 0)
1787 if (integer_digits < 0)
1796 this->
length = integer_digits;
1801 char *current = this->
number + integer_digits;
1812 while (current >= this->
number)
1814 int ch = *current + 1;
1889 size_t exponentsize = 0;
1893 size_t leadingSpaces;
1894 size_t leadingZeros = 0;
1895 size_t leadingExpZeros = 0;
1896 size_t trailingZeros;
1900 bool defaultexpsize =
false;
1918 temp = (temp / 3) * 3;
1920 this->
exp = this->
exp - temp;
1926 exponentsize = strlen(exponent);
1927 if (mathexp == (
size_t)-1)
1929 mathexp = exponentsize;
1930 defaultexpsize =
true;
1932 if (exponentsize > mathexp)
1939 if (decimals == (
size_t)-1)
1943 decimals = -this->
exp;
1950 adjust = -this->
exp;
1951 if ((
size_t)adjust > decimals)
1953 adjust = adjust - decimals;
1955 this->
exp = this->
exp + adjust;
1974 temp = decimals - adjust;
1976 this->length = this->length - adjust;
1982 if (mathexp != 0 && expfactor != 0)
1984 this->
exp += expfactor;
1986 strcpy(exponent,
"0");
1987 exponentsize = strlen(exponent);
1990 temp = this->
exp + this->length - 1;
2002 temp = (temp / 3) * 3;
2005 this->
exp = this->
exp - temp;
2007 expfactor = expfactor + temp;
2011 exponentsize = strlen(exponent);
2013 if (mathexp == (
size_t)-1)
2015 mathexp = exponentsize;
2017 if (exponentsize > mathexp)
2027 if (integers == (
size_t)-1)
2049 reqIntegers = integers;
2050 if (this->
sign == -1)
2052 integers = integers - 1;
2085 leadingSpaces = integers - temp;
2089 leadingSpaces = integers - 1;
2091 size += leadingSpaces;
2093 if (this->
sign == -1)
2101 leadingZeros = -temp;
2102 size += leadingZeros;
2103 if (this->length > 0)
2108 if (leadingZeros + this->length < decimals)
2111 trailingZeros = decimals - (leadingZeros + this->
length);
2112 size += trailingZeros;
2123 trailingZeros = temp - this->
length;
2124 size += trailingZeros;
2127 size += decimals + 1;
2132 size += this->length + 1;
2134 trailingZeros = decimals - (this->length - temp);
2135 size += trailingZeros;
2138 this->length += trailingZeros;
2139 this->
exp -= trailingZeros;
2148 leadingExpZeros = mathexp - exponentsize;
2152 else if (mathexp > 0 && !defaultexpsize && temp > (
wholenumber_t)exptrigger)
2154 size += mathexp + 2;
2160 if (leadingSpaces != 0)
2163 memset(resultPtr,
' ', leadingSpaces);
2164 resultPtr += leadingSpaces;
2166 if (this->
sign == -1)
2173 strcpy(resultPtr,
"0.");
2175 if (leadingZeros != 0)
2178 memset(resultPtr,
'0', leadingZeros);
2179 resultPtr += leadingZeros;
2181 if (this->length > 0)
2185 resultPtr += this->
length;
2187 if (trailingZeros != 0)
2190 memset(resultPtr,
'0', trailingZeros);
2191 resultPtr += trailingZeros;
2198 resultPtr += this->
length;
2199 if (trailingZeros != 0)
2202 memset(resultPtr,
'0', trailingZeros);
2203 resultPtr += trailingZeros;
2208 memset(resultPtr,
'0', decimals);
2209 resultPtr += decimals;
2220 resultPtr += this->length - temp;
2224 memset(resultPtr,
'0', trailingZeros);
2225 resultPtr += trailingZeros;
2240 if (leadingExpZeros > 0)
2243 memset(resultPtr,
'0', leadingExpZeros);
2244 resultPtr += leadingExpZeros;
2247 memcpy(resultPtr, exponent, exponentsize);
2250 else if (mathexp > 0 && !defaultexpsize && temp > (
wholenumber_t)exptrigger)
2253 memset(resultPtr,
' ', mathexp + 2);
2254 resultPtr += mathexp;
2279 const char *EndData;
2281 size_t resultDigits;
2289 EndData = InPtr + _length;
2309 MaxDigits = resultDigits = _length;
2320 if (InPtr >= EndData)
2338 *OutPtr++ = (char)(*InPtr++ -
'0');
2345 if ((!MSDigit) && (InPtr < EndData))
2353 if (InPtr >= EndData)
2356 this->
length = (size_t) (resultDigits - MaxDigits);
2357 this->
exp = ExpValue;
2363 this->
length = (resultDigits - MaxDigits);
2364 this->
exp = ExpValue;
2369 if (InPtr >= EndData)
2373 if (MaxDigits == resultDigits || isZero)
2384 if (MaxDigits == resultDigits)
2393 if (InPtr >= EndData)
2412 *OutPtr++ = (char)(*InPtr++ -
'0');
2424 if (InPtr >= EndData)
2427 this->
length = (resultDigits - MaxDigits);
2428 this->
exp = ExpValue;
2441 this->
length = resultDigits - MaxDigits;
2446 if (InPtr >= EndData)
2453 this->
exp = ExpValue;
2455 if (toupper(*InPtr) ==
'E')
2475 ExpValue = ExpValue * 10 + ((*InPtr++) -
'0');
2485 this->
exp += (ExpValue * ExpSign);
2493 if (this->
sign == 0 || isZero)
2547 while (*current !=
'\0')
2573 size_t index =
sizeof(buffer);
2588 int digit = (int)(working % 10);
2589 working = working / 10;
2591 buffer[--index] = digit;
2600 int digit = (int)(
integer % 10);
2603 buffer[--index] = digit;
2608 this->
length =
sizeof(buffer) - index;
2630 size_t index =
sizeof(buffer);
2635 int digit = (int)(
integer % 10);
2638 buffer[--index] = digit;
2642 this->
length =
sizeof(buffer) - index;
2805 size_t NumberDigits;
2819 if (alternativeOperator !=
OREF_NULL && alternativeOperatorResultPtr != NULL)
2828 bool alternativeResult = right->
messageSend(alternativeOperator, args, 1, 0, result,
false);
2845 if (this->
length > NumberDigits)
2849 if (rightNumber->
length > NumberDigits)
2854 if (this->
sign != rightNumber->
sign)
2857 return(this->sign < rightNumber->
sign) ? -1 : 1;
2859 if (rightNumber->
sign == 0)
2863 if (this->
sign == 0)
2865 return rightNumber->
sign;
2868 MinExp = (rightNumber->
exp < this->
exp)? rightNumber->
exp : this->exp;
2869 aLexp = this->exp - MinExp;
2870 aRexp = rightNumber->
exp - MinExp;
2871 aLlen = aLexp + this->length;
2872 aRlen = aRexp + rightNumber->
length;
2875 if (aLlen <= NumberDigits && aRlen <= NumberDigits)
2882 else if (aRlen > aLlen)
2893 return memcmp(this->
number, rightNumber->
number, this->length) * this->
sign;
2944 return rightNumber->
sign;
2960 if (alternativeResult !=
OREF_NULL)
return alternativeResult;
2975 wholenumber_t result = this->
comp(other, OREF_BACKSLASH_EQUAL_RIGHT, &alternativeResult);
2976 if (alternativeResult !=
OREF_NULL)
return alternativeResult;
2991 wholenumber_t result = this->
comp(other, OREF_GREATERTHAN_RIGHT, &alternativeResult);
2992 if (alternativeResult !=
OREF_NULL)
return alternativeResult;
3007 wholenumber_t result = this->
comp(other, OREF_LESSTHAN_RIGHT, &alternativeResult);
3008 if (alternativeResult !=
OREF_NULL)
return alternativeResult;
3023 wholenumber_t result = this->
comp(other, OREF_GREATERTHAN_EQUAL_RIGHT, &alternativeResult);
3024 if (alternativeResult !=
OREF_NULL)
return alternativeResult;
3039 wholenumber_t result = this->
comp(other, OREF_LESSTHAN_EQUAL_RIGHT, &alternativeResult);
3040 if (alternativeResult !=
OREF_NULL)
return alternativeResult;
3149 bool alternativeResult = right->
messageSend(OREF_PLUS_RIGHT, args, 1, 0, result,
false);
3192 bool alternativeResult = right->
messageSend(OREF_SUBTRACT_RIGHT, args, 1, 0, result,
false);
3226 bool alternativeResult = right->
messageSend(OREF_MULTIPLY_RIGHT, args, 1, 0, result,
false);
3231 return this->
Multiply(rightNumber);
3251 bool alternativeResult = right->
messageSend(OREF_DIVIDE_RIGHT, args, 1, 0, result,
false);
3276 bool alternativeResult = right->
messageSend(OREF_INTDIV_RIGHT, args, 1, 0, result,
false);
3302 bool alternativeResult = right->
messageSend(OREF_REMAINDER_RIGHT, args, 1, 0, result,
false);
3356 size_t named_argCount)
3361 return this->
maxMin(args, argCount, named_argCount,
OT_MAX);
3367 size_t named_argCount)
3372 return this->
maxMin(args, argCount, named_argCount,
OT_MIN);
3407 while ((InPtr >= this->
number) && carry)
3437 return this->
d2xD2c(_length,
false);
3447 return this->
d2xD2c(_length,
true);
3482 size_t CurrentDigits;
3483 size_t TargetLength;
3491 TargetLength = this->
length;
3493 if (this->
exp + this->
length > CurrentDigits)
3505 else if (this->
exp < 0)
3509 HexLength = -this->
exp;
3511 HighDigit = this->
number + CurrentDigits;
3513 while (HexLength -- && TempPtr <= HighDigit)
3518 if (TargetLength > CurrentDigits)
3521 if (TempPtr == HighDigit && *TempPtr < 5)
3539 TargetLength = this->
length + this->
exp;
3552 else if (
type ==
true)
3554 if (ResultSize * 2 < CurrentDigits)
3566 if (ResultSize < CurrentDigits)
3580 HighDigit = Accumulator - 1;
3583 while (TargetLength--)
3587 if (TargetLength != 0)
3597 TargetLength = this->
exp;
3598 while (TargetLength--)
3602 if (TargetLength != 0)
3609 HexLength = Accumulator - HighDigit;
3621 while (Scan > HighDigit)
3624 *Scan = (char)(*Scan ^ (
unsigned)0x0f);
3634 while (Scan > HighDigit)
3639 Scan = HighDigit + 1;
3645 ResultSize = HexLength;
3652 ResultSize = HexLength;
3656 ResultSize += ResultSize;
3659 if (ResultSize < HexLength)
3662 Scan += HexLength - ResultSize;
3663 HexLength = ResultSize;
3667 PadSize = ResultSize - HexLength;
3672 memset(Scan, PadChar, PadSize);
3735 void *RexxNumberString::operator
new(
size_t size,
size_t length)
3819 else if (
number == +HUGE_VAL)
3823 else if (
number == -HUGE_VAL)
3835 snprintf(doubleStr,
sizeof doubleStr,
"%.*g", (
int)(precision + 2),
number);
3836 resultLen = strlen(doubleStr);
3840 result->
format(doubleStr, resultLen);
void reportCondition(RexxString *condition, RexxString *description)
void reportException(wholenumber_t error)
RexxBuffer * new_buffer(size_t s)
RexxInteger * new_integer(wholenumber_t v)
bool numberStringScan(const char *number, size_t length)
void fill_digits(char *outPtr, const char *number, size_t count)
#define SetNumberStringZero()
#define NumFormScientific
size_t number_fuzzydigits()
RexxObject *(RexxObject::* PCPPM)()
size_t optionalNonNegative(RexxObject *o, size_t d, RexxString *kind, size_t p)
size_t optionalLengthArgument(RexxObject *o, size_t d, size_t p)
void requiredArgument(RexxObject *object, RexxString *kind, size_t position)
#define Error_Logical_value_method
#define Error_Incorrect_method_d2x
#define Error_No_result_object_message
#define Error_Incorrect_method_exponent_oversize
#define Error_Overflow_expoverflow
#define Error_Incorrect_method_d2c
#define Error_Incorrect_method_d2xd2c
#define Error_Overflow_expunderflow
#define Error_Conversion_operator
#define Error_Incorrect_method_before_oversize
#define memory_mark(oref)
RexxObject * new_object(size_t s)
#define flatten_reference(oref, envel)
#define CLASS_CREATE(name, id, className)
#define memory_mark_general(oref)
#define setUpFlatten(type)
RexxString * raw_string(stringsize_t l)
RexxString * new_string(const char *s, stringsize_t l)
char IntToHexDigit(int n)
ssize_t integer(RexxObject *obj, const char *errorMessage)
size_t RexxEntry BufferLength(RexxThreadContext *c, RexxBufferObject b)
static const wholenumber_t MIN_EXPONENT
static size_t formatStringSize(stringsize_t integer, char *dest)
static const size_t DIGITS64
static wholenumber_t abs(wholenumber_t n)
static const wholenumber_t MAX_EXPONENT
static wholenumber_t maxValueForDigits(size_t d)
static wholenumber_t minVal(wholenumber_t n1, wholenumber_t n2)
static const bool FORM_SCIENTIFIC
static const bool FORM_ENGINEERING
static size_t normalizeWholeNumber(wholenumber_t integer, char *dest)
static const size_t ARGUMENT_DIGITS
static size_t formatWholeNumber(wholenumber_t integer, char *dest)
static const size_t DEFAULT_DIGITS
void traceIntermediate(RexxObject *v, int p)
void push(RexxObject *value)
bool isSubClassOrEnhanced()
void setHasNoReferences()
RexxString * stringObject
void formatUnsignedInt64(uint64_t integer)
RexxInteger * strictGreaterThan(RexxObject *)
wholenumber_t comp(RexxObject *, RexxString *alternativeOperator=OREF_NULL, RexxInteger **alternativeOperatorResultPtr=NULL)
static RexxNumberString * newInstanceFromFloat(float)
RexxObject * xorOp(RexxObject *)
RexxInteger * isLessThan(RexxObject *)
void formatUnsignedNumber(size_t)
RexxInteger * strictEqual(RexxObject *)
void flatten(RexxEnvelope *)
RexxObject * truncInternal(size_t)
static RexxNumberString * newInstance(const char *, stringsize_t)
RexxNumberString * prepareNumber(size_t, bool)
RexxInteger * strictLessThan(RexxObject *)
RexxInteger * isGreaterThan(RexxObject *)
bool createUnsignedInt64Value(const char *thisnum, stringsize_t intlength, int carry, wholenumber_t exponent, uint64_t maxValue, uint64_t &result)
static RexxNumberString * newInstanceFromDouble(double)
bool createUnsignedValue(const char *thisnum, stringsize_t intlength, int carry, wholenumber_t exponent, uwholenumber_t maxValue, uwholenumber_t &result)
RexxString * concatBlank(RexxObject *)
RexxString * makeString()
RexxNumberString * multiply(RexxObject *)
RexxObject * roundInternal()
RexxObject * getRealValue(RexxActivation *)
RexxNumberString * minus(RexxObject *)
RexxString * primitiveMakeString()
RexxNumberString * Max(RexxObject **, size_t, size_t)
void formatNumber(wholenumber_t)
RexxObject * floorInternal()
bool int64Value(int64_t *result, stringsize_t numDigits)
void liveGeneral(int reason)
bool unsignedNumberValue(uwholenumber_t &result, size_t precision)
static void createInstance()
static RexxNumberString * newInstanceFromUint64(uint64_t)
RexxString * stringValue()
RexxString * formatRexx(RexxObject *, RexxObject *, RexxObject *, RexxObject *)
RexxObject * ceilingInternal()
bool unsignedInt64Value(uint64_t *result, stringsize_t numDigits)
RexxInteger * hasMethod(RexxString *)
RexxObject * evaluate(RexxActivation *, RexxExpressionStack *)
RexxInteger * integerValue(size_t)
bool checkIntegerDigits(stringsize_t numDigits, stringsize_t &numberLength, wholenumber_t &numberExponent, bool &carry)
RexxClass * classObject()
static char * multiplyBaseSixteen(char *, char *)
wholenumber_t strictComp(RexxObject *)
static RexxClass * classInstance
RexxNumberString * Min(RexxObject **, size_t, size_t)
RexxString * d2xD2c(RexxObject *, bool)
RexxNumberString * Division(RexxNumberString *, unsigned int)
void formatInt64(int64_t integer)
void setString(RexxString *)
RexxNumberString * clone()
RexxString * d2c(RexxObject *)
RexxInteger * strictLessOrEqual(RexxObject *)
RexxMethod * instanceMethod(RexxString *)
RexxObject * andOp(RexxObject *)
RexxNumberString * integerDivide(RexxObject *)
static RexxNumberString * newInstanceFromStringsize(stringsize_t)
RexxString * concat(RexxObject *)
RexxObject * getValue(RexxActivation *context)
RexxObject * orOp(RexxObject *)
RexxNumberString * Multiply(RexxNumberString *)
RexxNumberString * maxMin(RexxObject **, size_t, size_t, unsigned int)
RexxObject * unknown(RexxString *, RexxArray *, RexxDirectory *)
bool numberValue(wholenumber_t &result, size_t precision)
RexxObject * trunc(RexxObject *)
RexxInteger * strictNotEqual(RexxObject *)
static PCPPM operatorMethods[]
bool isInstanceOf(RexxClass *)
RexxNumberString * power(RexxObject *)
RexxNumberString * remainder(RexxObject *)
RexxInteger * strictGreaterOrEqual(RexxObject *)
virtual HashCode getHashValue()
RexxNumberString * prepareOperatorNumber(size_t, size_t, bool)
static RexxNumberString * newInstanceFromWholenumber(wholenumber_t)
RexxInteger * equal(RexxObject *)
RexxInteger * isGreaterOrEqual(RexxObject *)
RexxString * d2x(RexxObject *)
virtual wholenumber_t compareTo(RexxObject *)
bool isEqual(RexxObject *)
int format(const char *, size_t)
RexxInteger * isLessOrEqual(RexxObject *)
RexxObject * operatorNot(RexxObject *)
virtual bool logicalValue(logical_t &)
static RexxNumberString * newInstanceFromInt64(int64_t)
static char * addToBaseSixteen(int, char *, char *)
RexxNumberString * plus(RexxObject *)
RexxNumberString * divide(RexxObject *)
RexxString * formatInternal(size_t, size_t, size_t, size_t, RexxNumberString *, size_t, bool)
RexxSupplier * instanceMethods(RexxClass *)
bool doubleValue(double &result)
RexxInteger * notEqual(RexxObject *)
RexxNumberString * addSub(RexxNumberString *, unsigned int, size_t)
RexxNumberString * numberString()
virtual RexxInteger * hasMethod(RexxString *msg)
RexxSupplier * instanceMethods(RexxClass *)
void sendMessage(RexxString *, RexxArray *, RexxDirectory *, ProtectedObject &)
RexxMethod * instanceMethod(RexxString *)
bool messageSend(RexxString *, RexxObject **, size_t, size_t, ProtectedObject &, bool processUnknown=true, bool dynamicTarget=true)
bool isInstanceOf(RexxClass *)
RexxString * concatRexx(RexxObject *)
RexxObject * xorOp(RexxObject *)
const char * getStringData()
void setNumberString(RexxObject *)
RexxString * concatBlank(RexxObject *)
void set(size_t s, int c, size_t l)
RexxObject * andOp(RexxObject *)
bool isEqual(RexxObject *)
wholenumber_t comp(RexxObject *, RexxString *alternativeOperator=OREF_NULL, RexxInteger **alternativeOperatorResultPtr=NULL)
virtual HashCode getHashValue()
char putChar(size_t p, char c)
wholenumber_t compareTo(RexxObject *)
RexxObject * orOp(RexxObject *)
void put(size_t s, const void *b, size_t l)
wholenumber_t strictComp(RexxObject *, RexxString *alternativeOperator=NULL, RexxInteger **alternativeOperatorResultPtr=NULL)
static RexxString * packHex(const char *String, size_t StringLength)
unsigned __int64 uint64_t