Bug 1510853 - Make TransactionId usable for other 64bit identifiers. r=jrmuizel

MozReview-Commit-ID: 9qX9A7ZGWS8

Differential Revision: https://phabricator.services.mozilla.com/D13349

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Matt Woodrow 2018-12-07 23:26:53 +00:00
Родитель 68d2cbb22e
Коммит cd30c32037
2 изменённых файлов: 25 добавлений и 13 удалений

Просмотреть файл

@ -79,39 +79,51 @@ struct LayersId {
};
};
struct TransactionId {
uint64_t mId;
template <typename T>
struct BaseTransactionId {
uint64_t mId = 0;
bool IsValid() const { return mId != 0; }
MOZ_MUST_USE TransactionId Next() const { return TransactionId{mId + 1}; }
MOZ_MUST_USE BaseTransactionId<T> Next() const {
return BaseTransactionId<T>{mId + 1};
}
MOZ_MUST_USE TransactionId Prev() const { return TransactionId{mId - 1}; }
MOZ_MUST_USE BaseTransactionId<T> Prev() const {
return BaseTransactionId<T>{mId - 1};
}
int64_t operator-(const TransactionId& aOther) const {
int64_t operator-(const BaseTransactionId<T>& aOther) const {
return mId - aOther.mId;
}
// Allow explicit cast to a uint64_t for now
explicit operator uint64_t() const { return mId; }
bool operator<(const TransactionId& aOther) const { return mId < aOther.mId; }
bool operator<(const BaseTransactionId<T>& aOther) const {
return mId < aOther.mId;
}
bool operator<=(const TransactionId& aOther) const {
bool operator<=(const BaseTransactionId<T>& aOther) const {
return mId <= aOther.mId;
}
bool operator>(const TransactionId& aOther) const { return mId > aOther.mId; }
bool operator>(const BaseTransactionId<T>& aOther) const {
return mId > aOther.mId;
}
bool operator>=(const TransactionId& aOther) const {
bool operator>=(const BaseTransactionId<T>& aOther) const {
return mId >= aOther.mId;
}
bool operator==(const TransactionId& aOther) const {
bool operator==(const BaseTransactionId<T>& aOther) const {
return mId == aOther.mId;
}
};
class TransactionIdType {};
typedef BaseTransactionId<TransactionIdType> TransactionId;
struct LayersObserverEpoch {
uint64_t mId;

Просмотреть файл

@ -38,9 +38,9 @@ template <>
struct ParamTraits<mozilla::layers::LayersId>
: public PlainOldDataSerializer<mozilla::layers::LayersId> {};
template <>
struct ParamTraits<mozilla::layers::TransactionId>
: public PlainOldDataSerializer<mozilla::layers::TransactionId> {};
template <typename T>
struct ParamTraits<mozilla::layers::BaseTransactionId<T>>
: public PlainOldDataSerializer<mozilla::layers::BaseTransactionId<T>> {};
template <>
struct ParamTraits<mozilla::layers::LayersObserverEpoch>