int audit - libcore::fmt
This commit is contained in:
@@ -40,10 +40,10 @@ pub enum ExponentFormat {
|
||||
pub enum SignificantDigits {
|
||||
/// At most the given number of digits will be printed, truncating any
|
||||
/// trailing zeroes.
|
||||
DigMax(uint),
|
||||
DigMax(usize),
|
||||
|
||||
/// Precisely the given number of digits will be printed.
|
||||
DigExact(uint)
|
||||
DigExact(usize)
|
||||
}
|
||||
|
||||
/// How to emit the sign of a number.
|
||||
@@ -240,27 +240,27 @@ pub fn float_to_str_bytes_common<T: Float, U, F>(
|
||||
// If reached left end of number, have to
|
||||
// insert additional digit:
|
||||
if i < 0
|
||||
|| buf[i as uint] == b'-'
|
||||
|| buf[i as uint] == b'+' {
|
||||
for j in (i as uint + 1..end).rev() {
|
||||
|| buf[i as usize] == b'-'
|
||||
|| buf[i as usize] == b'+' {
|
||||
for j in (i as usize + 1..end).rev() {
|
||||
buf[j + 1] = buf[j];
|
||||
}
|
||||
buf[(i + 1) as uint] = value2ascii(1);
|
||||
buf[(i + 1) as usize] = value2ascii(1);
|
||||
end += 1;
|
||||
break;
|
||||
}
|
||||
|
||||
// Skip the '.'
|
||||
if buf[i as uint] == b'.' { i -= 1; continue; }
|
||||
if buf[i as usize] == b'.' { i -= 1; continue; }
|
||||
|
||||
// Either increment the digit,
|
||||
// or set to 0 if max and carry the 1.
|
||||
let current_digit = ascii2value(buf[i as uint]);
|
||||
let current_digit = ascii2value(buf[i as usize]);
|
||||
if current_digit < (radix - 1) {
|
||||
buf[i as uint] = value2ascii(current_digit+1);
|
||||
buf[i as usize] = value2ascii(current_digit+1);
|
||||
break;
|
||||
} else {
|
||||
buf[i as uint] = value2ascii(0);
|
||||
buf[i as usize] = value2ascii(0);
|
||||
i -= 1;
|
||||
}
|
||||
}
|
||||
@@ -311,7 +311,7 @@ pub fn float_to_str_bytes_common<T: Float, U, F>(
|
||||
|
||||
struct Filler<'a> {
|
||||
buf: &'a mut [u8],
|
||||
end: &'a mut uint,
|
||||
end: &'a mut usize,
|
||||
}
|
||||
|
||||
impl<'a> fmt::Write for Filler<'a> {
|
||||
|
||||
@@ -110,11 +110,14 @@ pub trait Write {
|
||||
/// traits.
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
pub struct Formatter<'a> {
|
||||
flags: uint,
|
||||
#[cfg(not(stage0))]
|
||||
flags: u32,
|
||||
#[cfg(stage0)]
|
||||
flags: usize,
|
||||
fill: char,
|
||||
align: rt::v1::Alignment,
|
||||
width: Option<uint>,
|
||||
precision: Option<uint>,
|
||||
width: Option<usize>,
|
||||
precision: Option<usize>,
|
||||
|
||||
buf: &'a mut (Write+'a),
|
||||
curarg: slice::Iter<'a, ArgumentV1<'a>>,
|
||||
@@ -140,7 +143,7 @@ pub struct ArgumentV1<'a> {
|
||||
|
||||
impl<'a> ArgumentV1<'a> {
|
||||
#[inline(never)]
|
||||
fn show_uint(x: &uint, f: &mut Formatter) -> Result {
|
||||
fn show_usize(x: &usize, f: &mut Formatter) -> Result {
|
||||
Display::fmt(x, f)
|
||||
}
|
||||
|
||||
@@ -156,15 +159,22 @@ impl<'a> ArgumentV1<'a> {
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(stage0)]
|
||||
#[doc(hidden)]
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
pub fn from_uint(x: &uint) -> ArgumentV1 {
|
||||
ArgumentV1::new(x, ArgumentV1::show_uint)
|
||||
ArgumentV1::new(x, ArgumentV1::show_usize)
|
||||
}
|
||||
#[cfg(not(stage0))]
|
||||
#[doc(hidden)]
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
pub fn from_usize(x: &usize) -> ArgumentV1 {
|
||||
ArgumentV1::new(x, ArgumentV1::show_usize)
|
||||
}
|
||||
|
||||
fn as_uint(&self) -> Option<uint> {
|
||||
if self.formatter as uint == ArgumentV1::show_uint as uint {
|
||||
Some(unsafe { *(self.value as *const _ as *const uint) })
|
||||
fn as_usize(&self) -> Option<usize> {
|
||||
if self.formatter as usize == ArgumentV1::show_usize as usize {
|
||||
Some(unsafe { *(self.value as *const _ as *const usize) })
|
||||
} else {
|
||||
None
|
||||
}
|
||||
@@ -194,7 +204,7 @@ impl<'a> Arguments<'a> {
|
||||
/// The `pieces` array must be at least as long as `fmt` to construct
|
||||
/// a valid Arguments structure. Also, any `Count` within `fmt` that is
|
||||
/// `CountIsParam` or `CountIsNextParam` has to point to an argument
|
||||
/// created with `argumentuint`. However, failing to do so doesn't cause
|
||||
/// created with `argumentusize`. However, failing to do so doesn't cause
|
||||
/// unsafety, but will ignore invalid .
|
||||
#[doc(hidden)] #[inline]
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
@@ -434,15 +444,15 @@ impl<'a> Formatter<'a> {
|
||||
(value.formatter)(value.value, self)
|
||||
}
|
||||
|
||||
fn getcount(&mut self, cnt: &rt::v1::Count) -> Option<uint> {
|
||||
fn getcount(&mut self, cnt: &rt::v1::Count) -> Option<usize> {
|
||||
match *cnt {
|
||||
rt::v1::Count::Is(n) => Some(n),
|
||||
rt::v1::Count::Implied => None,
|
||||
rt::v1::Count::Param(i) => {
|
||||
self.args[i].as_uint()
|
||||
self.args[i].as_usize()
|
||||
}
|
||||
rt::v1::Count::NextParam => {
|
||||
self.curarg.next().and_then(|arg| arg.as_uint())
|
||||
self.curarg.next().and_then(|arg| arg.as_usize())
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -476,12 +486,12 @@ impl<'a> Formatter<'a> {
|
||||
let mut sign = None;
|
||||
if !is_positive {
|
||||
sign = Some('-'); width += 1;
|
||||
} else if self.flags & (1 << (FlagV1::SignPlus as uint)) != 0 {
|
||||
} else if self.flags & (1 << (FlagV1::SignPlus as u32)) != 0 {
|
||||
sign = Some('+'); width += 1;
|
||||
}
|
||||
|
||||
let mut prefixed = false;
|
||||
if self.flags & (1 << (FlagV1::Alternate as uint)) != 0 {
|
||||
if self.flags & (1 << (FlagV1::Alternate as u32)) != 0 {
|
||||
prefixed = true; width += prefix.char_len();
|
||||
}
|
||||
|
||||
@@ -511,7 +521,7 @@ impl<'a> Formatter<'a> {
|
||||
}
|
||||
// The sign and prefix goes before the padding if the fill character
|
||||
// is zero
|
||||
Some(min) if self.flags & (1 << (FlagV1::SignAwareZeroPad as uint)) != 0 => {
|
||||
Some(min) if self.flags & (1 << (FlagV1::SignAwareZeroPad as u32)) != 0 => {
|
||||
self.fill = '0';
|
||||
try!(write_prefix(self));
|
||||
self.with_padding(min - width, Alignment::Right, |f| {
|
||||
@@ -581,7 +591,7 @@ impl<'a> Formatter<'a> {
|
||||
|
||||
/// Runs a callback, emitting the correct padding either before or
|
||||
/// afterwards depending on whether right or left alignment is requested.
|
||||
fn with_padding<F>(&mut self, padding: uint, default: Alignment,
|
||||
fn with_padding<F>(&mut self, padding: usize, default: Alignment,
|
||||
f: F) -> Result
|
||||
where F: FnOnce(&mut Formatter) -> Result,
|
||||
{
|
||||
@@ -627,6 +637,11 @@ impl<'a> Formatter<'a> {
|
||||
write(self.buf, fmt)
|
||||
}
|
||||
|
||||
#[cfg(not(stage0))]
|
||||
/// Flags for formatting (packed version of rt::Flag)
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
pub fn flags(&self) -> u32 { self.flags }
|
||||
#[cfg(stage0)]
|
||||
/// Flags for formatting (packed version of rt::Flag)
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
pub fn flags(&self) -> usize { self.flags }
|
||||
@@ -641,11 +656,11 @@ impl<'a> Formatter<'a> {
|
||||
|
||||
/// Optionally specified integer width that the output should be
|
||||
#[unstable(feature = "core", reason = "method was just created")]
|
||||
pub fn width(&self) -> Option<uint> { self.width }
|
||||
pub fn width(&self) -> Option<usize> { self.width }
|
||||
|
||||
/// Optionally specified precision for numeric types
|
||||
#[unstable(feature = "core", reason = "method was just created")]
|
||||
pub fn precision(&self) -> Option<uint> { self.precision }
|
||||
pub fn precision(&self) -> Option<usize> { self.precision }
|
||||
}
|
||||
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
@@ -731,9 +746,9 @@ impl Display for char {
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
impl<T> Pointer for *const T {
|
||||
fn fmt(&self, f: &mut Formatter) -> Result {
|
||||
f.flags |= 1 << (FlagV1::Alternate as uint);
|
||||
let ret = LowerHex::fmt(&(*self as uint), f);
|
||||
f.flags &= !(1 << (FlagV1::Alternate as uint));
|
||||
f.flags |= 1 << (FlagV1::Alternate as u32);
|
||||
let ret = LowerHex::fmt(&(*self as u32), f);
|
||||
f.flags &= !(1 << (FlagV1::Alternate as u32));
|
||||
ret
|
||||
}
|
||||
}
|
||||
@@ -889,7 +904,7 @@ impl<'a> Debug for &'a (any::Any+'a) {
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
impl<T: Debug> Debug for [T] {
|
||||
fn fmt(&self, f: &mut Formatter) -> Result {
|
||||
if f.flags & (1 << (FlagV1::Alternate as uint)) == 0 {
|
||||
if f.flags & (1 << (FlagV1::Alternate as u32)) == 0 {
|
||||
try!(write!(f, "["));
|
||||
}
|
||||
let mut is_first = true;
|
||||
@@ -901,7 +916,7 @@ impl<T: Debug> Debug for [T] {
|
||||
}
|
||||
try!(write!(f, "{:?}", *x))
|
||||
}
|
||||
if f.flags & (1 << (FlagV1::Alternate as uint)) == 0 {
|
||||
if f.flags & (1 << (FlagV1::Alternate as u32)) == 0 {
|
||||
try!(write!(f, "]"));
|
||||
}
|
||||
Ok(())
|
||||
|
||||
@@ -214,7 +214,7 @@ macro_rules! integer {
|
||||
show! { $Uint with $SU }
|
||||
}
|
||||
}
|
||||
integer! { int, uint, "i", "u" }
|
||||
integer! { isize, usize, "i", "u" }
|
||||
integer! { i8, u8 }
|
||||
integer! { i16, u16 }
|
||||
integer! { i32, u32 }
|
||||
|
||||
@@ -32,8 +32,12 @@ pub struct FormatSpec {
|
||||
pub fill: char,
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
pub align: Alignment,
|
||||
#[cfg(stage0)]
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
pub flags: uint,
|
||||
pub flags: usize,
|
||||
#[cfg(not(stage0))]
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
pub flags: u32,
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
pub precision: Count,
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
|
||||
Reference in New Issue
Block a user