summaryrefslogtreecommitdiff
path: root/src/md/hotdata/heapindex.h
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