SEDRIS Reference Manual
APPENDIX A - Transmittal Access Level 0 API
Types
SE_Search_Rule_Type
/*
 * REGISTERABLE ENUM: SE_Search_Rule_Type
 *
 *   The types of entries that can be used in an array of search
 *   rules. These are used as values for the rule_type field within
 *   SE_Search_Rule structure.
 *
 *   Unless otherwise specified, each rule type is valid for
 *   all type of iterators.
 */
typedef SE_Short_Integer SE_Search_Rule_Type;
Enumerant Definition Value
SE_SEARCHRULETYP_END
 Indication of the end of a set/array of rules.
1
SE_SEARCHRULETYP_AND
 Indicates that the results of the preceding pair of rules.
 will be joined by a logical "and" operation.
2
SE_SEARCHRULETYP_OR
 Indicates that the results of the preceding pair of rules
 will be joined by a logical "or" operation.
3
SE_SEARCHRULETYP_NOT
 Indicates that the logical negation of the preceding
 rule will be used.
4
SE_SEARCHRULETYP_OBJECT_AND
 Indicates that the results preceding pair of rules will
 be joined by a logical "and" operation, and that both
 must be satisfied by the same set of objects (see the
 macro SE_OBJECT_AND() for more details).
5
SE_SEARCHRULETYP_PREDICATE
 Objects that satisfy a search rule of this type must satisfy
 the user-defined function specified by the SE_Search_Rule
 in question. The signature of the user-defined function must
 match that specified by the SE_Predicate type definition (see).

 Uses the following SE_Search_Rule fields:

   rule_type - set to SE_SEARCHRULETYP_PREDICATE.

   user_function - a pointer to the user-defined function that
                   will be used to filter objects based on whether
                   or not the user-defined function returns SE_TRUE
                   or SE_FALSE when passed an SE_Object.

   value_ptr - (optional) a pointer to some user-defined data.
6
SE_SEARCHRULETYP_DRM_CLASS
 Objects that satisfy a search rule of this type must match the
 DRM class specified by the SE_Search_Rule in question.

 Uses the following SE_Search_Rule fields:

   rule_type - set to SE_SEARCHRULETYP_DRM_CLASS.

   object_drm_class - the "DRM class" of object for which
    are searching.
7
SE_SEARCHRULETYP_FIELD
 Objects that satisfy a search rule of this type must
 - match the DRM class specified by the SE_Search_Rule
 - exactly the specified value for a given field in the fields
   of the object being tested. (For EDCS_String fields, this
   means that they must have the same length and contain
   the same contents, and string comparisons *are* case
   sensitive.)

 Uses the following SE_Search_Rule fields:

   rule_type - set to SE_SEARCHRULETYP_FIELD

   object_drm_class - the "DRM class" of object for which we are
                      searching.

   value_type - the type of value being tested (SE_Byte, SE_Float,
                etc.); used to interpret value_ptr.

   value_ptr - a pointer to the search value (this value will be checked
               against the value of the specified field in the fields
               of an object being tested).

   field_offset - the offset of the chosen field within the fields
                  of the given object.

 Recommendations:
 - Since it is rarely a good idea to test for exact equality with
   floating point numbers, users are recommended to use range
   matching rules for floating-point fields.
 - When accessing an enumerated value, it will be cast to an SE_Integer
   (the void pointer used to pass the value will be cast to a pointer to
   an SE_Integer).
8
SE_SEARCHRULETYP_FIELD_RANGE
 Objects that satisfy a search rule of this type must match both
 - the DRM class specified by the SE_Search_Rule
 - the specified range of allowable values for a given field in
   the fields of the object being tested.

 Uses the following SE_Search_Rule fields:

   rule_type - set to SE_SEARCHRULETYP_FIELD_RANGE

   object_drm_class - the "DRM class" of object for which we are
                      searching.

   value_type - the type of value being tested (SE_Byte, SE_Float,
                etc.); used to interpret value_ptr and second_value_ptr.

   value_ptr - a pointer to the lower bound of the desired search value
               (this value will be checked against the value of the
               specified field in the fields of each object being tested).

   second_value_ptr - a pointer to the upper bound of the search values.

   field_offset - the offset of the chosen field within the fields
                  of the given object.

 Restrictions:
 - A Field Range rule may not be used for a field of any enumerated
   type, such as SE_Boolean or EDCS_Attribute_Code.

 - For all legal field types, other than SE_String and EDCS_String,
   both an upper bound and a lower bound value must be specified.

 - For a field bound to a set type,
   - The lower bound value is interpreted as a subset, as in "match any
     set field that contains this lower bound set."

   - The upper bound value is interpreted as a superset, as in "match any
     set field that is contained by this upper bound
     set."

   - Either the upper bound or lower bound value may be an empty set,
     but not both. If the lower bound set is empty, then only the
     upper bound test is performed, and vice versa. If both bounds
     are specified, then an object passes this test only if the
     specified field passes both tests.

   - For a field of type SE_String or EDCS_String,
     - the lower bound is interpreted as a starter string, as in
       "match any string that starts with this lower bound string"

     - the upper bound is interpreted as a sub-string, as in
       "match any string that contains this upper bound string"

     For range rules, string comparisons are *not* case sensitive.

     Either the lower bound or the upper bound may contain a null string,
     (a string where characters == pointer to a string containing the
     null byte and length == 0). A null string for a lower_bound
     means that only the upper_bound test, and vice versa. If both
     bounds are null strings, then the rule is invalid.

     If both an upper_bound and lower_bound are specified in string search
     (if neither the upper_bound nor the lower_bound are null strings),
     then a string passes if and only if it passes both the upper_bound
     and the lower_bound tests.
