Sean Callanan | 2fc7e8d | 2011-12-03 03:15:28 +0000 | [diff] [blame] | 1 | //===-- 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 | |
| 12 | using namespace lldb_private; |
| 13 | |
| 14 | #define ClangExternalASTSourceCommon_MAGIC (0x00112233aabbccddull) |
| 15 | |
Sean Callanan | fafffe0 | 2012-04-13 00:10:03 +0000 | [diff] [blame] | 16 | uint64_t g_TotalSizeOfMetadata = 0; |
| 17 | |
Sean Callanan | 2fc7e8d | 2011-12-03 03:15:28 +0000 | [diff] [blame] | 18 | ClangExternalASTSourceCommon::ClangExternalASTSourceCommon() : clang::ExternalASTSource() |
| 19 | { |
| 20 | m_magic = ClangExternalASTSourceCommon_MAGIC; |
Sean Callanan | fafffe0 | 2012-04-13 00:10:03 +0000 | [diff] [blame] | 21 | |
| 22 | g_TotalSizeOfMetadata += m_metadata.size(); |
| 23 | } |
| 24 | |
| 25 | ClangExternalASTSourceCommon::~ClangExternalASTSourceCommon() |
| 26 | { |
| 27 | g_TotalSizeOfMetadata -= m_metadata.size(); |
Sean Callanan | 2fc7e8d | 2011-12-03 03:15:28 +0000 | [diff] [blame] | 28 | } |
| 29 | |
Jim Ingham | a32c5a5 | 2012-10-27 02:54:13 +0000 | [diff] [blame^] | 30 | ClangASTMetadata * |
| 31 | ClangExternalASTSourceCommon::GetMetadata (uintptr_t object) |
Sean Callanan | 2fc7e8d | 2011-12-03 03:15:28 +0000 | [diff] [blame] | 32 | { |
| 33 | assert (m_magic == ClangExternalASTSourceCommon_MAGIC); |
| 34 | |
Jim Ingham | a32c5a5 | 2012-10-27 02:54:13 +0000 | [diff] [blame^] | 35 | if (HasMetadata (object)) |
| 36 | return &m_metadata[object]; |
| 37 | else |
| 38 | return NULL; |
Sean Callanan | 2fc7e8d | 2011-12-03 03:15:28 +0000 | [diff] [blame] | 39 | } |
| 40 | |
Jim Ingham | a32c5a5 | 2012-10-27 02:54:13 +0000 | [diff] [blame^] | 41 | void |
| 42 | ClangExternalASTSourceCommon::SetMetadata (uintptr_t object, ClangASTMetadata &metadata) |
Sean Callanan | 2fc7e8d | 2011-12-03 03:15:28 +0000 | [diff] [blame] | 43 | { |
| 44 | assert (m_magic == ClangExternalASTSourceCommon_MAGIC); |
| 45 | |
Sean Callanan | fafffe0 | 2012-04-13 00:10:03 +0000 | [diff] [blame] | 46 | uint64_t orig_size = m_metadata.size(); |
Sean Callanan | 2fc7e8d | 2011-12-03 03:15:28 +0000 | [diff] [blame] | 47 | m_metadata[object] = metadata; |
Sean Callanan | fafffe0 | 2012-04-13 00:10:03 +0000 | [diff] [blame] | 48 | uint64_t new_size = m_metadata.size(); |
| 49 | g_TotalSizeOfMetadata += (new_size - orig_size); |
Sean Callanan | 2fc7e8d | 2011-12-03 03:15:28 +0000 | [diff] [blame] | 50 | } |
| 51 | |
Jim Ingham | a32c5a5 | 2012-10-27 02:54:13 +0000 | [diff] [blame^] | 52 | bool |
| 53 | ClangExternalASTSourceCommon::HasMetadata (uintptr_t object) |
Sean Callanan | 2fc7e8d | 2011-12-03 03:15:28 +0000 | [diff] [blame] | 54 | { |
| 55 | assert (m_magic == ClangExternalASTSourceCommon_MAGIC); |
| 56 | |
| 57 | return m_metadata.find(object) != m_metadata.end(); |
Greg Clayton | 16d2187 | 2011-12-03 20:02:42 +0000 | [diff] [blame] | 58 | } |