blob: 9457e692d02b922ce6de6250885bf4e1057d5831 [file] [log] [blame]
// Copyright 2021 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include 'src/objects/js-temporal-objects.h'
bitfield struct JSTemporalCalendarFlags extends uint31 {
calendar_index: int32: 5 bit;
}
bitfield struct JSTemporalYearMonthDay extends uint31 {
iso_year: int32: 20 bit;
iso_month: int32: 4 bit;
iso_day: int32: 5 bit;
}
bitfield struct JSTemporalHourMinuteSecond extends uint31 {
iso_hour: int32: 5 bit;
iso_minute: int32: 6 bit;
iso_second: int32: 6 bit;
}
bitfield struct JSTemporalSecondParts extends uint31 {
iso_millisecond: int32: 10 bit;
iso_microsecond: int32: 10 bit;
iso_nanosecond: int32: 10 bit;
}
bitfield struct JSTemporalTimeZoneFlags extends uint31 {
is_offset: bool: 1 bit;
offset_milliseconds_or_time_zone_index: int32: 28 bit;
}
bitfield struct JSTemporalTimeZoneSubMilliseconds extends uint31 {
offset_sub_milliseconds: int32: 21 bit;
}
extern class JSTemporalCalendar extends JSObject {
flags: SmiTagged<JSTemporalCalendarFlags>;
}
extern class JSTemporalDuration extends JSObject {
years: Number;
months: Number;
weeks: Number;
days: Number;
hours: Number;
minutes: Number;
seconds: Number;
milliseconds: Number;
microseconds: Number;
nanoseconds: Number;
}
extern class JSTemporalInstant extends JSObject {
nanoseconds: BigInt;
}
extern class JSTemporalPlainDateTime extends JSObject {
year_month_day: SmiTagged<JSTemporalYearMonthDay>;
hour_minute_second: SmiTagged<JSTemporalHourMinuteSecond>;
second_parts: SmiTagged<JSTemporalSecondParts>;
calendar: JSReceiver;
}
extern class JSTemporalPlainDate extends JSObject {
year_month_day: SmiTagged<JSTemporalYearMonthDay>;
calendar: JSReceiver;
}
extern class JSTemporalPlainMonthDay extends JSObject {
year_month_day: SmiTagged<JSTemporalYearMonthDay>;
calendar: JSReceiver;
}
extern class JSTemporalPlainTime extends JSObject {
hour_minute_second: SmiTagged<JSTemporalHourMinuteSecond>;
second_parts: SmiTagged<JSTemporalSecondParts>;
calendar: JSReceiver;
}
extern class JSTemporalPlainYearMonth extends JSObject {
year_month_day: SmiTagged<JSTemporalYearMonthDay>;
calendar: JSReceiver;
}
extern class JSTemporalTimeZone extends JSObject {
flags: SmiTagged<JSTemporalTimeZoneFlags>;
details: SmiTagged<JSTemporalTimeZoneSubMilliseconds>;
}
extern class JSTemporalZonedDateTime extends JSObject {
nanoseconds: BigInt;
time_zone: JSReceiver;
calendar: JSReceiver;
}