static void XmlExportFunction(Writer *writer, FnCallType fn) { int i; char *filebuffer = NULL; /* START XML ELEMENT -- FUNCTION */ XmlAttribute fun_name_attr = { "name", fn.name }; XmlAttribute fun_returntype_attr = { "return-type", CF_DATATYPES[fn.dtype] }; XmlAttribute fun_varargs_attr = { "varargs", NULL }; if (fn.varargs) { fun_varargs_attr.value = "true"; } else { fun_varargs_attr.value = "false"; } XmlStartTag(writer, XMLTAG_FUNCTION, 3, fun_name_attr, fun_returntype_attr, fun_varargs_attr); /* XML ELEMENT -- DESCRIPTION */ XmlTag(writer, XMLTAG_DESCRIPTION, fn.description, 0); for (i = 0; fn.args[i].pattern != NULL; i++) { /* START XML ELEMENT -- ARGUMENT */ XmlAttribute argument_type_attr = { "type", CF_DATATYPES[fn.args[i].dtype] }; XmlStartTag(writer, XMLTAG_ARGUMENT, 1, argument_type_attr); /* XML ELEMENT -- DESCRIPTION */ XmlTag(writer, XMLTAG_DESCRIPTION, fn.args[i].description, 0); /* END XML ELEMENT -- ARGUMENT */ XmlEndTag(writer, XMLTAG_ARGUMENT); } /* XML ELEMENT -- LONG-DESCRIPTION */ filebuffer = ReadTexinfoFileF("functions/%s_notes.texinfo", fn.name); XmlTag(writer, XMLTAG_LONGDESCRIPTION, filebuffer, 0); free(filebuffer); /* XML ELEMENT -- EXAMPLE */ filebuffer = ReadTexinfoFileF("functions/%s_example.texinfo", fn.name); XmlTag(writer, XMLTAG_EXAMPLE, filebuffer, 0); free(filebuffer); /* END XML ELEMENT -- FUNCTION */ XmlEndTag(writer, XMLTAG_FUNCTION); }
void XmlExportConstraint(Writer *writer, const BodySyntax *bs) { char *filebuffer = NULL; if (bs == NULL) { return; } /* START XML ELEMENT -- CONSTRAINT */ XmlAttribute constraint_name_attr = { "name", bs->lval }; XmlStartTag(writer, XMLTAG_CONSTRAINT, 1, constraint_name_attr); /* EXPORT TYPE */ XmlExportType(writer, bs->dtype, bs->range); /* XML ELEMENT -- DEFAULT-VALUE */ if (bs->default_value != NULL) { XmlTag(writer, XMLTAG_DEFAULTVAL, bs->default_value, 0); } switch (bs->dtype) { case cf_body: case cf_bundle: case cf_notype: case cf_counter: /* NO ADDITIONAL INFO */ break; default: /* XML ELEMENT -- DESCRIPTION */ XmlTag(writer, XMLTAG_DESCRIPTION, bs->description, 0); /* XML ELEMENT -- LONG-DESCRIPTION */ filebuffer = ReadTexinfoFileF("bodyparts/%s_notes.texinfo", bs->lval); XmlTag(writer, XMLTAG_LONGDESCRIPTION, filebuffer, 0); free(filebuffer); /* XML ELEMENT -- EXAMPLE */ filebuffer = ReadTexinfoFileF("bodyparts/%s_example.texinfo", bs->lval); XmlTag(writer, XMLTAG_EXAMPLE, filebuffer, 0); free(filebuffer); } /* END XML ELEMENT -- CONSTRAINT */ XmlEndTag(writer, XMLTAG_CONSTRAINT); }
static void IncludeManualFile(const char *source_dir, FILE *fout, char *file) { char *contents = ReadTexinfoFileF(source_dir, "%s", file); if (contents) { fprintf(fout, "@*\n%s\n", contents); } }
static void XmlExportControl(Writer *writer, SubTypeSyntax type) { char *filebuffer = NULL; /* START XML ELEMENT -- CONTROL */ XmlAttribute control_name_attr = { "name", type.btype }; XmlStartTag(writer, XMLTAG_CONTROL, 1, control_name_attr); /* XML ELEMENT -- LONG-DESCRIPTION */ filebuffer = ReadTexinfoFileF("control/%s_notes.texinfo", type.btype); XmlTag(writer, XMLTAG_LONGDESCRIPTION, filebuffer, 0); free(filebuffer); /* XML ELEMENT -- EXAMPLE */ filebuffer = ReadTexinfoFileF("control/%s_example.texinfo", type.btype); XmlTag(writer, XMLTAG_EXAMPLE, filebuffer, 0); free(filebuffer); /* XML ELEMENT -- CONSTRAINTS */ XmlExportConstraints(writer, type.bs); /* END XML ELEMENT -- CONTROL */ XmlEndTag(writer, XMLTAG_CONTROL); }
static void XmlExportVariables(Writer *writer, const char *scope) { char *filebuffer = NULL; Rlist *rp = NULL; Rlist *list = NULL; /* START XML ELEMENT -- VARIABLE*-SCOPE */ XmlAttribute scope_name_attr = { "name", scope }; XmlStartTag(writer, XMLTAG_VARSCOPE, 1, scope_name_attr); /* XML ELEMENT -- INTRO */ filebuffer = ReadTexinfoFileF("varcontexts/%s_intro.texinfo", scope); XmlTag(writer, XMLTAG_INTRO, filebuffer, 0); free(filebuffer); HashToList(GetScope(scope), &list); list = AlphaSortRListNames(list); for (rp = list; rp != NULL; rp = rp->next) { /* START XML ELEMENT -- VARIABLE */ XmlAttribute var_name_attr = { "name", ScalarValue(rp) }; XmlStartTag(writer, XMLTAG_VARIABLE, 1, var_name_attr); /* XML ELEMENT -- LONG-DESCRIPTION */ filebuffer = ReadTexinfoFileF("vars/%s_%s.texinfo", scope, ScalarValue(rp)); XmlTag(writer, XMLTAG_LONGDESCRIPTION, filebuffer, 0); free(filebuffer); /* END XML ELEMENT -- VARIABLE */ XmlEndTag(writer, XMLTAG_VARIABLE); } DeleteRlist(list); /* END XML ELEMENT -- VARIABLE-SCOPE */ XmlEndTag(writer, XMLTAG_VARSCOPE); }
void XmlExportPromiseType(Writer *writer, SubTypeSyntax *st) { int i; char *filebuffer = NULL; if (st == NULL) { return; } for (i = 0; st[i].btype != NULL; i++) { /* START XML ELEMENT -- PROMISE TYPE */ XmlAttribute promise_name_attr = { "name", st[i].subtype }; if (strcmp(st[i].subtype, "*") != 0) { XmlAttribute promise_agenttype_attr = { "agent-type", NULL }; if (strcmp(st[i].btype, "*") == 0) { promise_agenttype_attr.value = "common"; } else { promise_agenttype_attr.value = st[i].btype; } XmlStartTag(writer, XMLTAG_PROMISETYPE, 2, promise_name_attr, promise_agenttype_attr); } else { XmlStartTag(writer, XMLTAG_PROMISETYPE, 1, promise_name_attr); } /* XML ELEMENT -- INTRO */ if (strcmp("*", st[i].btype) == 0) { filebuffer = ReadTexinfoFileF("promise_common_intro.texinfo"); } else { filebuffer = ReadTexinfoFileF("promises/%s_intro.texinfo", st[i].subtype); } XmlTag(writer, XMLTAG_INTRO, filebuffer, 0); free(filebuffer); if (strcmp("*", st[i].btype) != 0) { /* XML ELEMENT -- LONG DESCRIPTION */ filebuffer = ReadTexinfoFileF("promises/%s_notes.texinfo", st[i].subtype); XmlTag(writer, XMLTAG_LONGDESCRIPTION, filebuffer, 0); free(filebuffer); /* XML ELEMENT -- EXAMPLE */ filebuffer = ReadTexinfoFileF("promises/%s_example.texinfo", st[i].subtype); XmlTag(writer, XMLTAG_EXAMPLE, filebuffer, 0); free(filebuffer); } /* EXPORT CONSTRAINTS */ XmlExportConstraints(writer, st[i].bs); /* END XML ELEMENT -- PROMISE TYPE */ XmlEndTag(writer, XMLTAG_PROMISETYPE); } }