(root)/
binutils-2.41/
gprofng/
src/
Map.h
       1  /* Copyright (C) 2021-2023 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_MAP_H
      22  #define _DBE_MAP_H
      23  
      24  #include "vec.h"
      25  
      26  template <typename Key_t, typename Value_t>
      27  class Map
      28  {
      29  public:
      30  
      31    enum Relation
      32    {
      33      REL_LT,
      34      REL_LE,
      35      REL_EQ,
      36      REL_GE,
      37      REL_GT
      38    };
      39  
      40    virtual ~Map () { };
      41    virtual void put (Key_t key, Value_t val) = 0;
      42    virtual Value_t get (Key_t key) = 0;
      43    virtual Value_t get (Key_t key, Relation rel) = 0;
      44    virtual Value_t remove (Key_t key) = 0;
      45  
      46    virtual Vector<Key_t> *
      47    keySet ()
      48    {
      49      return NULL;
      50    }
      51  
      52    virtual Vector<Value_t> *
      53    values ()
      54    {
      55      return NULL;
      56    }
      57  };
      58  
      59  #define destroy_map(t, p) if (p) { Vector<t> *v = p->values (); Destroy (v); delete p; }
      60  
      61  #endif