|
XFN Interface Library Functions | FN_attribute_t(3XFN) |
| FN_attribute_t, fn_attribute_create, fn_attribute_destroy, fn_attribute_copy, fn_attribute_assign, fn_attribute_identifier, fn_attribute_syntax, fn_attribute_valuecount, fn_attribute_first, fn_attribute_next, fn_attribute_add, fn_attribute_remove - an XFN attribute |
SYNOPSIS
|
cc [ flag ... ] file ... -lxfn [ library ... ]
#include <xfn/xfn.h>
FN_attribute_t *fn_attribute_create(constFN_identifier_t *attribute_id, const FN_identifier_t
*attribute_syntax); |
| void fn_attribute_destroy(FN_attribute_t *attr); |
| FN_attribute_t *fn_attribute_copy(constFN_attribute_t *attr); |
| FN_attribute_t *fn_attribute_assign(FN_attribute_t *dst, const FN_attribute_t *src); |
| const FN_identifier_t *fn_attribute_identifier(constFN_attribute_t *attr); |
| const FN_identifier_t *fn_attribute_syntax(constFN_attribute_t *attr); |
| unsigned int fn_attribute_valuecount(constFN_attribute_t *attr); |
| const FN_attrvalue_t *fn_attribute_first(constFN_attribute_t *attr, void **iter_pos); |
| const FN_attrvalue_t *fn_attribute_next(constFN_attribute_t *attr, void **iter_pos); |
| int fn_attribute_add(FN_attribute_t *attr, const FN_attrvalue_t *attribute_value, unsigned int exclusive); |
| int fn_attribute_remove(FN_attribute_t *attr, const FN_attrvalue_t
*attribute_value); |
|
An attribute has an attribute identifier, a syntax, and a set of distinct values. Each value is a sequence of octets. The operations associated with objects of type FN_attribute_t
allow the construction, destruction, and manipulation of an attribute and its value set.
The attribute identifier and its syntax are specified using an FN_identifier_t. fn_attribute_create() creates a new attribute object with the given identifier
and syntax, and an empty set of values. fn_attribute_destroy() releases the storage associated with attr. fn_attribute_copy() returns a copy
of the object pointed to by attr. fn_attribute_assign() makes a copy of the attribute object pointed to by src and assigns it to dst, releasing any old contents of dst. A pointer to the same object as dst is returned.
fn_attribute_identifier() returns the attribute identifier of attr. fn_attribute_syntax() returns the attribute syntax of attr. fn_attribute_valuecount() returns the number of attribute values in attr.
fn_attribute_first() and fn_attribute_next() are used to enumerate the values of an attribute. Enumeration of the values of an attribute may return the values
in any order. fn_attribute_first() returns an attribute value from attr and sets the iteration marker iter_pos. Subsequent calls
to fn_attribute_next() returns the next attribute value identified by iter_pos and advances iter_pos. Adding or removing values from
an attribute invalidates any iteration markers that the caller holds.
fn_attribute_add() adds a new value attribute_value to attr. The operation succeeds (but no change is made) if attribute_value is already in attr and exclusive is 0; the operation fails if attribute_value
is already in attr and exclusive is non-zero.
fn_attribute_remove() removes attribute_value from attr. The operation succeeds even if attribute_value
is not amongst attr's values.
|
|
fn_attribute_first() returns 0 if the attribute contains no values. fn_attribute_next() returns 0 if there are no more values
to be returned in the attribute (as identified by the iteration marker) or if the iteration marker is invalid.
fn_attribute_add() and fn_attribute_remove() return 1 if the operation succeeds, 0 if it fails.
|
|
Manipulation of attributes using the operations described in this manual page does not affect their representation in the underlying naming system. Changes to attributes in the underlying naming system
can only be effected through the use of the interfaces described in xfn_attributes(3XFN).
|
|
See attributes(5) for descriptions of the following
attributes:
ATTRIBUTE TYPE | ATTRIBUTE VALUE |
MT-Level | MT-Safe |
|
|
The implementation of XFN in this Solaris release is based on the X/Open preliminary specification. It is likely that there will be minor changes to these interfaces
to reflect changes in the final version of this specification. The next minor release of Solaris will offer binary compatibility for applications developed using the current interfaces. As the interfaces
evolve toward standardization, it is possible that future releases of Solaris will require minor source code changes to applications that have been developed against the preliminary specification.
|
| |