Lines Matching +full:- +full:a
19 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
30 /* $Id: stdio_private.h 847 2005-09-06 18:49:15Z joerg_wunsch $ */
49 #include <stdio-bufio.h>
96 * non-const as in the generic case, this buffer is obtained
100 * a chance to get write access to it again.
138 #define _FDEV_BUFIO_FD(bf) ((int)((intptr_t) (bf)->ptr))
143 * callbacks (one with an int and the other with a pointer), they are
156 if (!(bf->bflags & __BFPTR)) in bufio_read()
157 return (bf->read_int)(_FDEV_BUFIO_FD(bf), buf, count); in bufio_read()
159 return (bf->read_ptr)((void *) bf->ptr, buf, count); in bufio_read()
165 if (!(bf->bflags & __BFPTR)) in bufio_write()
166 return (bf->write_int)(_FDEV_BUFIO_FD(bf), buf, count); in bufio_write()
168 return (bf->write_ptr)((void *) bf->ptr, buf, count); in bufio_write()
174 if (!(bf->bflags & __BFPTR)) { in bufio_lseek()
175 if (bf->lseek_int) in bufio_lseek()
176 return (bf->lseek_int)(_FDEV_BUFIO_FD(bf), offset, whence); in bufio_lseek()
180 if (bf->lseek_ptr) in bufio_lseek()
181 return (bf->lseek_ptr)((void *) bf->ptr, offset, whence); in bufio_lseek()
190 if (!(bf->bflags & __BFPTR)) { in bufio_close()
191 if (bf->close_int) in bufio_close()
192 ret = (bf->close_int)(_FDEV_BUFIO_FD(bf)); in bufio_close()
196 if (bf->close_ptr) in bufio_close()
197 ret = (bf->close_ptr)((void *) bf->ptr); in bufio_close()
279 #define _u128_to_ld(a) ((long double) (a)) argument
280 #define _u128_is_zero(a) ((a) == 0) argument
281 #define _i128_lt_zero(a) ((_i128) (a) < 0) argument
282 #define _u128_plus_64(a,b) ((a) + (b)) argument
283 #define _u128_plus(a,b) ((a) + (b)) argument
284 #define _u128_minus(a,b) ((a) - (b)) argument
285 #define _u128_minus_64(a,b) ((a) - (b)) argument
286 #define _u128_times_10(a) ((a) * 10) argument
287 #define _u128_times_base(a,b) ((a) * (b)) argument
288 #define _u128_to_ld(a) ((long double) (a)) argument
289 #define _u128_oflow(a) ((a) >= (((((_u128) 0xffffffffffffffffULL) << 64) | 0xffffffffffffffffULL) -… argument
291 #define _u128_lshift(a,b) ((_u128) (a) << (b)) argument
292 #define _u128_lshift_64(a,b) ((_u128) (a) << (b)) argument
293 #define _u128_rshift(a,b) ((a) >> (b)) argument
294 #define _i128_rshift(a,b) ((_i128) (a) >> (b)) argument
295 #define _u128_or_64(a,b) ((a) | (_u128) (b)) argument
296 #define _u128_and_64(a,b) ((uint64_t) (a) & (b)) argument
297 #define _u128_or(a,b) ((a) | (b)) argument
298 #define _u128_and(a,b) ((a) & (b)) argument
299 #define _u128_eq(a,b) ((a) == (b)) argument
300 #define _u128_ge(a,b) ((a) >= (b)) argument
301 #define _i128_ge(a,b) ((_i128)(a) >= (_i128)(b)) argument
302 #define _u128_lt(a,b) ((a) < (b)) argument
303 #define _i128_lt(a,b) ((_i128)(a) < (_i128)(b)) argument
304 #define _u128_not(a) (~(a)) argument
317 _u128 a = { .hi = 0, .lo = x }; in to_u128() local
318 return a; in to_u128()
321 static inline uint64_t from_u128(_u128 a) in from_u128() argument
323 return a.lo; in from_u128()
327 _u128_to_ld(_u128 a) in _u128_to_ld() argument
329 …return (long double) a.hi * ((long double) (1LL << 32) * (long double) (1LL << 32)) + (long double… in _u128_to_ld()
333 _u128_is_zero(_u128 a) in _u128_is_zero() argument
335 return a.hi == 0 && a.lo == 0; in _u128_is_zero()
339 _i128_lt_zero(_u128 a) in _i128_lt_zero() argument
341 return (int64_t) a.hi < 0; in _i128_lt_zero()
345 _u128_eq(_u128 a, _u128 b) in _u128_eq() argument
347 return (a.hi == b.hi) && (a.lo == b.lo); in _u128_eq()
351 _u128_lt(_u128 a, _u128 b) in _u128_lt() argument
353 if (a.hi == b.hi) in _u128_lt()
354 return a.lo < b.lo; in _u128_lt()
355 return a.hi < b.hi; in _u128_lt()
359 _i128_lt(_u128 a, _u128 b) in _i128_lt() argument
361 if (a.hi == b.hi) { in _i128_lt()
362 if ((int64_t) a.hi < 0) in _i128_lt()
363 return a.lo > b.lo; in _i128_lt()
365 return a.lo < b.lo; in _i128_lt()
367 return (int64_t) a.hi < (int64_t) b.hi; in _i128_lt()
371 _u128_ge(_u128 a, _u128 b) in _u128_ge() argument
373 if (a.hi == b.hi) in _u128_ge()
374 return a.lo >= b.lo; in _u128_ge()
375 return a.hi >= b.hi; in _u128_ge()
379 _i128_ge(_u128 a, _u128 b) in _i128_ge() argument
381 if (a.hi == b.hi) { in _i128_ge()
382 if ((int64_t) a.hi < 0) in _i128_ge()
383 return a.lo <= b.lo; in _i128_ge()
385 return a.lo >= b.lo; in _i128_ge()
387 return (int64_t) a.hi >= (int64_t) b.hi; in _i128_ge()
391 _u128_plus_64(_u128 a, uint64_t b) in _u128_plus_64() argument
395 v.lo = a.lo + b; in _u128_plus_64()
396 v.hi = a.hi; in _u128_plus_64()
397 if (v.lo < a.lo) in _u128_plus_64()
403 _u128_plus(_u128 a, _u128 b) in _u128_plus() argument
407 v.lo = a.lo + b.lo; in _u128_plus()
408 v.hi = a.hi + b.hi; in _u128_plus()
409 if (v.lo < a.lo) in _u128_plus()
415 _u128_minus_64(_u128 a, uint64_t b) in _u128_minus_64() argument
419 v.lo = a.lo - b; in _u128_minus_64()
420 v.hi = a.hi; in _u128_minus_64()
421 if (v.lo > a.lo) in _u128_minus_64()
422 v.hi--; in _u128_minus_64()
427 _u128_minus(_u128 a, _u128 b) in _u128_minus() argument
431 v.lo = a.lo - b.lo; in _u128_minus()
432 v.hi = a.hi - b.hi; in _u128_minus()
433 if (v.lo > a.lo) in _u128_minus()
434 v.hi--; in _u128_minus()
439 _u128_lshift(_u128 a, int amt) in _u128_lshift() argument
444 v = a; in _u128_lshift()
446 v.lo = a.lo << amt; in _u128_lshift()
447 v.hi = (a.lo >> (64 - amt)) | (a.hi << amt); in _u128_lshift()
450 v.hi = a.lo << (amt - 64); in _u128_lshift()
456 _u128_lshift_64(uint64_t a, int amt) in _u128_lshift_64() argument
461 v.lo = a; in _u128_lshift_64()
464 v.lo = a << amt; in _u128_lshift_64()
465 v.hi = (a >> (64 - amt)); in _u128_lshift_64()
468 v.hi = a << (amt - 64); in _u128_lshift_64()
474 _u128_rshift(_u128 a, int amt) in _u128_rshift() argument
479 v = a; in _u128_rshift()
481 v.lo = (a.hi << (64 - amt)) | (a.lo >> amt); in _u128_rshift()
482 v.hi = a.hi >> amt; in _u128_rshift()
485 v.lo = a.hi >> (amt - 64); in _u128_rshift()
491 _u128_and(_u128 a, _u128 b) in _u128_and() argument
495 v.hi = a.hi & b.hi; in _u128_and()
496 v.lo = a.lo & b.lo; in _u128_and()
501 _u128_and_64(_u128 a, uint64_t b) in _u128_and_64() argument
503 return a.lo & b; in _u128_and_64()
507 _u128_or(_u128 a, _u128 b) in _u128_or() argument
511 v.lo = a.lo | b.lo; in _u128_or()
512 v.hi = a.hi | b.hi; in _u128_or()
517 _u128_or_64(_u128 a, uint64_t b) in _u128_or_64() argument
521 v.lo = a.lo | b; in _u128_or_64()
522 v.hi = a.hi; in _u128_or_64()
527 _u128_not(_u128 a) in _u128_not() argument
531 v.lo = ~a.lo; in _u128_not()
532 v.hi = ~a.hi; in _u128_not()
537 _u128_times_10(_u128 a) in _u128_times_10() argument
539 return _u128_plus(_u128_lshift(a, 3), _u128_lshift(a, 1)); in _u128_times_10()
543 _u128_times_base(_u128 a, int base) in _u128_times_base() argument
546 return _u128_times_10(a); in _u128_times_base()
547 return _u128_lshift(a, 4); in _u128_times_base()
551 _u128_oflow(_u128 a) in _u128_oflow() argument
553 return a.hi >= (0xffffffffffffffffULL - 9) / 10; in _u128_oflow()
570 i = _u128_rshift(i, (16 - __SIZEOF_LONG_DOUBLE__) * 8); in asuintld()
584 i = _u128_lshift(i, (16 - __SIZEOF_LONG_DOUBLE__) * 8); in aslongdouble()
640 _u128_gt(_u128 a, _u128 b) in _u128_gt() argument
642 return _u128_lt(b, a); in _u128_gt()
683 /* Use built-in atomic functions if they exist */
742 #define TOLOWER(c) ((c) | ('a' - 'A'))
745 * Convert a single character to the value of the digit for any
746 * character 0 .. 9, A .. Z or a .. z
748 * Characters out of these ranges will return a value above 36
762 * TOLOWER(c-1) maps characters as follows (Skipping values not in digit_to_val()
765 * Minus 1, bitwise-OR ('a' - 'A') (0x20): in digit_to_val()
767 * 0x3a..0x40 -> 0x39..0x3f in digit_to_val()
768 * 0x41..0x60, 0x61..0x80 -> 0x60..0x7f in digit_to_val()
769 * 0x81..0xa0, 0xa1..0xc0 -> 0xa0..0xbf in digit_to_val()
770 * 0xc1..0xe0, 0xe1..0x00 -> 0xe0..0xff in digit_to_val()
772 * Plus '0' (0x30), minus 'a') (0x61), plus 11 (0xb), for in digit_to_val()
773 * a total of minus 0x26: in digit_to_val()
775 * 0x3a..0x40 -> 0x39..0x3f -> 0x13..0x19 in digit_to_val()
776 * 0x41..0x60, 0x61..0x80 -> 0x60..0x7f -> 0x3a..0x59 in digit_to_val()
777 * 0x81..0xa0, 0xa1..0xc0 -> 0xa0..0xbf -> 0x7a..0x99 in digit_to_val()
778 * 0xc1..0xe0, 0xe1..0x00 -> 0xe0..0xff -> 0xba..0xd9 in digit_to_val()
784 * For the letters, we want TOLOWER(c) - 'a' + 10, but that in digit_to_val()
787 * To work around this, subtract 1 before the bitwise-or so in digit_to_val()
792 * 'a' and adding 10. in digit_to_val()
795 * code (c -= '0') below, avoiding an else clause. in digit_to_val()
798 c = TOLOWER(c-1) + ('0' - 'a' + 11); in digit_to_val()
806 * 0x00..0x2f ->-0x30..-0x01 in digit_to_val()
807 * 0x30..0x39 -> 0x00..0x09 * in digit_to_val()
808 * 0x3a..0x40 -> 0x39..0x3f -> 0x13..0x19 ->-0x1d..-0x17 in digit_to_val()
809 * 0x41..0x60, 0x61..0x80 -> 0x60..0x7f -> 0x3a..0x59 -> 0x0a..0x29 * in digit_to_val()
810 * 0x81..0xa0, 0xa1..0xc0 -> 0xa0..0xbf -> 0x7a..0x99 -> 0x4a..0x69 in digit_to_val()
811 * 0xc1..0xe0, 0xe1..0x00 -> 0xe0..0xff -> 0xba..0xd9 -> 0x8a..0xa9 in digit_to_val()
814 * starts with the letters 'A'..'Z' and 'a'..'z'. All of the other in digit_to_val()
818 c -= '0'; in digit_to_val()