xref: /netbsd-src/external/gpl3/binutils/dist/gprofng/src/Map2D.h (revision cb63e24e8d6aae7ddac1859a9015f48b1d8bd90e)
1 /* Copyright (C) 2021-2024 Free Software Foundation, Inc.
2    Contributed by Oracle.
3 
4    This file is part of GNU Binutils.
5 
6    This program is free software; you can redistribute it and/or modify
7    it under the terms of the GNU General Public License as published by
8    the Free Software Foundation; either version 3, or (at your option)
9    any later version.
10 
11    This program is distributed in the hope that it will be useful,
12    but WITHOUT ANY WARRANTY; without even the implied warranty of
13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14    GNU General Public License for more details.
15 
16    You should have received a copy of the GNU General Public License
17    along with this program; if not, write to the Free Software
18    Foundation, 51 Franklin Street - Fifth Floor, Boston,
19    MA 02110-1301, USA.  */
20 
21 #ifndef _DBE_MAP2D_H
22 #define _DBE_MAP2D_H
23 
24 template <typename Key1_t, typename Key2_t, typename Value_t>
25 class Map2D
26 {
27 public:
28 
29   enum MapType
30   {
31     Default,
32     Interval
33   };
34 
35   // Relation for the first key is always EQUAL
36   enum Relation
37   {
38     REL_EQLT,
39     REL_EQLE,
40     REL_EQEQ,
41     REL_EQGE,
42     REL_EQGT
43   };
44 
~Map2D()45   virtual ~Map2D () { };
46   virtual void put (Key1_t key1, Key2_t key2, Value_t val) = 0;
47   virtual Value_t get (Key1_t key1, Key2_t key2) = 0;
48   virtual Value_t get (Key1_t key1, Key2_t key2, Relation rel) = 0;
49   virtual Value_t remove (Key1_t key1, Key2_t key2) = 0;
50 
51 };
52 
53 #endif
54