DMS-Parser-XS

 view release on metacpan or  search on metacpan

vendor/dms-c/dms.c  view on Meta::CPAN

static bool is_flow_safe(const emitter *e, const dms_value *v,
                         const dms_breadcrumb_seg *path, size_t path_len);
static const dms_original_literal *find_form(const emitter *e,
                                             const dms_breadcrumb_seg *path, size_t path_len);

/* Build + sort index arrays. In lite mode, both lookup arrays are
   left NULL so every `find_first_match` short-circuits — comments are
   dropped, integer base / string flavor fall back to canonical form. */
static void emitter_init(emitter *e, const dms_document *doc, bool lite) {
    buf_init(&e->out);
    buf_ensure(&e->out, 64 * 1024);  /* pre-size: skip realloc cascade on typical-sized configs */
    e->doc = doc;
    e->comments_sorted = NULL;
    e->forms_sorted = NULL;
    e->path_buf = NULL;
    e->path_buf_cap = 0;
    e->lite = lite;
    if (lite) return;
    if (doc->num_comments > 0) {
        e->comments_sorted = (size_t *)malloc(doc->num_comments * sizeof(size_t));
        for (size_t i = 0; i < doc->num_comments; i++) e->comments_sorted[i] = i;



( run in 0.692 second using v1.01-cache-2.11-cpan-bbe5e583499 )