mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-24 09:27:31 +09:00
Issue #2241 - Part 1: Move {js::,JS_}{{Strictly,Loosely}Equal,SameValue} into their own header and implementation files
Backported from Mozilla bug 1516742. The .from* methods are going to depend on SameValueZero, which needs to be visible to /dom. This patch provides the foundation for that.
This commit is contained in:
parent
1ae0d6ff7f
commit
ec2fb72568
17 changed files with 338 additions and 223 deletions
55
js/public/Equality.h
Normal file
55
js/public/Equality.h
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* 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/. */
|
||||
|
||||
/* Equality operations. */
|
||||
|
||||
#ifndef js_Equality_h
|
||||
#define js_Equality_h
|
||||
|
||||
#include "jstypes.h" // JS_PUBLIC_API
|
||||
|
||||
#include "js/RootingAPI.h" // JS::Handle
|
||||
#include "js/Value.h" // JS::Value
|
||||
|
||||
struct JSContext;
|
||||
|
||||
namespace JS {
|
||||
|
||||
/**
|
||||
* Store |v1 === v2| to |*equal| -- strict equality, which performs no
|
||||
* conversions on |v1| or |v2| before comparing.
|
||||
*
|
||||
* This operation can fail only if an internal error occurs (e.g. OOM while
|
||||
* linearizing a string value).
|
||||
*/
|
||||
extern JS_PUBLIC_API(bool)
|
||||
StrictlyEqual(JSContext* cx, JS::Handle<JS::Value> v1, JS::Handle<JS::Value> v2, bool* equal);
|
||||
|
||||
/**
|
||||
* Store |v1 == v2| to |*equal| -- loose equality, which may perform
|
||||
* user-modifiable conversions on |v1| or |v2|.
|
||||
*
|
||||
* This operation can fail if a user-modifiable conversion fails *or* if an
|
||||
* internal error occurs. (e.g. OOM while linearizing a string value).
|
||||
*/
|
||||
extern JS_PUBLIC_API(bool)
|
||||
LooselyEqual(JSContext* cx, JS::Handle<JS::Value> v1, JS::Handle<JS::Value> v2, bool* equal);
|
||||
|
||||
/**
|
||||
* Stores |SameValue(v1, v2)| to |*equal| -- using the SameValue operation
|
||||
* defined in ECMAScript, initially exposed to script as |Object.is|. SameValue
|
||||
* behaves identically to strict equality, except that it equates two NaN values
|
||||
* and does not equate differently-signed zeroes. It performs no conversions on
|
||||
* |v1| or |v2| before comparing.
|
||||
*
|
||||
* This operation can fail only if an internal error occurs (e.g. OOM while
|
||||
* linearizing a string value).
|
||||
*/
|
||||
extern JS_PUBLIC_API(bool)
|
||||
SameValue(JSContext* cx, JS::Handle<JS::Value> v1, JS::Handle<JS::Value> v2, bool* same);
|
||||
|
||||
} // namespace JS
|
||||
|
||||
#endif /* js_Equality_h */
|
||||
Loading…
Add table
Add a link
Reference in a new issue