Skip to content

Commit a6a19c0

Browse files
committed
json-writer: use std::unique_ptr<T> instead of explicit destructor
Suggested-by: Lukas Zaoral
1 parent 5e0601e commit a6a19c0

File tree

2 files changed

+13
-18
lines changed

2 files changed

+13
-18
lines changed

src/json-writer.cc

+6-12
Original file line numberDiff line numberDiff line change
@@ -363,10 +363,10 @@ void SarifTreeEncoder::writeTo(std::ostream &str)
363363
}
364364

365365
struct JsonWriter::Private {
366-
std::ostream &str;
367-
std::queue<Defect> defQueue;
368-
TScanProps scanProps;
369-
AbstractTreeEncoder *encoder;
366+
std::ostream &str;
367+
std::queue<Defect> defQueue;
368+
TScanProps scanProps;
369+
std::unique_ptr<AbstractTreeEncoder> encoder;
370370

371371
Private(std::ostream &str_):
372372
str(str_)
@@ -379,24 +379,18 @@ JsonWriter::JsonWriter(std::ostream &str, const EFileFormat format):
379379
{
380380
switch (format) {
381381
case FF_JSON:
382-
d->encoder = new SimpleTreeEncoder;
382+
d->encoder.reset(new SimpleTreeEncoder);
383383
break;
384384

385385
case FF_SARIF:
386-
d->encoder = new SarifTreeEncoder;
386+
d->encoder.reset(new SarifTreeEncoder);
387387
break;
388388

389389
default:
390390
throw std::runtime_error("unknown output format");
391391
}
392392
}
393393

394-
JsonWriter::~JsonWriter()
395-
{
396-
delete d->encoder;
397-
delete d;
398-
}
399-
400394
const TScanProps& JsonWriter::getScanProps() const
401395
{
402396
return d->scanProps;

src/json-writer.hh

+7-6
Original file line numberDiff line numberDiff line change
@@ -23,21 +23,22 @@
2323
#include "abstract-writer.hh"
2424

2525
#include <iostream>
26+
#include <memory>
2627

2728
class JsonWriter: public AbstractWriter {
2829
public:
2930
JsonWriter(std::ostream &, EFileFormat format = FF_JSON);
30-
virtual ~JsonWriter();
31+
~JsonWriter() override = default;
3132

32-
virtual const TScanProps& getScanProps() const;
33-
virtual void setScanProps(const TScanProps &);
33+
const TScanProps& getScanProps() const override;
34+
void setScanProps(const TScanProps &) override;
3435

35-
virtual void handleDef(const Defect &def);
36-
virtual void flush();
36+
void handleDef(const Defect &def) override;
37+
void flush() override;
3738

3839
private:
3940
struct Private;
40-
Private *d;
41+
std::unique_ptr<Private> d;
4142
};
4243

4344
#endif /* H_GUARD_JSON_WRITER_H */

0 commit comments

Comments
 (0)