internal BasicMonthOfYearDateTimeField(BasicCalendarSystem calendarSystem, int leapMonth)
     : base(DateTimeFieldType.MonthOfYear, new BasicMonthDurationField(calendarSystem))
 {
     this.calendarSystem = calendarSystem;
     max = calendarSystem.GetMaxMonth();
     this.leapMonth = leapMonth;
     durationField = new BasicMonthDurationField(calendarSystem);
 }
Ejemplo n.º 2
0
 protected DateTimeField(DateTimeFieldType fieldType, DurationField durationField,
     bool isLenient, bool isSupported)
 {
     this.fieldType = Preconditions.CheckNotNull(fieldType, "fieldType");
     this.durationField = Preconditions.CheckNotNull(durationField, "durationField");
     this.isLenient = isLenient;
     this.isSupported = isSupported;
 }
Ejemplo n.º 3
0
        internal RemainderDateTimeField(DateTimeField field, DateTimeFieldType fieldType, int divisor) : base(field, fieldType)
        {
            if (divisor < 2)
            {
                throw new ArgumentOutOfRangeException("divisor", "The divisor must be at least 2");
            }

            remainderRangeField = new ScaledDurationField(field.DurationField, fieldType.RangeDurationFieldType.Value, divisor);
            this.divisor = divisor;
        }
Ejemplo n.º 4
0
 protected DecoratedDateTimeField(DateTimeField wrappedField, DateTimeFieldType fieldType, DurationField durationField)
     : base(fieldType, durationField, Preconditions.CheckNotNull(wrappedField, "wrappedField").IsLenient, true)
 {
     // Already checked for nullity by now
     if (!wrappedField.IsSupported)
     {
         throw new ArgumentException("The wrapped field must be supported");
     }
     this.wrappedField = wrappedField;
 }
Ejemplo n.º 5
0
 internal ScaledDurationField(DurationField wrappedField, DurationFieldType fieldType, int scale)
     : base(fieldType, Preconditions.CheckNotNull(wrappedField, "wrappedField").UnitTicks * scale, wrappedField.IsPrecise, true)
 {
     if (!wrappedField.IsSupported)
     {
         throw new ArgumentException("Wrapped field must be supported", "wrappedField");
     }
     if (scale == 0 || scale == 1)
     {
         throw new ArgumentOutOfRangeException("scale", "The scale must not be 0 or 1");
     }
     this.scale = scale;
     this.wrappedField = wrappedField;
 }
        protected PreciseDurationDateTimeField(DateTimeFieldType fieldType, DurationField unitField)
            : base(fieldType, unitField)
        {
            if (!unitField.IsPrecise)
            {
                throw new ArgumentException("Unit duration field must be precise");
            }

            unitTicks = unitField.UnitTicks;
            if (unitTicks < 1)
            {
                throw new ArgumentException("The unit ticks must be at least one");
            }
        }
Ejemplo n.º 7
0
 internal PreciseDateTimeField(DateTimeFieldType type, DurationField unit, DurationField rangeField) : base(type, unit)
 {
     if (rangeField == null)
     {
         throw new ArgumentNullException("rangeField");
     }
     if (!rangeField.IsPrecise)
     {
         throw new ArgumentException("Range duration field must be precise");
     }
     effectiveRange = rangeField.UnitTicks / unit.UnitTicks;
     if (effectiveRange < 2)
     {
         throw new ArgumentException("The effective range must be at least 2.");
     }
     this.rangeField = rangeField;
 }
 /// <summary>
 /// Returns an instance for the specified field type and duration field.
 /// The returned value is cached.
 /// TODO: Potentially use ReaderWriterLockSlim? Assess performance of caching in the first place...
 /// </summary>
 public static UnsupportedDateTimeField GetInstance(DateTimeFieldType fieldType, DurationField durationField)
 {
     if (fieldType == null)
     {
         throw new ArgumentNullException("fieldType");
     }
     if (durationField == null)
     {
         throw new ArgumentNullException("durationField");
     }
     lock (cacheLock)
     {
         UnsupportedDateTimeField cached = cache[fieldType.Ordinal];
         if (cached == null || !ReferenceEquals(cached.DurationField, durationField))
         {
             cached = new UnsupportedDateTimeField(fieldType, durationField);
             cache[fieldType.Ordinal] = cached;
         }
         return cached;
     }
 }
 internal BasicWeekOfWeekYearDateTimeField(BasicCalendarSystem calendarSystem, DurationField weeks) : base(DateTimeFieldType.WeekOfWeekYear, weeks)
 {
     this.calendarSystem = calendarSystem;
 }
 internal StubPreciseDurationDateTimeField(DurationField unit) : base(DateTimeFieldType.SecondOfMinute, unit)
 {
 }
