oxilean_codegen/csharp_backend/
csharplit_traits.rs1use crate::lcnf::*;
12
13use super::types::CSharpLit;
14use std::fmt;
15
16impl fmt::Display for CSharpLit {
17 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
18 match self {
19 CSharpLit::Int(n) => write!(f, "{}", n),
20 CSharpLit::Long(n) => write!(f, "{}L", n),
21 CSharpLit::Bool(b) => write!(f, "{}", if *b { "true" } else { "false" }),
22 CSharpLit::Null => write!(f, "null"),
23 CSharpLit::Float(v) => {
24 if v.fract() == 0.0 && v.is_finite() {
25 write!(f, "{}.0f", *v as i64)
26 } else {
27 write!(f, "{}f", v)
28 }
29 }
30 CSharpLit::Double(v) => {
31 if v.fract() == 0.0 && v.is_finite() {
32 write!(f, "{}.0", *v as i64)
33 } else {
34 write!(f, "{}", v)
35 }
36 }
37 CSharpLit::Char(c) => write!(f, "'{}'", c),
38 CSharpLit::Str(s) => {
39 write!(f, "\"")?;
40 for c in s.chars() {
41 match c {
42 '"' => write!(f, "\\\"")?,
43 '\\' => write!(f, "\\\\")?,
44 '\n' => write!(f, "\\n")?,
45 '\r' => write!(f, "\\r")?,
46 '\t' => write!(f, "\\t")?,
47 c => write!(f, "{}", c)?,
48 }
49 }
50 write!(f, "\"")
51 }
52 }
53 }
54}