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

version» Context lines:

pike.git/lib/modules/Calendar.pmod/Time.pmod:101:    rules=default_rules;    create_unixtime_default([int]args[0]);    return;    }    }    rules=default_rules;    if (create_backtry(@args)) return;    ::create(@args);    }    -  static int(0..1) create_backtry(mixed ...args) +  protected int(0..1) create_backtry(mixed ...args)    {    if (sizeof(args)>1 && objectp(args[0]))    {    base=args[0];    rules=base->ruleset();    args=args[1..];    }    if (base)    {    switch (sizeof(args))
pike.git/lib/modules/Calendar.pmod/Time.pmod:139:    return 0;    }       void create_unixtime(int unixtime,int _len)    {    ux=unixtime;    len=_len;    ls=CALUNKNOWN;    }    -  static void create_now(); +  protected void create_now();       void create_julian_day(int|float jd)    {   // 1970-01-01 is julian day 2440588    jd-=2440588;    float fjd=(jd-(int)jd)-0.5;    ls=CALUNKNOWN;    create_unixtime_default(((int)jd)*86400+(int)(fjd*86400));    }   
pike.git/lib/modules/Calendar.pmod/Time.pmod:161:   // needed in ymd   /*static*/ TimeRange make_base()    {    base=Day("unix_r",ux,rules);    if (len) base=base->range(Day("unix_r",ux+len,rules));   // werror("make base -> %O\n",base);    return base;    }      // make local second -  static void make_local() +  protected void make_local()    {    if (!base) make_base();       ls=ux-base->unix_time();    if (rules->timezone->is_dst_timezone)    {    if (utco==CALUNKNOWN)    [utco,tzn]=rules->timezone->tz_ux(ux);    if (utco!=base->utc_offset())    ls+=base->utc_offset()-utco;
pike.git/lib/modules/Calendar.pmod/Time.pmod:289:    {    int m;    if ( (m=to->unix_time()+to->len-unix_time())<0 )    error("Negative range\n");    return Second("timeofday_sd",rules,ux,m,ls,utco)    ->autopromote();    }    return ::range(to);    }    -  static void convert_from(TimeRange other) +  protected void convert_from(TimeRange other)    {    ::convert_from(other);    if (other->is_timeofday)    len=other->len;    else if (other->number_of_seconds)    len=other->number_of_seconds();    else if (other->number_of_days)    len=86400*other->number_of_days(); // chance    else    len=0; // *shrug*
pike.git/lib/modules/Calendar.pmod/Time.pmod:472:    {    int len=number_of_seconds();    if (!n || (n==-1 && !len))    return Second("timeofday",rules,ux,1);    if (n<0) n=len+n;    if (n<0 || n>=len)    error("second not in timerange (second 0..%d exist)\n",len);    return Second("timeofday",rules,ux+n,1)->autopromote();    }    -  static array(TimeRange) get_timeofday(string unit, +  protected array(TimeRange) get_timeofday(string unit,    int start,int step,program p,    int ... range)    {    int from=0,n=::`[]("number_of_"+unit)(),to=n-1;       if (sizeof(range))    if (sizeof(range)<2)    error("Illegal numbers of arguments to "+unit+"()\n");    else    {
pike.git/lib/modules/Calendar.pmod/Time.pmod:1111:    array(cMinute) minutes(int ...range) { return get_units("minutes",@range); }    cMinute minute(void|int n) { return get_unit("minutes",n); }    int number_of_minutes() { return num_units("minutes"); }       array(cSecond) seconds(int ...range) { return get_units("seconds",@range); }    cSecond second(void|int n) { return get_unit("seconds",n); }    int number_of_seconds() { return num_units("seconds"); }      // wrapper methods to calculate units in a supertimerange    -  static array(TimeRange) get_units(string unit,int ... range) +  protected array(TimeRange) get_units(string unit,int ... range)    {    int from=0,to=0x7fffffff,pos=0;    array res=({});    TimeRange last=0;    string ums=unit[..<1]; // no 's'       if (sizeof(range)==2)    [from,to]=range;    else if (sizeof(range)==1)    error("Illegal numbers of arguments to "+unit+"()\n");
pike.git/lib/modules/Calendar.pmod/Time.pmod:1148:    if (l==last) n--;    if (n+pos>from)    res=part[unit](from-pos,to-pos);    pos+=n;    last=l;    }    }    return res;    }    -  static int num_units(string unit) +  protected int num_units(string unit)    {    int pos=0;    TimeRange last=0;    string ums=unit[..<1]; // no 's'       foreach (parts,TimeRange part)    {    int n=part["number_of_"+unit]();    TimeRange l=part[ums]();    if (l==last) n--;    pos+=n;    last=l;    }    return pos;    }    -  static TimeRange get_unit(string unit,int n) +  protected TimeRange get_unit(string unit,int n)    {    array(TimeRange) res=get_units(unit,n,n);    if (sizeof(res)==1) return res[0];    error("not in range ("+unit+" 0..%d exist)\n",    num_units(unit)-1);    }      #define RBASE parts[0]       string format_ext_ymd();
pike.git/lib/modules/Calendar.pmod/Time.pmod:1264:       inherit TimeofDay;       int __hash() { return ux/(60*60); }       void create_unixtime_default(int unixtime)    {    create_unixtime(unixtime,3600);    }    -  static void create_now() +  protected void create_now()    {    create_unixtime(time(),3600);    }    -  static void create_unixtime(int _ux,int _len) +  protected void create_unixtime(int _ux,int _len)    {    ::create_unixtime(_ux,_len);    if (ls==CALUNKNOWN) make_local();    if (ls%3600) ux-=ls%3600,ls=CALUNKNOWN;    }    -  static void create_julian_day(int|float jd) +  protected void create_julian_day(int|float jd)    {    ::create_julian_day(jd);    len=3600;    }    -  static void convert_from(TimeRange other) +  protected void convert_from(TimeRange other)    {    ::convert_from(other);    len-=len%3600;    }       TimeofDay _move(int n,int m)    {    if (m==0 || n==0) return this;    if (m%3600)    return Second("timeofday",rules,ux,len)->_move(n,m);
pike.git/lib/modules/Calendar.pmod/Time.pmod:1371:   class cMinute   {    constant is_minute=1;      //! inherits TimeofDay       inherit TimeofDay;       int __hash() { return ux/60; }    -  static void create_unixtime(int _ux,int _len) +  protected void create_unixtime(int _ux,int _len)    {    ::create_unixtime(_ux,_len);    if (ls==CALUNKNOWN) make_local();    ux-=ls%60;    }       void create_unixtime_default(int unixtime)    {    create_unixtime(unixtime,60);    }    -  static void create_now() +  protected void create_now()    {    create_unixtime(time()/60*60,60);    }       TimeofDay autopromote()    {    if (ls==CALUNKNOWN) make_local();    if (!(ls%3600) && !(len%3600))    return Hour("timeofday_sd",rules,ux,len,ls,utco)->autopromote();    return ::autopromote();    }    -  static void convert_from(TimeRange other) +  protected void convert_from(TimeRange other)    {    ::convert_from(other);    len-=len%60;    }       TimeofDay _move(int n,int m)    {    if (m==0 || n==0) return this;    if (m%60) return Second("timeofday",rules,ux,len)->_move(n,m);    return Minute("timeofday",rules,ux+n*m,len)->autopromote();
pike.git/lib/modules/Calendar.pmod/Time.pmod:1483:       inherit TimeofDay;       int __hash() { return ux; }       void create_unixtime_default(int unixtime)    {    create_unixtime(unixtime,1);    }    -  static void create_now() +  protected void create_now()    {    create_unixtime(time(),1);    }    -  static void create_julian_day(int|float jd) +  protected void create_julian_day(int|float jd)    {    ::create_julian_day(jd);    len=1;    }       TimeofDay autopromote()    {    if (ls==CALUNKNOWN) make_local();    if (!(ls%60) && !(len%60))    return Minute("timeofday",rules,ux,len)->autopromote();
pike.git/lib/modules/Calendar.pmod/Time.pmod:1723:    ux=base->second(args[0],args[1],(int)args[2])->unix_time();    ns=(int)(inano*(args[3]-(int)args[3]));    return 1;    }    break;    }    }    return ::create_backtry(@args);    }    -  static void create_now() +  protected void create_now()    {    ux=time();    ns=(int)(inano*time(ux));    if (ns>=inano) ux+=(ns/inano),ns%=inano;    len=len_s=len_ns=0;    ls=CALUNKNOWN;    }       int unix_time() { return ux; }    float f_unix_time() { return ux+ns*(1.0/inano); }    -  static void create_unixtime(int|float unixtime, +  protected void create_unixtime(int|float unixtime,    void|int|float _len)    {    ux=(int)unixtime;    ns=(int)(inano*(unixtime-(int)unixtime));    len_s=(int)_len;    len_ns=(int)(inano*(_len-(int)_len));    ls=CALUNKNOWN;    }    -  static void create_unixtime_default(int|float unixtime) +  protected void create_unixtime_default(int|float unixtime)    {    create_unixtime(unixtime);    }       float julian_day()    {    return 2440588+(ux+ns*(1.0/inano))*(1/86400.0)+0.5;    }    -  static void create_julian_day(int|float jd) +  protected void create_julian_day(int|float jd)    {   // 1970-01-01 is julian day 2440588    jd-=2440588;    float fjd=((jd-(int)jd)+0.5)*86400;    ux=((int)jd)*86400+(int)(fjd);    ns=(int)(inano*(fjd-(int)fjd));       ls=CALUNKNOWN;    }   
pike.git/lib/modules/Calendar.pmod/Time.pmod:1835:    ->autopromote();    }       TimeRange _add(int n,TimeRange step)    {    if (step->is_timeofday_f)    return _move(n,step->len_s,step->len_ns);    return ::_add(n,step);    }    -  static void convert_from(TimeRange other) +  protected void convert_from(TimeRange other)    {    ::convert_from(other);    if (other->is_timeofday_f)    {    ns=other->ns;    len_s=other->len_s;    len_ns=other->len_ns;    }    }    -  static TimeRange _set_size(int n,TimeRange t) +  protected TimeRange _set_size(int n,TimeRange t)    {    if (t->is_timeofday_f)    return Fraction("timeofday_f",rules,ux,ns,    n*t->len_s,n*t->len_ns)    ->autopromote();       if (t->is_timeofday)    return Fraction("timeofday_f",rules,ux,ns,n*t->len,0)    ->autopromote();