#define AUTOTYPE_TEST_(AUTOSTR, AUTOCH, AUTORANGE, AUTOTYPE) { \ \ /* AUTORANGE */ \ if (!AUTORANGE##_INVALIDATED && range_##AUTORANGE(AUTOCH)) { \ if ((AUTOSTR).type == STR_TYPE_EMPTY) { \ STR_TYPE_REMOVE_TYPE((AUTOSTR), STR_TYPE_EMPTY) \ } \ STR_TYPE_ADD_TYPE((AUTOSTR), STR_TYPE_##AUTOTYPE) \ } \ else { \ if ((AUTOSTR).type != STR_TYPE_EMPTY) { \ AUTORANGE##_INVALIDATED = true; \ } \ STR_TYPE_REMOVE_TYPE((AUTOSTR), STR_TYPE_##AUTOTYPE) \ } \ }