blob: 0e00e4081666c7ee6d46af313a48021b72848f62 [file] [log] [blame]
Sean Callanan2fc7e8d2011-12-03 03:15:28 +00001//===-- ClangExternalASTSourceCommon.cpp ------------------------*- C++ -*-===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10#include "lldb/Symbol/ClangExternalASTSourceCommon.h"
11
12using namespace lldb_private;
13
14#define ClangExternalASTSourceCommon_MAGIC (0x00112233aabbccddull)
15
Sean Callananfafffe02012-04-13 00:10:03 +000016uint64_t g_TotalSizeOfMetadata = 0;
17
Sean Callanan2fc7e8d2011-12-03 03:15:28 +000018ClangExternalASTSourceCommon::ClangExternalASTSourceCommon() : clang::ExternalASTSource()
19{
20 m_magic = ClangExternalASTSourceCommon_MAGIC;
Sean Callananfafffe02012-04-13 00:10:03 +000021
22 g_TotalSizeOfMetadata += m_metadata.size();
23}
24
25ClangExternalASTSourceCommon::~ClangExternalASTSourceCommon()
26{
27 g_TotalSizeOfMetadata -= m_metadata.size();
Sean Callanan2fc7e8d2011-12-03 03:15:28 +000028}
29
Jim Inghama32c5a52012-10-27 02:54:13 +000030ClangASTMetadata *
31ClangExternalASTSourceCommon::GetMetadata (uintptr_t object)
Sean Callanan2fc7e8d2011-12-03 03:15:28 +000032{
33 assert (m_magic == ClangExternalASTSourceCommon_MAGIC);
34
Jim Inghama32c5a52012-10-27 02:54:13 +000035 if (HasMetadata (object))
36 return &m_metadata[object];
37 else
38 return NULL;
Sean Callanan2fc7e8d2011-12-03 03:15:28 +000039}
40
Jim Inghama32c5a52012-10-27 02:54:13 +000041void
42ClangExternalASTSourceCommon::SetMetadata (uintptr_t object, ClangASTMetadata &metadata)
Sean Callanan2fc7e8d2011-12-03 03:15:28 +000043{
44 assert (m_magic == ClangExternalASTSourceCommon_MAGIC);
45
Sean Callananfafffe02012-04-13 00:10:03 +000046 uint64_t orig_size = m_metadata.size();
Sean Callanan2fc7e8d2011-12-03 03:15:28 +000047 m_metadata[object] = metadata;
Sean Callananfafffe02012-04-13 00:10:03 +000048 uint64_t new_size = m_metadata.size();
49 g_TotalSizeOfMetadata += (new_size - orig_size);
Sean Callanan2fc7e8d2011-12-03 03:15:28 +000050}
51
Jim Inghama32c5a52012-10-27 02:54:13 +000052bool
53ClangExternalASTSourceCommon::HasMetadata (uintptr_t object)
Sean Callanan2fc7e8d2011-12-03 03:15:28 +000054{
55 assert (m_magic == ClangExternalASTSourceCommon_MAGIC);
56
57 return m_metadata.find(object) != m_metadata.end();
Greg Clayton16d21872011-12-03 20:02:42 +000058}