use crate::span::Ident;
use super::{CommonExprData, ExprKind};
#[repr(C)]
#[derive(Debug)]
pub struct IndexExpr<'ast> {
data: CommonExprData<'ast>,
operand: ExprKind<'ast>,
index: ExprKind<'ast>,
}
impl<'ast> IndexExpr<'ast> {
pub fn operand(&self) -> ExprKind<'ast> {
self.operand
}
pub fn index(&self) -> ExprKind<'ast> {
self.index
}
}
super::impl_expr_data!(IndexExpr<'ast>, Index);
#[cfg(feature = "driver-api")]
impl<'ast> IndexExpr<'ast> {
pub fn new(data: CommonExprData<'ast>, operand: ExprKind<'ast>, index: ExprKind<'ast>) -> Self {
Self { data, operand, index }
}
}
#[repr(C)]
#[derive(Debug)]
pub struct FieldExpr<'ast> {
data: CommonExprData<'ast>,
operand: ExprKind<'ast>,
field: Ident<'ast>,
}
impl<'ast> FieldExpr<'ast> {
pub fn operand(&self) -> ExprKind<'ast> {
self.operand
}
pub fn field(&self) -> &Ident<'ast> {
&self.field
}
}
super::impl_expr_data!(FieldExpr<'ast>, Field);
#[cfg(feature = "driver-api")]
impl<'ast> FieldExpr<'ast> {
pub fn new(data: CommonExprData<'ast>, operand: ExprKind<'ast>, field: Ident<'ast>) -> Self {
Self { data, operand, field }
}
}