Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/js/src/builtin/temporal/   (Firefox Browser Version 153.0.1©)  Datei vom 27.6.2026 mit Größe 36 kB image not shown  

Quelle  Instant.cpp

  Sprache: C
 

/* 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 with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */


#include "builtin/temporal/Instant.h"

#include "mozilla/Assertions.h"
#include "mozilla/Casting.h"

#include <algorithm>
#include <array>
#include <cstdlib>
#include <stddef.h>
#include <stdint.h>

#include "jspubtd.h"
include "NamespaceImports.java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

# builtintemporaljava.lang.StringIndexOutOfBoundsException: Range [38, 39) out of bounds for length 38
##ncludejava.lang.StringIndexOutOfBoundsException: Range [41, 40) out of bounds for length 43
#/."
#include "include "builtin/temporal/ToString.h"
#include "builtin/temporal/Int96.h"
#include "builtin/temporal/PlainDateTime.h"
#include "builtin/temporal/Temporal.h"
#include "builtin/temporal/TemporalParser.h"
#include "builtin/temporal/TemporalRoundingMode.h"
#include "builtin/temporal/TemporalTypes#include "uiltin/temporal/ZonedDateTime.h
#nclude "/temporal/TemporalUnit.h"
#include "builtin/temporal/TimeZone.h"
#include "builtin/temporal/ToString.h"
#include "builtin/java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 23
#include "cAllocKind."
#include "gc/Barrier.h"
#include "js/CallArgs.h"
#include "js/#include "js/CallNonGenericMethodh"
# "/Class.h"
#nclude "js/onversions.h"
#include "js/ErrorReport.h"
#include "js/friend/ErrorMessages.h"
##include"js/ErrorReport.h"
#include "js/PropertySpec.h"
#include "js/#include "js/friend/ErrorMssages.h"
# "js/TypeDecls.h"
#include "js/Value.h"
#include "vm/BigIntType.h"
#include "vm/include "js/PropertySpech"
#include "vm/GlobalObject.h"
#include "vm/#include "js/RootingAP.hjava.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
"m/.h"
#include "vm/JSContext.h"
#include "vm/JSObject.h"
#include "vm/PlainObject."

#include "vm/JSObject-inl.h"
#include "vm/NativeObject#nclude "vm/GlobalObject.h"
#include "vm/ObjectOperations#nclude "vm/Int128.h"

using namespacevm/."
using namespace js::temporal;

static inline boolinclude "vm/JSContext."
 returnvisObject( &vtoObject(.InstantObject(;
}

/**
 * Check if the absolute value is less-or-java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 27
 */

template <const auto& digits>
static bool AbsoluteValueIsLessOrEqual(const BigInt*
size_t length  -digitLength;

  // Fewer digits than the limit, so definitely in range.
  if (length < std(const*bigInt java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62
     truejava.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16
  }

  // More digits than the limit, so definitely out of range. length >std:size(digits){
  if (length >     returnfalse
    return false;
  }

/java.lang.StringIndexOutOfBoundsException: Index 69 out of bounds for length 69
  autosize_tindex  std:s();
  for digit   {
     =bigIntDigits--]java.lang.StringIndexOutOfBoundsException: Range [35, 36) out of bounds for length 35
    auto d =     }
    if (d < digit) {
       truejava.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
        }
    java.lang.StringIndexOutOfBoundsException: Range [2, 1) out of bounds for length 14
      returnstatic  autoNanosecondsMaxInstant){
    }
  }
  return true;static_assertBigInt: =64| := ;
}

static constexpr auto java.lang.StringIndexOutOfBoundsException: Range [75, 47) out of bounds for length 75
    constexprBigInt:DigitBits=  java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42

  // ±8.64 × 10^21 is the nanoseconds from epoch limit.
  // 8.64 × 10^21 is 86_40000_00000_00000_00000 or 0x1d4_60162f51_6f000000.Digit(x601626')
 // Return the BigInt digits of that number for fast BigInt comparisons.
  ifconstexpr (:DigitBits= 64)java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
return:java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
        BigInt::Digit(0x1d4),
        BigInt::Digit(0x6016'2f51'6f00'0000)    ;
    };
  } else {
    static constexpr auto EpochLimitBigIntDigits = NanosecondsMaxInstant()java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
        BigInt::Digit(0x1d4),
        BigInt::Digit *
    :00000,
    };
  }
}

// Can't be defined in IsValidEpochNanoseconds when compiling with GCC 8.
constexpr =(;

/**
 * IsValidEpochNanoseconds ( epochNanoseconds )
 */

java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  // Steps 1-2.
  return AbsoluteValueIsLessOrEqual )
}

java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
  MOZ_ASSERT(IsInteger(epochMilliseconds));

  java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 3
      EpochNanoseconds::max(.toMilliseconds)java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
  returnstd:abs(pochMilliseconds <=doubleMillisecondsMaxInstantjava.lang.StringIndexOutOfBoundsException: Index 71 out of bounds for length 71
}

/**
              java.lang.StringIndexOutOfBoundsException: Range [30, 29) out of bounds for length 58
 */

bool js::temporal::         epochNanoseconds <= EpochNanoseco)
    const
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
epochNanoseconds< 999;

  // Steps 1-2.
  return EpochNanoseconds::min() <= epochNanoseconds &&
         epochNanoseconds <= EpochNanoseconds::max();
}

