librtti/src/str.c

30 lines
536 B
C

#include <errno.h>
#include <stdlib.h>
#include "rtti.h"
char* toString(var v, ...)
{
meta_obj_t* obj = NULL;
to_string_fn_t method = NULL;
va_list ap;
char* s = NULL;
obj = RTTI_DATA_TO_OBJ(v);
if (RTTI_OBJ_INVALID(obj)) {
errno = EINVAL;
return NULL;
}
RTTI_GET_METHOD(method, obj, toString, toString);
if (method == NULL) {
errno = EINVAL;
return NULL;
}
va_start(ap, v);
s = method(obj, ap);
va_end(ap);
return s;
}