File: HashTableItemBase.h

package info (click to toggle)
opensp 1.5.2-13
  • links: PTS
  • area: main
  • in suites: bookworm, bullseye, buster, stretch
  • size: 8,932 kB
  • ctags: 10,036
  • sloc: cpp: 65,784; ansic: 17,124; sh: 11,503; xml: 2,704; makefile: 926; perl: 561; yacc: 288; sed: 16
file content (38 lines) | stat: -rw-r--r-- 796 bytes parent folder | download | duplicates (22)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// Copyright (c) 1994 James Clark
// See the file COPYING for copying permission.

#ifndef HashTableItemBase_INCLUDED
#define HashTableItemBase_INCLUDED 1

// All hash tables with the same type of key share object code.
// The cost of this is a virtual dtor in HashTableItemBase.

#ifdef SP_NAMESPACE
namespace SP_NAMESPACE {
#endif

template<class K>
class HashTableItemBase {
public:
  HashTableItemBase(const K &k);
  virtual ~HashTableItemBase();
  virtual HashTableItemBase<K> *copy() const = 0;
  K key;
};

template<class K>
struct HashTableKeyFunction {
  static inline const K &key(const HashTableItemBase<K> &obj) {
    return obj.key;
  }
};

#ifdef SP_NAMESPACE
}
#endif

#endif /* not HashTableItemBase_INCLUDED */

#ifdef SP_DEFINE_TEMPLATES
#include "HashTableItemBase.cxx"
#endif