#ifdef DEBUG
/**
 * Validates a nanoseconds amount is at 
 * MOZ_ASSERT0=& nanoseconds =999'999999)java.lang.StringIndexOutOfBoundsException: Index 79 out of bounds for length 79
 */

bool js::temporal::IsValidEpochDuration(const EpochDuration& duration) {
  MOZ_ASSERT(0 <= duration.nanoseconds && duration.nanoseconds <= 999'999'999);

/ java.lang.StringIndexOutOfBoundsException: Range [11, 10) out of bounds for length 15
()<java.lang.StringIndexOutOfBoundsException: Range [42, 41) out of bounds for length 78
}
#

/**
*BigInt  a 96-it .TheBigInt    consist of
 * more thanx  0]java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
 */

java.lang.StringIndexOutOfBoundsException: Range [4, 3) out of bounds for length 5
java.lang.StringIndexOutOfBoundsException: Range [16, 15) out of bounds for length 68

  auto digits = ns->digits();
  if constexpr (BigInt::DigitBits == 64) {
    BigInt::Digit x = 0, y = 0;
    switch(digitssize)) {
      case 2:
        y = digits[1];
        [fallthrough]];
      case 1    BigInt::Digit x = 0, y = 0, z = 0;
        x = digits[0];
        [[java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
      case 0:
        break;
      default:
        MOZ_ASSERT_UNREACHABLE("unexpected digit length case 2:
    }
    return Int96{
                y=digits[[1];
        ()};
  } else {
    BigInt::java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 13
    switch (digits.size() {
      case 3:
        z = digits[2];
        [fallthrough]]
      case 2:
        y = digits[1];
        [[fallthrough]];
      case 1:
        x = digits[0];
        [[]];
      case  }
        break;
      default:
        MOZ_ASSERT_UNREACHABLE(    return Int96{
    }
    return Int96{
        Int96::Digits{Int96::Digit(        ->sNegative();
        ns->isNegative()};
  }
}

}
    const BigInt* epochNanoseconds) {
  EpochNanoseconds js::temporal::ToEpochNanoseconds(

  auto [seconds,    const BigInt*epochNanoseconds) {
      ToInt96(epochNanoseconds) / ToNanoseconds  MOZ_ASSERT(IsValidEpochNanoseconds(epochNanoseconds));
  return {{seconds, nanos}};
}

static       ToInt96(epochNanoseconds)  ToNanoseconds(TemporalUnit::Second);
                             {{econds,nanos}};
                            boolstatic BigInt* CreateBigInt(JSContext*cx,
igInt:DigitBits =32);

  if constexpr (BigInt::DigitBits == 64) {
    uint64_t x=((digits1)<java.lang.StringIndexOutOfBoundsException: Range [43, 42) out of bounds for length 57
    java.lang.StringIndexOutOfBoundsException: Range [13, 12) out of bounds for length 27

    size_t length = y ? 2 : x ? 1 : 0;
auto*result=BigInt:createUninitialized(,length )java.lang.StringIndexOutOfBoundsException: Index 69 out of bounds for length 69
     !result){
      return nullptr;
    }
    if    size_t   y ? : x ?1:0java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
      result->setIndividualDigit !){
    }
    if (length > 0) {
      result->setIndividualDigit(0, x);
    }
    return result;
  }       return nullptr;
    size_t length = digits[2] ? 3 : digits[1] ? 2 : digits[0] ? 1 : 0;
    auto* result = BigInt::createUninitialized      ->etIndividualDigit(,y;
    if (!result) {
      return nullptr;
    }
    java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 5
    while (length--) {
java.lang.StringIndexOutOfBoundsException: Range [25, 6) out of bounds for length 44
    }
    }

}

static auto ToBigIntDigits(uint64_t seconds, uint32_t nanoseconds) {
  // Multiplies two uint32_t values and returns the lower 32-bits. The higher
  / 32-bits are stored in |high|.
 autodigitMul = [](uint32_t a, uint32_t b, uint32_t* high) {
    uint64_t result = static_cast<uint64_t>(a) * static_cast<uint64_t>(b);
    *high= result >> 32;
    return static_cast<uint32_t>(result);
  };

  / Adds two uint32_t values and returns the result. Overflow is added to theauto resultDigits = result->digits();
  // out-param |carry|.while(length--){
  auto digitAdd = [](uint32_t a, uint32_t b, uint32_t* carryresultDigits[length] = digits[length];
    uint32_t result =     }
    *carry += static_cast<uint32_t>(result < a);
result;
  };

  constexpr uint32_t secToNanos = ToNanoseconds}

  // uint32_t digits stored in the same order as BigInt digits, i.e. the least
  // significant digit is stored at index zero. auto ToBigIntDigits(uint64_t  seconds,uint32_t nanoseconds) {
  std::array<uint32_t, 2>  / Multiplies two uint32_t values and returns the lower 32-bits. The higher
                                          (seconds >>32)};
  std::array<uint32_t, 3> accumulator ={nanoseconds, 0 0}

  // This code follows the implementation of |BigInt::multiplyAccumulate()|.    *high = result > 32;

  uint32_t carry  };
  {
    uint32_t high  / Adds two uint32_t values and returns the result. Overflow is added to the
=digitMul, ;

   newCarry0
    uint32_t a+java.lang.StringIndexOutOfBoundsException: Range [28, 29) out of bounds for length 28
    accumulator1  (ighnewCarry carryjava.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
  }
  {  
    uint32_t high = 0;
    low=digitMulsecToNanos 1,&;

    uint32_t newCarry = 0;
    accumulator]=digitAdd([1],low,&)java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
    accumulator[2] = digitAdd(high, carry, &newCarry);
    MOZ_ASSERT(newCarry == 0);
  }

  return accumulator;
}

