MCPcopy Create free account
hub / github.com/F-Stack/f-stack / xo_do_close_container

Function xo_do_close_container

tools/libxo/libxo/libxo.c:7030–7089  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

7028}
7029
7030static int
7031xo_do_close_container (xo_handle_t *xop, const char *name)
7032{
7033 xop = xo_default(xop);
7034
7035 ssize_t rc = 0;
7036 const char *ppn = XOF_ISSET(xop, XOF_PRETTY) ? "\n" : "";
7037 const char *pre_nl = "";
7038
7039 if (name == NULL) {
7040 xo_stack_t *xsp = &xop->xo_stack[xop->xo_depth];
7041
7042 name = xsp->xs_name;
7043 if (name) {
7044 ssize_t len = strlen(name) + 1;
7045 /* We need to make a local copy; xo_depth_change will free it */
7046 char *cp = alloca(len);
7047 memcpy(cp, name, len);
7048 name = cp;
7049 } else if (!(xsp->xs_flags & XSF_DTRT)) {
7050 xo_failure(xop, "missing name without 'dtrt' mode");
7051 name = XO_FAILURE_NAME;
7052 }
7053 }
7054
7055 const char *leader = xo_xml_leader(xop, name);
7056
7057 switch (xo_style(xop)) {
7058 case XO_STYLE_XML:
7059 xo_depth_change(xop, name, -1, -1, XSS_CLOSE_CONTAINER, 0);
7060 rc = xo_printf(xop, "%*s</%s%s>%s", xo_indent(xop), "", leader, name, ppn);
7061 break;
7062
7063 case XO_STYLE_JSON:
7064 xo_stack_set_flags(xop);
7065
7066 pre_nl = XOF_ISSET(xop, XOF_PRETTY) ? "\n" : "";
7067 ppn = "";
7068
7069 xo_depth_change(xop, name, -1, -1, XSS_CLOSE_CONTAINER, 0);
7070 rc = xo_printf(xop, "%s%*s}%s", pre_nl, xo_indent(xop), "", ppn);
7071 xop->xo_stack[xop->xo_depth].xs_flags |= XSF_NOT_FIRST;
7072 break;
7073
7074 case XO_STYLE_HTML:
7075 case XO_STYLE_TEXT:
7076 xo_depth_change(xop, name, -1, 0, XSS_CLOSE_CONTAINER, 0);
7077 break;
7078
7079 case XO_STYLE_SDPARAMS:
7080 break;
7081
7082 case XO_STYLE_ENCODER:
7083 xo_depth_change(xop, name, -1, 0, XSS_CLOSE_CONTAINER, 0);
7084 rc = xo_encoder_handle(xop, XO_OP_CLOSE_CONTAINER, name, NULL, 0);
7085 break;
7086 }
7087

Callers 2

xo_do_close_allFunction · 0.85
xo_transitionFunction · 0.85

Calls 10

xo_defaultFunction · 0.85
xo_failureFunction · 0.85
xo_xml_leaderFunction · 0.85
xo_styleFunction · 0.85
xo_depth_changeFunction · 0.85
xo_printfFunction · 0.85
xo_indentFunction · 0.85
xo_stack_set_flagsFunction · 0.85
xo_encoder_handleFunction · 0.85
memcpyFunction · 0.50

Tested by

no test coverage detected