f128_input 0.2.0

Bindings to the gcc quadmath library
Documentation
extern crate f128_internal;
extern crate proc_macro;

use f128_internal::f128;
use proc_macro::TokenStream;
use std::str;

fn parse(s: &str) -> String {
    let s = s.replace(' ', "");
    let s = &s[..];
    match f128::parse(s) {
        Ok(it) =>
            format!(
                "unsafe {{ ::std::mem::transmute::<[u8; 16], f128>({:?}) }}",
                it.into_inner()
            ),
        Err(_) => panic!(format!("'{:?}' is not a valid f128", s)),
    }
}

#[proc_macro]
pub fn f128_inner(item: TokenStream) -> TokenStream {
    let s = item.to_string();
    parse(&s[..]).parse().unwrap()
}