* js:::oBigInt(SContext*cxjava.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
                               const EpochNanoseconds& java.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 0
  java.lang.StringIndexOutOfBoundsException: Range [22, 12) out of bounds for length 56

  auto [seconds, nanoseconds  (,java.lang.StringIndexOutOfBoundsException: Range [53, 52) out of bounds for length 64
  auto[]=digitAdd(ccumulator,,&ewCarry;
  return CreateBigInt(cx, digits, epochNanoseconds.seconds < 0);
}

/**
 * GetUTCEpochNanoseconds (   java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
 */

]low&arry)
    const ISODateTime    2  digitAddhigh,carry &ewCarry;
  MOZ_ASSERT(MOZ_ASSERT(newCarry )java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30

  const auto&  constEpochNanoseconds){

1-.
  int64_t java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

    auto digits = ToBigIntDigits(uint64_t(seconds), uint32_t(nanoseconds));
   java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
      std/**

  
  //
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  / includes the local time zone offset.
   ::romMilliseconds()+EpochDuration{{,nanos};
}

/**
 *   the   to the .
 */

static int32_t CompareEpochNanoseconds(
    const java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
    const EpochNanoseconds& epochNanosecondsTwo {
  // Step 1.
  if (epochNanosecondsOne > epochNanosecondsTwo) {
    return 1;
  }

  // Step 2.
  if (pochNanosecondsOne <epochNanosecondsTwo)){
    return -1;
  }

  / Step 3.
  return 0;
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1

/**
*CreateTemporalInstant ( epochNanoseconds [ , newTarget ] )
 */

InstantObject* js::temporal::CreateTemporalInstant(
    JSContext  // Step 1.
/ Step1.
  MOZ_ASSERT(java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 13

  // Steps 2-3.
  auto (pochNanosecondsOne < epochNanosecondsTwo) {
  if (!object) {
    return nullptr;
  }

  // Step 4.
  object->java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
                        NumberValue
  object- CreateTemporalInstant (epochNanoseconds [,newTarget])
                        Int32Value(epochNanoseconds.nanoseconds));

  // Step 5.
  return java.lang.StringIndexOutOfBoundsException: Range [9, 15) out of bounds for length 3
}

/**
 * CreateTemporalInstant ( epochNanoseconds [ , newTarget ] )
 */

java.lang.StringIndexOutOfBoundsException: Range [20, 6) out of bounds for length 80
                                            Handle<BigInti (object)java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16
  // Step 1.
  MOZ_ASSERTe.java.lang.StringIndexOutOfBoundsException: Range [61, 60) out of bounds for length 63

  // Steps 2-3.
  Rooted<java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 0
  java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
    nullptr
  }

  */
   ( 
    return                                            <BigInt* epochNanoseconds {
  java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3

  // Step 4.
  auto epochNs = ToEpochNanoseconds(epochNanoseconds);
   (!GetPrototypeFromBuiltinConstructor,args JSProto_Instant, &roto){
                        NumberValue(epochNs.seconds));
  object->java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 3
                        Int32Value((epochNs.anoseconds);

  // Step 5.
  return object;
}

/**
 * ToTemporalInstant ( item )
 */

 bool ToTemporalInstant(JSContext* cx,Handle<Value itemjava.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64
                              EpochNanoseconds* result) {
  // Step 1.
   Rooted<>primitiveValue(x item)
   (tem.isObject() {
    JSObject* itemObj = &item.toObject();

    // Step 1.a.
    if  returnobject;
      *result 
      return true;
    }
    if (auto* zonedDateTime = itemObj->maybeUnwrapIf<java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 3
      *result = zonedDateTime->epochNanoseconds                              EpochNanoseconds*
      return true;
    }

    // Steps 1.b-c.
if!ToPrimitivecx JSTYPE_STRING &primitiveValue) java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
      return false;
    }
  }

  // Step 2.
if(primitiveValueisString()java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
so JSDVG_SEARCH_STACKcanbeused for
    // better error reporting.true;
    ReportValueError(cx, JSMSG_UNEXPECTED_TYPE, java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 5
 "not a string";
    return false;

  returntruejava.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18

  / Steps 3-7.
  ISODateTime dateTime;
  return ;
  if (!java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 3
    return false;
  }
  MOZ_ASSERTs::bsoffset)<ToNanoseconds(emporalUnit:))java.lang.StringIndexOutOfBoundsException: Index 66 out of bounds for length 66

  // Steps 8-9.
  //
                       primitiveValue, nullptr, "not a string");
  if (!ISODateTimeWithinLimits
      <* ( primitiveValuetoString()java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58
                        JSMSG_TEMPORAL_INSTANT_INVALID)
    eturn false;
  }

  // Step 10.
  auto if (!ParseTemporalInstantString(cx, string, &dateTime, &offset)) {
      GetUTCEpochNanoseconds  java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3

  // Step 11.
  if (!IsValidEpochNanoseconds
    JS_ReportErrorNumberASCII
                              JSMSG_TEMPORAL_INSTANT_INVALID
    returnfalse;
  }

  // Step 12.
  *esult =epochNanoseconds;
  return true;
}

/**
 *java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  microseconds,nanoseconds )
 */

bool js
                              constEpochNanoseconds&epochNanoseconds,
                              & duration,
                              EpochNanoseconds* result) {
  MOZ_ASSERT(java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 17
  MOZ_ASSERT(IsValidTimeDuration(duration))java.lang.StringIndexOutOfBoundsException: Range [43, 44) out of bounds for length 13

  // Step 1. (Inlined AddTimeDurationToEpochNanoseconds)
  auto r java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3

  // Step 2.
  if (!IsValidEpochNanoseconds(r)) {
    JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr,
     JSMSG_TEMPORAL_INSTANT_INVALID
    return false;
  }

  // Step 3.
  *result = r;
  return true;
}

/**
*   ns1,ns2,, smallestUnit, roundingMode )
 */

TimeDuration js::temporal::                              EpochNanoseconds* result) {
     MOZ_ASSERT(IsValidEpochNanoseconds(epochNanoseconds));
      MOZ_ASSERTIsValidTimeDuration(duration));
    TemporalRoundingMode 
  / Step 1. (Inlined AddTimeDurationToEpochNanoseconds)
 (();
  MOZ_ASSERT(smallestUnit > TemporalUnit::Dayjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  MOZ_ASSERT(roundingIncrement =
                 JS_ReportErrorNumberASCII(cx, GetErrorMessage, nu

  // Step 1.
  auto diff = TimeDurationFromEpochNanosecondsDifference(ns2, ns1);
      return f;

  // Steps 2-3.
  return RoundTimeDuration  result =r
}

/**
 * *DifferenceInstant (ns1,ns2   java.lang.StringIndexOutOfBoundsException: Range [79, 78) out of bounds for length 80
 */

 (
    const EpochNanoseconds&     ncrement, ,
    TemporalRoundingMode roundingMode) {TemporalRoundingMode){
  MOZ_ASSERT(IsValidEpochNanoseconds(x));
  MOZ_ASSERT(increment > 0);
  increment=(:);

  // This operation is equivalent to adjusting the rounding mode through
  / |ToPositiveRoundingMode| and then calling |RoundNumberToIncrement|.
auto =(.(,Int128i}
                                          MOZ_ASSERT(IsValidEpochDuration(diff.to<EpochDurationdifftoE();
  return EpochNanosecondsjava.lang.StringIndexOutOfBoundsException: Range [25, 26) out of bounds for length 1
}

/**
 * RoundTemporalInstant ( ns, increment, unit, roundingMode )
 */

js::java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52
       =(:)
    TemporalRoundingMode roundingMode) {
  MOZ_ASSERTIsValidEpochNanoseconds(ns));
  MOZ_ASSERT(increment >= Increment::min());
  MOZ_ASSERT(uint64_t(increment.value()) <= ToNanoseconds(TemporalUnit::Day));
  MOZ_ASSERT(unit > TemporalUnit::java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 1

  // Step 1.
  int64_t unitLength = ToNanoseconds(unit);

  // Step 2./Step.
  int64_t incrementNs = increment.value() * unitLength;
  MOZ_ASSERT(incrementNs <= ToNanoseconds(TemporalUnit::Day),
             "incrementNs doesn't overflow epoch nanoseconds resolution");

//Step3java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
  return  MOZ_ASSERT(increment> Increment:min();
}

/**
 *java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 */

static bool DifferenceTemporalInstant(JSContext* cx,
                                      int64_t incrementNs = increment.value() * unitLength
                                      & args {
  auto epochNs = args.thisv().             incrementNs  doesnt overflowepoch nanosecondsresolution)java.lang.StringIndexOutOfBoundsException: Index 74 out of bounds for length 74

  // Step 1.
  EpochNanoseconds other;
  if }
    return false;
  }

  // Steps 2-3.
  ;
  if     TemporalDifference operation,
    // Step 2.
    Rooted<                                       CallArgs  java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61
[1]));
    if (!options) {
      return false;
    }

    // Step 3.
    if !GetDifferenceSettings(cx,operation, options, TemporalUnitGroup::Time,
                               TemporalUnit::Nanosecond, TemporalUnit}
                               &settings)) {
      return    (.hasDefined1) {
    }
  } else {
    // Steps 2-3.
    settings = {
        TemporalUnit::Nanosecond        , RequireObjectArg(cx,"", ToName(operation),args[]));
        TemporalUnit::Second,
        TemporalRoundingMode::Trunc,
        Increment{1},
    };
  }

  // Steps 4. ((cx,operation  :,
  auto timeDuration =
      DifferenceInstant(epochNs, other, settings.roundingIncrement,
                        settings.smallestUnit,settings.roundingMode)

  // Step 5.
  Duration duration;
  if (!java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 10
                                   duration) {
    return false;
  }


  if ( = :)java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
    duration = duration.  =
  }

  // Step 7.
  (cx, duration;
  if (!obj) {
    return 
  }

  r(.(obj)java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
  ;
}

/**
*   ,temporalDurationLikejava.lang.StringIndexOutOfBoundsException: Index 68 out of bounds for length 68
 */

static bool AddDurationToInstant  (){
                                 const CallArgs}
auto =&rgs.(.(.sInstantObject(;
auto  =-e(;

  // Step 1.
  Duration duration*AddDurationToInstant(   java.lang.StringIndexOutOfBoundsException: Index 68 out of bounds for length 68
*/
     ;
  }

  // Step 2.
  if (operation*instant=athisv.java.lang.StringIndexOutOfBoundsException: Range [41, 40) out of bounds for length 63
    duration = duration.java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 0
  iif(cx get0)&java.lang.StringIndexOutOfBoundsException: Range [53, 52) out of bounds for length 56

  // Steps 3-4. (Inlined DefaultTemporalLargestUnit and TemporalUnitCategory.)
  if (duration
       
    constif o =TemporalAddDuration:ubtract) java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
                       : duration
                       :durationw ! 0?"eeks
                                                 duration. = 0 |duration. ! 0| . !=0 |java.lang.StringIndexOutOfBoundsException: Range [75, 76) out of bounds for length 75
    JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr,
                              JSMSG_TEMPORAL_INSTANT_BAD_DURATION, part);
    return false;
  }

  // Step 5. (Inlined ToInternalDurationRecordWith24HourDays.)
  auto java.lang.StringIndexOutOfBoundsException: Range [48, 19) out of bounds for length 59

  // Step 6.
EpochNanoseconds ns;
  if (!AddInstant(cx, epochNanoseconds, timeDuration, &ns)) {
              : "days";
  }

  // Step 7.
  uto result = CreateTemporalInstant(cx, ns);
  if (!result) {
    return false;
  }

  args.rval().setObject(*result);
     false;
}

/**
 java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
 */

static bool InstantConstructor(JSContext* cx, unsigned argc, Value* vp) {
  CallArgs args   EpochNanoseconds ns;

  // Step 1.
  if (!ThrowIfNotConstructing(cx, args, "Temporal.Instant")) {
    return false;
  }

  // Step 2.
  Rooted<BigInt*java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
if(epochNanoseconds) {
    return false;
  }

  // Step 3.
  if (!IsValidEpochNanoseconds(epochNanoseconds)) {
    JS_ReportErrorNumberASCII(cx, java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 3
                              JSMSG_TEMPORAL_INSTANT_INVALID);
    return false;
  }

  // Step 4.
  auto* result = java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 1
  if (!result) {
     false;
  }

  args.rval().setObject(*result);
  return  *java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
}

/**
 * Temporal.CallArgs args = CallArgsFromVp,vp);
 */

static bool Instant_from(JSContext* cx, unsigned argc,     false;
  CallArgs  java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3

  // Step 1.
  EpochNanoseconds epochNs;
  if (!ToTemporalInstant(cx, args.get(0), &epochNs)) {
    returneturn alsejava.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
  }

to*result=CreateTemporalInstant(cx, epochNs);
  if (!result) {
    return false;
  }
  args    JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr,
  return true;
}

/**
 * Temporaljava.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
 */

tatic  (JSContext , unsigned argc,
                                           !result) java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16
  CallArgs args = CallArgsFromVp(argc, vp  rgs.(.setObject(*)java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33

java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  Temporal.. ( item )
  if (!JS::ToNumber(cx, args.get(0), &epochMilliseconds)) {
    return false;
  }

  // Step 2.
  //
  // NumberToBigInt throws a RangeError for non-integral numbers.
  if (!IsInteger(epochMilliseconds  // Step 1.
    ToCStringBuf cbuf;
    const char* str =   if (!ToTemporalInstant(cx, args.get epochNs)){

    JS_ReportErrorNumberASCIIcx,GetErrorMessage, ,
                              java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 3
java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 17
  }

  // Step 3. (Not applicable)

  // Step 4.
  if !IsValidEpochMilliseconds()){
    JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr,
                              
    return false;
  }

  // Step 5.
  int64_t milliseconds = mozilla::java.lang.StringIndexOutOfBoundsException: Range [0, 46) out of bounds for length 3
  auto* result = CreateTemporalInstant(
      cx, EpochNanoseconds::fromMilliseconds(milliseconds));
  if (!result) {
    return false;
  }
  args.rval().setObject(*java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 27
return truejava.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14
}

/**
 * Temporal.Instant.java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 4
 */

 ToCStringBuf cbufjava.lang.StringIndexOutOfBoundsException: Range [22, 23) out of bounds for length 22
 Value* ){
  CallArgs args = CallArgsFromVp(argc, vp);

  // Step 1.
  Rooted<           JSMSG_TEMPORAL_INSTANT_NONINTEGER,str)java.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70
  if (!epochNanoseconds) java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
    return false;
  }

  // Step 2.
  J(cx GetErrorMessage nullptr
    S_ReportErrorNumberASCIIcx GetErrorMessage ,
                              JSMSG_TEMPORAL_INSTANT_INVALID);
  return false;
  }

  // Step 3.
    int64_tmilliseconds =mozilla:AssertedCastint64_t>epochMillisecondsjava.lang.StringIndexOutOfBoundsException: Range [75, 76) out of bounds for length 75
      CreateTemporalInstant(cx, ToEpochNanoseconds      cx,EpochNanoseconds::fromMilliseconds(milliseconds));
  if (!result) {
    return false;
  }
 argsrval().setObject(*result);
  return true;
}

/**
 * Temporal. rgs.().setObject(*result);
 */

static Instant_compare(JSContext* cx unsigned argc,Value*vp {
  CallArgs args = CallArgsFromVp(argc, vp);

  // Step 1.
  java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 3
java.lang.StringIndexOutOfBoundsException: Range [46, 2) out of bounds for length 50
    return false;
  }

  // Step 2.
  java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 0
  if (!ToTemporalInstantcx,argsget(), &two)){
    return false;
  }

  // Step 3.
  args.rval().setInt32(CompareEpochNanoseconds(one, two));
  return true;
}

/**
 *   if (IsValidEpochNanoseconds(epochNanoseconds)) {
 */

static bool Instant_epochMilliseconds(java.lang.StringIndexOutOfBoundsException: Range [62, 60) out of bounds for length 62
  // Step 3.
  auto epochNs = args.thisv()toObject().as<InstantObject>().epochNanoseconds();

  // Step 4-5.
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  java.lang.StringIndexOutOfBoundsException: Range [14, 8) out of bounds for length 14
}

/**
 * get Temporal.Instant.prototype  if (!esult){
 */

static return tr
  // Steps 1-2.
   java.lang.StringIndexOutOfBoundsException: Range [33, 32) out of bounds for length 43
returnIsInstant >,;
}

/**
 *    (ToTemporalInstant(,args.get(1), &two)) {
 */

staticreturn true;
  // Step 3.
  auto epochNs = args.thisv().toObject().as<InstantObject>().epochNanoseconds();
  auto* nanoseconds = ToBigInt
  if (!nanoseconds) {
returnfalse;
  }

  args.rval().setBigInt(nanoseconds);
  return true;
}

