зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1120796 - Part 2: Replace ConvertibleToBool hackarounds with explicit bool operators. r=Waldo
This commit is contained in:
Родитель
847dbb9825
Коммит
1b10c9d731
|
@ -386,10 +386,6 @@ private: // data
|
|||
*/
|
||||
class DrawableFrameRef MOZ_FINAL
|
||||
{
|
||||
// Implementation details for safe boolean conversion.
|
||||
typedef void (DrawableFrameRef::* ConvertibleToBool)(float*****, double*****);
|
||||
void nonNull(float*****, double*****) {}
|
||||
|
||||
public:
|
||||
DrawableFrameRef() { }
|
||||
|
||||
|
@ -416,10 +412,7 @@ public:
|
|||
return *this;
|
||||
}
|
||||
|
||||
operator ConvertibleToBool() const
|
||||
{
|
||||
return bool(mFrame) ? &DrawableFrameRef::nonNull : 0;
|
||||
}
|
||||
explicit operator bool() const { return bool(mFrame); }
|
||||
|
||||
imgFrame* operator->()
|
||||
{
|
||||
|
@ -461,10 +454,6 @@ private:
|
|||
*/
|
||||
class RawAccessFrameRef MOZ_FINAL
|
||||
{
|
||||
// Implementation details for safe boolean conversion.
|
||||
typedef void (RawAccessFrameRef::* ConvertibleToBool)(float*****, double*****);
|
||||
void nonNull(float*****, double*****) {}
|
||||
|
||||
public:
|
||||
RawAccessFrameRef() { }
|
||||
|
||||
|
@ -503,10 +492,7 @@ public:
|
|||
return *this;
|
||||
}
|
||||
|
||||
operator ConvertibleToBool() const
|
||||
{
|
||||
return bool(mFrame) ? &RawAccessFrameRef::nonNull : 0;
|
||||
}
|
||||
explicit operator bool() const { return bool(mFrame); }
|
||||
|
||||
imgFrame* operator->()
|
||||
{
|
||||
|
|
|
@ -142,8 +142,6 @@ class Builder {
|
|||
class BuiltThing {
|
||||
friend class BuilderOrigin;
|
||||
|
||||
void nonNull() {}
|
||||
|
||||
protected:
|
||||
// The Builder to which this trusted thing belongs.
|
||||
Builder &owner;
|
||||
|
@ -170,10 +168,9 @@ class Builder {
|
|||
return *this;
|
||||
}
|
||||
|
||||
typedef void (BuiltThing::* ConvertibleToBool)();
|
||||
operator ConvertibleToBool() const {
|
||||
// If we ever instantiate BuiltThink<Value>, this might not suffice.
|
||||
return value ? &BuiltThing::nonNull : 0;
|
||||
explicit operator bool() const {
|
||||
// If we ever instantiate BuiltThing<Value>, this might not suffice.
|
||||
return value;
|
||||
}
|
||||
|
||||
private:
|
||||
|
@ -221,8 +218,7 @@ class Builder {
|
|||
bool defineProperty(JSContext *cx, const char *name, JS::HandleObject value);
|
||||
bool defineProperty(JSContext *cx, const char *name, Object &value);
|
||||
|
||||
using Base::ConvertibleToBool;
|
||||
using Base::operator ConvertibleToBool;
|
||||
using Base::operator bool;
|
||||
};
|
||||
|
||||
// Build an empty object for direct use by debugger code, owned by this
|
||||
|
|
|
@ -210,7 +210,7 @@ class HashMap
|
|||
/************************************************** Shorthand operations */
|
||||
|
||||
bool has(const Lookup &l) const {
|
||||
return impl.lookup(l) != nullptr;
|
||||
return impl.lookup(l).found();
|
||||
}
|
||||
|
||||
// Overwrite existing value with v. Return false on oom.
|
||||
|
@ -441,7 +441,7 @@ class HashSet
|
|||
/************************************************** Shorthand operations */
|
||||
|
||||
bool has(const Lookup &l) const {
|
||||
return impl.lookup(l) != nullptr;
|
||||
return impl.lookup(l).found();
|
||||
}
|
||||
|
||||
// Add |u| if it is not present already. Return false on oom.
|
||||
|
@ -767,8 +767,6 @@ class HashTable : private AllocPolicy
|
|||
class Ptr
|
||||
{
|
||||
friend class HashTable;
|
||||
typedef void (Ptr::* ConvertibleToBool)();
|
||||
void nonNull() {}
|
||||
|
||||
Entry *entry_;
|
||||
#ifdef JS_DEBUG
|
||||
|
@ -800,8 +798,8 @@ class HashTable : private AllocPolicy
|
|||
return entry_->isLive();
|
||||
}
|
||||
|
||||
operator ConvertibleToBool() const {
|
||||
return found() ? &Ptr::nonNull : 0;
|
||||
explicit operator bool() const {
|
||||
return found();
|
||||
}
|
||||
|
||||
bool operator==(const Ptr &rhs) const {
|
||||
|
|
|
@ -153,9 +153,6 @@ struct Zone
|
|||
// to several kinds of GC thing.
|
||||
class JS_FRIEND_API(GCCellPtr)
|
||||
{
|
||||
typedef void (GCCellPtr::* ConvertibleToBool)();
|
||||
void nonNull() {}
|
||||
|
||||
public:
|
||||
// Construction from a void* and trace kind.
|
||||
GCCellPtr(void *gcthing, JSGCTraceKind traceKind) : ptr(checkedCast(gcthing, traceKind)) {}
|
||||
|
@ -179,9 +176,9 @@ class JS_FRIEND_API(GCCellPtr)
|
|||
}
|
||||
|
||||
// Allow GCCellPtr to be used in a boolean context.
|
||||
operator ConvertibleToBool() const {
|
||||
explicit operator bool() const {
|
||||
MOZ_ASSERT(bool(asCell()) == (kind() != JSTRACE_NULL));
|
||||
return asCell() ? &GCCellPtr::nonNull : 0;
|
||||
return asCell();
|
||||
}
|
||||
|
||||
// Simplify checks to the kind.
|
||||
|
|
|
@ -250,9 +250,6 @@ class Node {
|
|||
Concrete<T>::construct(base(), ptr);
|
||||
}
|
||||
|
||||
typedef void (Node::* ConvertibleToBool)();
|
||||
void nonNull() {}
|
||||
|
||||
public:
|
||||
Node() { construct<void>(nullptr); }
|
||||
|
||||
|
@ -304,8 +301,8 @@ class Node {
|
|||
bool operator==(const Node &rhs) const { return *base() == *rhs.base(); }
|
||||
bool operator!=(const Node &rhs) const { return *base() != *rhs.base(); }
|
||||
|
||||
operator ConvertibleToBool() const {
|
||||
return base()->ptr ? &Node::nonNull : 0;
|
||||
explicit operator bool() const {
|
||||
return base()->ptr != nullptr;
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
|
|
|
@ -103,8 +103,6 @@ class InlineMap
|
|||
InlineElem *inlPtr;
|
||||
bool isInlinePtr;
|
||||
|
||||
typedef Ptr ******* ConvertibleToBool;
|
||||
|
||||
explicit Ptr(WordMapPtr p) : mapPtr(p), isInlinePtr(false) {}
|
||||
explicit Ptr(InlineElem *ie) : inlPtr(ie), isInlinePtr(true) {}
|
||||
void operator==(const Ptr &other);
|
||||
|
@ -124,8 +122,8 @@ class InlineMap
|
|||
return isInlinePtr ? bool(inlPtr) : mapPtr.found();
|
||||
}
|
||||
|
||||
operator ConvertibleToBool() const {
|
||||
return ConvertibleToBool(found());
|
||||
explicit operator bool() const {
|
||||
return found();
|
||||
}
|
||||
|
||||
K &key() {
|
||||
|
@ -157,8 +155,6 @@ class InlineMap
|
|||
|
||||
void operator==(const AddPtr &other);
|
||||
|
||||
typedef AddPtr ******* ConvertibleToBool;
|
||||
|
||||
public:
|
||||
AddPtr() {}
|
||||
|
||||
|
@ -166,8 +162,8 @@ class InlineMap
|
|||
return isInlinePtr ? inlPtrFound : mapAddPtr.found();
|
||||
}
|
||||
|
||||
operator ConvertibleToBool() const {
|
||||
return found() ? ConvertibleToBool(1) : ConvertibleToBool(0);
|
||||
explicit operator bool() const {
|
||||
return found();
|
||||
}
|
||||
|
||||
V &value() {
|
||||
|
|
|
@ -74,11 +74,8 @@ class IncrementalSafety
|
|||
static IncrementalSafety Safe() { return IncrementalSafety(nullptr); }
|
||||
static IncrementalSafety Unsafe(const char *reason) { return IncrementalSafety(reason); }
|
||||
|
||||
typedef void (IncrementalSafety::* ConvertibleToBool)();
|
||||
void nonNull() {}
|
||||
|
||||
operator ConvertibleToBool() const {
|
||||
return reason_ == nullptr ? &IncrementalSafety::nonNull : 0;
|
||||
explicit operator bool() const {
|
||||
return reason_ == nullptr;
|
||||
}
|
||||
|
||||
const char *reason() {
|
||||
|
|
|
@ -36,11 +36,9 @@ struct DependentAddPtr
|
|||
return table.relookupOrAdd(addPtr, key, value);
|
||||
}
|
||||
|
||||
typedef void (DependentAddPtr::* ConvertibleToBool)();
|
||||
void nonNull() {}
|
||||
|
||||
bool found() const { return addPtr.found(); }
|
||||
operator ConvertibleToBool() const { return found() ? &DependentAddPtr::nonNull : 0; }
|
||||
explicit operator bool() const { return found(); }
|
||||
const Entry &operator*() const { return *addPtr; }
|
||||
const Entry *operator->() const { return &*addPtr; }
|
||||
|
||||
|
|
|
@ -171,9 +171,6 @@ class ArrayBufferObject : public ArrayBufferObjectMaybeShared
|
|||
|
||||
friend class ArrayBufferObject;
|
||||
|
||||
typedef void (BufferContents::* ConvertibleToBool)();
|
||||
void nonNull() {}
|
||||
|
||||
BufferContents(uint8_t *data, BufferKind kind) : data_(data), kind_(kind) {
|
||||
MOZ_ASSERT((kind_ & ~KIND_MASK) == 0);
|
||||
}
|
||||
|
@ -194,7 +191,7 @@ class ArrayBufferObject : public ArrayBufferObjectMaybeShared
|
|||
uint8_t *data() const { return data_; }
|
||||
BufferKind kind() const { return kind_; }
|
||||
|
||||
operator ConvertibleToBool() const { return data_ ? &BufferContents::nonNull : nullptr; }
|
||||
explicit operator bool() const { return data_ != nullptr; }
|
||||
};
|
||||
|
||||
static const Class class_;
|
||||
|
|
|
@ -128,8 +128,8 @@ class DebuggerWeakMap : private WeakMap<PreBarriered<UnbarrieredKey>, Relocatabl
|
|||
|
||||
bool hasKeyInZone(JS::Zone *zone) {
|
||||
CountMap::Ptr p = zoneCounts.lookup(zone);
|
||||
MOZ_ASSERT_IF(p, p->value() > 0);
|
||||
return p;
|
||||
MOZ_ASSERT_IF(p.found(), p->value() > 0);
|
||||
return p.found();
|
||||
}
|
||||
|
||||
private:
|
||||
|
|
|
@ -904,7 +904,7 @@ JSStructuredCloneWriter::startObject(HandleObject obj, bool *backref)
|
|||
{
|
||||
/* Handle cycles in the object graph. */
|
||||
CloneMemory::AddPtr p = memory.lookupForAdd(obj);
|
||||
if ((*backref = p))
|
||||
if ((*backref = p.found()))
|
||||
return out.writePair(SCTAG_BACK_REFERENCE_OBJECT, p->value());
|
||||
if (!memory.add(p, obj, memory.count()))
|
||||
return false;
|
||||
|
|
|
@ -82,9 +82,6 @@ struct Nothing { };
|
|||
template<class T>
|
||||
class Maybe
|
||||
{
|
||||
typedef void (Maybe::* ConvertibleToBool)(float*****, double*****);
|
||||
void nonNull(float*****, double*****) {}
|
||||
|
||||
bool mIsSome;
|
||||
AlignedStorage2<T> mStorage;
|
||||
|
||||
|
@ -154,7 +151,7 @@ public:
|
|||
}
|
||||
|
||||
/* Methods that check whether this Maybe contains a value */
|
||||
operator ConvertibleToBool() const { return mIsSome ? &Maybe::nonNull : 0; }
|
||||
explicit operator bool() const { return isSome(); }
|
||||
bool isSome() const { return mIsSome; }
|
||||
bool isNothing() const { return !mIsSome; }
|
||||
|
||||
|
|
|
@ -20,9 +20,6 @@ class Range
|
|||
const RangedPtr<T> mStart;
|
||||
const RangedPtr<T> mEnd;
|
||||
|
||||
typedef void (Range::* ConvertibleToBool)();
|
||||
void nonNull() {}
|
||||
|
||||
public:
|
||||
Range() : mStart(nullptr, 0), mEnd(nullptr, 0) {}
|
||||
Range(T* aPtr, size_t aLength)
|
||||
|
@ -36,7 +33,7 @@ public:
|
|||
|
||||
T& operator[](size_t aOffset) const { return mStart[aOffset]; }
|
||||
|
||||
operator ConvertibleToBool() const { return mStart ? &Range::nonNull : 0; }
|
||||
explicit operator bool() const { return mStart != nullptr; }
|
||||
};
|
||||
|
||||
} // namespace mozilla
|
||||
|
|
|
@ -49,9 +49,6 @@ class RangedPtr
|
|||
T* const mRangeEnd;
|
||||
#endif
|
||||
|
||||
typedef void (RangedPtr::* ConvertibleToBool)();
|
||||
void nonNull() {}
|
||||
|
||||
void checkSanity()
|
||||
{
|
||||
MOZ_ASSERT(mRangeStart <= mPtr);
|
||||
|
@ -118,7 +115,7 @@ public:
|
|||
|
||||
T* get() const { return mPtr; }
|
||||
|
||||
operator ConvertibleToBool() const { return mPtr ? &RangedPtr::nonNull : 0; }
|
||||
explicit operator bool() const { return mPtr != nullptr; }
|
||||
|
||||
/*
|
||||
* You can only assign one RangedPtr into another if the two pointers have
|
||||
|
|
|
@ -286,21 +286,13 @@ public:
|
|||
return get();
|
||||
}
|
||||
|
||||
explicit operator bool() const { return get() != nullptr; }
|
||||
|
||||
Pointer get() const { return ptr(); }
|
||||
|
||||
DeleterType& getDeleter() { return del(); }
|
||||
const DeleterType& getDeleter() const { return del(); }
|
||||
|
||||
private:
|
||||
typedef void (UniquePtr::* ConvertibleToBool)(double, char);
|
||||
void nonNull(double, char) {}
|
||||
|
||||
public:
|
||||
operator ConvertibleToBool() const
|
||||
{
|
||||
return get() != nullptr ? &UniquePtr::nonNull : nullptr;
|
||||
}
|
||||
|
||||
Pointer release()
|
||||
{
|
||||
Pointer p = ptr();
|
||||
|
@ -433,22 +425,14 @@ public:
|
|||
return *this;
|
||||
}
|
||||
|
||||
explicit operator bool() const { return get() != nullptr; }
|
||||
|
||||
T& operator[](decltype(sizeof(int)) aIndex) const { return get()[aIndex]; }
|
||||
Pointer get() const { return mTuple.first(); }
|
||||
|
||||
DeleterType& getDeleter() { return mTuple.second(); }
|
||||
const DeleterType& getDeleter() const { return mTuple.second(); }
|
||||
|
||||
private:
|
||||
typedef void (UniquePtr::* ConvertibleToBool)(double, char);
|
||||
void nonNull(double, char) {}
|
||||
|
||||
public:
|
||||
operator ConvertibleToBool() const
|
||||
{
|
||||
return get() != nullptr ? &UniquePtr::nonNull : nullptr;
|
||||
}
|
||||
|
||||
Pointer release()
|
||||
{
|
||||
Pointer p = mTuple.first();
|
||||
|
|
Загрузка…
Ссылка в новой задаче