pike.git / lib / master.pike.in

version» Context lines:

pike.git/lib/master.pike.in:1:   /* -*- Pike -*-    * -  * $Id: master.pike.in,v 1.151 2001/09/01 21:25:10 marcus Exp $ +  * $Id: master.pike.in,v 1.152 2001/11/09 14:06:49 mast Exp $    *    * Master-file for Pike.    *    * Based on master.pike 1.67.    */      // Some configurable parameters useful for debugging      #pike __REAL_VERSION__   #define PIKE_AUTORELOAD
pike.git/lib/master.pike.in:740:       mixed `[](string index) { if(module) return module[index]; }    array(string) _indices() { if(module) return indices(module); }    array _values() { if(module) return values(module); }    }       static mixed ind(string index)    {    if(module)    { -  object o; +  mixed o;    if(!zero_type(o=module[index])) return o;    }       if( !files )    files = get_dir(fakeroot(dirname));       int ret;    foreach( files, string s )    {    if( search(s, index)!=-1 || search(index,s)!=-1 )
pike.git/lib/master.pike.in:771:    if(mixed tmp=o->_module_value) o=tmp;    return o;    }    if (program p=cast_to_program( index, 0, handler )) return p;    return UNDEFINED;    }       mixed `[](string index)    {    mixed ret; -  if(!zero_type(ret=cache[index])) -  { -  // The check below is to (hopefully) avoid calling any function -  // in ret (like `! or `==) in case it's an object. -  if(!intp (ret) || ret) return ret; +  if (!zero_type(ret = cache[index])) { +  if (ret != ZERO_TYPE) return ret;    return UNDEFINED;    } -  return cache[index]=ind(index); +  ret = ind(index); +  cache[index] = zero_type(ret) ? ZERO_TYPE : ret; +  return ret;    }       static int _cache_full;    void fill_cache()    {   #ifdef RESOLV_DEBUG    werror(describe_backtrace(({ sprintf("Filling cache in dirnode %O\n",    dirname),    backtrace() })));   #endif /* RESOLV_DEBUG */
pike.git/lib/master.pike.in:824:    "%s\n",    describe_backtrace(err)));    }    }    _cache_full = 1;    }    array(string) _indices()    {    // werror("indices(%O) called\n", dirname);    fill_cache(); -  return indices(filter(cache, lambda(mixed x){ return !intp (x) || x; })); +  return indices(filter(cache, lambda(mixed x) {return cache[x] != ZERO_TYPE;}));    }    array(mixed) _values()    {    // werror("values(%O) called\n", dirname);    fill_cache(); -  return values(cache)-({0}); +  return values(cache) - ({ZERO_TYPE});    }       string _sprintf(int as)    {    return sprintf("master()->dirnode(%O)",dirname);    }      };      static class ZERO_TYPE {};
pike.git/lib/master.pike.in:925:    if (zero_type(cache[index])) {    `[](index);    }    }    }    _cache_full = 1;    }    array(string) _indices()    {    fill_cache(); -  return indices(cache); +  return indices(filter(cache, lambda(mixed x) {return cache[x] != ZERO_TYPE;}));    }    array(mixed) _values()    {    fill_cache(); -  return values(cache); +  return values(cache) - ({ZERO_TYPE});    }   };      // Variables mustn't be static to allow for replace_master().   // /grubba 1998-04-10   mapping(string:mixed) fc=([]);      object findmodule(string fullname, object|void handler)   {    object o;