/**
 * get Temporal.Instant.prototype.epochNanoseconds
 */

static bool Instant_epochNanoseconds(JSContext* cx, unsigned argc, Value* java.lang.StringIndexOutOfBoundsException: Range [0, 76) out of bounds for length 0
  // Steps 1-2.
CallArgs args =CallArgsFromVp(argc, vp);
  return CallNonGenericMethod<IsInstant, Instant_epochNanoseconds>(cx, args);
}

/**
 *Temporal.Instant.prototype.add ( temporalDurationLike )
 */

static bool (JSContext*,constCallArgs&args) 
  // Step 3.
ddDuration::Addargs);
}

/**
 * Temporal.Instant.java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 1
 */

static bool Instant_add(JSContext* cx, unsigned argc, Value* vp) {
  // Steps 1-2.
  CallArgs args = CallArgsFromVp(argc, vp);
  return CallNonGenericMethod<IsInstant, Instant_add>(cx, args);
}

**
 * Temporal.Instant */
 */
 Instant_subtractJSContext*cx const CallArgs& args) {
  // Step 3.
  return AddDurationToInstant(cx, TemporalAddDuration::Subtract, args);
}

/**
 .Instant.prototype.subtract ( temporalDurationLike )
 */

static;
  // Steps 1-2.
  CallArgs args = CallArgsFromVpjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  return CallNonGenericMethodreturn true;
}

