cup_cli/config/languages/
mod.rs1mod 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}