spirv_reflect/types/
op.rs1use crate::ffi;
2use num_traits::cast::FromPrimitive;
3use spirv_headers;
4use std::ops::Deref;
5
6#[derive(Debug, Copy, Clone, PartialEq)]
7pub struct ReflectOp(spirv_headers::Op);
8
9impl Default for ReflectOp {
10 fn default() -> Self {
11 ReflectOp(spirv_headers::Op::Nop)
12 }
13}
14
15impl Deref for ReflectOp {
16 type Target = spirv_headers::Op;
17 fn deref(&self) -> &spirv_headers::Op {
18 &self.0
19 }
20}
21
22impl From<ffi::SpvOp> for ReflectOp {
23 fn from(raw_op: ffi::SpvOp) -> Self {
24 match spirv_headers::Op::from_u32(raw_op as u32) {
25 Some(op) => ReflectOp(op),
26 None => Default::default(),
27 }
28 }
29}
30
31#[derive(Debug, Copy, Clone, PartialEq)]
32pub struct ReflectBuiltIn(spirv_headers::BuiltIn);
33
34impl Default for ReflectBuiltIn {
35 fn default() -> Self {
36 ReflectBuiltIn(spirv_headers::BuiltIn::Position)
37 }
38}
39
40impl Deref for ReflectBuiltIn {
41 type Target = spirv_headers::BuiltIn;
42 fn deref(&self) -> &spirv_headers::BuiltIn {
43 &self.0
44 }
45}
46
47impl From<ffi::SpvBuiltIn> for ReflectBuiltIn {
48 fn from(raw_built_in: ffi::SpvBuiltIn) -> Self {
49 match spirv_headers::BuiltIn::from_u32(raw_built_in as u32) {
50 Some(built_in) => ReflectBuiltIn(built_in),
51 None => Default::default(),
52 }
53 }
54}