11#ifndef SINDEX_ASSIGN_H
12#define SINDEX_ASSIGN_H
22template<
unsigned Dim>
class SIndex;
31template<
unsigned Dim,
class RHS,
class OP,
bool IsExpr>
39#define SI_ASSIGNMENT_FUNCTIONS(FUNC,OP) \
41template<unsigned Dim, class RHS> \
43FUNC(SIndex<Dim>& lhs, const PETE_Expr<RHS>& rhs) \
45 assign(lhs, rhs.PETE_unwrap().MakeExpression(), OP(), \
46 lhs.getFieldLayout().getDomain(), SIExprTag<false>()); \
49template<unsigned Dim, class RHS> \
51FUNC(SIndex<Dim>& lhs, const PETE_Expr<RHS>& rhs, \
52 const NDIndex<Dim>& domain) \
54 assign(lhs, rhs.PETE_unwrap().MakeExpression(), OP(), \
55 domain, SIExprTag<true>()); \
58#define SI_ASSIGNMENT_OPERATORS(FUNC,OP) \
60template<unsigned Dim, class RHS> \
62FUNC(SIndex<Dim>& lhs, const PETE_Expr<RHS>& rhs) \
64 assign(lhs, rhs.PETE_unwrap().MakeExpression(), OP(), \
65 lhs.getFieldLayout().getDomain(), SIExprTag<false>()); \
77#include "Index/SIndexAssign.hpp"
void assign(const BareField< T, Dim > &a, RHS b, OP op, ExprTag< true >)
void assign(SIndex< Dim > &, RHS, OP, const NDIndex< Dim > &, SIExprTag< IsExpr >)
#define SI_ASSIGNMENT_FUNCTIONS(FUNC, OP)
#define SI_ASSIGNMENT_OPERATORS(FUNC, OP)