/* * Copyright (c) 2022, Luke Wilde * Copyright (c) 2022, Andreas Kling * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include namespace Web::DOM { // NOTE: We must use GCP instead of NNGCP here, otherwise the generated code cannot default initialize this struct. // They will never be null, as they are marked as required and non-null in the dictionary. struct StaticRangeInit { JS::GCPtr start_container; u32 start_offset { 0 }; JS::GCPtr end_container; u32 end_offset { 0 }; }; class StaticRange final : public AbstractRange { WEB_PLATFORM_OBJECT(StaticRange, AbstractRange); public: static WebIDL::ExceptionOr> construct_impl(JS::Realm&, StaticRangeInit& init); StaticRange(Node& start_container, u32 start_offset, Node& end_container, u32 end_offset); virtual ~StaticRange() override; virtual JS::ThrowCompletionOr initialize(JS::Realm&) override; }; }