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));
}
// 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
// floats.
class Fraction {

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

@ -150,6 +150,7 @@
#include "mozilla/DoublyLinkedList.h"
#include "mozilla/HelperMacros.h"
#include "mozilla/Likely.h"
#include "mozilla/Literals.h"
#include "mozilla/MathAlgorithms.h"
#include "mozilla/RandomNum.h"
// 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
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "mozilla/Literals.h"
#include "mozilla/mozalloc.h"
#include "mozilla/UniquePtr.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",
"Likely.h",
"LinkedList.h",
"Literals.h",
"MacroArgs.h",
"MacroForEach.h",
"MathAlgorithms.h",