Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

LibWeb: Redefine WebIDL types in terms of Infra spec #2566

Merged
merged 1 commit into from
Dec 5, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 54 additions & 0 deletions Libraries/LibWeb/Infra/Types.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
/*
* Copyright (c) 2024, Sam Atkins <[email protected]>
*
* SPDX-License-Identifier: BSD-2-Clause
*/

#pragma once

#include <AK/Types.h>
#include <AK/UFixedBigInt.h>

namespace Web::Infra {

// https://infra.spec.whatwg.org/#booleans
// A boolean is either true or false.
using Boolean = bool;

// https://infra.spec.whatwg.org/#8-bit-unsigned-integer
// An 8-bit unsigned integer is an integer in the range 0 to 255 (0 to 2^8 − 1), inclusive.
using Unsigned8BitInteger = u8;

// https://infra.spec.whatwg.org/#16-bit-unsigned-integer
// A 16-bit unsigned integer is an integer in the range 0 to 65535 (0 to 2^16 − 1), inclusive.
using Unsigned16BitInteger = u16;

// https://infra.spec.whatwg.org/#32-bit-unsigned-integer
// A 32-bit unsigned integer is an integer in the range 0 to 4294967295 (0 to 2^32 − 1), inclusive.
using Unsigned32BitInteger = u32;

// https://infra.spec.whatwg.org/#64-bit-unsigned-integer
// A 64-bit unsigned integer is an integer in the range 0 to 18446744073709551615 (0 to 2^64 − 1), inclusive.
using Unsigned64BitInteger = u64;

// https://infra.spec.whatwg.org/#128-bit-unsigned-integer
// A 128-bit unsigned integer is an integer in the range 0 to 340282366920938463463374607431768211455 (0 to 2^128 − 1), inclusive.
using Unsigned128BitInteger = u128;

// https://infra.spec.whatwg.org/#8-bit-signed-integer
// An 8-bit signed integer is an integer in the range −128 to 127 (−2^7 to 2^7 − 1), inclusive.
using Signed8BitInteger = i8;

// https://infra.spec.whatwg.org/#16-bit-signed-integer
// A 16-bit signed integer is an integer in the range −32768 to 32767 (−2^15 to 2^15 − 1), inclusive.
using Signed16BitInteger = i16;

// https://infra.spec.whatwg.org/#32-bit-signed-integer
// A 32-bit signed integer is an integer in the range −2147483648 to 2147483647 (−2^31 to 2^31 − 1), inclusive.
using Signed32BitInteger = i32;

// https://infra.spec.whatwg.org/#64-bit-signed-integer
// A 64-bit signed integer is an integer in the range −9223372036854775808 to 9223372036854775807 (−2^63 to 2^63 − 1), inclusive.
using Signed64BitInteger = i64;

}
38 changes: 21 additions & 17 deletions Libraries/LibWeb/WebIDL/Types.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,41 +6,45 @@

#pragma once

#include <AK/Types.h>
#include <LibWeb/Infra/Types.h>

namespace Web::WebIDL {

// https://webidl.spec.whatwg.org/#idl-boolean
// The boolean type corresponds to booleans.
using Boolean = Infra::Boolean;

// https://webidl.spec.whatwg.org/#idl-byte
// The byte type is a signed integer type that has values in the range [−128, 127].
using Byte = i8;
// The byte type corresponds to 8-bit signed integers.
using Byte = Infra::Signed8BitInteger;

// https://webidl.spec.whatwg.org/#idl-octet
// The octet type is an unsigned integer type that has values in the range [0, 255].
using Octet = u8;
// The octet type corresponds to 8-bit unsigned integers.
using Octet = Infra::Unsigned8BitInteger;

// https://webidl.spec.whatwg.org/#idl-short
// The short type is a signed integer type that has values in the range [−32768, 32767].
using Short = i16;
// The short type corresponds to 16-bit signed integers.
using Short = Infra::Signed16BitInteger;

// https://webidl.spec.whatwg.org/#idl-unsigned-short
// The unsigned short type is an unsigned integer type that has values in the range [0, 65535].
using UnsignedShort = u16;
// The unsigned short type corresponds to 16-bit unsigned integers.
using UnsignedShort = Infra::Unsigned16BitInteger;

// https://webidl.spec.whatwg.org/#idl-long
// The long type is a signed integer type that has values in the range [−2147483648, 2147483647].
using Long = i32;
// The long type corresponds to 32-bit signed integers.
using Long = Infra::Signed32BitInteger;

// https://webidl.spec.whatwg.org/#idl-unsigned-long
// The unsigned long type is an unsigned integer type that has values in the range [0, 4294967295].
using UnsignedLong = u32;
// The unsigned long type corresponds to 32-bit unsigned integers.
using UnsignedLong = Infra::Unsigned32BitInteger;

// https://webidl.spec.whatwg.org/#idl-long-long
// The long long type is a signed integer type that has values in the range [−9223372036854775808, 9223372036854775807].
using LongLong = i64;
// The long long type corresponds to 64-bit signed integers.
using LongLong = Infra::Signed64BitInteger;

// https://webidl.spec.whatwg.org/#idl-unsigned-long-long
// The unsigned long long type is an unsigned integer type that has values in the range [0, 18446744073709551615].
using UnsignedLongLong = u64;
// The unsigned long long type corresponds to 64-bit unsigned integers.
using UnsignedLongLong = Infra::Unsigned64BitInteger;

// https://webidl.spec.whatwg.org/#idl-double
// The double type is a floating point numeric type that corresponds to the set of finite
Expand Down
Loading