Provided by: libpmemobj-dev_1.13.1-1.1ubuntu2_amd64 bug

NAME

       pmemobj_first(),  pmemobj_next(), POBJ_FIRST(), POBJ_FIRST_TYPE_NUM(), POBJ_NEXT(), POBJ_NEXT_TYPE_NUM(),
       POBJ_FOREACH(), POBJ_FOREACH_SAFE(), POBJ_FOREACH_TYPE(), POBJ_FOREACH_SAFE_TYPE()  -  pmemobj  container
       operations

SYNOPSIS

              #include <libpmemobj.h>

              PMEMoid pmemobj_first(PMEMobjpool *pop);
              PMEMoid pmemobj_next(PMEMoid oid);

              POBJ_FIRST(PMEMobjpool *pop, TYPE)
              POBJ_FIRST_TYPE_NUM(PMEMobjpool *pop, uint64_t type_num)
              POBJ_NEXT(TOID oid)
              POBJ_NEXT_TYPE_NUM(PMEMoid oid)

              POBJ_FOREACH(PMEMobjpool *pop, PMEMoid varoid)
              POBJ_FOREACH_SAFE(PMEMobjpool *pop, PMEMoid varoid, PMEMoid nvaroid)
              POBJ_FOREACH_TYPE(PMEMobjpool *pop, TOID var)
              POBJ_FOREACH_SAFE_TYPE(PMEMobjpool *pop, TOID var, TOID nvar)

DESCRIPTION

       The libpmemobj(7) container operations provide a mechanism that allows iteration through the internal ob‐
       ject  collection, either looking for a specific object, or performing a specific operation on each object
       of a given type.  Software should not make any assumptions about the order of the objects in the internal
       object containers.

       The pmemobj_first() function returns the first object from the pool.

       The POBJ_FIRST() macro returns the first object from the pool of the type specified by TYPE.

       The POBJ_FIRST_TYPE_NUM() macro returns the first object from the pool of the type specified by type_num.

       The pmemobj_next() function returns the next object from the pool.

       The POBJ_NEXT() macro returns the next object of the same type as the object referenced by oid.

       The POBJ_NEXT_TYPE_NUM() macro returns the next object of the same type number as the  object  referenced
       by oid.

       The following four macros provide a more convenient way to iterate through the internal collections, per‐
       forming a specific operation on each object.

       The  POBJ_FOREACH() macro performs a specific operation on each allocated object stored in the persistent
       memory pool pop.  It traverses the internal collection of all the objects, assigning a handle to each el‐
       ement in turn to varoid.

       The POBJ_FOREACH_TYPE() macro performs a specific operation on each allocated object stored in  the  per‐
       sistent  memory  pool pop that has the same type as var.  It traverses the internal collection of all the
       objects of the specified type, assigning a handle to each element in turn to var.

       The macros POBJ_FOREACH_SAFE() and POBJ_FOREACH_SAFE_TYPE() work in a similar fashion  as  POBJ_FOREACH()
       and  POBJ_FOREACH_TYPE(),  except  that  prior to performing the operation on the object, they preserve a
       handle to the next object in the collection by assigning it to nvaroid or nvar, respectively.   This  al‐
       lows safe deletion of selected objects while iterating through the collection.

RETURN VALUE

       pmemobj_first() returns the first object from the pool, or, if the pool is empty, OID_NULL.

       pmemobj_next() returns the next object from the pool.  If the object referenced by oid is the last object
       in the collection, or if oid is OID_NULL, pmemobj_next() returns OID_NULL.

SEE ALSO

       libpmemobj(7) and <https://pmem.io>