/* * getbase - get an integer in any base. */ void getbase(int64_t b) { register int64_t i0, i1, i2; register int64_t i, j; int k; i = 0; i0 = 0; i1 = 0; while(isalnum(lastch)) { if((j = radix36(lastch)) < b) { i = i * b + j; i2 = i0; for (k = 0; k < b; k++) { i0 = i0 + i2; if (i0 & 0x1000000000000000LL) { i0 = i0 - 0x1000000000000000LL; i1 = i1 + 1; } } i0 = i0 + j; if (i0 & 0x1000000000000000LL) { i0 = i0 - 0x1000000000000000LL; i1 = i1 + 1; } getch(); } else break; } if (lastch=='L' || lastch=='U') // ignore a 'L'ong suffix and 'U'nsigned getch(); ival = i; /* rval.exp = 0x804E; rval.man1 = (i1 >> 32) & 0xffffL; rval.man2 = (i1 >> 16) & 0xffffL; rval.man3 = i1 & 0xffffL; rval.man4 = (i0 >> 16) & 0ffffL; rval.man5 = i0 & 0xffffL; // normalize the number while (!(rval.man1 & 0x8000)) { rval.exp--; rval.man1 = (rval.man1 << 1) | (rval.man2 & 0x8000) ? 1 : 0; rval.man2 = (rval.man2 << 1) | (rval.man3 & 0x8000) ? 1 : 0; rval.man3 = (rval.man3 << 1) | (rval.man4 & 0x8000) ? 1 : 0; rval.man4 = (rval.man4 << 1) | (rval.man5 & 0x8000) ? 1 : 0; rval.man5 = (rval.man5 << 1); } */ lastst = iconst; }
/* * getbase - get an integer in any base. */ void getbase(int b) { register __int32 i, j; i = 0; while(isalnum(lastch)) { if((j = radix36(lastch)) < b) { i = i * b + j; getch(); } else break; } if (lastch=='L') // ignore a 'L'ong suffix getch(); ival = i; lastst = iconst; }
/* * getbase - get an integer in any base. */ void getbase(int b, char **ptr) { register long i, j; int errd = 0; i = 0; while (isalnum(**ptr)) { if ((j = radix36(*(*ptr)++)) < b) { if (i > (ULONG_MAX - j) / b) if (!errd) { generror(ERR_CONSTTOOLARGE, 0); errd++; } i = i * b + j; } else break; } ival = i; lastst = iconst; }