Alien  1.3.0
Developer documentation
Loading...
Searching...
No Matches
IAbstractFamily.h
1/*
2 * Copyright 2020 IFPEN-CEA
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 *
16 * SPDX-License-Identifier: Apache-2.0
17 */
18
19#pragma once
20
21#include <alien/utils/SafeConstArrayView.h>
22
23/*---------------------------------------------------------------------------*/
24/*---------------------------------------------------------------------------*/
25
26namespace Alien
27{
28
29/*---------------------------------------------------------------------------*/
30/*---------------------------------------------------------------------------*/
31
33class IAbstractFamily
34{
35 public:
36 class Item
37 {
38 public:
39 Item(Int64 uniqueId, Integer owner)
40 : m_unique_id(uniqueId)
41 , m_owner(owner)
42 {}
43
44 Int64 uniqueId() const { return m_unique_id; }
45
46 Integer owner() const { return m_owner; }
47
48 private:
49 Int64 m_unique_id;
50 Integer m_owner;
51 };
52
53 protected:
54 IAbstractFamily() = default;
55
56 public:
57 virtual ~IAbstractFamily() = default;
58
59 IAbstractFamily(const IAbstractFamily&) = delete;
60 IAbstractFamily(IAbstractFamily&&) = delete;
61 void operator=(const IAbstractFamily&) = delete;
62 void operator=(IAbstractFamily&&) = delete;
63
64 virtual IAbstractFamily* clone() const = 0;
65
67 virtual Int32 maxLocalId() const = 0;
68
72 virtual void uniqueIdToLocalId(
73 ArrayView<Integer> localIds, ConstArrayView<Int64> uniqueIds) const = 0;
74
76 virtual Item item(Int32 localId) const = 0;
77
79 virtual SafeConstArrayView<Integer> owners(ConstArrayView<Integer> localIds) const = 0;
80
82 virtual SafeConstArrayView<Int64> uids(ConstArrayView<Integer> localIds) const = 0;
83
86};
87
88/*---------------------------------------------------------------------------*/
89/*---------------------------------------------------------------------------*/
90} // namespace Alien
91
92/*---------------------------------------------------------------------------*/
93/*---------------------------------------------------------------------------*/
virtual SafeConstArrayView< Int32 > allLocalIds() const =0
Local ids of this family members.
virtual void uniqueIdToLocalId(ArrayView< Integer > localIds, ConstArrayView< Int64 > uniqueIds) const =0
virtual SafeConstArrayView< Int64 > uids(ConstArrayView< Integer > localIds) const =0
unique ids of the given local ids.
virtual Int32 maxLocalId() const =0
Max local Id for this family.
virtual SafeConstArrayView< Integer > owners(ConstArrayView< Integer > localIds) const =0
Owners of the given local ids.
virtual Item item(Int32 localId) const =0
Give back an Item from its local id.
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --
Definition BackEnd.h:17