pike.git / lib / master.pike.in

version» Context lines:

pike.git/lib/master.pike.in:1: - /* $Id: master.pike.in,v 1.32 1998/10/16 17:32:11 grubba Exp $ + /* $Id: master.pike.in,v 1.33 1998/10/16 18:38:32 grubba Exp $    *    * Master-file for Pike.    *    * Based on master.pike 1.67.    */      // Some configurable parameters useful for debugging      // Used by describe_backtrace() et al.   #if !defined(BT_MAX_STRING_LEN) || (BT_MAX_STRING_LEN <= 0)
pike.git/lib/master.pike.in:462:    object|program `[](string index)    {    mixed ret;    if(!zero_type(ret=cache[index]))    {    if(ret) return ret;    return UNDEFINED;    }    return cache[index]=ind(index);    } +  +  int _cache_full; +  void fill_cache() +  { +  if (_cache_full) { +  return; +  } +  +  if (module) { +  foreach(indices(module), string index) { +  cache[index] = module[index]; +  } +  } +  +  foreach(get_dir(dirname), string fname) { +  catch { +  if (((< ".pike", ".pmod" >)[fname[sizeof(fname)-5..]]) && +  !zero_type(`[](fname[..sizeof(fname)-6]))) { +  continue; +  }    }; -  +  catch { +  if ((fname[sizeof(fname)-3..] == ".so") && +  !zero_type(`[](fname[..sizeof(fname)-4]))) { +  continue; +  } +  }; +  } +  _cache_full = 1; +  } +  array(string) _indices() +  { +  fill_cache(); +  return indices(cache); +  } +  array(mixed) _values() +  { +  fill_cache(); +  return values(cache); +  } + };      class joinnode   {    class ZERO_TYPE {};    array(object|mapping) joined_modules;    mapping cache=([]);       void create(array(object|mapping) _joined_modules)    {    joined_modules = _joined_modules;
pike.git/lib/master.pike.in:509:    return UNDEFINED;    }    ret = ind(index);    if (zero_type(ret)) {    cache[index] = ZERO_TYPE;    } else {    cache[index] = ret;    }    return ret;    } +  int _cache_full; +  void fill_cache() +  { +  if (_cache_full) { +  return; +  } +  foreach(joined_modules, object|mapping o) { +  foreach(indices(o), string index) { +  if (zero_type(cache[index])) { +  `[](index); +  } +  } +  } +  _cache_full = 1; +  } +  array(string) _indices() +  { +  fill_cache(); +  return indices(cache); +  } +  array(mixed) _values() +  { +  fill_cache(); +  return values(cache); +  }   };      // Variables mustn't be static to allow for replace_master().   // /grubba 1998-04-10   mapping(string:mixed) fc=([]);      object findmodule(string fullname)   {    mixed *stat;    object o;