pike.git / src / builtin_functions.c

version» Context lines:

pike.git/src/builtin_functions.c:870:   {    pop_n_elems(args);    push_int(Pike_fp ? Pike_fp->args : 0);   }      /*! @decl int search(string haystack, string|int needle, int|void start)    *! @decl int search(array haystack, mixed needle, int|void start)    *! @decl mixed search(mapping haystack, mixed needle, mixed|void start)    *! @decl mixed search(object haystack, mixed needle, mixed|void start)    *! -  *! Search for @[needle] in @[haystack]. Return the position of @[needle] in -  *! @[haystack] or @expr{-1@} if not found. +  *! Search for @[needle] in @[haystack].    *! -  *! If the optional argument @[start] is present search is started at -  *! this position. -  *! -  *! @mixed haystack +  *! @param haystack +  *! Item to search in. This can be one of: +  *! @mixed    *! @type string    *! When @[haystack] is a string @[needle] must be a string or an int,    *! and the first occurrence of the string or int is returned.    *!    *! @type array    *! When @[haystack] is an array, @[needle] is compared only to    *! one value at a time in @[haystack].    *!    *! @type mapping    *! When @[haystack] is a mapping, @[search()] tries to find the index    *! connected to the data @[needle]. That is, it tries to lookup the -  *! mapping backwards. If @[needle] isn't present in the mapping, zero -  *! is returned, and zero_type() will return 1 for this zero. +  *! mapping backwards.    *!    *! @type object    *! When @[haystack] is an object implementing @[lfun::_search()], -  *! the result of calling @[lfun::_search()] with @[needle] will -  *! be returned. +  *! the result of calling @[lfun::_search()] with @[needle] and @[start] +  *! will be returned.    *!    *! If @[haystack] is an object that doesn't implement @[lfun::_search()]    *! it is assumed to be an @[Iterator], and implement    *! @[Iterator()->index()], @[Iterator()->value()], and    *! @[Iterator()->next()]. @[search()] will then start comparing    *! elements with @[`==()] until a match with @[needle] is found.    *! If @[needle] is found @[haystack] will be advanced to the element,    *! and the iterator index will be returned. If @[needle] is not -  *! found, @[haystack] will be advanced to the end (and will thus -  *! evaluate to false), and a zero with zero_type 1 will be returned. +  *! found, @[haystack] will be advanced to the end.    *! @endmixed    *! -  +  *! @param start +  *! If the optional argument @[start] is present search is started at +  *! this position. +  *! +  *! @returns +  *! Returns the position of @[needle] in @[haystack] if found. +  *! +  *! If not found the returned value depends on the type of @[haystack]: +  *! @mixed +  *! @type string|array +  *! @expr{-1@}. +  *! @type mapping|object(Iterator) +  *! @[UNDEFINED]. +  *! @type object +  *! The value returned by @[lfun::_search()]. +  *! @endmixed +  *!    *! @note    *! If @[start] is supplied to an iterator object without an    *! @[lfun::_search()], @[haystack] will need to implement    *! @[Iterator()->set_index()].    *!    *! @note    *! For mappings and object @[UNDEFINED] will be returned when not found.    *! In all other cases @expr{-1@} will be returned when not found.    *!    *! @seealso