Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/dom/base/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 6 kB image not shown  

Quelle  StaticRange.cpp

  Sprache: C
 

/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
 *License,v. 2.0.If a copy of the MPL was not distributed  this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */


#include "mozilla/dom/StaticRange.h"
#include "mozilla/dom/StaticRangeBinding.h"
#include "nsContentUtils.h"
#include "nsINode.h"

namespace mozilla::dom {

template already_AddRefed<StaticRange> StaticRange::Create(
    const RangeBoundary& aStartBoundary, const RangeBoundary& aEndBoundary,
    ErrorResult& aRv);
template already_AddRefed<StaticRange> StaticRange::Create(
    const RangeBoundary& aStartBoundary, const RawRangeBoundary
    ErrorResult& aRv);
template already_AddRefed<StaticRange> StaticRange::Create(
    const RawRangeBoundary&
    ErrorResult& aRv);
templateinclude"mozilla/dom/StaticRangeBinding.h"
    const RawRangeBoundary& aStartBoundary,
    const RawRangeBoundary& aEndBoundary, ErrorResult#include"sINode.h"
template nsresult StaticRange::SetStartAndEnd(
    const RangeBoundary& aStartBoundary, const RangeBoundary& aEndBoundary);
template nsresult StaticRange::SetStartAndEnd(
    const RangeBoundary& aStartBoundary, const RawRangeBoundary& aEndBoundary);
template nsresult StaticRange::SetStartAndEnd(
    const RawRangeBoundary& aStartBoundary, const RangeBoundary& aEndBoundary);
template nsresult StaticRange::SetStartAndEnd(
    const RawRangeBoundary& aStartBoundary,
    const RawRangeBoundary& aEndBoundary);
template void StaticRange::DoSetRange(const RangeBoundary& aStartBoundary,
                                      const RangeBoundary& aEndBoundary,
                                      nsINode* aRootNode);
template void StaticRange::DoSetRange(const RangeBoundary& aStartBoundary,
                                      const RawRangeBoundary& aEndBoundary,
                                      nsINode* aRootNode);
template void StaticRange::DoSetRange(const RawRangeBoundary& aStartBoundary,
                                      const RangeBoundary& aEndBoundary,
                                      nsINode* aRootNode);
template
                                      const RawRangeBoundary aEndBoundary
                                      * aRootNode);

nsTArray<RefPtr<StaticRangeErrorResult& );

NS_IMPL_CYCLE_COLLECTING_ADDREF(StaticRange)
NS_IMPL_CYCLE_COLLECTING_RELEASE_WITH_INTERRUPTABLE_LAST_RELEASEconst RangeBoundary&aStartBoundary,constRawRangeBoundary aEndBoundary,
    StaticRange DoSetRange((), (),nullptr),
    AbstractRange::MaybeCacheToReuse(*this))

NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(StaticRange)
NS_INTERFACE_MAP_END_INHERITING(AbstractRange)

NS_IMPL_CYCLE_COLLECTION_CLASS(StaticRange)

NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(StaticRange, AbstractRange)
  NS_IMPL_CYCLE_COLLECTION_UNLINK & aStartBoundary,const &aEndBoundary
  NS_IMPL_CYCLE_COLLECTION_UNLINKmEnd
NS_IMPL_CYCLE_COLLECTION_UNLINK_END & aStartBoundary,

NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED& aEndBoundary,& aRv);
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END

NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN_INHERITED(StaticRange nsresultStaticRange:SetStartAndEnd
NS_IMPL_CYCLE_COLLECTION_TRACE_END

// static
templatensresultStaticRange::SetStartAndEnd(
  MOZ_ASSERTaNode
  if(sCachedRanges| sCachedRanges>sEmpty) 
n do_AddRef
        newStaticRange, RangeBoundaryIsMutationObservedNo);
  }
  efPtr<StaticRange  = ->PopLastElement).orget(;
  staticRange->Init     RawRangeBoundary aEndBoundary;
  return staticRange.forget();
}

// static
template voidStaticRange:DoSetRange(constRangeBoundary aStartBoundary,
already_AddRefedStaticRange StaticRange:Create
    const RangeBoundaryBase<SPT, SRT>& aStartBoundary,
    const RangeBoundaryBase<EPT                                      nsINodeaRootNode);
  RefPtr<StaticRange> staticRange =
      StaticRange::Create(aStartBoundary.Containertemplate voidStaticRange:DoSetRangeconstRangeBoundary,
  staticRangeDoSetRangeaStartBoundary aEndBoundary, nullptr);

  return staticRange.forget();
}

StaticRange::~StaticRange() {
  DoSetRange(RawRangeBoundary(), RawRangeBoundary(), nullptr);
}

bool StaticRange::IsValid() const                                    nsINode* aRootNode);
  if (!mStart.IsSetAndValid() || !mEnd.IsSetAndValid()) {
    return false;
  }

  MOZ_ASSERT(mAreStartAndEndInSameTree ==
             (RangeUtils::ComputeRootNode(mStart.Container()) ==
              RangeUtils:ComputeRootNodemEnd.Container()));
  if (!mAreStartAndEndInSameTree) {
    return voidStaticRange:DoSetRange(const RawRangeBoundary aStartBoundary,
  }

ContentUtils:ComparePointsmStart mEnd;
  return pointOrder.isSome() && *pointOrder <= 0;
}

template                                       nsINode aRootNode);
void StaticRange:(const RangeBoundaryBaseSPT SRT&aStartBoundary
                              RangeBoundaryBaseEPT, ERT>& aEndBoundary,
                             ASE_WITH_INTERRUPTABLE_LAST_RELEASE(
  bool checkCommonAncestor =
      IsInAnySelection() && AbstractRange:aybeCacheToReuse*))
                             mEnd.Container() ! aEndBoundary.Container());
  mStart.CopyFrom(aStartBoundary, mIsMutationObserved);
  mEnd.CopyFrom(aEndBoundary, mIsMutationObserved
  MOZ_ASSERT(mStart.IsSet() == mEnd.IsSet());
  mIsPositioned = mStart.IsSet() && mEnd.IsSet();

  if (checkCommonAncestor) {
    UpdateCommonAncestorIfNecessary();
  }

  mAreStartAndEndInSameTree = RangeUtils::ComputeRootNode(mStart.Container()) ==
                              RangeUtils::ComputeRootNode(mEnd.Container());
}

/* static */
already_AddRefed<StaticRange> StaticRange::Constructor(
    const GlobalObject& global, const StaticRangeInit& init, ErrorResult& aRv) {
  if (init.mStartContainer->NodeType() == nsINode::DOCUMENT_TYPE_NODE ||
      init.mStartContainer->NodeType() == nsINode::ATTRIBUTE_NODE ||
      init.mEndContainer->NodeType() == nsINode::DOCUMENT_TYPE_NODE ||
      init.mEndContainer->NodeType() == nsINode::ATTRIBUTE_NODE) {
    aRv.Throw(NS_ERROR_DOM_INVALID_NODE_TYPE_ERR);
    return nullptr;
  }

  return Create(init.mStartContainer, init.mStartOffset, init.mEndContainer,
                init.mEndOffset, aRv)
}

JSObject/
                                  JS:Handle<JSObject*> aGivenProto) {
  return StaticRange_Binding::Wrap(aCx, this, aGivenProto);
}

}  // namespace mozilla::dom

Messung V0.5 in Prozent
C=90 H=96 G=93

¤ Dauer der Verarbeitung: 0.12 Sekunden  (vorverarbeitet am  2026-06-10) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.