Files
tubestation/toolkit/components/resistfingerprinting/nsRFPTargetSetIDL.cpp
Fatih Kilic 73f4f01465 Bug 1939881: Implement RFPTargetBits and replace appropriate uses. r=tjr
This is a huge patch, but it is only really refactoring of RFPTarget enum. We used to use RFPTarget as a bitset and now we ran out of bits, so now we need a workaround.

Differential Revision: https://phabricator.services.mozilla.com/D233182
2025-01-23 14:49:44 +00:00

47 lines
1.2 KiB
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 "nsRFPTargetSetIDL.h"
namespace mozilla {
NS_IMPL_ISUPPORTS(nsRFPTargetSetIDL, nsIRFPTargetSetIDL)
NS_IMETHODIMP
nsRFPTargetSetIDL::GetLow(uint64_t* aLow) {
std::bitset<128> bitset = mBits.serialize();
std::bitset<128> mask = std::bitset<128>(0xFFFFFFFFFFFFFFFF);
*aLow = (bitset & mask).to_ullong();
return NS_OK;
}
NS_IMETHODIMP
nsRFPTargetSetIDL::GetHigh(uint64_t* aHigh) {
std::bitset<128> bitset = mBits.serialize();
std::bitset<128> mask = std::bitset<128>(0xFFFFFFFFFFFFFFFF);
*aHigh = ((bitset >> 64) & mask).to_ullong();
return NS_OK;
}
NS_IMETHODIMP
nsRFPTargetSetIDL::SetLow(uint64_t aLow) {
std::bitset<128> bitset = mBits.serialize();
bitset |= aLow;
mBits.deserialize(bitset);
return NS_OK;
}
NS_IMETHODIMP
nsRFPTargetSetIDL::SetHigh(uint64_t aHigh) {
std::bitset<128> bitset = mBits.serialize();
std::bitset<128> mask = std::bitset<128>(0xFFFFFFFFFFFFFFFF);
uint64_t low = (bitset & mask).to_ullong();
bitset = aHigh;
bitset <<= 64;
bitset |= low;
return NS_OK;
}
} // namespace mozilla