Vendor things
This commit is contained in:
parent
5deceec006
commit
977e3c17e5
19434 changed files with 10682014 additions and 0 deletions
65
third-party/vendor/smartstring/src/marker_byte.rs
vendored
Normal file
65
third-party/vendor/smartstring/src/marker_byte.rs
vendored
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
// 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/.
|
||||
|
||||
#[derive(Clone, Copy, PartialEq, Eq, Debug)]
|
||||
pub(crate) enum Discriminant {
|
||||
Boxed,
|
||||
Inline,
|
||||
}
|
||||
|
||||
impl Discriminant {
|
||||
#[inline(always)]
|
||||
pub(crate) const fn from_bit(bit: bool) -> Self {
|
||||
if bit {
|
||||
Self::Inline
|
||||
} else {
|
||||
Self::Boxed
|
||||
}
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
const fn bit(self) -> u8 {
|
||||
match self {
|
||||
Self::Boxed => 0,
|
||||
Self::Inline => 1,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy, Debug)]
|
||||
pub(crate) struct Marker(u8);
|
||||
|
||||
impl Marker {
|
||||
#[inline(always)]
|
||||
const fn assemble(discriminant: Discriminant, data: u8) -> u8 {
|
||||
data << 1 | discriminant.bit()
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
pub(crate) const fn empty() -> Self {
|
||||
Self(Self::assemble(Discriminant::Inline, 0))
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
pub(crate) const fn new_inline(data: u8) -> Self {
|
||||
debug_assert!(data < 0x80);
|
||||
Self(Self::assemble(Discriminant::Inline, data))
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
pub(crate) const fn discriminant(self) -> Discriminant {
|
||||
Discriminant::from_bit(self.0 & 0x01 != 0)
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
pub(crate) const fn data(self) -> u8 {
|
||||
self.0 >> 1
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
pub(crate) fn set_data(&mut self, byte: u8) {
|
||||
debug_assert!(byte < 0x80);
|
||||
self.0 = Self::assemble(self.discriminant(), byte);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue