@@ -408,6 +408,37 @@ class Attributable
408408 template <typename Lambda>
409409 void visitHierarchyFromLambda (Lambda &&lambda);
410410
411+ /* *
412+ * Recursively freeze structural definitions made so far on the current
413+ * object and all its children.
414+ *
415+ * This includes:
416+ * 1. Explicit attribute writes
417+ * 2. Implicit attributes, i.e.: Attributes defined by the openPMD standard
418+ * will now be populated with sensible default values
419+ * 3. Dataset creation: The Dataset declarations set by resetDataset() will
420+ * now be fixed. Datasets can no longer be changed to constant components
421+ * after this.
422+ * 4. Hierarchy setup, i.e. creation of group paths.
423+ *
424+ * WARNING: this is still under development and not fully implemented yet
425+ * (implementation status: only bullet 2. from above. ref.
426+ * https://github.com/openPMD/openPMD-api/pull/1862 for the rest.)
427+ *
428+ * Uses of this include:
429+ * 1. Setting up the metadata is a collective operation in some backends
430+ * (read: HDF5). When interacting with a dataset non-collectively (e.g.
431+ * single ranks without data contribution, variable number of blocks per
432+ * rank), this call harmonizes the collective metadata setup.
433+ * 2. Forcing the creation of default attributes. By default, these are
434+ * written upon closing the containing Iteration / Series. Calling this
435+ * soon can make data available for early readers (e.g. read while the
436+ * writer is still modifying).
437+ *
438+ * Modifying the frozen structural setup is only possible insofar as the
439+ * backend supports this, e.g. by dataset extension, attribute overwrite or
440+ * group deletion.
441+ */
411442 void commitStructuralSetup ();
412443
413444 [[nodiscard]] OpenpmdStandard openPMDStandard () const ;
0 commit comments