#include "string.h"
#include "error.h"
#include "format.h"
+
enum alignment {ALIGN_LEFT, ALIGN_RIGHT, ALIGN_CENTER};
struct num_format {
return 1;
}
+/**
+ * Parse the given string according to the list of given atoms.
+ *
+ * \param fmt The format string.
+ * \param atoms The array of valid atoms.
+ * \param result Points to a format_info structure for later use.
+ *
+ * \return Standard.
+ */
int parse_format_string(char *fmt, struct atom *atoms, struct format_info **result)
{
char *cp, *ap, *ep;
}
free(info->items);
free(info);
+ *result = NULL;
return ret;
}
+/**
+ * Free a struct of type \a format_info.
+ *
+ * \param info Pointer to the format info to be freed.
+ *
+ * It's OK to pass a \p NULL pointer to this function in which case the
+ * function does nothing.
+ */
void free_format_info(struct format_info *info)
{
int i;
struct format_item *item;
+ if (!info)
+ return;
+
for (i = 0; (item = info->items[i]); i++) {
if (!item->atom_ptr)
free(item->af.cs.string);
nnum, postfix, width - (width + len) / 2, "");
}
+/**
+ * Pretty-format the given values according to \a info.
+ *
+ * \param info The formating information.
+ * \param values The contents of the atoms.
+ *
+ * \return A string that must be freed by the caller.
+ */
char *format_items(struct format_info *info, union atom_value *values)
{
int i;
char *buf = NULL;
+ if (!info)
+ return NULL;
for (i = 0; info->items[i]; i++) {
struct atom *a;
struct format_item *fi = info->items[i];
fi->width, &af->nf, type);
}
buf = adu_strcat(buf, val);
+ free(val);
}
return buf;
}