9
SE_SEARCHRULETYP_FIELD_ARRAY
 Objects that satisfy a search rule of this type must match both
 - the DRM class specified by the SE_Search_Rule
 - one of the specified values in the given array, for a given field
   in the fields of the object being tested.

 See SE_SEARCHRULETYP_FIELD for further details.

 Uses the following SE_Search_Rule fields:

   rule_type - set to SE_SEARCHRULETYP_FIELD_ARRAY.

   object_drm_class - the "DRM class" of object for which we are
                      searching.

   value_type - the type of value being tested (SE_Byte, SE_Float,
                etc.); used to interpret value_ptr.

   value_array_length - the number of entries in the given array of
                        search values.

   value_ptr - an array of search values (each value will be checked
               against the value of the specified field in the fields
               of an object being tested).

   field_offset - the offset of the chosen field within the fields
                  of the given object.

 Recommendations:
 - Since it is rarely a good idea to test for exact equality with
   floating point numbers, users are recommended to use range
   matching rules for floating-point fields.
 - When accessing an enumerated value, it will be cast to an SE_Integer
   (the void pointer used to pass the value will be cast to a pointer to
   an SE_Integer).
10
SE_SEARCHRULETYP_COMPONENT
 Objects that satisfy a search rule of this type must match the
 DRM class specified by the SE_Search_Rule in question, and must
 have one or more components belonging to another specified DRM class.

 Uses the following SE_Search_Rule fields:

   rule_type - set to SE_SEARCHRULETYP_COMPONENT_DRM_CLASS.

   object_drm_class - the "DRM class" of object for which we are
                      searching.

   component_object_drm_class - the "DRM class" of component that
      target object must have.
11
SE_SEARCHRULETYP_COMPONENT_FIELD
 Objects that satisfy a search rule of this type must
 - match the DRM class specified by the SE_Search_Rule
 - have one or more components of another given DRM class, where
   those components match the specified value for a given field
   in the fields of the component object being tested.

 See SE_SEARCHRULETYP_FIELD for further details.

 Uses the following SE_Search_Rule fields:

   rule_type - set to SE_SEARCHRULETYP_COMPONENT_FIELD.

   object_drm_class - the DRM class of object for which we are searching.

   component_object_drm_class - the "DRM class" of component that each
      target object must have.

   field_offset - the offset of the chosen field within the fields
                  of the target object's component.

   value_type - the type of value being tested (SE_Byte, SE_Float,
                etc.); used to interpret value_ptr.

   value_ptr - a pointer to the search value (this value will be checked
               against the value of the specified field in the
               of the component object being tested).
12
SE_SEARCHRULETYP_COMPONENT_FIELD_RANGE
 Objects that satisfy a search rule of this type must
 - match the DRM class specified by the SE_Search_Rule
 - have one or more components of another given DRM class, where
   the specified field in the fields of each of those components
   contains a value within the specified range of search values.

 A Component Field Range rule may not be used for a field of type
 EDCS_Attribute_Code or EDCS_Classification_Code.

 Uses the following SE_Search_Rule fields:

   rule_type - set to SE_SEARCHRULETYP_COMPONENT_FIELD_RANGE

   object_drm_class - the DRM class of object for which we are searching.

   component_object_drm_class - the DRM class of component the object
                                is required to have.

   field_offset - the offset of the chosen field within the fields
                  of the target object's component.

   value_type - the type of value being tested (SE_Byte, SE_Float,
                etc.); used to interpret value_ptr.

   value_ptr - a pointer to the lower bound of the search values.

   second_value_ptr - a pointer to the upper bound of the search values.

 Restrictions: See SE_SEARCHRULETYP_FIELD_RANGE.
13
SE_SEARCHRULETYP_COMPONENT_FIELD_ARRAY
 Objects that satisfy a search rule of this type must
 - match the DRM class specified by the SE_Search_Rule
 - have one or more components of another given DRM class, where the
   specified field in the fields of each of those components
   contains a value matching one of the specified values in the
   given array.

 Uses the following SE_Search_Rule fields:

   rule_type - set to SE_SEARCHRULETYP_COMPONENT_FIELD_ARRAY

   object_drm_class - the DRM class of object for which we are searching.

   component_object_drm_class - the DRM class of component that the
      target object must have.

   field_offset - the offset of the chosen field within the fields
                  of the target object's component.

   value_type - the type of value being tested (SE_Byte, SE_Float,
                etc.); used to interpret value_ptr.

   value_array_length - the number of entries in the given array of
                        search values.

   value_ptr - a pointer to an array of search values (each value will be
               checked against the value of the specified field in the
               fields of an object being tested)

 Recommendations: See SE_SEARCHRULETYP_FIELD_ARRAY.
14
SE_SEARCHRULETYP_ASSOCIATE
 Objects that satisfy a search rule of this type must have associations
 that can be traversed to one or more objects belonging to the given
 DRM class.

 Uses the following SE_Search_Rule fields:

   rule_type - set to SE_SEARCHRULETYP_ASSOCIATE.

   object_drm_class - the "DRM class" of object that must be at the other
                 end of a traversable association from the target object.
15
SE_SEARCHRULETYP_MAX_SEARCH_DEPTH
 This type of rule is valid for only component-based iterators -
     Component Iterator
     Inherited Component Iterator
     Simple Component Iterator

 Objects that satisfy a search rule of this type must be within the
 specified depth (distance) from the start object of the component
 iterator using this rule.

 Uses the following SE_Search_Rule fields:

   rule_type - set to SE_SEARCHRULETYP_MAX_SEARCH_DEPTH.

   max_depth - the maximum allowed distance from the start_object to
               any object that is trying to satisfy this rule. (If
               0, indicates an unlimited search depth.)
16



Prev: SE_Search_Rule. Next: SE_Search_Type.


Return to: Top of this Page, Type Index