mirror of
https://forge.fsky.io/lda/Parsee.git
synced 2026-03-13 22:55:11 +00:00
93 lines
2.7 KiB
C
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
|