Ejemplo n.º 11
0
 internal RemainderDateTimeField(DividedDateTimeField dividedField, DateTimeFieldType fieldType) : base(dividedField.WrappedField, fieldType)
 {
     divisor = dividedField.Divisor;
     remainderRangeField = dividedField.DurationField;
 }
Ejemplo n.º 12
0
 protected DateTimeField(DateTimeFieldType fieldType, DurationField durationField)
     : this(fieldType, durationField, false, true)
 {
 }
 internal BasicDayOfMonthDateTimeField(BasicCalendarSystem calendarSystem, DurationField days) : base(DateTimeFieldType.DayOfMonth, days)
 {
     this.calendarSystem = calendarSystem;
 }
 private UnsupportedDateTimeField(DateTimeFieldType fieldType, DurationField durationField) : base(fieldType, durationField, false, false)
 {
 }
Ejemplo n.º 15
0
 // TODO(jon): Do we *really* need this?
 public int CompareTo(DurationField other)
 {
     return UnitTicks.CompareTo(other.UnitTicks);
 }
Ejemplo n.º 16
0
 internal BasicYearDateTimeField(BasicCalendarSystem calendarSystem)
     : base(DateTimeFieldType.Year, new BasicYearDurationField(calendarSystem))
 {
     this.calendarSystem = calendarSystem;
     durationField = new BasicYearDurationField(calendarSystem);
 }
 internal GJDayOfWeekDateTimeField(BasicCalendarSystem calendarSystem, DurationField days) : base(DateTimeFieldType.DayOfWeek, days)
 {
     this.calendarSystem = calendarSystem;
 }
