blob: 5d63f9706372e73f0a2d62bdf44e487327a5bbf4 (
plain)
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
//
// File: HotHeapWriter.h
//
//
// Class code:HeapIndex represents type of MetaData heap (#String, #GUID, #Blob, or #US).
//
// ======================================================================================
#pragma once
namespace MetaData
{
// --------------------------------------------------------------------------------------
//
// This class represents type of MetaData heap (#String, #GUID, #Blob, or #US).
//
class HeapIndex
{
private:
UINT32 m_Index;
public:
enum
{
StringHeapIndex = 0,
GuidHeapIndex = 1,
BlobHeapIndex = 2,
UserStringHeapIndex = 3,
CountHeapIndex,
InvalidHeapIndex
};
HeapIndex()
{
m_Index = InvalidHeapIndex;
}
HeapIndex(UINT32 index)
{
_ASSERTE(IsValid(index));
m_Index = index;
}
void Set(UINT32 index)
{
_ASSERTE(IsValid(index));
m_Index = index;
}
void SetInvalid()
{
m_Index = InvalidHeapIndex;
}
BOOL IsValid() const
{
return m_Index < CountHeapIndex;
}
static BOOL IsValid(UINT32 index)
{
return index < CountHeapIndex;
}
UINT32 Get() const
{ return m_Index; }
}; // class HeapIndex
}; // namespace MetaData
|