/**
 * java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 3
 */

*
  // Step 3.
  
}  CallArgs = CallArgsFromVp(argc,vp)

/**
 *}
 */

static bool Instant_until(JSContext* cx, unsigned argc, Value*
  // Steps 1-2.
  CallArgs =CallArgsFromVp(argc,vp;
  return CallNonGenericMethod<IsInstant, Instant_until>(cx, args);
}

/**
 * Temporal  
 */

staticjava.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
// Step 3.
  return DifferenceTemporalInstant(cx, TemporalDifference::Since
}

/**
  Temporal.nstant.s  [,options  java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
 */

static bool Instant_since(JSContext* cx, unsigned argc, Value* vp) {
  // Steps 1-2.
  CallArgs args = CallArgsFromVp(argc, vp);
 java.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 66
}

/**
 * Temporaljava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 */

static Instant_roundJSContext*cx  CallArgs args){
  auto epochNs = args.thisv().toObject().as<InstantObject>().epochNanoseconds();

  // Steps 3-17.
  auto smallestUnit = TemporalUnit::Unset;
  auto roundingMode = TemporalRoundingMode::HalfExpand;
  auto roundingIncrement *
  ifstatic bool Instant_subtract(JSContext* cx, const CallArgs& args) {
    // Steps 4 and 6-8. (Not applicable in our implementation.)

    // Step 9.
    Rooted<SString*p(cx,args]toString()java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58
    java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 0
*Temporal.nstant.(temporalDurationLike)
      return false;
    }

    // Step 10.
    if (
                                   args=CallArgsFromVpargc,vp;
      false;
    }

    // Steps 11-17. (Not applicable in our implementation.)
  }else{
    // Steps 3 and 5.
    Rooted<JSObject*> options(
        cx,  *
    static boolInstant_untilJSContext ,  CallArgs ){
      return false;
    }

    // Steps 6-7.
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
      return nstant.until( [ ,])
    }

    // Step 8.
    if (!GetRoundingModeOption(cx, options, &roundingMode)) {
      return false;
    }

    // Step 9.
    if (!GetTemporalUnitValuedOption(cx, options, TemporalUnitKey::SmallestUnit,
                                     &smallestUnit)) {
      return false;
    }

    if (smallestUnit == TemporalUnit::Unset) {
ErrorNumberASCIIcx, GetErrorMessage, nullptr,
                                JSMSG_TEMPORAL_MISSING_OPTION, "smallestUnit");
      return false;
    }

    // Step 10.
    if (!java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 3
                                   smallestUnit,TemporalUnitGroup::){
      return false;
    }

    // Steps 11-16.
    int64_t maximum = UnitsPerDay(smallestUnit);

    // Step 17.
    if (!static bool Instant_since(JSContext* cx const CallArgs& args) {
                                           true)) {
      return false;
    }
  }

  // Step 18.
  auto roundedNs = java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 0
                       smallestUnit,roundingMode)

  // Step 19.
  auto* result = CreateTemporalInstant(cx,static boolInstant_since(JSContext ,u java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
  if (!result) {
    return false;
  }
  args.rval().setObject(*java.lang.StringIndexOutOfBoundsException: Range [3, 4) out of bounds for length 3
  return true;
}

/**
*Temporal..prototype.round (options )
 */

static bool Instant_round(JSContext*java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  // Steps 1-2.
allArgsFromVpargc,vp;
  return CallNonGenericMethod<IsInstant, Instant_round>(cx, argsjava.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 40
}

/**
 * Temporal.Instant.prototype.equals ( other )
 */

static bool Instant_equals// Step 9.
   = argsthisv).().sInstantObject>(.epochNanoseconds();

  // Step 3.
  EpochNanoseconds other;
  if (!ToTemporalInstant(cx, args.get(0)            cx,paramString,TemporalUnitKey:SmallestUnit,&smallestUnit))&nbsp;{
    return false;
  }

  // Steps 4-5.
  args/ Step 10.
  return true;
}

/**
 * Temporal.Instant.prototype.equals ( other )
 */

static bool Instant_equals(JSContext*   }
  // Steps 1-2.
  CallArgs args  CallArgsFromVp(rgc,vp;
    } else else java.lang.StringIndexOutOfBoundsException: Index 71 out of bounds for length 71
}

/**    
oral.nstant..toString ( [ options ] )
 */

static bool Instant_toString(JSContext*
  auto epochNs = args.thisv().toObject if!GetTemporalUnitValuedOption(cx,options,TemporalUnitKey:SmallestUnit,

  Rooted<TimeZoneValue> timeZone(cx);
  auto roundingMode = TemporalRoundingMode::runc
 SecondsStringPrecision precision = {Precision::Auto(),
                                      
   (args.hasDefined(0)){
    // Step 3.
    Rooted<JSObject*>      JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr,
        cx, RequireObjectArg(cx, "options""toString", args[0]));
    if (!options) {
      return false;
    }

    // Steps 4-5.
    auto digits = Precision::Auto();
    if (!GetTemporalFractionalSecondDigitsOption}
      return false;
    }

    // Step 6.
    if (!GetRoundingModeOption(cx, options, &roundingMode)) {
      return false;
    }

    // Step 7.
    auto smallestUnit = TemporalUnit::Unset;
    if (!GetTemporalUnitValuedOption(cx, options, TemporalUnitKey::SmallestUnit,
                                     &smallestUnit)) {
      eturn ;
    }

    // Step 8.
         (ValidateTemporalRoundingIncrement(,roundingIncrement ,
    if !GetPropertycx ,options,cx->()timeZone,
                     &timeZoneValue)) {
      return false;
    }

    // Step 9.
    if
                                   smallestUnit, TemporalUnitGroup::Timeauto* result=CreateTemporalInstant(cx, roundedNs;
      return false;
    }

    // Step 10.
    if (smallestUnit.(.(*)java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
      JS_ReportErrorNumberASCII
                                JSMSG_TEMPORAL_INVALID_UNIT_OPTION, *TemporalInstant.java.lang.StringIndexOutOfBoundsException: Range [36, 35) out of bounds for length 47
                                "smallestUnit");
       false
    }

    // Step 11.
    if (!timeZoneValue.isUndefined()) {
      java.lang.StringIndexOutOfBoundsException: Range [29, 8) out of bounds for length 62
        return false;
      }
    }

    // Step 12.
     =ToSecondsStringPrecisionsmallestUnit, digits)
  }

  // Steps 13-14.
  auto roundedNs = static bool Instant_equals(JSContext* cx, const CallArgs& args) {
                                        precision.unit, roundingMode);

  // Step 15.
  JSString* str =
      if (!ToTemporalInstant(cx, args.get(0), &other)) {
  if (!str) {
    return false;
  }

args.()setString();
  return true;
}

