Changeset 797:90f3f79caa87 in livinglogic.java.ul4

Show
Ignore:
Timestamp:
02/17/13 13:43:06 (7 years ago)
Author:
Walter Doerwald <walter@…>
Branch:
default
Message:

Support timedelta/timedelta, monthdelta/monthdelta and monthdelta//monthdelta.

Add methods days, seconds, microseconds and months.

Location:
src/main/java/com/livinglogic/ul4
Files:
4 added
5 modified

Legend:

Unmodified
Added
Removed
  • src/main/java/com/livinglogic/ul4/CallMeth.java

    r796 r797  
    6161            "weekday", new MethodWeekday(), 
    6262            "yearday", new MethodYearday(), 
     63            "days", new MethodDays(), 
     64            "seconds", new MethodSeconds(), 
     65            "microseconds", new MethodMicroseconds(), 
     66            "months", new MethodMonths(), 
    6367            "render", new MethodRender(), 
    6468            "renders", new MethodRenderS(), 
  • src/main/java/com/livinglogic/ul4/FloorDiv.java

    r796 r797  
    171171            else if (arg2 instanceof Long) 
    172172                return ((MonthDelta)arg1).floordiv(Utils.toLong(arg2)); 
     173            else if (arg2 instanceof MonthDelta) 
     174                return ((MonthDelta)arg1).floordiv((MonthDelta)arg2); 
    173175        } 
    174176        throw new ArgumentTypeMismatchException("{} // {}", arg1, arg2); 
  • src/main/java/com/livinglogic/ul4/MonthDelta.java

    r757 r797  
    101101    } 
    102102 
     103    public double truediv(MonthDelta divisor) 
     104    { 
     105        return (double)months/divisor.getMonths(); 
     106    } 
     107 
     108    public int floordiv(MonthDelta divisor) 
     109    { 
     110        return months/divisor.getMonths(); 
     111    } 
     112 
    103113    public boolean boolUL4() 
    104114    { 
  • src/main/java/com/livinglogic/ul4/TimeDelta.java

    r757 r797  
    106106    } 
    107107 
    108  
    109108    public TimeDelta add(TimeDelta other) 
    110109    { 
     
    202201            microseconds/divisor 
    203202        ); 
     203    } 
     204 
     205    public double truediv(TimeDelta divisor) 
     206    { 
     207        double myValue = days; 
     208        double divisorValue = divisor.getDays(); 
     209        boolean hasSeconds = seconds != 0 || divisor.getSeconds() != 0; 
     210        boolean hasMicroseconds = microseconds != 0 || divisor.getMicroseconds() != 0; 
     211        if (hasSeconds || hasMicroseconds) 
     212        { 
     213            myValue = myValue*86400+seconds; 
     214            divisorValue = divisorValue*86400 + divisor.getSeconds(); 
     215            if (hasMicroseconds) 
     216            { 
     217                myValue = myValue * 1000000 + microseconds; 
     218                divisorValue = divisorValue * 1000000 + divisor.getMicroseconds(); 
     219            } 
     220        } 
     221        return myValue/divisorValue; 
    204222    } 
    205223 
  • src/main/java/com/livinglogic/ul4/TrueDiv.java

    r796 r797  
    7979            else if (arg2 instanceof Double) 
    8080                return ((TimeDelta)arg1).truediv(Utils.toDouble(arg2)); 
     81            else if (arg2 instanceof TimeDelta) 
     82                return ((TimeDelta)arg1).truediv((TimeDelta)arg2); 
     83        } 
     84        else if (arg1 instanceof MonthDelta) 
     85        { 
     86            if (arg2 instanceof MonthDelta) 
     87                return ((MonthDelta)arg1).truediv((MonthDelta)arg2); 
    8188        } 
    8289        throw new ArgumentTypeMismatchException("{} / {}", arg1, arg2);