The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Интерактивная система просмотра системных руководств (man-ов)

 ТемаНаборКатегория 
 
 [Cписок руководств | Печать]

fn_ext_searchlist_destroy (3)
  • >> fn_ext_searchlist_destroy (3) ( Solaris man: Библиотечные вызовы )
  • 
    NAME
         fn_attr_ext_search,                     FN_ext_searchlist_t,
         fn_ext_searchlist_next,  fn_ext_searchlist_destroy  - search
         for names  in  the  specified  context(s)  whose  attributes
         satisfy the filter
    
    SYNOPSIS
         #include <xfn/xfn.h>
    
         FN_ext_searchlist_t *fn_attr_ext_search(FN_ctx_t *ctx, const
         FN_composite_name_t  *name,  const FN_search_control_t *con-
         trol,   const   FN_search_filter_t   *filter,    FN_status_t
         *status);
    
         FN_composite_name_t
         *fn_ext_searchlist_next(FN_ext_searchlist_t  *esl,  FN_ref_t
         **returned_ref, FN_attrset_t  **returned_attrs,  FN_status_t
         *status);
    
         void fn_ext_searchlist_destroy(FN_ext_searchlist_t *esl);
    
    DESCRIPTION
         This set of operations is used  to  list  names  of  objects
         whose  attributes  satisfy the filter expression. The refer-
         ences to which these names are bound  and  specified  attri-
         butes and their values may also be returned.
    
         control encapsulates the option  settings  for  the  search.
         These options are:
    
            o  the scope of the search
    
            o  whether XFN links are followed
    
            o  a limit on the number of names returned
    
            o  whether references and specific attributes  associated
               with  the  named  objects  that satisfy the filter are
               returned
    
         The scope of the search is one of:
    
            o  the object named name relative to the context ctx
    
            o  the context named name relative to the context ctx
    
            o  the context named name relative to the context ctx,
    
               and its subcontexts
    
    
    
                 or
    
            o  the context named name relative to  the  context  ctx,
               and  a  context  implementation-defined set of subcon-
               texts
    
         If the value of control is 0, default  control  option  set-
         tings are used. The default settings are:
    
            o  scope is search named context
    
            o  links are not followed
    
            o  all names of  objects  that  satisfy  the  filter  are
               returned
    
            o  references and attributes are not returned
    
         The    FN_search_control_t    type    is    described     in
         FN_search_control_t(3XFN).
    
         The filter  expression  filter  in  fn_attr_ext_search()  is
         evaluated against the attributes of the objects bound in the
         scope of the search. The filter evaluates to either TRUE  or
         FALSE.  The names and, optionally, the references and attri-
         butes of objects whose attributes  satisfy  the  filter  are
         enumerated.   If  the value of filter is 0, all names within
         the search scope are enumerated. The FN_search_filter_t type
         is described in FN_search_filter_t(3XFN).
    
         The call to fn_attr_ext_search() initiates the  search  pro-
         cess.  It  returns a handle to an FN_ext_searchlist_t object
         that is used to enumerate the  names  of  the  objects  that
         satisfy the filter.
    
         The operation fn_ext_searchlist_next() returns the next name
         in the enumeration identified by esl; it also updates esl to
         indicate the state of the enumeration. If the  reference  to
         which  the  name  is  bound was requested, it is returned in
         returned_ref. Requested attributes associated with the  name
         are  returned  in returned_attrs; each attribute consists of
         an attribute identifier, syntax,  and  value(s).  Successive
         calls  to  fn_ext_searchlist_next() using esl return succes-
         sive names and, optionally, their references and attributes,
         in  the enumeration; these calls further update the state of
         the enumeration.
    
         The names that are  returned  are  composite  names,  to  be
         resolved  relative  to  the starting context for the search.
         This starting context is the context named name relative  to
         ctx unless the scope of the search is only the named object.
         If the scope of the search is only  the  named  object,  the
         terminal atomic name in name is returned.
    
         fn_ext_searchlist_destroy() releases resources  used  during
         the  enumeration.  This  may  be invoked at any time to ter-
         minate the enumeration.
    
    RETURN VALUES
         fn_attr_ext_search()    returns    a    pointer    to     an
         FN_ext_searchlist_t  object  if  the  search is successfully
         initiated; it returns a NULL pointer if the search cannot be
         initiated or if no named object with attributes whose values
         satisfy the filter expression is found.
    
         fn_ext_searchlist_next()   returns   a   pointer    to    an
         FN_composite_name_t  object  (see FN_composite_name_t(3XFN))
         that is the next name in the enumeration; it returns a  NULL
         pointer  if no more names can be returned. If returned_attrs
         is a NULL pointer, no attributes  are  returned;  otherwise,
         returned_attrs  contains  the attributes associated with the
         named object, as  specified  in  the  control  parameter  to
         fn_attr_ext_search().  If returned_ref is a NULL pointer, no
         reference is returned; otherwise, if control  specified  the
         return  of the reference of the named object, that reference
         is returned in returned_ref.
    
         In the case of a failure, these  operations  return  in  the
         status argument a code indicating the nature of the failure.
    
    ERRORS
         If successful, fn_attr_ext_search() returns a pointer to  an
         FN_ext_searchlist_t object and sets status to FN_SUCCESS.
    
         fn_attr_ext_search() returns a NULL  pointer  when  no  more
         names can be returned. status is set in the following way:
    
         FN_SUCCESS
               A named object could not  be  found  whose  attributes
               satisfied the filter expression.
    
         FN_E_NOT_A_CONTEXT
               The object named for the start of the search was not a
               context  and the search scope was the given context or
               the given context and its subcontexts.
    
         FN_E_SEARCH_INVALID_FILTER
               The filter could not be evaluated TRUE  or  FALSE,  or
               there was some other problem with the filter.
    
         FN_E_SEARCH_INVALID_OPTION
               A supplied search control option  could  not  be  sup-
               ported.
    
         FN_E_SEARCH_INVALID_OP
               An operator in the filter expression is not  supported
               or,  if  the  operator  is  an  extended operator, the
               number of types of arguments supplied does  not  match
               the signature of the operation.
    
         FN_E_ATTR_NO_PERMISSION
               The caller did not have permission to read one or more
               of the attributes specified in the filter.
    
         FN_E_INVALID_ATTR_VALUE
               A value type in the filter did not match the syntax of
               the attribute against which it was being evaluated.
    
         Other  status   codes   are   possible   as   described   in
         FN_status_t(3XFN) and xfn_status_codes(3XFN).
    
         Each successful call to fn_ext_searchlist_next()  returns  a
         name  and,  optionally,  its  reference  in returned_ref and
         requested attributes in returned_attrs. status is set in the
         following way:
    
         FN_SUCCESS
               All requested attributes  were  returned  successfully
               with the name.
    
         FN_E_ATTR_NO_PERMISSION
               The caller did not have permission to read one or more
               of the requested attributes.
    
         FN_E_INVALID_ATTR_IDENTIFIER
               A requested attribute identifier was not in  a  format
               acceptable  to the naming system, or its contents were
               not valid for the format specified.
    
         FN_E_NO_SUCH_ATTRIBUTE
               The named object did not have  one  of  the  requested
               attributes.
    
         FN_E_INSUFFICIENT_RESOURCES
               Insufficient resources are available to return all the
               requested attributes and their values.
    
         FN_E_ATTR_NO_PERMISSION
    
         FN_E_INVALID_ATTR_IDENTIFIER
    
         FN_E_NO_SUCH_ATTRIBUTE
    
         FN_E_INSUFFICIENT_RESOURCES
               These indicate that some of the  requested  attributes
               may  have  been  returned in returned_attrs but one or
               more   of   them   could   not   be   returned.    Use
               fn_attr_get(3XFN)  or  fn_attr_multi_get(3XFN) to dis-
               cover why these attributes could not be returned.
    
         If fn_ext_searchlist_next() returns a name, it can be called
         again to get the next name in the enumeration.
    
         fn_ext_searchlist_next() returns a NULL pointer if  no  more
         names can be returned. status is set in the following way:
    
         FN_SUCCESS
               The search has completed successfully.
    
         FN_E_PARTIAL_RESULT
               The enumeration is not yet complete but cannot be con-
               tinued.
    
         FN_E_ATTR_NO_PERMISSION
               The caller did not have permission to read one or more
               of the attributes specified in the filter.
    
         FN_E_INVALID_ENUM_HANDLE
               The supplied enumeration handle was not valid.  Possi-
               ble  reasons could be that the handle was from another
               enumeration, or the context being enumerated no longer
               accepts  the  handle  (due  to  such  events as handle
               expiration or updates to the context).
    
         Other  status   codes   are   possible   as   described   in
         FN_status_t(3XFN) and xfn_status_codes(3XFN).
    
    USAGE
         The search performed by fn_attr_ext_search() is not  ordered
         in  any  way,  including  the  traversal of subcontexts. The
         names  enumerated  using  fn_ext_searchlist_next()  are  not
         ordered  in any way. Furthermore, there is no guarantee that
         any two series of enumerations with the  same  arguments  to
         fn_attr_ext_search()  will  return  the  names  in  the same
         order.
    
         XFN links encountered during the resolution of name are fol-
         lowed,  regardless  of the follow links control setting, and
         the search starts at the final named object or context.
    
         If control specifies that the search  should  follow  links,
         XFN  link  names  encountered during the search are followed
         and the terminal named object is searched. If  the  terminal
         named  object  is  bound  to  a context and the scope of the
         search includes subcontexts, that context  and  its  subcon-
         texts  are  also searched. For example, if aname is bound to
         an XFN link, lname, in a context within  the  scope  of  the
         search,  and  aname is returned by fn_ext_searchlist_next(),
         this means that the object identified by lname satisfied the
         filter  expression.  aname  is  returned  instead  of  lname
         because aname can always be named relative to  the  starting
         context for the search.
    
         If control specifies  that  the  search  should  not  follow
         links, the attributes associated with the names of XFN links
         are searched. For example, if aname is bound to an XFN link,
         lname,  in  a  context  within  the scope of the search, and
         aname is returned by  fn_ext_searchlist_next(),  this  means
         that  the  object  identified  by aname satisfied the filter
         expression.
    
         When following XFN links,  fn_attr_ext_search()  may  search
         contexts  outside  of scope. In addition, if the link name's
         terminal atomic name is bound in a context within scope, the
         operation may return the same object more than once.
    
         XFN does not specify how control affects  the  following  of
         native naming system links during the search.
    
    EXAMPLES
         Example  1:  A  sample  program  of   displaying   how   the
         fn_attr_ext_search() operation may be used.
    
         The   following   code   fragment   illustrates   how    the
         fn_attr_ext_search()  operation  may  be used. The code con-
         sists of three  parts:   preparing  the  arguments  for  the
         search, performing the search, and cleaning up.
    
         The first part involves getting the name of the  context  to
         start  the  search  and  constructing the search filter that
         named objects in the context must satisfy. This is  done  in
         the  declarations  part  of  the  code  and  by  the routine
         get_search_query.  See  FN_search_filter_t(3XFN)   for   the
         description of sfilter and the filter creation operation.
    
         The next part involves doing the search and enumerating  the
         results  of the search. This is done by first getting a con-
         text handle to the Initial Context, and  then  passing  that
         handle  along with the name of the target context and search
         filter to  fn_attr_ext_search().  This  particular  call  to
         fn_attr_ext_search() uses the default search control options
         (by passing in 0 as the control argument). This  means  that
         the  search  will  be  performed  in  the  context  named by
         target_name and that no  reference  or  attributes  will  be
         returned. In addition, any XFN links encountered will not be
         followed and all  named  objects  that  satisfy  the  search
         filter will be returned (that is,
          no limit). If successful, fn_attr_ext_search() returns esl,
         a  handle  for  enumerating  the  results of the search. The
         results  of  the  search  are  enumerated  using  calls   to
         fn_ext_searchlist_next(),  which  returns  the  name  of the
         object. (The arguments returned_ref  and  returned_attrs  to
         fn_ext_searchlist_next()  are  0  because the default search
         control used i  fn_attr_ext_search() did not request them to
         be returned.)
    
         The last part of the code involves cleaning up the resources
         used   during  the  search  and  enumeration.  The  call  to
         fn_ext_searchlist_destroy() releases resources reserved  for
         this  enumeration.  The other calls release the context han-
         dle, name, filter, and status objects created earlier.
    
         /* Declarations */
         FN_ctx_t *ctx;
         FN_ext_searchlist_t *esl;
         FN_composite_name_t *name;
         FN_status_t *status = fn_status_create();
         FN_composite_name_t *target_name = get_name_from_user_input();
         FN_search_filter_t *sfilter = get_search_query();
         /* Get context handle to Initial Context */
         ctx = fn_ctx_handle_from_initial(status);
         /* error checking on 'status' */
         /* Initiate search */
         if ((esl=fn_attr_ext_search(ctx, target_name,
              /* default controls */ 0, sfilter, status)) == 0) {
              /* report 'status', cleanup, and exit */
         }
         /* Enumerate names requested */
         while (name=fn_ext_searchlist_next(esl, 0, 0, status)) {
              /* do something with 'name' */
              fn_composite_destroy(name);
         }
         /* check 'status' for reason for end of enumeration */
         /* Clean up */
         fn_ext_searchlist_destroy(esl);
         fn_search_filter_destroy(sfilter);
         fn_ctx_handle_destroy(ctx);
         fn_composite_name_destroy(target_name);
         fn_status_destroy(status);
         /*
         * Procedure for constructing the filter object for search:
         *    "age" attribute is greater than or equal to 17 AND
         *         less than or equal to 25
         *    AND the "student" attribute is present.
         */
         FN_search_filter_t *
         get_search_query()
         {
              extern FN_attribute_t *attr_age;
              extern FN_attribute_t *attr_student;
              FN_search_filter_t *sfilter;
              unsigned int filter_status;
              sfilter = fn_search_filter_create(
                   &filter_status,
                   "(%a >= 17) and (%a <= 25) and %a",
                   attr_age, attr_age, attr_student);
              /* error checking on 'filter_status' */
              return (sfilter);
         }
    
    ATTRIBUTES
         See attributes(5) for descriptions of the  following  attri-
         butes:
    
         ____________________________________________________________
        |       ATTRIBUTE TYPE        |       ATTRIBUTE VALUE       |
        |_____________________________|_____________________________|
        | MT-Level                    | MT-Safe                     |
        |_____________________________|_____________________________|
    
    
    SEE ALSO
         FN_attrset_t(3XFN),               FN_composite_name_t(3XFN),
         FN_ctx_t(3XFN),  FN_ref_t(3XFN),  FN_search_control_t(3XFN),
         FN_search_filter_t(3XFN),                 FN_status_t(3XFN),
         fn_attr_get(3XFN),                  fn_attr_multi_get(3XFN),
         xfn_status_codes(3XFN), attributes(5)
    
    
    
    


    Поиск по тексту MAN-ов: 




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру