Alien  1.3.0
Developer documentation
Loading...
Searching...
No Matches
ILocalMatrixIndexer.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 <algorithm>
22#include <unordered_map>
23#include <utility>
24#include <optional>
25
26#include <alien/utils/Precomp.h>
27
28namespace Alien
29{
30
31class IReverseIndexer;
32
38{
39 public:
40 typedef Integer Offset;
41 typedef std::pair<Offset, Offset> Renumbering;
42 typedef std::pair<Int32, Int32> Key;
43
44 public:
45 virtual ~ILocalMatrixIndexer() {}
46
51 virtual void associate(Integer i, Integer j, Offset offset) = 0;
52
57 virtual std::optional<Offset> find(Integer i, Integer j) = 0;
58
64 virtual Offset create(Integer i, Integer j, Offset& tentative_offset) = 0;
65
69 virtual IReverseIndexer* sort(Arccore::Array<Renumbering>& perm) = 0;
70
71 virtual ILocalMatrixIndexer* clone() const = 0;
72};
73
74} // namespace Alien
virtual IReverseIndexer * sort(Arccore::Array< Renumbering > &perm)=0
virtual void associate(Integer i, Integer j, Offset offset)=0
virtual Offset create(Integer i, Integer j, Offset &tentative_offset)=0
virtual std::optional< Offset > find(Integer i, Integer j)=0
Reverse indexer: associates an Index (i,j) to an offset.
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --
Definition BackEnd.h:17