28#include <arccore/base/BaseTypes.h>
29#include <arccore/base/FatalErrorException.h>
30#include <arccore/base/String.h>
32#include <arccore/collections/Array.h>
40using namespace Arccore;
78 Integer
size()
const {
return m_size; }
84 const String&
name()
const {
return m_name; }
91 void setField(String label,
const UniqueArray<Arccore::Integer>& indices)
93 if (m_fields.find(label) != m_fields.end())
94 throw Alien::FatalErrorException(
"Field already defined");
95 m_fields[label] = indices;
103 Integer
nbField()
const {
return static_cast<Integer
>(m_fields.size()); }
110 const UniqueArray<Arccore::Integer>&
field(String label)
const
112 auto field = m_fields.find(label);
113 if (
field == m_fields.end())
114 throw Alien::FatalErrorException(
"Field not defined");
115 return field->second;
123 const UniqueArray<Arccore::Integer>&
field(Integer i)
const
125 return field(m_labels[i]);
141 std::map<String, UniqueArray<Arccore::Integer>> m_fields;
143 UniqueArray<String> m_labels;
157: m_internal(new Internal(size))
164: m_internal(new Internal(size, name))
172, m_internal(space.m_internal)
179: m_internal(space.m_internal)
193 m_internal = src.m_internal;
203 m_internal = src.m_internal;
213 return m_internal->size();
238 return m_internal->name();
244void Space::setField(String label,
const UniqueArray<Arccore::Integer>& indices)
246 m_internal->setField(label, indices);
255 return m_internal->nbField();
261const UniqueArray<Arccore::Integer>&
264 return m_internal->field(label);
270const UniqueArray<Arccore::Integer>&
273 return m_internal->field(i);
282 return m_internal->fieldLabel(i);
288std::shared_ptr<ISpace>
291 return std::make_shared<Space>(*
this);
virtual const Arccore::String & name() const =0
Get space name.
virtual Arccore::Integer size() const =0
Get space size.
Internal structure of Space object.
String fieldLabel(Integer i) const
Get the label of the i-th field.
Integer nbField() const
Get the number of fields.
const UniqueArray< Arccore::Integer > & field(String label) const
Get the indices associated to a label.
Internal(Integer size)
Size constructor.
const UniqueArray< Arccore::Integer > & field(Integer i) const
Get indices associated to the i-th field \para[in] i The requested field.
const String & name() const
Get space name.
Integer size() const
Get space size.
void setField(String label, const UniqueArray< Arccore::Integer > &indices)
Set label on matrix entries.
Internal(Integer size, String name)
Full constructor.
Implementation of an algebraic space.
Space & operator=(const Space &src)
Equal operator.
Arccore::Integer nbField() const
Get the number of fields.
Arccore::String fieldLabel(Arccore::Integer i) const
Get the label of the i-th field.
const Arccore::String & name() const
Get space name.
Arccore::Integer size() const
Get space size.
void setField(Arccore::String label, const Arccore::UniqueArray< Arccore::Integer > &indices)
Set label on matrix entries.
const Arccore::UniqueArray< Arccore::Integer > & field(Arccore::Integer i) const
Get indices associated to the i-th field \para[in] i The requested field.
std::shared_ptr< ISpace > clone() const
Clone this object.
bool operator!=(const ISpace &space) const
Comparison operator.
bool operator==(const ISpace &space) const
Comparison operator.
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --