[PATCH rtems-tools v1] ReportsBase: Change raw pointer to unique_ptr
Ryan Long
ral051 at oarcorp.com
Mon Dec 20 23:08:07 UTC 2021
On 12/20/2021 5:03 PM, Chris Johns wrote:
>
> On 21/12/21 7:24 am, Ryan Long wrote:
>> Replaced raw pointer used with ReportsBase-derived classes to make code
>> cleaner and make it to where pointers do not have to be manually
>> deleted.
>>
>> Closes #4376
>> ---
>> tester/covoar/ReportsBase.cc | 21 ++++++---------------
>> 1 file changed, 6 insertions(+), 15 deletions(-)
>>
>> diff --git a/tester/covoar/ReportsBase.cc b/tester/covoar/ReportsBase.cc
>> index 219e5af..8ec65c0 100644
>> --- a/tester/covoar/ReportsBase.cc
>> +++ b/tester/covoar/ReportsBase.cc
>> @@ -591,17 +591,16 @@ void GenerateReports(
>> bool branchInfoAvailable
>> )
>> {
>> - typedef std::list<ReportsBase *> reportList_t;
>> + typedef std::vector<std::unique_ptr<ReportsBase>> reportList_t;
> Are we OK to use `*_t` in types?
>
> Plus I have moved to ...
>
> using reportList = std::vector<std::unique_ptr<ReportsBase>>
>
> so I would use the following to avoid '>>':
>
> using reportList_ptr = std::unique_ptr<ReportsBase>;
> using reportLists = std::vector<reportList_ptr>;
I'll put this in V2.
>
> The vector is a container of report lists and not a container of report list
> singular.
>
> A minor point, I do not embed the container type into the type alias because
> someone may decide to change this to `std::deque` or `std::forward_list` and the
> name becomes misleading.
>
>> reportList_t reportList;
> Then make this `reports`.
>
>> reportList_t::iterator ritr;
>> std::string reportName;
>> - ReportsBase* reports;
>> time_t timestamp;
>>
>>
>> timestamp = time( NULL ); /* get current cal time */
>> - reports = new ReportsText(
>> + reportList.emplace_back(new ReportsText(
> Should `std::make_unique<ReportsText>(...)` be used?
I was going to use this, but it was added in c++14.
>
> Thanks
> Chris
>
>> timestamp,
>> symbolSetName,
>> allExplanations,
>> @@ -609,9 +608,8 @@ void GenerateReports(
>> outputDirectory,
>> symbolsToAnalyze,
>> branchInfoAvailable
>> - );
>> - reportList.push_back( reports );
>> - reports = new ReportsHtml(
>> + ));
>> + reportList.emplace_back(new ReportsHtml(
>> timestamp,
>> symbolSetName,
>> allExplanations,
>> @@ -619,11 +617,9 @@ void GenerateReports(
>> outputDirectory,
>> symbolsToAnalyze,
>> branchInfoAvailable
>> - );
>> - reportList.push_back( reports );
>> + ));
>>
>> - for ( ritr = reportList.begin(); ritr != reportList.end(); ritr++ ) {
>> - reports = *ritr;
>> + for ( auto& reports: reportList ) {
>>
>> reportName = "index" + reports->ReportExtension();
>> if ( verbose ) {
>> @@ -662,11 +658,6 @@ void GenerateReports(
>> reports->WriteSymbolSummaryReport( reportName, symbolsToAnalyze );
>> }
>>
>> - for ( ritr = reportList.begin(); ritr != reportList.end(); ritr++ ) {
>> - reports = *ritr;
>> - delete reports;
>> - }
>> -
>> ReportsBase::WriteSummaryReport(
>> "summary.txt",
>> symbolSetName,
More information about the devel
mailing list