#define SAF_ATT_NAMES ".saf_att_names" /* If the client passes SAF_ATT_NAMES for the NAME arg in a call to
* saf_get_attribute(), SAF will return a TYPE of string (if the TYPE
* return value is requested), a COUNT equal to the number of attributes
* (if the COUNT return value was requested), and a VALUE array
* containing the names of all attributes defined for the object. */
#define SAF_ATT_COUNT ".saf_att_count" /* If the client passes SAF_ATT_COUNT for the NAME arg in a SAF call to
* saf_get_attribute(), SAF will return the count of number of
* attributes defined for the given object in the COUNT. It is an error
* to request a count with SAF_ATT_COUNT, but pass NULL for the COUNT
* argument in a call to get attributes. */
#define SAF_ATT_FIRST ".saf_att_first" /* If the client passes SAF_ATT_FIRST, for the NAME argument in a SAF call
* to saf_get_attribute(), SAF will return the *first* attribute that was
* ever defined for the object. Thereafter, any call with SAF_ATT_NEXT
* will iterate through the list of attributes defined for the object. */
#define SAF_ATT_NEXT ".saf_att_next" /* This reserved attribute name works in conjunction with SAF_ATT_FIRST,
* to allow the client to iterate through all attributes defined for
* a given object. It is an error to pass SAF_ATT_NEXT without at least
* one prior call with SAF_ATT_FIRST. */