[][src]Enum c2rust_transpile::c_ast::CExprKind

pub enum CExprKind {
    Literal(CQualTypeIdCLiteral),
    Unary(CQualTypeIdUnOpCExprIdLRValue),
    UnaryType(CQualTypeIdUnTypeOpOption<CExprId>, CQualTypeId),
    OffsetOf(CQualTypeIdOffsetOfKind),
    Binary(CQualTypeIdBinOpCExprIdCExprIdOption<CQualTypeId>, Option<CQualTypeId>),
    ImplicitCast(CQualTypeIdCExprIdCastKindOption<CFieldId>, LRValue),
    ExplicitCast(CQualTypeIdCExprIdCastKindOption<CFieldId>, LRValue),
    DeclRef(CQualTypeIdCDeclIdLRValue),
    Call(CQualTypeIdCExprIdVec<CExprId>),
    Member(CQualTypeIdCExprIdCDeclIdMemberKindLRValue),
    ArraySubscript(CQualTypeIdCExprIdCExprIdLRValue),
    Conditional(CQualTypeIdCExprIdCExprIdCExprId),
    BinaryConditional(CQualTypeIdCExprIdCExprId),
    InitList(CQualTypeIdVec<CExprId>, Option<CFieldId>, Option<CExprId>),
    ImplicitValueInit(CQualTypeId),
    CompoundLiteral(CQualTypeIdCExprId),
    Predefined(CQualTypeIdCExprId),
    Statements(CQualTypeIdCStmtId),
    VAArg(CQualTypeIdCExprId),
    ShuffleVector(CQualTypeIdVec<CExprId>),
    ConvertVector(CQualTypeIdVec<CExprId>),
    DesignatedInitExpr(CQualTypeIdVec<Designator>, CExprId),
    BadExpr,
}

Represents an expression in C (6.5 Expressions)

We've kept a qualified type on every node since Clang has this information available, and since the semantics of translations of certain constructs often depend on the type of the things they are given.

As per the C standard, qualifiers on types make sense only on lvalues.

Variants

Literal(CQualTypeIdCLiteral)Unary(CQualTypeIdUnOpCExprIdLRValue)UnaryType(CQualTypeIdUnTypeOpOption<CExprId>, CQualTypeId)OffsetOf(CQualTypeIdOffsetOfKind)Binary(CQualTypeIdBinOpCExprIdCExprIdOption<CQualTypeId>, Option<CQualTypeId>)ImplicitCast(CQualTypeIdCExprIdCastKindOption<CFieldId>, LRValue)ExplicitCast(CQualTypeIdCExprIdCastKindOption<CFieldId>, LRValue)DeclRef(CQualTypeIdCDeclIdLRValue)Call(CQualTypeIdCExprIdVec<CExprId>)Member(CQualTypeIdCExprIdCDeclIdMemberKindLRValue)ArraySubscript(CQualTypeIdCExprIdCExprIdLRValue)Conditional(CQualTypeIdCExprIdCExprIdCExprId)BinaryConditional(CQualTypeIdCExprIdCExprId)InitList(CQualTypeIdVec<CExprId>, Option<CFieldId>, Option<CExprId>)ImplicitValueInit(CQualTypeId)CompoundLiteral(CQualTypeIdCExprId)Predefined(CQualTypeIdCExprId)Statements(CQualTypeIdCStmtId)VAArg(CQualTypeIdCExprId)ShuffleVector(CQualTypeIdVec<CExprId>)ConvertVector(CQualTypeIdVec<CExprId>)DesignatedInitExpr(CQualTypeIdVec<Designator>, CExprId)BadExpr

Methods

impl CExprKind[src]

pub fn lrvalue(&self) -> LRValue[src]

pub fn get_qual_type(&self) -> Option<CQualTypeId>[src]

pub fn get_type(&self) -> Option<CTypeId>[src]

pub fn get_bool(&self) -> Option<bool>[src]

Try to determine the truthiness or falsiness of the expression. Return None if we can't say anything.

Trait Implementations

impl Clone for CExprKind[src]

default fn clone_from(&mut self, source: &Self)
1.0.0
[src]

Performs copy-assignment from source. Read more

impl Debug for CExprKind[src]

Auto Trait Implementations

impl Send for CExprKind

impl Sync for CExprKind

Blanket Implementations

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

impl<T> From for T[src]

impl<T, U> Into for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T> Borrow for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> BorrowMut for T where
    T: ?Sized
[src]

impl<T, U> TryInto for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<E> SpecializationError for E[src]

impl<T> Erased for T[src]

impl<T> Send for T where
    T: ?Sized
[src]

impl<T> Sync for T where
    T: ?Sized
[src]

impl<T> Make for T[src]

impl<T> MaybeResult for T[src]

impl<'a, T> Captures for T where
    T: ?Sized
[src]

impl<T> Erased for T