@@ -169,12 +169,12 @@ void MNEProjOp::add_item(const MNENamedMatrix *vecs, int kind, const QString& de
169169
170170// =============================================================================================================
171171
172- MNEProjOp * MNEProjOp::dup () const
172+ std::unique_ptr< MNEProjOp> MNEProjOp::dup () const
173173/*
174174 * Provide a duplicate (item data only)
175175 */
176176{
177- MNEProjOp* res = new MNEProjOp ();
177+ auto res = std::make_unique< MNEProjOp> ();
178178
179179 for (int k = 0 ; k < nitems; k++) {
180180 const auto & it = items[k];
@@ -186,15 +186,14 @@ MNEProjOp *MNEProjOp::dup() const
186186
187187// =============================================================================================================
188188
189- MNEProjOp * MNEProjOp::create_average_eeg_ref (const QList<FiffChInfo>& chs, int nch)
189+ std::unique_ptr< MNEProjOp> MNEProjOp::create_average_eeg_ref (const QList<FiffChInfo>& chs, int nch)
190190/*
191191 * Make the projection operator for average electrode reference
192192 */
193193{
194194 int eegcount = 0 ;
195195 int k;
196196 QStringList names;
197- MNEProjOp* op;
198197
199198 for (k = 0 ; k < nch; k++)
200199 if (chs.at (k).kind == FIFFV_EEG_CH)
@@ -213,7 +212,7 @@ MNEProjOp *MNEProjOp::create_average_eeg_ref(const QList<FiffChInfo>& chs, int n
213212 QStringList emptyList;
214213 auto vecs = MNENamedMatrix::build (1 ,eegcount,emptyList,names,vec_data);
215214
216- op = new MNEProjOp ();
215+ auto op = std::make_unique< MNEProjOp> ();
217216 op->add_item (vecs.get (),FIFFV_MNE_PROJ_ITEM_EEG_AVREF," Average EEG reference" );
218217
219218 return op;
@@ -280,12 +279,11 @@ int MNEProjOp::project_vector(Eigen::Ref<Eigen::VectorXf> vec, bool do_complemen
280279
281280// =============================================================================================================
282281
283- MNEProjOp * MNEProjOp::read_from_node (FiffStream::SPtr &stream, const FiffDirNode::SPtr &start)
282+ std::unique_ptr< MNEProjOp> MNEProjOp::read_from_node (FiffStream::SPtr &stream, const FiffDirNode::SPtr &start)
284283/*
285284 * Load all the linear projection data
286285 */
287286{
288- MNEProjOp* op = nullptr ;
289287 QList<FiffDirNode::SPtr> proj;
290288 FiffDirNode::SPtr start_node;
291289 QList<FiffDirNode::SPtr> items;
@@ -309,7 +307,7 @@ MNEProjOp *MNEProjOp::read_from_node(FiffStream::SPtr &stream, const FiffDirNode
309307 else
310308 start_node = start;
311309
312- op = new MNEProjOp ();
310+ auto op = std::make_unique< MNEProjOp> ();
313311 proj = start_node->dir_tree_find (FIFFB_PROJ);
314312 if (proj.size () == 0 || proj[0 ]->isEmpty ()) /* The caller must recognize an empty projection */
315313 return op;
@@ -366,41 +364,41 @@ MNEProjOp *MNEProjOp::read_from_node(FiffStream::SPtr &stream, const FiffDirNode
366364 }
367365 if (item_nchan <= 0 ) {
368366 qCritical (" Number of channels incorrectly specified for one of the projection items." );
369- delete op; return nullptr ;
367+ return nullptr ;
370368 }
371369 /*
372370 * Take care of the channel names
373371 */
374372 if (!node->find_tag (stream, FIFF_PROJ_ITEM_CH_NAME_LIST, t_pTag)) {
375- delete op; return nullptr ;
373+ return nullptr ;
376374 }
377375
378376 item_names = FiffStream::split_name_list (t_pTag->toString ());
379377
380378 if (item_names.size () != item_nchan) {
381379 qCritical (" Channel name list incorrectly specified for proj item # %d" ,k+1 );
382380 item_names.clear ();
383- delete op; return nullptr ;
381+ return nullptr ;
384382 }
385383 /*
386384 * Kind of item
387385 */
388386 if (!node->find_tag (stream, FIFF_PROJ_ITEM_KIND, t_pTag)) {
389- delete op; return nullptr ;
387+ return nullptr ;
390388 }
391389 item_kind = *t_pTag->toInt ();
392390 /*
393391 * How many vectors
394392 */
395393 if (!node->find_tag (stream,FIFF_PROJ_ITEM_NVEC, t_pTag)) {
396- delete op; return nullptr ;
394+ return nullptr ;
397395 }
398396 item_nvec = *t_pTag->toInt ();
399397 /*
400398 * The projection data
401399 */
402400 if (!node->find_tag (stream,FIFF_PROJ_ITEM_VECTORS, t_pTag)) {
403- delete op; return nullptr ;
401+ return nullptr ;
404402 }
405403
406404 MatrixXf item_vectors = t_pTag->toFloatMatrix ().transpose ();
@@ -427,18 +425,16 @@ MNEProjOp *MNEProjOp::read_from_node(FiffStream::SPtr &stream, const FiffDirNode
427425
428426// =============================================================================================================
429427
430- MNEProjOp * MNEProjOp::read (const QString &name)
428+ std::unique_ptr< MNEProjOp> MNEProjOp::read (const QString &name)
431429{
432430 QFile file (name);
433431 FiffStream::SPtr stream (new FiffStream (&file));
434432
435433 if (!stream->open ())
436434 return nullptr ;
437435
438- MNEProjOp* res = nullptr ;
439-
440436 FiffDirNode::SPtr t_default;
441- res = read_from_node (stream,t_default);
437+ auto res = read_from_node (stream,t_default);
442438
443439 stream->close ();
444440
0 commit comments