// 3 june 2018 #include "../ui.h" #include "uipriv.h" struct uiTableData { uiTableDataType type; union { char *str; uiImage *img; int i; struct { double r; double g; double b; double a; } color; } u; }; static uiTableData *newTableData(uiTableData type) { uiTableData *d; d = uiprivNew(uiTableData); d->type = type; return d; } void uiFreeAttribute(uiTableData *a) { switch (d->type) { case uiTableDataTypeString: uiprivFree(d->u.str); break; } uiprivFree(d); } uiTableDataType uiTableDataGetType(const uiTableData *d) { return d->type; } uiTableData *uiNewTableDataString(const char *str) { uiTableData *d; d = newTableData(uiTableDataTypeString); d->u.str = (char *) uiprivAlloc((strlen(str) + 1) * sizeof (char), "char[] (uiTableData)"); strcpy(d->u.str, str); return d; } const char *uiTableDataString(const uiTableData *d) { return d->u.str; } uiTableData *uiNewTableDataImage(uiImage *img) { uiTableData *d; d = newTableData(uiTableDataTypeImage); d->u.img = img; return d; } uiImage *uiTableDataImage(const uiTableData *d) { return d->u.img; } uiTableData *uiNewTableDataInt(int i) { uiTableData *d; d = newTableData(uiTableDataTypeInt); d->u.i = i; return d; } int uiTableDataInt(const uiTableData *d) { return d->u.i; } uiTableData *uiNewTableDataColor(double r, double g, double b, double a) { uiTableData *d; d = newTableData(uiTableDataTypeColor); d->u.color.r = r; d->u.color.g = g; d->u.color.b = b; d->u.color.a = a; return d; } void uiTableDataColor(const uiTableData *d, double *r, double *g, double *b, double *a) { *r = d->u.color.r; *g = d->u.color.g; *b = d->u.color.b; *a = d->u.color.a; }