V8 API Reference, 7.2.502.16 (for Deno 0.2.4)
hashmap-entry.h
1
// Copyright 2016 the V8 project authors. All rights reserved.
2
// Use of this source code is governed by a BSD-style license that can be
3
// found in the LICENSE file.
4
5
#ifndef V8_BASE_HASHMAP_ENTRY_H_
6
#define V8_BASE_HASHMAP_ENTRY_H_
7
8
#include <cstdint>
9
10
namespace
v8
{
11
namespace
base {
12
13
// HashMap entries are (key, value, hash) triplets, with a boolean indicating if
14
// they are an empty entry. Some clients may not need to use the value slot
15
// (e.g. implementers of sets, where the key is the value).
16
template
<
typename
Key,
typename
Value>
17
struct
TemplateHashMapEntry
{
18
Key key;
19
Value
value;
20
uint32_t
hash
;
// The full hash value for key
21
22
TemplateHashMapEntry
(Key key,
Value
value,
uint32_t
hash
)
23
: key(key), value(value),
hash
(
hash
), exists_(
true
) {}
24
25
bool
exists()
const
{
return
exists_; }
26
27
void
clear() { exists_ =
false
; }
28
29
private
:
30
bool
exists_;
31
};
32
33
// Specialization for pointer-valued keys
34
template
<
typename
Key,
typename
Value>
35
struct
TemplateHashMapEntry
<Key*,
Value
> {
36
Key* key;
37
Value
value;
38
uint32_t
hash
;
// The full hash value for key
39
40
TemplateHashMapEntry
(Key* key,
Value
value,
uint32_t
hash
)
41
: key(key), value(value),
hash
(
hash
) {}
42
43
bool
exists()
const
{
return
key !=
nullptr
; }
44
45
void
clear() { key =
nullptr
; }
46
};
47
48
// TODO(leszeks): There could be a specialisation for void values (e.g. for
49
// sets), which omits the value field
50
51
}
// namespace base
52
}
// namespace v8
53
54
#endif // V8_BASE_HASHMAP_ENTRY_H_
v8::Value
Definition:
v8.h:2119
v8::base::hash
Definition:
functional.h:66
v8
Definition:
libplatform.h:13
uint32_t
v8::base::TemplateHashMapEntry
Definition:
hashmap-entry.h:17
v8
src
base
hashmap-entry.h
Generated on Tue Dec 25 2018 14:38:14 by
1.8.14