@@ -139,14 +139,14 @@ bool TiffMnRegistry::operator==(IfdId key) const {
139
139
return mnGroup_ == key;
140
140
}
141
141
142
- TiffComponent* TiffMnCreator::create (uint16_t tag, IfdId group, const std::string& make, const byte* pData, size_t size ,
143
- ByteOrder byteOrder) {
142
+ std::unique_ptr< TiffComponent> TiffMnCreator::create (uint16_t tag, IfdId group, const std::string& make,
143
+ const byte* pData, size_t size, ByteOrder byteOrder) {
144
144
if (auto tmr = Exiv2::find (registry_, make))
145
145
return tmr->newMnFct_ (tag, group, tmr->mnGroup_ , pData, size, byteOrder);
146
146
return nullptr ;
147
147
} // TiffMnCreator::create
148
148
149
- TiffComponent* TiffMnCreator::create (uint16_t tag, IfdId group, IfdId mnGroup) {
149
+ std::unique_ptr< TiffComponent> TiffMnCreator::create (uint16_t tag, IfdId group, IfdId mnGroup) {
150
150
if (auto tmr = Exiv2::find (registry_, mnGroup)) {
151
151
if (tmr->newMnFct2_ ) {
152
152
return tmr->newMnFct2_ (tag, group, mnGroup);
@@ -637,20 +637,20 @@ size_t Casio2MnHeader::write(IoWrapper& ioWrapper, ByteOrder /*byteOrder*/) cons
637
637
// *************************************************************************
638
638
// free functions
639
639
640
- TiffComponent* newIfdMn (uint16_t tag, IfdId group, IfdId mnGroup, const byte* /* pData*/ , size_t size,
641
- ByteOrder /* byteOrder*/ ) {
640
+ std::unique_ptr< TiffComponent> newIfdMn (uint16_t tag, IfdId group, IfdId mnGroup, const byte* /* pData*/ , size_t size,
641
+ ByteOrder /* byteOrder*/ ) {
642
642
// Require at least an IFD with 1 entry, but not necessarily a next pointer
643
643
if (size < 14 )
644
644
return nullptr ;
645
645
return newIfdMn2 (tag, group, mnGroup);
646
646
}
647
647
648
- TiffComponent* newIfdMn2 (uint16_t tag, IfdId group, IfdId mnGroup) {
649
- return new TiffIfdMakernote (tag, group, mnGroup, nullptr );
648
+ std::unique_ptr< TiffComponent> newIfdMn2 (uint16_t tag, IfdId group, IfdId mnGroup) {
649
+ return std::make_unique< TiffIfdMakernote> (tag, group, mnGroup, nullptr );
650
650
}
651
651
652
- TiffComponent* newOlympusMn (uint16_t tag, IfdId group, IfdId /* mnGroup*/ , const byte* pData, size_t size ,
653
- ByteOrder /* byteOrder*/ ) {
652
+ std::unique_ptr< TiffComponent> newOlympusMn (uint16_t tag, IfdId group, IfdId /* mnGroup*/ , const byte* pData,
653
+ size_t size, ByteOrder /* byteOrder*/ ) {
654
654
// FIXME: workaround for overwritten OM System header in Olympus files (https://github.com/Exiv2/exiv2/issues/2542)
655
655
if (size >= 14 && std::string (reinterpret_cast <const char *>(pData), 14 ) == std::string (" OM SYSTEM\0\0\0 II" , 14 )) {
656
656
// Require at least the header and an IFD with 1 entry
@@ -670,40 +670,40 @@ TiffComponent* newOlympusMn(uint16_t tag, IfdId group, IfdId /*mnGroup*/, const
670
670
return newOlympus2Mn2 (tag, group, IfdId::olympus2Id);
671
671
}
672
672
673
- TiffComponent* newOlympusMn2 (uint16_t tag, IfdId group, IfdId mnGroup) {
674
- return new TiffIfdMakernote (tag, group, mnGroup, new OlympusMnHeader);
673
+ std::unique_ptr< TiffComponent> newOlympusMn2 (uint16_t tag, IfdId group, IfdId mnGroup) {
674
+ return std::make_unique< TiffIfdMakernote> (tag, group, mnGroup, std::make_unique< OlympusMnHeader>() );
675
675
}
676
676
677
- TiffComponent* newOlympus2Mn2 (uint16_t tag, IfdId group, IfdId mnGroup) {
678
- return new TiffIfdMakernote (tag, group, mnGroup, new Olympus2MnHeader);
677
+ std::unique_ptr< TiffComponent> newOlympus2Mn2 (uint16_t tag, IfdId group, IfdId mnGroup) {
678
+ return std::make_unique< TiffIfdMakernote> (tag, group, mnGroup, std::make_unique< Olympus2MnHeader>() );
679
679
}
680
680
681
- TiffComponent* newOMSystemMn (uint16_t tag, IfdId group, IfdId mnGroup, const byte* /* pData*/ , size_t size ,
682
- ByteOrder /* byteOrder*/ ) {
681
+ std::unique_ptr< TiffComponent> newOMSystemMn (uint16_t tag, IfdId group, IfdId mnGroup, const byte* /* pData*/ ,
682
+ size_t size, ByteOrder /* byteOrder*/ ) {
683
683
// Require at least the header and an IFD with 1 entry
684
684
if (size < OMSystemMnHeader::sizeOfSignature () + 18 )
685
685
return nullptr ;
686
686
return newOMSystemMn2 (tag, group, mnGroup);
687
687
}
688
688
689
- TiffComponent* newOMSystemMn2 (uint16_t tag, IfdId group, IfdId mnGroup) {
690
- return new TiffIfdMakernote (tag, group, mnGroup, new OMSystemMnHeader);
689
+ std::unique_ptr< TiffComponent> newOMSystemMn2 (uint16_t tag, IfdId group, IfdId mnGroup) {
690
+ return std::make_unique< TiffIfdMakernote> (tag, group, mnGroup, std::make_unique< OMSystemMnHeader>() );
691
691
}
692
692
693
- TiffComponent* newFujiMn (uint16_t tag, IfdId group, IfdId mnGroup, const byte* /* pData*/ , size_t size,
694
- ByteOrder /* byteOrder*/ ) {
693
+ std::unique_ptr< TiffComponent> newFujiMn (uint16_t tag, IfdId group, IfdId mnGroup, const byte* /* pData*/ , size_t size,
694
+ ByteOrder /* byteOrder*/ ) {
695
695
// Require at least the header and an IFD with 1 entry
696
696
if (size < FujiMnHeader::sizeOfSignature () + 18 )
697
697
return nullptr ;
698
698
return newFujiMn2 (tag, group, mnGroup);
699
699
}
700
700
701
- TiffComponent* newFujiMn2 (uint16_t tag, IfdId group, IfdId mnGroup) {
702
- return new TiffIfdMakernote (tag, group, mnGroup, new FujiMnHeader);
701
+ std::unique_ptr< TiffComponent> newFujiMn2 (uint16_t tag, IfdId group, IfdId mnGroup) {
702
+ return std::make_unique< TiffIfdMakernote> (tag, group, mnGroup, std::make_unique< FujiMnHeader>() );
703
703
}
704
704
705
- TiffComponent* newNikonMn (uint16_t tag, IfdId group, IfdId /* mnGroup*/ , const byte* pData, size_t size,
706
- ByteOrder /* byteOrder*/ ) {
705
+ std::unique_ptr< TiffComponent> newNikonMn (uint16_t tag, IfdId group, IfdId /* mnGroup*/ , const byte* pData, size_t size,
706
+ ByteOrder /* byteOrder*/ ) {
707
707
// If there is no "Nikon" string it must be Nikon1 format
708
708
if (size < 6 || std::string (reinterpret_cast <const char *>(pData), 6 ) != std::string (" Nikon\0 " , 6 )) {
709
709
// Require at least an IFD with 1 entry
@@ -727,28 +727,28 @@ TiffComponent* newNikonMn(uint16_t tag, IfdId group, IfdId /*mnGroup*/, const by
727
727
return newNikon3Mn2 (tag, group, IfdId::nikon3Id);
728
728
}
729
729
730
- TiffComponent* newNikon2Mn2 (uint16_t tag, IfdId group, IfdId mnGroup) {
731
- return new TiffIfdMakernote (tag, group, mnGroup, new Nikon2MnHeader);
730
+ std::unique_ptr< TiffComponent> newNikon2Mn2 (uint16_t tag, IfdId group, IfdId mnGroup) {
731
+ return std::make_unique< TiffIfdMakernote> (tag, group, mnGroup, std::make_unique< Nikon2MnHeader>() );
732
732
}
733
733
734
- TiffComponent* newNikon3Mn2 (uint16_t tag, IfdId group, IfdId mnGroup) {
735
- return new TiffIfdMakernote (tag, group, mnGroup, new Nikon3MnHeader);
734
+ std::unique_ptr< TiffComponent> newNikon3Mn2 (uint16_t tag, IfdId group, IfdId mnGroup) {
735
+ return std::make_unique< TiffIfdMakernote> (tag, group, mnGroup, std::make_unique< Nikon3MnHeader>() );
736
736
}
737
737
738
- TiffComponent* newPanasonicMn (uint16_t tag, IfdId group, IfdId mnGroup, const byte* /* pData*/ , size_t size ,
739
- ByteOrder /* byteOrder*/ ) {
738
+ std::unique_ptr< TiffComponent> newPanasonicMn (uint16_t tag, IfdId group, IfdId mnGroup, const byte* /* pData*/ ,
739
+ size_t size, ByteOrder /* byteOrder*/ ) {
740
740
// Require at least the header and an IFD with 1 entry, but without a next pointer
741
741
if (size < PanasonicMnHeader::sizeOfSignature () + 14 )
742
742
return nullptr ;
743
743
return newPanasonicMn2 (tag, group, mnGroup);
744
744
}
745
745
746
- TiffComponent* newPanasonicMn2 (uint16_t tag, IfdId group, IfdId mnGroup) {
747
- return new TiffIfdMakernote (tag, group, mnGroup, new PanasonicMnHeader, false );
746
+ std::unique_ptr< TiffComponent> newPanasonicMn2 (uint16_t tag, IfdId group, IfdId mnGroup) {
747
+ return std::make_unique< TiffIfdMakernote> (tag, group, mnGroup, std::make_unique< PanasonicMnHeader>() , false );
748
748
}
749
749
750
- TiffComponent* newPentaxMn (uint16_t tag, IfdId group, IfdId /* mnGroup*/ , const byte* pData, size_t size,
751
- ByteOrder /* byteOrder*/ ) {
750
+ std::unique_ptr< TiffComponent> newPentaxMn (uint16_t tag, IfdId group, IfdId /* mnGroup*/ , const byte* pData, size_t size,
751
+ ByteOrder /* byteOrder*/ ) {
752
752
if (size > 8 && std::string (reinterpret_cast <const char *>(pData), 8 ) == std::string (" PENTAX \0 " , 8 )) {
753
753
// Require at least the header and an IFD with 1 entry
754
754
if (size < PentaxDngMnHeader::sizeOfSignature () + 18 )
@@ -764,16 +764,16 @@ TiffComponent* newPentaxMn(uint16_t tag, IfdId group, IfdId /*mnGroup*/, const b
764
764
return nullptr ;
765
765
}
766
766
767
- TiffComponent* newPentaxMn2 (uint16_t tag, IfdId group, IfdId mnGroup) {
768
- return new TiffIfdMakernote (tag, group, mnGroup, new PentaxMnHeader);
767
+ std::unique_ptr< TiffComponent> newPentaxMn2 (uint16_t tag, IfdId group, IfdId mnGroup) {
768
+ return std::make_unique< TiffIfdMakernote> (tag, group, mnGroup, std::make_unique< PentaxMnHeader>() );
769
769
}
770
770
771
- TiffComponent* newPentaxDngMn2 (uint16_t tag, IfdId group, IfdId mnGroup) {
772
- return new TiffIfdMakernote (tag, group, mnGroup, new PentaxDngMnHeader);
771
+ std::unique_ptr< TiffComponent> newPentaxDngMn2 (uint16_t tag, IfdId group, IfdId mnGroup) {
772
+ return std::make_unique< TiffIfdMakernote> (tag, group, mnGroup, std::make_unique< PentaxDngMnHeader>() );
773
773
}
774
774
775
- TiffComponent* newSamsungMn (uint16_t tag, IfdId group, IfdId mnGroup, const byte* pData, size_t size,
776
- ByteOrder /* byteOrder*/ ) {
775
+ std::unique_ptr< TiffComponent> newSamsungMn (uint16_t tag, IfdId group, IfdId mnGroup, const byte* pData, size_t size,
776
+ ByteOrder /* byteOrder*/ ) {
777
777
if (size > 4 && std::string (reinterpret_cast <const char *>(pData), 4 ) == std::string (" AOC\0 " , 4 )) {
778
778
// Samsung branded Pentax camera:
779
779
// Require at least the header and an IFD with 1 entry
@@ -788,24 +788,24 @@ TiffComponent* newSamsungMn(uint16_t tag, IfdId group, IfdId mnGroup, const byte
788
788
return newSamsungMn2 (tag, group, mnGroup);
789
789
}
790
790
791
- TiffComponent* newSamsungMn2 (uint16_t tag, IfdId group, IfdId mnGroup) {
792
- return new TiffIfdMakernote (tag, group, mnGroup, new SamsungMnHeader);
791
+ std::unique_ptr< TiffComponent> newSamsungMn2 (uint16_t tag, IfdId group, IfdId mnGroup) {
792
+ return std::make_unique< TiffIfdMakernote> (tag, group, mnGroup, std::make_unique< SamsungMnHeader>() );
793
793
}
794
794
795
- TiffComponent* newSigmaMn (uint16_t tag, IfdId group, IfdId mnGroup, const byte* /* pData*/ , size_t size,
796
- ByteOrder /* byteOrder*/ ) {
795
+ std::unique_ptr< TiffComponent> newSigmaMn (uint16_t tag, IfdId group, IfdId mnGroup, const byte* /* pData*/ , size_t size,
796
+ ByteOrder /* byteOrder*/ ) {
797
797
// Require at least the header and an IFD with 1 entry
798
798
if (size < SigmaMnHeader::sizeOfSignature () + 18 )
799
799
return nullptr ;
800
800
return newSigmaMn2 (tag, group, mnGroup);
801
801
}
802
802
803
- TiffComponent* newSigmaMn2 (uint16_t tag, IfdId group, IfdId mnGroup) {
804
- return new TiffIfdMakernote (tag, group, mnGroup, new SigmaMnHeader);
803
+ std::unique_ptr< TiffComponent> newSigmaMn2 (uint16_t tag, IfdId group, IfdId mnGroup) {
804
+ return std::make_unique< TiffIfdMakernote> (tag, group, mnGroup, std::make_unique< SigmaMnHeader>() );
805
805
}
806
806
807
- TiffComponent* newSonyMn (uint16_t tag, IfdId group, IfdId /* mnGroup*/ , const byte* pData, size_t size,
808
- ByteOrder /* byteOrder*/ ) {
807
+ std::unique_ptr< TiffComponent> newSonyMn (uint16_t tag, IfdId group, IfdId /* mnGroup*/ , const byte* pData, size_t size,
808
+ ByteOrder /* byteOrder*/ ) {
809
809
// If there is no "SONY DSC " string we assume it's a simple IFD Makernote
810
810
if (size < 12 || std::string (reinterpret_cast <const char *>(pData), 12 ) != std::string (" SONY DSC \0\0\0 " , 12 )) {
811
811
// Require at least an IFD with 1 entry
@@ -819,16 +819,16 @@ TiffComponent* newSonyMn(uint16_t tag, IfdId group, IfdId /*mnGroup*/, const byt
819
819
return newSony1Mn2 (tag, group, IfdId::sony1Id);
820
820
}
821
821
822
- TiffComponent* newSony1Mn2 (uint16_t tag, IfdId group, IfdId mnGroup) {
823
- return new TiffIfdMakernote (tag, group, mnGroup, new SonyMnHeader, false );
822
+ std::unique_ptr< TiffComponent> newSony1Mn2 (uint16_t tag, IfdId group, IfdId mnGroup) {
823
+ return std::make_unique< TiffIfdMakernote> (tag, group, mnGroup, std::make_unique< SonyMnHeader>() , false );
824
824
}
825
825
826
- TiffComponent* newSony2Mn2 (uint16_t tag, IfdId group, IfdId mnGroup) {
827
- return new TiffIfdMakernote (tag, group, mnGroup, nullptr , true );
826
+ std::unique_ptr< TiffComponent> newSony2Mn2 (uint16_t tag, IfdId group, IfdId mnGroup) {
827
+ return std::make_unique< TiffIfdMakernote> (tag, group, mnGroup, nullptr , true );
828
828
}
829
829
830
- TiffComponent* newCasioMn (uint16_t tag, IfdId group, IfdId /* mnGroup*/ , const byte* pData, size_t size,
831
- ByteOrder /* byteOrder */ ) {
830
+ std::unique_ptr< TiffComponent> newCasioMn (uint16_t tag, IfdId group, IfdId /* mnGroup*/ , const byte* pData, size_t size,
831
+ ByteOrder /* byteOrder */ ) {
832
832
if (size > 6 && std::string (reinterpret_cast <const char *>(pData), 6 ) == std::string (" QVC\0\0\0 " , 6 ))
833
833
return newCasio2Mn2 (tag, group, IfdId::casio2Id);
834
834
// Require at least an IFD with 1 entry, but not necessarily a next pointer
@@ -837,8 +837,8 @@ TiffComponent* newCasioMn(uint16_t tag, IfdId group, IfdId /* mnGroup*/, const b
837
837
return newIfdMn2 (tag, group, IfdId::casioId);
838
838
}
839
839
840
- TiffComponent* newCasio2Mn2 (uint16_t tag, IfdId group, IfdId mnGroup) {
841
- return new TiffIfdMakernote (tag, group, mnGroup, new Casio2MnHeader);
840
+ std::unique_ptr< TiffComponent> newCasio2Mn2 (uint16_t tag, IfdId group, IfdId mnGroup) {
841
+ return std::make_unique< TiffIfdMakernote> (tag, group, mnGroup, std::make_unique< Casio2MnHeader>() );
842
842
}
843
843
844
844
// ! Structure for an index into the array set of complex binary arrays.
0 commit comments