1//===-- VectorIterator.h ----------------------------------------------*- C++
2//-*-===//
3//
4// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5// See https://llvm.org/LICENSE.txt for license information.
6// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7//
8//===----------------------------------------------------------------------===//
9
10#ifndef LLDB_DATAFORMATTERS_VECTORITERATOR_H
11#define LLDB_DATAFORMATTERS_VECTORITERATOR_H
12
13#include "lldb/lldb-forward.h"
14
15#include "lldb/DataFormatters/TypeSynthetic.h"
16#include "lldb/Target/ExecutionContext.h"
17#include "lldb/Utility/ConstString.h"
18#include "llvm/ADT/SmallVector.h"
19
20namespace lldb_private {
21namespace formatters {
22class VectorIteratorSyntheticFrontEnd : public SyntheticChildrenFrontEnd {
23public:
24 VectorIteratorSyntheticFrontEnd(lldb::ValueObjectSP valobj_sp,
25 llvm::ArrayRef<ConstString> item_names);
26
27 size_t CalculateNumChildren() override;
28
29 lldb::ValueObjectSP GetChildAtIndex(size_t idx) override;
30
31 lldb::ChildCacheState Update() override;
32
33 bool MightHaveChildren() override;
34
35 size_t GetIndexOfChildWithName(ConstString name) override;
36
37private:
38 ExecutionContextRef m_exe_ctx_ref;
39 llvm::SmallVector<ConstString, 2> m_item_names;
40 lldb::ValueObjectSP m_item_sp;
41};
42
43} // namespace formatters
44} // namespace lldb_private
45
46#endif // LLDB_DATAFORMATTERS_VECTORITERATOR_H
47

source code of lldb/include/lldb/DataFormatters/VectorIterator.h