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

Function xo_do_close_instance

tools/libxo/libxo/libxo.c:7440–7496  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

7438}
7439
7440static int
7441xo_do_close_instance (xo_handle_t *xop, const char *name)
7442{
7443 xop = xo_default(xop);
7444
7445 ssize_t rc = 0;
7446 const char *ppn = XOF_ISSET(xop, XOF_PRETTY) ? "\n" : "";
7447 const char *pre_nl = "";
7448
7449 if (name == NULL) {
7450 xo_stack_t *xsp = &xop->xo_stack[xop->xo_depth];
7451
7452 name = xsp->xs_name;
7453 if (name) {
7454 ssize_t len = strlen(name) + 1;
7455 /* We need to make a local copy; xo_depth_change will free it */
7456 char *cp = alloca(len);
7457 memcpy(cp, name, len);
7458 name = cp;
7459 } else if (!(xsp->xs_flags & XSF_DTRT)) {
7460 xo_failure(xop, "missing name without 'dtrt' mode");
7461 name = XO_FAILURE_NAME;
7462 }
7463 }
7464
7465 const char *leader = xo_xml_leader(xop, name);
7466
7467 switch (xo_style(xop)) {
7468 case XO_STYLE_XML:
7469 xo_depth_change(xop, name, -1, -1, XSS_CLOSE_INSTANCE, 0);
7470 rc = xo_printf(xop, "%*s</%s%s>%s", xo_indent(xop), "", leader, name, ppn);
7471 break;
7472
7473 case XO_STYLE_JSON:
7474 pre_nl = XOF_ISSET(xop, XOF_PRETTY) ? "\n" : "";
7475
7476 xo_depth_change(xop, name, -1, -1, XSS_CLOSE_INSTANCE, 0);
7477 rc = xo_printf(xop, "%s%*s}", pre_nl, xo_indent(xop), "");
7478 xop->xo_stack[xop->xo_depth].xs_flags |= XSF_NOT_FIRST;
7479 break;
7480
7481 case XO_STYLE_HTML:
7482 case XO_STYLE_TEXT:
7483 xo_depth_change(xop, name, -1, 0, XSS_CLOSE_INSTANCE, 0);
7484 break;
7485
7486 case XO_STYLE_SDPARAMS:
7487 break;
7488
7489 case XO_STYLE_ENCODER:
7490 xo_depth_change(xop, name, -1, 0, XSS_CLOSE_INSTANCE, 0);
7491 rc = xo_encoder_handle(xop, XO_OP_CLOSE_INSTANCE, name, NULL, 0);
7492 break;
7493 }
7494
7495 return rc;
7496}
7497

Callers 3

xo_do_close_allFunction · 0.85
xo_transitionFunction · 0.85
xo_explicit_transitionFunction · 0.85

Calls 9

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_encoder_handleFunction · 0.85
memcpyFunction · 0.50

Tested by

no test coverage detected