PosibErr<const char *> operator() (ParmStr str) { if (conv) { buf.clear(); RET_ON_ERR(conv->convert_ec(str, -1, buf, buf0, str)); return buf.mstr(); } else { return str.str(); } }
PosibErr<char *> operator() (char * str, size_t sz) { if (conv) { buf.clear(); RET_ON_ERR(conv->convert_ec(str, sz, buf, buf0, str)); return buf.mstr(); } else { return str; } }
const char * operator() (ParmStr str) { if (conv) { buf.clear(); conv->convert(str, -1, buf, buf0); return buf.mstr(); } else { return str; } }
const char * operator() (const char * str, size_t sz) { if (conv) { buf.clear(); conv->convert(str, sz, buf, buf0); return buf.str(); } else { return str; } }
char * operator() (char c) { buf.clear(); if (conv) { char str[2] = {c, 0}; conv->convert(str, 1, buf, buf0); } else { buf.append(c); } return buf.mstr(); }