Ejemplo n.º 18
0
        private FieldSet(Builder builder)
        {
            ticks = builder.Ticks ?? UnsupportedDurationField.Ticks;
            milliseconds = builder.Milliseconds ?? UnsupportedDurationField.Milliseconds;
            seconds = builder.Seconds ?? UnsupportedDurationField.Seconds;
            minutes = builder.Minutes ?? UnsupportedDurationField.Minutes;
            hours = builder.Hours ?? UnsupportedDurationField.Hours;
            halfDays = builder.HalfDays ?? UnsupportedDurationField.HalfDays;
            days = builder.Days ?? UnsupportedDurationField.Days;
            weeks = builder.Weeks ?? UnsupportedDurationField.Weeks;
            weekYears = builder.WeekYears ?? UnsupportedDurationField.WeekYears;
            months = builder.Months ?? UnsupportedDurationField.Months;
            years = builder.Years ?? UnsupportedDurationField.Years;
            centuries = builder.Centuries ?? UnsupportedDurationField.Centuries;
            eras = builder.Eras ?? UnsupportedDurationField.Eras;

            tickOfSecond = builder.TickOfSecond ?? UnsupportedDateTimeField.GetInstance(DateTimeFieldType.TickOfSecond, ticks);
            tickOfMillisecond = builder.TickOfMillisecond ?? UnsupportedDateTimeField.GetInstance(DateTimeFieldType.TickOfMillisecond, ticks);
            tickOfDay = builder.TickOfDay ?? UnsupportedDateTimeField.GetInstance(DateTimeFieldType.TickOfDay, ticks);
            millisecondOfSecond = builder.MillisecondOfSecond ?? UnsupportedDateTimeField.GetInstance(DateTimeFieldType.MillisecondOfSecond, milliseconds);
            millisecondOfDay = builder.MillisecondOfDay ?? UnsupportedDateTimeField.GetInstance(DateTimeFieldType.MillisecondOfDay, milliseconds);
            secondOfMinute = builder.SecondOfMinute ?? UnsupportedDateTimeField.GetInstance(DateTimeFieldType.SecondOfMinute, seconds);
            secondOfDay = builder.SecondOfDay ?? UnsupportedDateTimeField.GetInstance(DateTimeFieldType.SecondOfDay, seconds);
            minuteOfHour = builder.MinuteOfHour ?? UnsupportedDateTimeField.GetInstance(DateTimeFieldType.MinuteOfHour, minutes);
            minuteOfDay = builder.MinuteOfDay ?? UnsupportedDateTimeField.GetInstance(DateTimeFieldType.MinuteOfDay, minutes);
            hourOfDay = builder.HourOfDay ?? UnsupportedDateTimeField.GetInstance(DateTimeFieldType.HourOfDay, hours);
            clockHourOfDay = builder.ClockHourOfDay ?? UnsupportedDateTimeField.GetInstance(DateTimeFieldType.ClockHourOfDay, hours);
            hourOfHalfDay = builder.HourOfHalfDay ?? UnsupportedDateTimeField.GetInstance(DateTimeFieldType.HourOfHalfDay, hours);
            clockHourOfHalfDay = builder.ClockHourOfHalfDay ?? UnsupportedDateTimeField.GetInstance(DateTimeFieldType.ClockHourOfHalfDay, hours);
            halfDayOfDay = builder.HalfDayOfDay ?? UnsupportedDateTimeField.GetInstance(DateTimeFieldType.HalfDayOfDay, halfDays);
            dayOfWeek = builder.DayOfWeek ?? UnsupportedDateTimeField.GetInstance(DateTimeFieldType.DayOfWeek, days);
            dayOfMonth = builder.DayOfMonth ?? UnsupportedDateTimeField.GetInstance(DateTimeFieldType.DayOfMonth, days);
            dayOfYear = builder.DayOfYear ?? UnsupportedDateTimeField.GetInstance(DateTimeFieldType.DayOfYear, days);
            weekOfWeekYear = builder.WeekOfWeekYear ?? UnsupportedDateTimeField.GetInstance(DateTimeFieldType.WeekOfWeekYear, weeks);
            weekYear = builder.WeekYear ?? UnsupportedDateTimeField.GetInstance(DateTimeFieldType.WeekYear, years);
            weekYearOfCentury = builder.WeekYearOfCentury ?? UnsupportedDateTimeField.GetInstance(DateTimeFieldType.WeekYearOfCentury, weekYears);
            monthOfYear = builder.MonthOfYear ?? UnsupportedDateTimeField.GetInstance(DateTimeFieldType.MonthOfYear, months);
            year = builder.Year ?? UnsupportedDateTimeField.GetInstance(DateTimeFieldType.Year, years);
            yearOfCentury = builder.YearOfCentury ?? UnsupportedDateTimeField.GetInstance(DateTimeFieldType.YearOfCentury, years);
            yearOfEra = builder.YearOfEra ?? UnsupportedDateTimeField.GetInstance(DateTimeFieldType.YearOfEra, years);
            centruryOfEra = builder.CenturyOfEra ?? UnsupportedDateTimeField.GetInstance(DateTimeFieldType.CenturyOfEra, centuries);
            era = builder.Era ?? UnsupportedDateTimeField.GetInstance(DateTimeFieldType.Era, eras);
        }