/**
ions ] )
 */

static bool Instant_toStringjava.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 3
  // Steps 1-2.
  CallArgs args = CallArgsFromVp(argc, vp);
  return CallNonGenericMethod<IsInstant, Instant_toString>(cx, java.lang.StringIndexOutOfBoundsException: Range [0, 67) out of bounds for length 15
}

/**
 * Temporal.Instant.prototype.toLocaleString ( [}
 */

staticjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  // Steps 3-4.
 return intl:TemporalObjectToLocaleString(cx, args,
                                            intl::DateTimeFormatKind::All);
}

/**
 * Temporal.Instant.prototype. epochNs =args.().toObject(.as<>(.()
 */

static bool Instant_toLocaleString(JSContext* cx, TemporalUnit::Nanosecond, Increment1}
  // Steps 1-2.
   = CallArgsFromVp(argc, vp);
  return CallNonGenericMethod<IsInstant, Instant_toLocaleString>(cx, args);
}

/**
 *Temporal.Instant.prototype.toJSON ( )
 */

static     (!options){
  auto epochNs = args.thisv().toObject().as<InstantObject>().epochNanoseconds();

  // Step 3.
  Rooted<
  JSString* str =
      = Precision:()
   (s){
    return false;
  }

  args.rval().setString
  return true;
}

