40class SharedMeshVariableScalarRefT
44 typedef ItemTypeT ItemType;
45 typedef DataTypeT DataType;
46 typedef DataTypeT& DataTypeReturnReference;
48 typedef SharedMeshVariableScalarRefT<ItemTypeT, DataTypeT> ThisVariable;
52 SharedMeshVariableScalarRefT()
53 : m_true_variable(
nullptr)
55 , m_parent_family(NULL)
56 , m_direct_access(
false)
72 SharedMeshVariableScalarRefT(
IItemFamily* family, TrueVariable& v)
76 , m_direct_access(
false)
84 if (variable_family == m_family)
85 m_direct_access =
true;
86 else if (m_parent_family == variable_family)
92 SharedMeshVariableScalarRefT(
const ThisVariable& v)
93 : m_true_variable(v.m_true_variable)
94 , m_family(v.m_family)
95 , m_parent_family(v.m_parent_family)
96 , m_direct_access(v.m_direct_access)
97 , m_family_depth(v.m_family_depth)
102 ~SharedMeshVariableScalarRefT()
107 DataTypeReturnReference operator[](
const ItemType& i)
109 ARCANE_ASSERT((m_family != m_parent_family || i.itemBase() == i.itemBase().parentBase(m_family_depth)), (
"Confusion: item parent differs from item"));
110 return m_true_variable.asArray()[(m_direct_access) ? i.localId() : i.itemBase().parentId(m_family_depth)];
113 DataType operator[](
const ItemType& i)
const
115 ARCANE_ASSERT((m_family != m_parent_family || i.itemBase() == i.itemBase().parentBase(m_family_depth)), (
"Confusion: item parent differs from item"));
116 return m_true_variable.asArray()[(m_direct_access) ? i.localId() : i.itemBase().parentId(m_family_depth)];
121 ARCANE_ASSERT((m_family != m_parent_family || (*i).itemBase() == i->parent(m_family_depth)), (
"Confusion: item parent differs from item"));
122 return m_true_variable.asArray()[(m_direct_access) ? i.
localId() : i->itemBase().parentId(m_family_depth)];
127 ARCANE_ASSERT((m_family != m_parent_family || (*i).internal() == i->parent(m_family_depth)), (
"Confusion: item parent differs from item"));
128 return m_true_variable.asArray()[(m_direct_access) ? i.
localId() : i->
internal()->parentId(m_family_depth)];
131 TrueVariable& trueVariable()
133 return m_true_variable;
136 const TrueVariable& trueVariable()
const
138 return m_true_variable;
144 ARCANE_DEPRECATED_240
void operator=(
const ThisVariable& v)
146 m_true_variable.refersTo(v.m_true_variable);
147 m_family = v.m_family;
148 m_parent_family = v.m_parent_family;
149 m_direct_access = v.m_direct_access;
150 m_family_depth = v.m_family_depth;
155 TrueVariable m_true_variable;
158 bool m_direct_access;
166class SharedItemVariableScalarRefT
170 typedef DataTypeT DataType;
171 typedef DataTypeT& DataTypeReturnReference;
173 typedef SharedItemVariableScalarRefT<DataTypeT> ThisVariable;
187 SharedItemVariableScalarRefT(
IItemFamily* family, TrueVariable& v)
191 , m_direct_access(
false)
199 if (variable_family == m_family)
200 m_direct_access =
true;
201 else if (m_parent_family == variable_family)
207 SharedItemVariableScalarRefT(
const ThisVariable& v)
208 : m_true_variable(v.m_true_variable)
209 , m_family(v.m_family)
210 , m_parent_family(v.m_parent_family)
211 , m_direct_access(v.m_direct_access)
212 , m_family_depth(v.m_family_depth)
217 ~SharedItemVariableScalarRefT()
222 DataTypeReturnReference operator[](
const Item& i)
224 ARCANE_ASSERT((m_family != m_parent_family || i.
itemBase() == i.
itemBase().parentBase(m_family_depth)), (
"Confusion: item parent differs from item"));
225 return m_true_variable.asArray()[(m_direct_access) ? i.
localId() : i.
itemBase().parentId(m_family_depth)];
228 DataType operator[](
const Item& i)
const
230 ARCANE_ASSERT((m_family != m_parent_family || i.
itemBase() == i.
itemBase().parentBase(m_family_depth)), (
"Confusion: item parent differs from item"));
231 return m_true_variable.asArray()[(m_direct_access) ? i.
localId() : i.
itemBase().parentId(m_family_depth)];
236 ARCANE_ASSERT((m_family != m_parent_family || (*i).itemBase() == i->parent(m_family_depth)), (
"Confusion: item parent differs from item"));
237 return m_true_variable.asArray()[(m_direct_access) ? i.
localId() : i->itemBase().parentId(m_family_depth)];
242 ARCANE_ASSERT((m_family != m_parent_family || (*i).itemBase() == i->parent(m_family_depth)), (
"Confusion: item parent differs from item"));
243 return m_true_variable.asArray()[(m_direct_access) ? i.
localId() : i->itemBase().parentId(m_family_depth)];
246 TrueVariable& trueVariable()
248 return m_true_variable;
251 const TrueVariable& trueVariable()
const
253 return m_true_variable;
259 ARCANE_DEPRECATED_240
void operator=(
const ThisVariable& v)
261 m_true_variable.refersTo(v.m_true_variable);
262 m_family = v.m_family;
263 m_parent_family = v.m_parent_family;
264 m_direct_access = v.m_direct_access;
265 m_family_depth = v.m_family_depth;
270 TrueVariable m_true_variable;
273 bool m_direct_access;