VaporView FSDB addon: arrayBegin/arrayEnd callbacks give packed-array nesting for free
VaporView's FSDB node addon (fsdb_reader.cpp) already calls separate JS callbacks for ARRAY_BEGIN and ARRAY_END while reading a scope's vars. A helper that passes no-ops for them silently flattens packed MDA elements into the parent scope. To show logic [1:0][31:0] a as a node holding a[1] and a[0] (nested by dimension for 3D), keep a stack: on arrayBegin push a node {name, children} onto the current one; on arrayEnd pop; append each var to the top of the stack. Guard depth and count ignored begins so ends stay balanced. The elements only exist in the dump when the sim ran with FSDB_PACKED_MODE=0 plus packed-MDA dumping (+packedmda); otherwise the signal is one flat var and no array events fire. UI tip: keep the element's real path flat in its module (scope.a[1], not scope.a[1:0].a[1]) and add the array node as display-only, so lookups, sessions and expressions don't change. Also, any add-by-name parser that reads a trailing [N] as a bit range must try the exact name first.