pike.git / lib / modules / Calendar.pmod / Timezone.pmod

version» Context lines:

pike.git/lib/modules/Calendar.pmod/Timezone.pmod:680:    array res=({});       if (!r2[NUL_YEAR]) r2[NUL_YEAR]=({last});       int y=min(@indices(rules));    for (;y<=INF_YEAR; y++)    [r2[y],last]=mkperiods(rules[y],last,first);       res+=    ({TZrules_init+ -  "import __Calendar_mkzone;\n" +     " inherit TZRules;\n"    " array(array(string|int)) jd_year_periods(int jd)\n"    " {\n"    " [int y,int yjd,int leap]=gregorian_yjd(jd);\n"    " switch (y)\n"    " {\n"});       array sr=({});       int mn=min(@indices(rules)-({NUL_YEAR}));
pike.git/lib/modules/Calendar.pmod/Timezone.pmod:935:    }    }       string dump()    {    array(string) res=({});       if (!sizeof(rules))    error("no rules for %O\n",id);    -  res+=({"import __Calendar_mkzone;\n"}); -  +     if (sizeof(rules)==1) // simple zone    {    res+=({"object thezone=",rules[0][4],";\n"});    return res*"";    }       mapping rname=([]);    int n=1;       foreach (rules,array a)
pike.git/lib/modules/Calendar.pmod/Timezone.pmod:1044:    return (master()->master_read_file(base_path+fn) ||    (error("Failed to open file %O\n",base_path+fn), "")) - "\r";    })*"\n";    }       class Dummymodule (function(string:mixed) f)    {    mixed `[](string s) { return f(s); }    }    -  mapping mkzonemod= +  object compile_handler = class { +  mapping(string:mixed) get_default_module() { +  return constants; +  } +  +  mapping constants = all_constants() +    (["TZrules":Dummymodule(find_rule),    "TZRules":TZRules,    "TZHistory":TZHistory,    "Ruleset":Ruleset, -  "ZEROSHIFT":({0,0,0,""})]); +  "ZEROSHIFT":({0,0,0,""}) +  ]);    -  +  }(); +    // #define RTTZC_DEBUG   // #define RTTZC_TIMING       object find_zone(string s)    {   #ifdef RTTZC_DEBUG    werror("Searching for zone %O\n",s);   #endif    if (zone_cache[s]) return zone_cache[s];    if (s=="") return UNDEFINED;
pike.git/lib/modules/Calendar.pmod/Timezone.pmod:1123: Inside #if defined(RTTZC_TIMING)
  #ifdef RTTZC_TIMING    float td=time(t);    werror("dump %O: %O\n",s,td-t2);    float td=time(t);   #endif      #ifdef RTTZC_DEBUG    werror("%s\n",c);   #endif    -  add_constant("__Calendar_mkzone",mkzonemod); +     program p; -  mixed err=catch { p=compile_string(c); }; -  add_constant("__Calendar_mkzone"); +  mixed err=catch { p=compile_string(c, 0, compile_handler); };    if (err)    {    int i=0;    foreach (c/"\n",string line) write("%2d: %s\n",++i,line);    throw(err);    }    object zo=p();    if (zo->thezone) zo=zo->thezone;      #ifdef RTTZC_TIMING
pike.git/lib/modules/Calendar.pmod/Timezone.pmod:1210: Inside #if defined(RTTZC_DEBUG)
     #ifdef RTTZC_DEBUG    werror("%s\n",c);   #endif   #ifdef RTTZC_TIMING    float t2=time(t);    werror("find %O: %O\n",s,t2-t1);    float t2=time(t);   #endif    -  add_constant("__Calendar_mkzone",mkzonemod); +  program p=compile_string(c, 0, compile_handler);    -  program p=compile_string(c); -  +    #ifdef RTTZC_TIMING    float t3=time(t);    werror("compile %O: %O\n",s,t3-t2);   #endif       return rule_cache[s]=p;    }          int main(int ac,array(string) am)