1#[cfg(feature = "write")]
4use crate::constants::FormattedSize;
5
6#[cfg(feature = "write")]
11pub trait WriteOptions: Default {
12 fn is_valid(&self) -> bool;
14
15 fn buffer_size<T: FormattedSize, const FORMAT: u128>(&self) -> usize;
17}
18
19#[cfg(feature = "parse")]
21pub trait ParseOptions: Default {
22 fn is_valid(&self) -> bool;
24}
25
26macro_rules! literal {
37 ($name:ident, $value:ident) => {
38 pub const $name: Option<&[u8]> = $value;
39 };
40 ($name:ident, $value:literal) => {
41 pub const $name: Option<&[u8]> = Some($value);
42 };
43}
44
45literal!(RUST_LITERAL, None);
46literal!(PYTHON_LITERAL, None);
48literal!(CXX_LITERAL_NAN, b"NAN");
50literal!(CXX_LITERAL_INF, b"INFINITY");
51literal!(CXX_LITERAL_INFINITY, b"INFINITY");
52literal!(C_LITERAL_NAN, b"NAN");
54literal!(C_LITERAL_INF, b"INFINITY");
55literal!(C_LITERAL_INFINITY, b"INFINITY");
56literal!(RUBY, None);
58literal!(SWIFT_LITERAL, None);
59literal!(GO_LITERAL, None);
61literal!(HASKELL_LITERAL, None);
63literal!(HASKELL_STRING_INF, b"Infinity");
64literal!(HASKELL_STRING_INFINITY, b"Infinity");
65literal!(JAVASCRIPT_INF, b"Infinity");
66literal!(JAVASCRIPT_INFINITY, b"Infinity");
67literal!(PERL_LITERAL, None);
68literal!(PHP_LITERAL_NAN, b"NAN");
70literal!(PHP_LITERAL_INF, b"INF");
71literal!(PHP_LITERAL_INFINITY, b"INF");
72literal!(JAVA_LITERAL, None);
74literal!(JAVA_STRING_INF, b"Infinity");
75literal!(JAVA_STRING_INFINITY, b"Infinity");
76literal!(R_LITERAL_INF, b"Inf");
77literal!(R_LITERAL_INFINITY, b"Inf");
78literal!(KOTLIN_LITERAL, None);
80literal!(KOTLIN_STRING_INF, b"Infinity");
81literal!(KOTLIN_STRING_INFINITY, b"Infinity");
82literal!(JULIA_LITERAL_INF, b"Inf");
83literal!(JULIA_LITERAL_INFINITY, b"Inf");
84literal!(CSHARP_LITERAL, None);
86literal!(CSHARP_STRING_INF, b"Infinity");
87literal!(CSHARP_STRING_INFINITY, b"Infinity");
88literal!(KAWA, None);
89literal!(GAMBITC, None);
90literal!(GUILE, None);
91literal!(CLOJURE_LITERAL, None);
92literal!(CLOJURE_STRING_INF, b"Infinity");
93literal!(CLOJURE_STRING_INFINITY, b"Infinity");
94literal!(ERLANG_LITERAL_NAN, b"nan");
95literal!(ERLANG_STRING, None);
96literal!(ELM_LITERAL, None);
97literal!(ELM_STRING_NAN, None);
98literal!(ELM_STRING_INF, b"Infinity");
99literal!(ELM_STRING_INFINITY, b"Infinity");
100literal!(SCALA_LITERAL, None);
101literal!(SCALA_STRING_INF, b"Infinity");
102literal!(SCALA_STRING_INFINITY, b"Infinity");
103literal!(ELIXIR, None);
104literal!(FORTRAN_LITERAL, None);
105literal!(D_LITERAL, None);
107literal!(COFFEESCRIPT_INF, b"Infinity");
109literal!(COFFEESCRIPT_INFINITY, b"Infinity");
110literal!(COBOL, None);
111literal!(FSHARP_LITERAL_NAN, b"nan");
112literal!(FSHARP_LITERAL_INF, b"infinity");
113literal!(FSHARP_LITERAL_INFINITY, b"infinity");
114literal!(VB_LITERAL, None);
116literal!(VB_STRING_INF, None);
117literal!(VB_STRING_INFINITY, None);
118literal!(OCAML_LITERAL_NAN, b"nan");
119literal!(OCAML_LITERAL_INF, b"infinity");
120literal!(OCAML_LITERAL_INFINITY, b"infinity");
121literal!(OBJECTIVEC, None);
123literal!(REASONML_LITERAL_NAN, b"nan");
124literal!(REASONML_LITERAL_INF, b"infinity");
125literal!(REASONML_LITERAL_INFINITY, b"infinity");
126literal!(MATLAB_LITERAL_INF, b"inf");
128literal!(MATLAB_LITERAL_INFINITY, b"Inf");
129literal!(ZIG_LITERAL, None);
131literal!(SAGE_LITERAL_INF, b"infinity");
133literal!(SAGE_LITERAL_INFINITY, b"Infinity");
134literal!(JSON, None);
136literal!(TOML, None);
137literal!(YAML, None);
138literal!(XML_INF, None);
139literal!(XML_INFINITY, None);
140literal!(SQLITE, None);
141literal!(POSTGRESQL, None);
142literal!(MYSQL, None);
143literal!(MONGODB_INF, b"Infinity");
144literal!(MONGODB_INFINITY, b"Infinity");