polyakov.alex added a comment.

In https://reviews.llvm.org/D47302#1111637, @clayborg wrote:

> In https://reviews.llvm.org/D47302#1111569, @polyakov.alex wrote:
>
> > In https://reviews.llvm.org/D47302#1111497, @clayborg wrote:
> >
> > > no. Create a new SBTargetSettings class. SBTarget will hand one out for 
> > > global and for target instance settings, Add all settings accessors to 
> > > SBTargetSettings class
> >
> >
> > What is a difference between `SBTargetSettings` and `TargetProperties` 
> > classes except API level?
>
>
> Not much difference except everything in SBTargetSettings will need to be 
> public C++ API safe (no virtual functions, one member variable in the class 
> that is a pointer std::unique_ptr or std::shared_ptr, no inheritance, no STL 
> in args or return values, no lldb_private classes in args or return values. 
> For this class to be API safe, we will actually need to keep a shared pointer 
> to the target properties. So the class in the API header will be something 
> like:
>
>   namespace lldb {
>     SBTargetSettings {
>       lldb::TargetPropertiesSP m_opaque_sp;
>     };
>   }
>
>
> Then m_opaque_sp will be filled in by assigning from a TargetSP (since a 
> shared pointer to a target can be converted to a TargetPropertiesSP since 
> Target inherits from TargetProperties) or from a call to 
> Target::GetGlobalProperties(). And then we pass through all accessors we need.


If so, to do:

  sb_target.settings.AppendImageSearchPath(...)

we need to cast our pointer to `TargetProperties` to a pointer to `Target` 
since there is no such property(manipulating with image search paths) in 
`TargetProperties` and then use Target's methods.


Repository:
  rL LLVM

https://reviews.llvm.org/D47302



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

Reply via email to