@@ -411,7 +411,7 @@ class Attributable
411411 *
412412 * @param visitor Operations to run for each object.
413413 */
414- virtual void visitHierarchy (HierarchyVisitor &visitor);
414+ virtual void visitHierarchy (HierarchyVisitor &visitor, bool recursive );
415415
416416 /* *
417417 * Visitor pattern for the openPMD object hierarchy in postfix traversal,
@@ -424,40 +424,26 @@ class Attributable
424424 * @param lambda Operations to run for each object.
425425 */
426426 template <typename Lambda>
427- void visitHierarchyFromLambda (Lambda &&lambda);
427+ void visitHierarchyFromLambda (Lambda &&lambda, bool recursive );
428428
429- /* *
430- * Recursively freeze structural definitions made so far on the current
431- * object and all its children.
432- *
433- * This includes:
434- * 1. Explicit attribute writes
435- * 2. Implicit attributes, i.e.: Attributes defined by the openPMD standard
436- * will now be populated with sensible default values
437- * 3. Dataset creation: The Dataset declarations set by resetDataset() will
438- * now be fixed. Datasets can no longer be changed to constant components
439- * after this.
440- * 4. Hierarchy setup, i.e. creation of group paths.
441- *
442- * WARNING: this is still under development and not fully implemented yet
443- * (implementation status: only bullet 2. from above. ref.
444- * https://github.com/openPMD/openPMD-api/pull/1862 for the rest.)
445- *
446- * Uses of this include:
447- * 1. Setting up the metadata is a collective operation in some backends
448- * (read: HDF5). When interacting with a dataset non-collectively (e.g.
449- * single ranks without data contribution, variable number of blocks per
450- * rank), this call harmonizes the collective metadata setup.
451- * 2. Forcing the creation of default attributes. By default, these are
452- * written upon closing the containing Iteration / Series. Calling this
453- * soon can make data available for early readers (e.g. read while the
454- * writer is still modifying).
455- *
456- * Modifying the frozen structural setup is only possible insofar as the
457- * backend supports this, e.g. by dataset extension, attribute overwrite or
458- * group deletion.
429+ /* * Create standard defined attributes with default values now, insofar they
430+ * are still missing.
431+ *
432+ * Refer to
433+ * https://github.com/openPMD/openPMD-standard/blob/latest/STANDARD.md
434+ * for the attributes implied by this operation.
435+ *
436+ * By default, standard defined attributes are written upon closing the
437+ * containing Iteration / Series. Calling this soon can make data available
438+ * for early readers (e.g. read while the writer is still modifying). In
439+ * workflows that keep single Iterations open over an extended period of
440+ * time (e.g. back-transformed diagnostics), this can help creating readable
441+ * files earlier than without.
442+ *
443+ * Attributes may still be modified after this as usual. Attributes defined
444+ * before this call will not be modified by it.
459445 */
460- void commitStructuralSetup ( );
446+ void populateMissingMetadata ( bool recursive );
461447
462448 [[nodiscard]] OpenpmdStandard openPMDStandard () const ;
463449
0 commit comments