1use enumflags2::bitflags;
2
3use std::fmt::Display;
4
5#[bitflags]
7#[repr(u8)]
8#[derive(Debug, Clone, Copy, PartialEq, Eq)]
9pub enum Target {
10 C,
15
16 MultiCore,
21
22 OpenCL,
28
29 Cuda,
34
35 ISPC,
40}
41
42impl Display for Target {
43 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
44 write!(f, "{}", self.name())
45 }
46}
47
48impl Target {
49 pub(crate) fn struct_name(&self) -> &'static str {
50 match self {
51 Target::C => "C",
52 Target::MultiCore => "MultiCore",
53 Target::OpenCL => "OpenCL",
54 Target::Cuda => "Cuda",
55 Target::ISPC => "Ispc",
56 }
57 }
58
59 pub(crate) fn name(&self) -> &'static str {
60 match self {
61 Target::C => "c",
62 Target::MultiCore => "multicore",
63 Target::OpenCL => "opencl",
64 Target::Cuda => "cuda",
65 Target::ISPC => "ispc",
66 }
67 }
68}