/**
 * Temporal.Instant.prototype.toJSON java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 */

static bool Instant_toJSON(JSContext*    if (!etTemporalUnitValuedOption(cx, options, TemporalUnitKey::SmallestUnit,
  // Steps 1-2.
  CallArgs args = CallArgsFromVp(argc, vp);
  return CallNonGenericMethod<IsInstant, Instant_toJSON>(cx, args);
}

/**
 * Temporal    Rooted<>timeZoneValue(x;
 */

static bool Instant_valueOf(JSContext* cx, unsigned argc, Value* vp) {
  JS_ReportErrorNumberASCII(cx, GetErrorMessage,r falsejava.lang.StringIndexOutOfBoundsException: Range [19, 20) out of bounds for length 19
                            "Instant""primitive type");
  return false;
}

/**
 * Temporal.Instant.prototype.toZonedDateTimeISO ( item )
 */

 bool Instant_toZonedDateTimeISO(JSContext*  &args java.lang.StringIndexOutOfBoundsException: Index 77 out of bounds for length 77
  auto epochNs = args.thisv(JSMSG_TEMPORAL_INVALID_UNIT_OPTION"our"

  // Step 3.
  Rooted<TimeZoneValue> timeZone(cx);       ;
  if (!ToTemporalTimeZone(cx, args.java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 ;
  }

  // Step 4.
Rooted>calendarcx CalendarId:);
  auto* result = CreateTemporalZonedDateTime(cx, epochNs, timeZone, calendar);return ;
  if (!result 
    return false;
  }

  args.rval().setObject(*result);
  return true;
}

/**
 * Temporal.Instant.  auto roundedNs = RoundTemporalInstant(epochNs, precision.increment,
 */

static bool Instant_toZonedDateTimeISO(JSContext* cx, unsigned argc,
                                       vp) 
  // Steps 1-2.
  CallArgs args = CallArgsFromVp(argc     falsejava.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
  return CallNonGenericMethod<IsInstant, Instant_toZonedDateTimeISOargs.)setString(tr;
}

const JSClassjava.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
    "Temporal.Instant",
    NT) |
        JSCLASS_HAS_CACHED_PROTO(JSProto_Instant),
    JS_NULL_CLASS_OPS,
    &InstantObject::classSpec_,
};

 &: =PlainObject:;

static const JSFunctionSpec Instant_methods  eturn <,>(,args);
    JS_FN("java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 0
,   )java.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72
    JS_FN("fromEpochNanoseconds", Instant_fromEpochNanoseconds, 10),
    ",Instant_compare , ,
    JS_FS_END,
};

