pub enum PointerOp {
Address(TypedPointer),
Offset(BinaryOperator),
ReadOnly(UnaryOperator),
Select(Select),
Load {
pointer: Variable,
checked: bool,
},
Store {
pointer: Variable,
value: Variable,
checked: bool,
},
Atomic {
pointer: Variable,
operation: AtomicOpCode,
values: Vec<Variable>,
},
NativeAddress(UnaryOperator),
FromNative {
address: Variable,
ty: PointerValueType,
},
}Variants§
Address(TypedPointer)
Offset(BinaryOperator)
ReadOnly(UnaryOperator)
Select(Select)
Load
Store
Atomic
NativeAddress(UnaryOperator)
FromNative
Implementations§
Trait Implementations§
Source§impl<'de> Deserialize<'de> for PointerOp
impl<'de> Deserialize<'de> for PointerOp
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<PointerOp, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<PointerOp, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
impl Eq for PointerOp
Source§impl OperationReflect for PointerOp
impl OperationReflect for PointerOp
Source§type OpCode = PointerOpCode
type OpCode = PointerOpCode
Type of the op codes for this operation
Source§fn is_pure(&self) -> bool
fn is_pure(&self) -> bool
Whether this operation is pure (has no side effects). Things like uniform/plane operations
are considered impure, because they affect other units.
Source§fn op_code(&self) -> <PointerOp as OperationReflect>::OpCode
fn op_code(&self) -> <PointerOp as OperationReflect>::OpCode
Get the opcode for this operation
Source§fn args(&self) -> Option<Vec<Variable>>
fn args(&self) -> Option<Vec<Variable>>
Get the list of arguments for this operation. If not all arguments are
Variable, returns
None instead.Source§fn from_code_and_args(
code: <PointerOp as OperationReflect>::OpCode,
args: &[Variable],
) -> Option<PointerOp>
fn from_code_and_args( code: <PointerOp as OperationReflect>::OpCode, args: &[Variable], ) -> Option<PointerOp>
Create typed operation from an opcode and a list of arguments. Returns
None if not all
arguments are Variable.Source§fn is_commutative(&self) -> bool
fn is_commutative(&self) -> bool
Whether this operation is commutative (arguments can be freely reordered). Ignored for
single argument operations.
Source§impl Serialize for PointerOp
impl Serialize for PointerOp
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
Serialize this value into the given Serde serializer. Read more
impl StructuralPartialEq for PointerOp
Auto Trait Implementations§
impl Freeze for PointerOp
impl RefUnwindSafe for PointerOp
impl Send for PointerOp
impl Sync for PointerOp
impl Unpin for PointerOp
impl UnsafeUnpin for PointerOp
impl UnwindSafe for PointerOp
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<T> CacheKey for T
impl<T> CacheValue for T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<C> CloneExpand for Cwhere
C: Clone,
impl<C> CloneExpand for Cwhere
C: Clone,
fn __expand_clone_method(&self, _scope: &mut Scope) -> C
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> CompilationArg for T
impl<T> CompilationArg for T
Source§fn dynamic_cast<Arg: CompilationArg>(&self) -> Arg
fn dynamic_cast<Arg: CompilationArg>(&self) -> Arg
Compilation args should be the same even with different element types. However, it isn’t
possible to enforce it with the type system. So, we make the compilation args serializable
and dynamically cast them. Read more
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.