TypeList.h revision 254721
1254721Semaste//===-- TypeList.h ----------------------------------------------*- C++ -*-===//
2254721Semaste//
3254721Semaste//                     The LLVM Compiler Infrastructure
4254721Semaste//
5254721Semaste// This file is distributed under the University of Illinois Open Source
6254721Semaste// License. See LICENSE.TXT for details.
7254721Semaste//
8254721Semaste//===----------------------------------------------------------------------===//
9254721Semaste
10254721Semaste#ifndef liblldb_TypeList_h_
11254721Semaste#define liblldb_TypeList_h_
12254721Semaste
13254721Semaste#include "lldb/lldb-private.h"
14254721Semaste#include "lldb/Symbol/Type.h"
15254721Semaste#include <map>
16254721Semaste
17254721Semastenamespace lldb_private {
18254721Semaste
19254721Semasteclass TypeList
20254721Semaste{
21254721Semastepublic:
22254721Semaste    //------------------------------------------------------------------
23254721Semaste    // Constructors and Destructors
24254721Semaste    //------------------------------------------------------------------
25254721Semaste    TypeList();
26254721Semaste
27254721Semaste    virtual
28254721Semaste    ~TypeList();
29254721Semaste
30254721Semaste    void
31254721Semaste    Clear();
32254721Semaste
33254721Semaste    void
34254721Semaste    Dump(Stream *s, bool show_context);
35254721Semaste
36254721Semaste//    lldb::TypeSP
37254721Semaste//    FindType(lldb::user_id_t uid);
38254721Semaste
39254721Semaste    TypeList
40254721Semaste    FindTypes(const ConstString &name);
41254721Semaste
42254721Semaste    void
43254721Semaste    Insert (const lldb::TypeSP& type);
44254721Semaste
45254721Semaste    bool
46254721Semaste    InsertUnique (const lldb::TypeSP& type);
47254721Semaste
48254721Semaste    uint32_t
49254721Semaste    GetSize() const;
50254721Semaste
51254721Semaste    lldb::TypeSP
52254721Semaste    GetTypeAtIndex(uint32_t idx);
53254721Semaste
54254721Semaste    void
55254721Semaste    ForEach (std::function <bool(const lldb::TypeSP &type_sp)> const &callback) const;
56254721Semaste
57254721Semaste    void
58254721Semaste    ForEach (std::function <bool(lldb::TypeSP &type_sp)> const &callback);
59254721Semaste
60254721Semaste    bool
61254721Semaste    RemoveTypeWithUID (lldb::user_id_t uid);
62254721Semaste
63254721Semaste    void
64254721Semaste    RemoveMismatchedTypes (const char *qualified_typename,
65254721Semaste                           bool exact_match);
66254721Semaste
67254721Semaste    void
68254721Semaste    RemoveMismatchedTypes (const std::string &type_scope,
69254721Semaste                           const std::string &type_basename,
70254721Semaste                           lldb::TypeClass type_class,
71254721Semaste                           bool exact_match);
72254721Semaste
73254721Semaste    void
74254721Semaste    RemoveMismatchedTypes (lldb::TypeClass type_class);
75254721Semaste
76254721Semasteprivate:
77254721Semaste    typedef std::multimap<lldb::user_id_t, lldb::TypeSP> collection;
78254721Semaste    typedef collection::iterator iterator;
79254721Semaste    typedef collection::const_iterator const_iterator;
80254721Semaste
81254721Semaste    collection m_types;
82254721Semaste
83254721Semaste    DISALLOW_COPY_AND_ASSIGN (TypeList);
84254721Semaste};
85254721Semaste
86254721Semaste} // namespace lldb_private
87254721Semaste
88254721Semaste#endif  // liblldb_TypeList_h_
89