cup_cli/config/languages/
mod.rs

1mod c;
2mod cuda;
3mod cxx;
4mod hip;
5mod objc;
6mod objcxx;
7
8pub use c::CStandard;
9pub use cuda::CUDAStandard;
10pub use cxx::CXXStandard;
11pub use hip::HIPStandard;
12pub use objc::OBJCStandard;
13pub use objcxx::OBJCXXStandard;
14
15use crate::config::Shelling;
16
17#[derive(Debug, Clone, Default, serde::Serialize, serde::Deserialize)]
18pub struct LanguageConfig {
19    pub c: Option<CStandard>,
20    pub cxx: Option<CXXStandard>,
21    pub csharp: Option<String>,
22    pub cuda: Option<CUDAStandard>,
23    pub objc: Option<OBJCStandard>,
24    pub objcxx: Option<OBJCXXStandard>,
25    pub fortran: Option<String>,
26    pub hip: Option<HIPStandard>,
27    pub ispc: Option<String>,
28    pub swift: Option<String>,
29    pub asm: Option<String>,
30    pub asm_nasm: Option<String>,
31    pub asm_marmasm: Option<String>,
32    pub asm_masm: Option<String>,
33    pub asm_att: Option<String>,
34}
35
36impl Shelling<Language> for LanguageConfig {
37    fn shelling(self) -> Language {
38        Language {
39            c: self.c.unwrap_or_default(),
40            cxx: self.cxx.unwrap_or_default(),
41            csharp: self.csharp.is_some(),
42            cuda: self.cuda,
43            objc: self.objc,
44            objcxx: self.objcxx,
45            fortran: self.fortran.is_some(),
46            hip: self.hip,
47            ispc: self.ispc.is_some(),
48            swift: self.swift.is_some(),
49            asm: self.asm.is_some(),
50            asm_nasm: self.asm_nasm.is_some(),
51            asm_marmasm: self.asm_marmasm.is_some(),
52            asm_masm: self.asm_masm.is_some(),
53            asm_att: self.asm_att.is_some(),
54        }
55    }
56}
57
58#[derive(Debug, Clone)]
59pub struct Language {
60    pub c: CStandard,
61    pub cxx: CXXStandard,
62    pub cuda: Option<CUDAStandard>,
63    pub objc: Option<OBJCStandard>,
64    pub objcxx: Option<OBJCXXStandard>,
65    pub hip: Option<HIPStandard>,
66    pub csharp: bool,
67    pub fortran: bool,
68    pub ispc: bool,
69    pub swift: bool,
70    pub asm: bool,
71    pub asm_nasm: bool,
72    pub asm_marmasm: bool,
73    pub asm_masm: bool,
74    pub asm_att: bool,
75}