Bug 1864828 - pt 1. Move operators to create literals with units into mfbt/ r=glandium

Differential Revision: https://phabricator.services.mozilla.com/D194950
This commit is contained in:
Paul Bone 2023-12-11 11:01:33 +00:00
Родитель 7dd21bd102
Коммит 4f15ab146d
5 изменённых файлов: 42 добавлений и 21 удалений

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

@ -47,27 +47,6 @@ Order CompareAddr(T* aAddr1, T* aAddr2) {
return CompareInt(uintptr_t(aAddr1), uintptr_t(aAddr2)); return CompareInt(uintptr_t(aAddr1), uintptr_t(aAddr2));
} }
// User-defined literals to make constants more legible
constexpr size_t operator"" _KiB(unsigned long long int aNum) {
return size_t(aNum) * 1024;
}
constexpr size_t operator"" _KiB(long double aNum) {
return size_t(aNum * 1024);
}
constexpr size_t operator"" _MiB(unsigned long long int aNum) {
return size_t(aNum) * 1024_KiB;
}
constexpr size_t operator"" _MiB(long double aNum) {
return size_t(aNum * 1024_KiB);
}
constexpr double operator""_percent(long double aPercent) {
return double(aPercent) / 100;
}
// Helper for (fast) comparison of fractions without involving divisions or // Helper for (fast) comparison of fractions without involving divisions or
// floats. // floats.
class Fraction { class Fraction {

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

@ -150,6 +150,7 @@
#include "mozilla/DoublyLinkedList.h" #include "mozilla/DoublyLinkedList.h"
#include "mozilla/HelperMacros.h" #include "mozilla/HelperMacros.h"
#include "mozilla/Likely.h" #include "mozilla/Likely.h"
#include "mozilla/Literals.h"
#include "mozilla/MathAlgorithms.h" #include "mozilla/MathAlgorithms.h"
#include "mozilla/RandomNum.h" #include "mozilla/RandomNum.h"
// Note: MozTaggedAnonymousMmap() could call an LD_PRELOADed mmap // Note: MozTaggedAnonymousMmap() could call an LD_PRELOADed mmap

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

@ -4,6 +4,7 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this * 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/. */ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "mozilla/Literals.h"
#include "mozilla/mozalloc.h" #include "mozilla/mozalloc.h"
#include "mozilla/UniquePtr.h" #include "mozilla/UniquePtr.h"
#include "mozilla/Unused.h" #include "mozilla/Unused.h"

39
mfbt/Literals.h Normal file
Просмотреть файл

@ -0,0 +1,39 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
/* Helpers for units on integer literals. */
#ifndef mozilla_Literals_h
#define mozilla_Literals_h
#include <cstddef>
// User-defined literals to make constants more legible. Use them by
// appending them to literals such as:
//
// size_t page_size = 4_KiB;
//
constexpr size_t operator"" _KiB(unsigned long long int aNum) {
return size_t(aNum) * 1024;
}
constexpr size_t operator"" _KiB(long double aNum) {
return size_t(aNum * 1024);
}
constexpr size_t operator"" _MiB(unsigned long long int aNum) {
return size_t(aNum) * 1024_KiB;
}
constexpr size_t operator"" _MiB(long double aNum) {
return size_t(aNum * 1024_KiB);
}
constexpr double operator""_percent(long double aPercent) {
return double(aPercent) / 100;
}
#endif /* ! mozilla_Literals_h */

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

@ -63,6 +63,7 @@ EXPORTS.mozilla = [
"Latin1.h", "Latin1.h",
"Likely.h", "Likely.h",
"LinkedList.h", "LinkedList.h",
"Literals.h",
"MacroArgs.h", "MacroArgs.h",
"MacroForEach.h", "MacroForEach.h",
"MathAlgorithms.h", "MathAlgorithms.h",