Lines Matching +full:max +full:- +full:by +full:- +full:define
3 * This code is based on code written by Patrick Powell (papowell@astart.com)
35 * original. Also, there is now a builtin-test, just compile with:
36 * gcc -DTEST_SNPRINTF -o snprintf snprintf.c -lm
56 * date: 2002/12/19 19:56:31; author: herb; state: Exp; lines: +2 -0
59 * date: 2002/06/03 13:37:52; author: jmcd; state: Exp; lines: +8 -0
64 * date: 2002/06/03 03:07:24; author: tridge; state: Exp; lines: +5 -13
68 * date: 2002/05/17 14:51:22; author: jmcd; state: Exp; lines: +21 -4
72 * date: 2002/04/16 22:38:04; author: idra; state: Exp; lines: +20 -14
74 * Thanks to Ollie Oldham <ollie.oldham@metro-optix.com> for spotting it.
91 * Make formatting quite a bit faster by inlining dopr_outch()
112 # define LDOUBLE long double
114 # define LDOUBLE double
118 # define LLONG long long
120 # define LLONG long
128 #define DP_S_DEFAULT 0
129 #define DP_S_FLAGS 1
130 #define DP_S_MIN 2
131 #define DP_S_DOT 3
132 #define DP_S_MAX 4
133 #define DP_S_MOD 5
134 #define DP_S_CONV 6
135 #define DP_S_DONE 7
137 /* format flags - Bits */
138 #define DP_F_MINUS (1 << 0)
139 #define DP_F_PLUS (1 << 1)
140 #define DP_F_SPACE (1 << 2)
141 #define DP_F_NUM (1 << 3)
142 #define DP_F_ZERO (1 << 4)
143 #define DP_F_UP (1 << 5)
144 #define DP_F_UNSIGNED (1 << 6)
147 #define DP_C_SHORT 1
148 #define DP_C_LONG 2
149 #define DP_C_LDOUBLE 3
150 #define DP_C_LLONG 4
151 #define DP_C_SIZE 5
152 #define DP_C_INTMAX 6
154 #define char_to_int(p) ((p)- '0')
155 #ifndef MAX
156 # define MAX(p,q) (((p) >= (q)) ? (p) : (q)) macro
159 #define DOPR_OUTCH(buf, pos, buflen, thechar) \
163 return -1; \
173 char *value, int flags, int min, int max);
175 intmax_t value, int base, int min, int max, int flags);
177 LDOUBLE fvalue, int min, int max, int flags);
187 int max; in dopr() local
198 max = -1; in dopr()
215 case '-': in dopr()
262 if (max < 0) in dopr()
263 max = 0; in dopr()
264 max = 10*max + char_to_int (ch); in dopr()
267 max = va_arg (args, int); in dopr()
322 value, 10, min, max, flags) == -1) in dopr()
342 8, min, max, flags) == -1) in dopr()
362 10, min, max, flags) == -1) in dopr()
384 16, min, max, flags) == -1) in dopr()
393 min, max, flags) == -1) in dopr()
404 min, max, flags) == -1) in dopr()
415 min, max, flags) == -1) in dopr()
425 if (max == -1) { in dopr()
426 max = strlen(strvalue); in dopr()
428 if (min > 0 && max >= 0 && min > max) max = min; in dopr()
430 strvalue, flags, min, max) == -1) in dopr()
436 (long) strvalue, 16, min, max, flags) == -1) in dopr()
482 max = -1; in dopr()
492 if (currlen < maxlen - 1) in dopr()
495 buffer[maxlen - 1] = '\0'; in dopr()
498 return currlen < INT_MAX ? (int)currlen : -1; in dopr()
501 return -1; in dopr()
506 char *value, int flags, int min, int max) in fmtstr() argument
512 printf("fmtstr min=%d max=%d s=[%s]\n", min, max, value); in fmtstr()
518 for (strln = 0; strln < max && value[strln]; ++strln); /* strlen */ in fmtstr()
519 padlen = min - strln; in fmtstr()
523 padlen = -padlen; /* Left Justify */ in fmtstr()
525 while ((padlen > 0) && (cnt < max)) { in fmtstr()
527 --padlen; in fmtstr()
530 while (*value && (cnt < max)) { in fmtstr()
535 while ((padlen < 0) && (cnt < max)) { in fmtstr()
547 intmax_t value, int base, int min, int max, int flags) in fmtint() argument
557 if (max < 0) in fmtint()
558 max = 0; in fmtint()
564 signvalue = '-'; in fmtint()
565 uvalue = -value; in fmtint()
582 if (place == 20) place--; in fmtint()
585 zpadlen = max - place; in fmtint()
586 spadlen = min - MAX (max, place) - (signvalue ? 1 : 0); in fmtint()
590 zpadlen = MAX(zpadlen, spadlen); in fmtint()
594 spadlen = -spadlen; /* Left Justifty */ in fmtint()
597 printf("zpad: %d, spad: %d, min: %d, max: %d, place: %d\n", in fmtint()
598 zpadlen, spadlen, min, max, place); in fmtint()
604 --spadlen; in fmtint()
615 --zpadlen; in fmtint()
621 --place; in fmtint()
638 result = -value; in abs_val()
649 val--; in POW10()
660 value = value - intpart; in ROUND()
677 if (l <= (x+1) && l >= (x-1)) break; in my_modf()
695 ret = my_modf(x0-l*f, &i2); in my_modf()
701 return x - (*iptr); in my_modf()
707 LDOUBLE fvalue, int min, int max, int flags) in fmtfp() argument
729 if (max < 0) in fmtfp()
730 max = 6; in fmtfp()
735 signvalue = '-'; in fmtfp()
750 if (max == 0) ufvalue += 0.5; /* if max = 0 we must round */ in fmtfp()
757 if (max > 16) in fmtfp()
758 max = 16; in fmtfp()
760 /* We "cheat" by converting the fractional part to integer by in fmtfp()
761 * multiplying by a factor of 10 in fmtfp()
767 fracpart = ROUND((POW10(max)) * (ufvalue - intpart)); in fmtfp()
769 if (fracpart >= POW10(max)) { in fmtfp()
771 fracpart -= POW10(max); in fmtfp()
778 idx = (int) ((temp -intpart +0.05)* 10.0); in fmtfp()
779 /* idx = (int) (((double)(temp*0.1) -intpart +0.05) *10.0); */ in fmtfp()
783 if (iplace == 311) iplace--; in fmtfp()
792 idx = (int) ((temp -fracpart +0.05)* 10.0); in fmtfp()
793 /* idx = (int) ((((temp/10) -fracpart) +0.05) *10); */ in fmtfp()
797 if (fplace == 311) fplace--; in fmtfp()
801 /* -1 for decimal point, another -1 if we are printing a sign */ in fmtfp()
802 padlen = min - iplace - max - 1 - ((signvalue) ? 1 : 0); in fmtfp()
803 zpadlen = max - fplace; in fmtfp()
808 padlen = -padlen; /* Left Justifty */ in fmtfp()
813 --padlen; in fmtfp()
818 --padlen; in fmtfp()
823 --padlen; in fmtfp()
829 --iplace; in fmtfp()
841 if (max > 0) { in fmtfp()
846 --zpadlen; in fmtfp()
850 --fplace; in fmtfp()