view th_printf1.c @ 432:1b3472ba7b23

Bump copyrights.
author Matti Hamalainen <ccr@tnsp.org>
date Sun, 01 Jan 2017 01:59:49 +0200
parents 4b1b2e9d073f
children db45d6d2e576
line wrap: on
line source

/*
 * A printf() implementation helper function template
 * Programmed and designed by Matti 'ccr' Hamalainen
 * (C) Copyright 2016-2017 Tecnic Software productions (TNSP)
 *
 * Please read file 'COPYING' for information on license and distribution.
 */

static int TH_PFUNC_NAME (char *buf, const int len, int *pos,
    TH_PFUNC_TYPE_S pval, const int f_radix, const BOOL f_upcase,
    const BOOL f_unsig, BOOL *f_neg)
{
    if (f_radix > 16)
        return EOF;

    // Check for negative value
    if (!f_unsig && pval < 0)
    {
        *f_neg = TRUE;
        pval = -pval;
    }
    else
        *f_neg = FALSE;

    // Render the value to a string in buf (reversed)
    TH_PFUNC_TYPE_U val = pval;

    // Special case for value of 0
    if (val == 0)
        return 0;

    *pos = 0;
    do
    {
        TH_PFUNC_TYPE_U digit = val % f_radix;
        if (digit < 10)
            buf[*pos] = '0' + digit;
        else
            buf[*pos] = (f_upcase ? 'A' : 'a') + digit - 10;
        val /= f_radix;
        (*pos)++;
    }
    while (val > 0 && *pos < len - 1);
    buf[*pos] = 0;

    return (val > 0) ? EOF : 1;
}


#undef TH_PFUNC_NAME
#undef TH_PFUNC_SIGNED
#undef TH_PFUNC_TYPE_S
#undef TH_PFUNC_TYPE_U