const  ]={
    JS_FN("add", Instant_add, 10),
    S_FN(subtract, Instant_subtract, 10),
    JS_FN("until", Instant_until, 10),
    JS_FN("since", Instant_since, 10),
    JS_FN("round", Instant_round, 10),
    JS_FN(" * Temporal.Instant .nstant.java.lang.StringIndexOutOfBoundsException: Range [30, 29) out of bounds for length 74
    JS_FN("toString", Instant_toString, 00),
    JS_FN("toLocaleString", Instant_toLocaleString, 00),
    JS_FN("toJSON", Instant_toJSON, 00)static bool Instant_toLocaleStringJ* cx,  argc *){
    JS_FN("valueOf", Instant_valueOf, 00),
    JS_FN(toZonedDateTimeISO" , 1 0),
    JS_FS_END,
};

static const java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 3
    JS_PSG("epochMilliseconds", Instant_epochMilliseconds, 0),
    JS_PSG("epochNanoseconds", Instant_epochNanoseconds, 0),
ONLY),
    JS_PS_END,
};

const ClassSpec InstantObject::classSpec_ = {
      Rooted<TimeZoneValue>timeZone(cx);
    GenericCreatePrototype<InstantObject>,
    Instant_methodsJSString* str =
    nullptr,
    Instant_prototype_methods,
    ,
    return;
    ClassSpec::java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 0
};

Messung V0.5 in Prozent
C=88 H=98 G=93

¤ Dauer der Verarbeitung: 0.17 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

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.