Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-05-10 08:42:59

0001 //===-- ValueObjectUpdater.h ------------------------------------*- C++ -*-===//
0002 //
0003 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
0004 // See https://llvm.org/LICENSE.txt for license information.
0005 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
0006 //
0007 //===----------------------------------------------------------------------===//
0008 
0009 #ifndef LLDB_VALUEOBJECT_VALUEOBJECTUPDATER_H
0010 #define LLDB_VALUEOBJECT_VALUEOBJECTUPDATER_H
0011 
0012 #include "lldb/ValueObject/ValueObject.h"
0013 
0014 namespace lldb_private {
0015 
0016 /// A value object class that is seeded with the static variable value
0017 /// and it vends the user facing value object. If the type is dynamic it can
0018 /// vend the dynamic type. If this user type also has a synthetic type
0019 /// associated with it, it will vend the synthetic type. The class watches the
0020 /// process' stop ID and will update the user type when needed.
0021 class ValueObjectUpdater {
0022   /// The root value object is the static typed variable object.
0023   lldb::ValueObjectSP m_root_valobj_sp;
0024   /// The user value object is the value object the user wants to see.
0025   lldb::ValueObjectSP m_user_valobj_sp;
0026   /// The stop ID that m_user_valobj_sp is valid for.
0027   uint32_t m_stop_id = UINT32_MAX;
0028 
0029 public:
0030   ValueObjectUpdater(lldb::ValueObjectSP in_valobj_sp);
0031 
0032   /// Gets the correct value object from the root object for a given process
0033   /// stop ID. If dynamic values are enabled, or if synthetic children are
0034   /// enabled, the value object that the user wants to see might change while
0035   /// debugging.
0036   lldb::ValueObjectSP GetSP();
0037 
0038   lldb::ProcessSP GetProcessSP() const;
0039 };
0040 
0041 } // namespace lldb_private
0042 
0043 #endif // LLDB_VALUEOBJECT_VALUEOBJECTUPDATER_H