#ifndef SUBST_H
#define SUBST_H

struct subst_val {
    char id;         /* if id=='X', %X will be substituted */
    enum {
        INT     ='i', /* val => signed int */
        UINT    ='u', /* val => unsigned int */
        OCTAL   ='o', /* val => unsigned int */
        HEX     ='x', /* val => unsigned int */
        FLOAT_E ='e', /* val => double */
        FLOAT_F ='f', /* val => double */
        FLOAT_G ='g', /* val => double */
        FLOAT_A ='a', /* val => double */
        CHAR    ='c', /* val => char */
        STRING  ='s'  /* val => char * */
    } type;
    void *val;
};

char *subst(const char *s, struct subst_val *substitutes);

#endif