Ejemplo n.º 1
0
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);
}
Ejemplo n.º 2
0
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);
}
Ejemplo n.º 3
0
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);
    }
}
Ejemplo n.º 4
0
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);
}
Ejemplo n.º 5
0
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);
}
Ejemplo n.º 6
0
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);
    }
}