pike.git / lib / modules / Array.pmod

version» Context lines:

pike.git/lib/modules/Array.pmod:534:    sscanf(a,"%[^ \t]%*[ \t](%*[^)])%*[ \t]%s",a,a0);    sscanf(b,"%[^ \t]%*[ \t](%*[^)])%*[ \t]%s",b,b0);    if (a>b) return 1;    if (a<b) return 0;    if (a0==b0) return 0;    return lyskom_sort_func(a0,b0);   }      //! Flatten a multi-dimensional array to a one-dimensional array.   //! @note - //! There is no safeguard against flattening a cyclic array; - //! trying to do so may result in an infinite loop. - array flatten(array a) + //! Prior to Pike 7.5.7 it was not safe to call this function + //! with cyclic data-structures. + array flatten(array a, mapping|void state)   { -  array ret=({}); -  foreach(a, mixed b) ret+=arrayp(b)?flatten([array]b):({b}); -  return ret; +  if (state && state[a]) return state[a]; +  if (!state) state = ([a:({})]); +  else state[a] = ({}); +  foreach(a, mixed b) state[a]+=arrayp(b)?flatten([array]b, state):({b}); +  return state[a];   }      //! Sum the elements of an array using `+   mixed sum(array a)   {    if(a==({})) return 0;    // 1000 is a safe stack limit    if (sizeof(a)<1000)    return `+(@a);    else