зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1249606 - Automatically generate operator== for WebIDL dictionaries. r=bzbarsky
This commit is contained in:
Родитель
59d8cce642
Коммит
fb55ca75b7
|
@ -619,10 +619,7 @@ ChromeUtils::IsOriginAttributesEqual(dom::GlobalObject& aGlobal,
|
|||
ChromeUtils::IsOriginAttributesEqual(const dom::OriginAttributesDictionary& aA,
|
||||
const dom::OriginAttributesDictionary& aB)
|
||||
{
|
||||
return aA.mAppId == aB.mAppId &&
|
||||
aA.mInIsolatedMozBrowser == aB.mInIsolatedMozBrowser &&
|
||||
aA.mUserContextId == aB.mUserContextId &&
|
||||
aA.mPrivateBrowsingId == aB.mPrivateBrowsingId;
|
||||
return aA == aB;
|
||||
}
|
||||
|
||||
#ifdef NIGHTLY_BUILD
|
||||
|
|
|
@ -163,6 +163,11 @@ public:
|
|||
return mImpl == aOther.mImpl;
|
||||
}
|
||||
|
||||
bool operator!=(const Optional_base<T, InternalType>& aOther) const
|
||||
{
|
||||
return mImpl != aOther.mImpl;
|
||||
}
|
||||
|
||||
template<typename T1, typename T2>
|
||||
explicit Optional_base(const T1& aValue1, const T2& aValue2)
|
||||
{
|
||||
|
|
|
@ -12996,6 +12996,30 @@ class CGDictionary(CGThing):
|
|||
"aOther")],
|
||||
body=body.define())
|
||||
|
||||
def canHaveEqualsOperator(self):
|
||||
return all(m.type.isString() or m.type.isPrimitive() for (m,_) in
|
||||
self.memberInfo)
|
||||
|
||||
def equalsOperator(self):
|
||||
body = CGList([])
|
||||
|
||||
for m, _ in self.memberInfo:
|
||||
memberName = self.makeMemberName(m.identifier.name)
|
||||
memberTest = CGGeneric(fill(
|
||||
"""
|
||||
if (${memberName} != aOther.${memberName}) {
|
||||
return false;
|
||||
}
|
||||
""",
|
||||
memberName=memberName))
|
||||
body.append(memberTest)
|
||||
body.append(CGGeneric("return true;\n"))
|
||||
return ClassMethod(
|
||||
"operator==", "bool",
|
||||
[Argument("const %s&" % self.makeClassName(self.dictionary),
|
||||
"aOther")
|
||||
], const=True, body=body.define())
|
||||
|
||||
def getStructs(self):
|
||||
d = self.dictionary
|
||||
selfName = self.makeClassName(d)
|
||||
|
@ -13076,6 +13100,9 @@ class CGDictionary(CGThing):
|
|||
else:
|
||||
disallowCopyConstruction = True
|
||||
|
||||
if self.canHaveEqualsOperator():
|
||||
methods.append(self.equalsOperator())
|
||||
|
||||
struct = CGClass(selfName,
|
||||
bases=[ClassBase(self.base())],
|
||||
members=members,
|
||||
|
|
Загрузка…
Ссылка в новой задаче