about summary refs log tree commit diff
path: root/src/libstd/mem.rs
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2014-02-09 00:17:37 -0800
committerBrian Anderson <banderson@mozilla.com>2014-02-09 00:17:41 -0800
commit073b655187916e9155d285efc496cfd89104796c (patch)
tree72ab55665fbbf93ec91a4869e7952deb256817eb /src/libstd/mem.rs
parentc7710cdf4563533b211a16cb02a9b4cb70ed3ca9 (diff)
downloadrust-073b655187916e9155d285efc496cfd89104796c.tar.gz
rust-073b655187916e9155d285efc496cfd89104796c.zip
std: Move byteswap functions to mem
Diffstat (limited to 'src/libstd/mem.rs')
-rw-r--r--src/libstd/mem.rs31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/libstd/mem.rs b/src/libstd/mem.rs
index c1cf226a8f2..c7425d5b2b7 100644
--- a/src/libstd/mem.rs
+++ b/src/libstd/mem.rs
@@ -10,7 +10,10 @@
 
 //! Functions relating to memory layout
 
+#[allow(missing_doc)]; // FIXME
+
 use unstable::intrinsics;
+use unstable::intrinsics::{bswap16, bswap32, bswap64};
 
 /// Returns the size of a type
 #[inline]
@@ -91,6 +94,34 @@ pub unsafe fn move_val_init<T>(dst: &mut T, src: T) {
     intrinsics::move_val_init(dst, src)
 }
 
+#[cfg(target_endian = "little")] #[inline] pub fn to_le16(x: i16) -> i16 { x }
+#[cfg(target_endian = "big")]    #[inline] pub fn to_le16(x: i16) -> i16 { unsafe { bswap16(x) } }
+#[cfg(target_endian = "little")] #[inline] pub fn to_le32(x: i32) -> i32 { x }
+#[cfg(target_endian = "big")]    #[inline] pub fn to_le32(x: i32) -> i32 { unsafe { bswap32(x) } }
+#[cfg(target_endian = "little")] #[inline] pub fn to_le64(x: i64) -> i64 { x }
+#[cfg(target_endian = "big")]    #[inline] pub fn to_le64(x: i64) -> i64 { unsafe { bswap64(x) } }
+
+#[cfg(target_endian = "little")] #[inline] pub fn to_be16(x: i16) -> i16 { unsafe { bswap16(x) } }
+#[cfg(target_endian = "big")]    #[inline] pub fn to_be16(x: i16) -> i16 { x }
+#[cfg(target_endian = "little")] #[inline] pub fn to_be32(x: i32) -> i32 { unsafe { bswap32(x) } }
+#[cfg(target_endian = "big")]    #[inline] pub fn to_be32(x: i32) -> i32 { x }
+#[cfg(target_endian = "little")] #[inline] pub fn to_be64(x: i64) -> i64 { unsafe { bswap64(x) } }
+#[cfg(target_endian = "big")]    #[inline] pub fn to_be64(x: i64) -> i64 { x }
+
+#[cfg(target_endian = "little")] #[inline] pub fn from_le16(x: i16) -> i16 { x }
+#[cfg(target_endian = "big")]    #[inline] pub fn from_le16(x: i16) -> i16 { unsafe { bswap16(x) } }
+#[cfg(target_endian = "little")] #[inline] pub fn from_le32(x: i32) -> i32 { x }
+#[cfg(target_endian = "big")]    #[inline] pub fn from_le32(x: i32) -> i32 { unsafe { bswap32(x) } }
+#[cfg(target_endian = "little")] #[inline] pub fn from_le64(x: i64) -> i64 { x }
+#[cfg(target_endian = "big")]    #[inline] pub fn from_le64(x: i64) -> i64 { unsafe { bswap64(x) } }
+
+#[cfg(target_endian = "little")] #[inline] pub fn from_be16(x: i16) -> i16 { unsafe { bswap16(x) } }
+#[cfg(target_endian = "big")]    #[inline] pub fn from_be16(x: i16) -> i16 { x }
+#[cfg(target_endian = "little")] #[inline] pub fn from_be32(x: i32) -> i32 { unsafe { bswap32(x) } }
+#[cfg(target_endian = "big")]    #[inline] pub fn from_be32(x: i32) -> i32 { x }
+#[cfg(target_endian = "little")] #[inline] pub fn from_be64(x: i64) -> i64 { unsafe { bswap64(x) } }
+#[cfg(target_endian = "big")]    #[inline] pub fn from_be64(x: i64) -> i64 { x }
+
 
 #[cfg(test)]
 mod tests {