## DS_C_FILTER

An instance of OM class DS_C_FILTER is used to select or reject an object on the basis of information in its directory entry. At any point in time, an attribute filter has a value relative to every object. The value is FALSE, TRUE, or undefined. The object is selected if, and only if, the filter's value is TRUE.

An instance of this OM class has the OM attributes of its superclass, OM_C_OBJECT, in addition to the OM attributes listed in the following table.

OM Attributes of DS_C_FILTER

OM Attribute | Value Syntax | Value Length | Value Number | Value Initially
DS_FILTER_ ITEMS | Object(DS_C_ FILTER_ITEM | - | 0 or more | -
DS_FILTERS | Object(DS_C_ FILTER) | - | 0 or more | -
DS_FILTER_TYPE | Enum(DS_Filter_ Type | - | 1 | DS_AND

A filter is a collection of less elaborate filters and elementary DS_FILTER_ITEMS, together with a Boolean operation. The filter value is undefined if, and only if, all the component DS_FILTERS and DS_FILTER_ITEMS are undefined. Otherwise, the filter has a Boolean value with respect to any directory entry, which can be determined by evaluating each of the nested components and combining their values using the Boolean operation. The components whose values are undefined are ignored.

· DS_FILTER_ITEMS

This attribute is a collection of assertions, each relating to just one attribute of a directory entry.

· DS_FILTERS

This attribute is a collection of simpler filters.

· DS_FILTER_TYPE

This attribute is the filter's type. It can have any of the following values:

- DS_AND, meaning that the filter is the logical conjunction of its components. The filter is TRUE unless any of the nested filters or filter items is FALSE. If there are no nested components, the filter is TRUE.

- DS_OR, meaning that the filter is the logical disjunction of its components. The filter is FALSE unless any of the nested filters or filter items is TRUE. If there are no nested components, the filter is FALSE.

- DS_NOT, meaning that the result of this filter is reversed. There must be exactly one nested filter or filter item. The filter is TRUE if the enclosed filter or filter item is FALSE, and is FALSE if the enclosed filter or filter item is TRUE.

##