clayborg requested changes to this revision.
clayborg added inline comments.
This revision now requires changes to proceed.


================
Comment at: lldb/bindings/interface/SBDebugger.i:228
 
+    lldb::SBStructuredData GetSettings();
+
----------------
remove this and document the function below such that "setting" can be NULL or 
empty for to get all settings. Maybe also document that anything that you can 
type as an argument for "settings show" should work here. See the output of 
"settings show target" for an example.

Examples that should work here are:
```
lldb::SBStructuredData settings = debugger.GetSetting(nullptr); // Get all 
settings
lldb::SBStructuredData settings = debugger.GetSetting(""); // Get all settings
lldb::SBStructuredData settings = debugger.GetSetting("target.arg0"); // Get 1 
specific setting
lldb::SBStructuredData settings = debugger.GetSetting("target.arg0 
target.language"); // Get 2 specific settings
lldb::SBStructuredData settings = debugger.GetSetting("target"); // Get all 
target specific settings
```

So basically anything you can type into "settings show" should work here.



================
Comment at: lldb/include/lldb/API/SBDebugger.h:118
 
+  lldb::SBStructuredData GetSettings();
+
----------------
remove


================
Comment at: lldb/include/lldb/Interpreter/OptionValue.h:88
+  // child classes.
+  virtual llvm::json::Value ToJSON(const ExecutionContext *exe_ctx) {
+    return llvm::json::Value("<not yet implemented>");
----------------



================
Comment at: lldb/include/lldb/Interpreter/OptionValue.h:89
+  virtual llvm::json::Value ToJSON(const ExecutionContext *exe_ctx) {
+    return llvm::json::Value("<not yet implemented>");
+  }
----------------



================
Comment at: lldb/source/API/SBDebugger.cpp:439-455
+lldb::SBStructuredData SBDebugger::GetSettings() {
+  LLDB_INSTRUMENT_VA(this);
+
+  SBStructuredData data;
+  if (!m_opaque_sp)
+    return data;
+
----------------
Remove this function. We should have only one that takes a "const char 
*settings"


================
Comment at: lldb/source/API/SBDebugger.cpp:464
+
+  auto json_strm = std::make_shared<StreamString>();
+  ExecutionContext exe_ctx(
----------------
No need to create a shared pointer here.


================
Comment at: lldb/source/API/SBDebugger.cpp:467
+      m_opaque_sp->GetCommandInterpreter().GetExecutionContext());
+  m_opaque_sp->DumpPropertyValue(&exe_ctx, *json_strm, setting, /*dump_mask*/ 
0,
+                                 /*is_json*/ true);
----------------



================
Comment at: lldb/source/API/SBDebugger.cpp:471
+  data.m_impl_up->SetObjectSP(
+      StructuredData::ParseJSON(json_strm->GetString().str()));
+  return data;
----------------



================
Comment at: lldb/source/Interpreter/OptionValueArray.cpp:81-83
+  for (uint32_t i = 0; i < size; ++i) {
+    json_array.emplace_back(m_values[i]->ToJSON(exe_ctx));
+  }
----------------
omit braces for single line for statement per llvm guidelines


================
Comment at: lldb/source/Interpreter/OptionValueDictionary.cpp:89-90
+  llvm::json::Array dict;
+  for (collection::iterator pos = m_values.begin(); pos != m_values.end();
+       ++pos) {
+    dict.emplace_back(llvm::json::Object{
----------------
Use modern C++ iterator style:

```
for (const auto &value: m_values) {
```


================
Comment at: lldb/source/Interpreter/OptionValueDictionary.cpp:92-93
+    dict.emplace_back(llvm::json::Object{
+        {"key", pos->first.GetCString()},
+        {"value", pos->second->ToJSON(exe_ctx)},
+    });
----------------
This is a dictionary, we already have a key/value to use


================
Comment at: lldb/test/API/commands/settings/TestSettings.py:806
+        settings_data.GetAsJSON(stream)
+        settings_json = json.loads(stream.GetData())
+        self.assertTrue(len(settings_json) > 0)
----------------
we should test values that have strings that contain reserved JSON characters. 
I believe '\' can be in a string and will need to be double desensitized. Also 
string values that contain the string quote characters like a string "hello 
\"world\""


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D133038/new/

https://reviews.llvm.org/D133038

_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to