Parsee/src/include/XMPPFormTool.h
LDA 61b248363d [ADD/WIP] Codenames, try to get codeblocks basics
Mostly focused on the LMDB support right now, sorry!
2024-08-10 09:52:11 +02:00

93 lines
2.7 KiB
C

#ifndef PARSEE_FORM_H
#define PARSEE_FORM_H
/*-*
* This is a szt of macros to handle XML forms. Aya does not yet support
* macros. TODO!
* --------
* Written-By: LDA */
#define Report(id, label) do \
{ \
field = XMLCreateTag("field"); \
XMLAddAttr(field, "var", id); \
XMLAddAttr(field, "label", label); \
XMLAddChild(reported, field); \
} \
while(0)
#define BeginItem() item = XMLCreateTag("item")
#define EndItem() XMLAddChild(x, item)
#define SetField(id, val) do \
{ \
field = XMLCreateTag("field"); \
value = XMLCreateTag("value"); \
txt = XMLCreateText(val); \
XMLAddAttr(field, "var", id); \
XMLAddChild(value, txt); \
XMLAddChild(field, value); \
XMLAddChild(item, field); \
} \
while(0)
#define SetFixed(id, val) do \
{ \
field = XMLCreateTag("field"); \
value = XMLCreateTag("value"); \
txt = XMLCreateText(val); \
XMLAddAttr(field, "var", id); \
XMLAddAttr(field, "type", "fixed"); \
XMLAddChild(value, txt); \
XMLAddChild(field, value); \
XMLAddChild(item, field); \
} \
while(0)
#define GetFieldValue(to, id, form) do \
{ \
XMLElement *field_content = XMLookForTKV(form, "field", "var", id); \
XMLElement *value = XMLookForUnique(field_content, "value"); \
XMLElement *val_data = value ? ArrayGet(value->children, 0) : NULL; \
if (val_data && val_data->data) \
{ \
to = val_data->data; \
} \
} \
while(0)
#define GFVMulti(to,id,form,n) do \
{ \
XMLElement *field_content = XMLookForTKV(form, "field", "var", id); \
XMLElement *value = field_content ? ArrayGet(field_content->children, n) : NULL; \
XMLElement *val_data = value ? ArrayGet(value->children, 0) : NULL; \
if (val_data && val_data->data) \
{ \
to = val_data->data; \
} \
} \
while(0)
#define GFVCount(to,id,form) do \
{ \
XMLElement *field_content = XMLookForTKV(form, "field", "var", id); \
to = field_content ? ArraySize(field_content->children) : 0; \
} \
while(0)
#define SetNote(type, text) do \
{ \
XMLElement *note_xml = XMLCreateTag("note"); \
XMLElement *note_msg = XMLCreateText(text); \
XMLAddAttr(note_xml, "type", type); \
XMLAddChild(note_xml, note_msg); \
XMLAddChild(out, note_xml); \
} \
while(0)
#define SetTitle(form, text) do \
{ \
XMLElement *title_xml, *title_txt; \
title_xml = XMLCreateTag("title"); \
title_txt = XMLCreateText(text); \
XMLAddChild(title_xml, title_txt); \
XMLAddChild(form, title_xml); \
} \
while(0)
#endif