Blame include/exiv2/datasets.hpp

Packit Service 21b5d1
// ***************************************************************** -*- C++ -*-
Packit Service 21b5d1
/*
Packit Service 21b5d1
 * Copyright (C) 2004-2018 Exiv2 authors
Packit Service 21b5d1
 * This program is part of the Exiv2 distribution.
Packit Service 21b5d1
 *
Packit Service 21b5d1
 * This program is free software; you can redistribute it and/or
Packit Service 21b5d1
 * modify it under the terms of the GNU General Public License
Packit Service 21b5d1
 * as published by the Free Software Foundation; either version 2
Packit Service 21b5d1
 * of the License, or (at your option) any later version.
Packit Service 21b5d1
 *
Packit Service 21b5d1
 * This program is distributed in the hope that it will be useful,
Packit Service 21b5d1
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service 21b5d1
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit Service 21b5d1
 * GNU General Public License for more details.
Packit Service 21b5d1
 *
Packit Service 21b5d1
 * You should have received a copy of the GNU General Public License
Packit Service 21b5d1
 * along with this program; if not, write to the Free Software
Packit Service 21b5d1
 * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA.
Packit Service 21b5d1
 */
Packit Service 21b5d1
/*!
Packit Service 21b5d1
  @file    datasets.hpp
Packit Service 21b5d1
  @brief   IPTC dataset and type information
Packit Service 21b5d1
  @author  Brad Schick (brad) <brad@robotbattle.com>
Packit Service 21b5d1
  @date    24-Jul-04, brad: created
Packit Service 21b5d1
 */
Packit Service 21b5d1
#ifndef DATASETS_HPP_
Packit Service 21b5d1
#define DATASETS_HPP_
Packit Service 21b5d1
Packit Service 21b5d1
// *****************************************************************************
Packit Service 21b5d1
#include "exiv2lib_export.h"
Packit Service 21b5d1
Packit Service 21b5d1
// included header files
Packit Service 21b5d1
#include "metadatum.hpp"
Packit Service 21b5d1
Packit Service 21b5d1
// + standard includes
Packit Service 21b5d1
#include <set>
Packit Service 21b5d1
#include <vector>
Packit Service 21b5d1
#include <map>
Packit Service 21b5d1
Packit Service 21b5d1
// *****************************************************************************
Packit Service 21b5d1
// namespace extensions
Packit Service 21b5d1
namespace Exiv2 {
Packit Service 21b5d1
Packit Service 21b5d1
// *****************************************************************************
Packit Service 21b5d1
// class definitions
Packit Service 21b5d1
Packit Service 21b5d1
    //! Details of an IPTC record.
Packit Service 21b5d1
    struct EXIV2API RecordInfo {
Packit Service 21b5d1
        //! Constructor
Packit Service 21b5d1
        RecordInfo(uint16_t recordId, const char* name, const char* desc);
Packit Service 21b5d1
        uint16_t recordId_;                     //!< Record id
Packit Service 21b5d1
        const char* name_;                      //!< Record name (one word)
Packit Service 21b5d1
        const char* desc_;                      //!< Record description
Packit Service 21b5d1
    };
Packit Service 21b5d1
Packit Service 21b5d1
    //! Details of an IPTC dataset.
Packit Service 21b5d1
    struct EXIV2API DataSet {
Packit Service 21b5d1
        //! Constructor
Packit Service 21b5d1
        DataSet(
Packit Service 21b5d1
            uint16_t number,
Packit Service 21b5d1
            const char* name,
Packit Service 21b5d1
            const char* title,
Packit Service 21b5d1
            const char* desc,
Packit Service 21b5d1
            bool mandatory,
Packit Service 21b5d1
            bool repeatable,
Packit Service 21b5d1
            uint32_t minbytes,
Packit Service 21b5d1
            uint32_t maxbytes,
Packit Service 21b5d1
            TypeId type,
Packit Service 21b5d1
            uint16_t recordId,
Packit Service 21b5d1
            const char* photoshop
Packit Service 21b5d1
        );
Packit Service 21b5d1
        uint16_t number_;                       //!< Dataset number
Packit Service 21b5d1
        const char* name_;                      //!< Dataset name
Packit Service 21b5d1
        const char* title_;                     //!< Dataset title or label
Packit Service 21b5d1
        const char* desc_;                      //!< Dataset description
Packit Service 21b5d1
        bool mandatory_;                        //!< True if dataset is mandatory
Packit Service 21b5d1
        bool repeatable_;                       //!< True if dataset is repeatable
Packit Service 21b5d1
        uint32_t minbytes_;                     //!< Minimum number of bytes
Packit Service 21b5d1
        uint32_t maxbytes_;                     //!< Maximum number of bytes
Packit Service 21b5d1
        TypeId type_;                           //!< Exiv2 default type
Packit Service 21b5d1
        uint16_t recordId_;                     //!< Record id
Packit Service 21b5d1
        const char* photoshop_;                 //!< Photoshop string
Packit Service 21b5d1
    }; // struct DataSet
Packit Service 21b5d1
Packit Service 21b5d1
    //! IPTC dataset reference, implemented as a static class.
Packit Service 21b5d1
    class EXIV2API IptcDataSets {
Packit Service 21b5d1
    public:
Packit Service 21b5d1
        /*!
Packit Service 21b5d1
          @name Record identifiers
Packit Service 21b5d1
          @brief Record identifiers to logically group dataSets. There are other
Packit Service 21b5d1
                 possible record types, but they are not standardized by the IPTC
Packit Service 21b5d1
                 IIM4 standard (and not commonly used in images).
Packit Service 21b5d1
         */
Packit Service 21b5d1
        //@{
Packit Service 21b5d1
        static const uint16_t invalidRecord = 0;
Packit Service 21b5d1
        static const uint16_t envelope = 1;
Packit Service 21b5d1
        static const uint16_t application2 = 2;
Packit Service 21b5d1
        //@}
Packit Service 21b5d1
Packit Service 21b5d1
        //! @name Dataset identifiers
Packit Service 21b5d1
        //@{
Packit Service 21b5d1
        static const uint16_t ModelVersion           = 0;
Packit Service 21b5d1
        static const uint16_t Destination            = 5;
Packit Service 21b5d1
        static const uint16_t FileFormat             = 20;
Packit Service 21b5d1
        static const uint16_t FileVersion            = 22;
Packit Service 21b5d1
        static const uint16_t ServiceId              = 30;
Packit Service 21b5d1
        static const uint16_t EnvelopeNumber         = 40;
Packit Service 21b5d1
        static const uint16_t ProductId              = 50;
Packit Service 21b5d1
        static const uint16_t EnvelopePriority       = 60;
Packit Service 21b5d1
        static const uint16_t DateSent               = 70;
Packit Service 21b5d1
        static const uint16_t TimeSent               = 80;
Packit Service 21b5d1
        static const uint16_t CharacterSet           = 90;
Packit Service 21b5d1
        static const uint16_t UNO                    = 100;
Packit Service 21b5d1
        static const uint16_t ARMId                  = 120;
Packit Service 21b5d1
        static const uint16_t ARMVersion             = 122;
Packit Service 21b5d1
        static const uint16_t RecordVersion          = 0;
Packit Service 21b5d1
        static const uint16_t ObjectType             = 3;
Packit Service 21b5d1
        static const uint16_t ObjectAttribute        = 4;
Packit Service 21b5d1
        static const uint16_t ObjectName             = 5;
Packit Service 21b5d1
        static const uint16_t EditStatus             = 7;
Packit Service 21b5d1
        static const uint16_t EditorialUpdate        = 8;
Packit Service 21b5d1
        static const uint16_t Urgency                = 10;
Packit Service 21b5d1
        static const uint16_t Subject                = 12;
Packit Service 21b5d1
        static const uint16_t Category               = 15;
Packit Service 21b5d1
        static const uint16_t SuppCategory           = 20;
Packit Service 21b5d1
        static const uint16_t FixtureId              = 22;
Packit Service 21b5d1
        static const uint16_t Keywords               = 25;
Packit Service 21b5d1
        static const uint16_t LocationCode           = 26;
Packit Service 21b5d1
        static const uint16_t LocationName           = 27;
Packit Service 21b5d1
        static const uint16_t ReleaseDate            = 30;
Packit Service 21b5d1
        static const uint16_t ReleaseTime            = 35;
Packit Service 21b5d1
        static const uint16_t ExpirationDate         = 37;
Packit Service 21b5d1
        static const uint16_t ExpirationTime         = 38;
Packit Service 21b5d1
        static const uint16_t SpecialInstructions    = 40;
Packit Service 21b5d1
        static const uint16_t ActionAdvised          = 42;
Packit Service 21b5d1
        static const uint16_t ReferenceService       = 45;
Packit Service 21b5d1
        static const uint16_t ReferenceDate          = 47;
Packit Service 21b5d1
        static const uint16_t ReferenceNumber        = 50;
Packit Service 21b5d1
        static const uint16_t DateCreated            = 55;
Packit Service 21b5d1
        static const uint16_t TimeCreated            = 60;
Packit Service 21b5d1
        static const uint16_t DigitizationDate       = 62;
Packit Service 21b5d1
        static const uint16_t DigitizationTime       = 63;
Packit Service 21b5d1
        static const uint16_t Program                = 65;
Packit Service 21b5d1
        static const uint16_t ProgramVersion         = 70;
Packit Service 21b5d1
        static const uint16_t ObjectCycle            = 75;
Packit Service 21b5d1
        static const uint16_t Byline                 = 80;
Packit Service 21b5d1
        static const uint16_t BylineTitle            = 85;
Packit Service 21b5d1
        static const uint16_t City                   = 90;
Packit Service 21b5d1
        static const uint16_t SubLocation            = 92;
Packit Service 21b5d1
        static const uint16_t ProvinceState          = 95;
Packit Service 21b5d1
        static const uint16_t CountryCode            = 100;
Packit Service 21b5d1
        static const uint16_t CountryName            = 101;
Packit Service 21b5d1
        static const uint16_t TransmissionReference  = 103;
Packit Service 21b5d1
        static const uint16_t Headline               = 105;
Packit Service 21b5d1
        static const uint16_t Credit                 = 110;
Packit Service 21b5d1
        static const uint16_t Source                 = 115;
Packit Service 21b5d1
        static const uint16_t Copyright              = 116;
Packit Service 21b5d1
        static const uint16_t Contact                = 118;
Packit Service 21b5d1
        static const uint16_t Caption                = 120;
Packit Service 21b5d1
        static const uint16_t Writer                 = 122;
Packit Service 21b5d1
        static const uint16_t RasterizedCaption      = 125;
Packit Service 21b5d1
        static const uint16_t ImageType              = 130;
Packit Service 21b5d1
        static const uint16_t ImageOrientation       = 131;
Packit Service 21b5d1
        static const uint16_t Language               = 135;
Packit Service 21b5d1
        static const uint16_t AudioType              = 150;
Packit Service 21b5d1
        static const uint16_t AudioRate              = 151;
Packit Service 21b5d1
        static const uint16_t AudioResolution        = 152;
Packit Service 21b5d1
        static const uint16_t AudioDuration          = 153;
Packit Service 21b5d1
        static const uint16_t AudioOutcue            = 154;
Packit Service 21b5d1
        static const uint16_t PreviewFormat          = 200;
Packit Service 21b5d1
        static const uint16_t PreviewVersion         = 201;
Packit Service 21b5d1
        static const uint16_t Preview                = 202;
Packit Service 21b5d1
        //@}
Packit Service 21b5d1
Packit Service 21b5d1
    private:
Packit Service 21b5d1
        //! Prevent construction: not implemented.
Packit Service 21b5d1
        IptcDataSets() {}
Packit Service 21b5d1
        //! Prevent copy-construction: not implemented.
Packit Service 21b5d1
        IptcDataSets(const IptcDataSets& rhs);
Packit Service 21b5d1
        //! Prevent assignment: not implemented.
Packit Service 21b5d1
        IptcDataSets& operator=(const IptcDataSets& rhs);
Packit Service 21b5d1
Packit Service 21b5d1
    public:
Packit Service 21b5d1
        /*!
Packit Service 21b5d1
          @brief Return the name of the dataset.
Packit Service 21b5d1
          @param number The dataset number
Packit Service 21b5d1
          @param recordId The IPTC record Id
Packit Service 21b5d1
          @return The name of the dataset or a string containing the hexadecimal
Packit Service 21b5d1
                  value of the dataset in the form "0x01ff", if this is an unknown
Packit Service 21b5d1
                  dataset.
Packit Service 21b5d1
         */
Packit Service 21b5d1
        static std::string dataSetName(uint16_t number, uint16_t recordId);
Packit Service 21b5d1
        /*!
Packit Service 21b5d1
          @brief Return the title (label) of the dataset.
Packit Service 21b5d1
          @param number The dataset number
Packit Service 21b5d1
          @param recordId The IPTC record Id
Packit Service 21b5d1
          @return The title (label) of the dataset
Packit Service 21b5d1
         */
Packit Service 21b5d1
        static const char* dataSetTitle(uint16_t number, uint16_t recordId);
Packit Service 21b5d1
        /*!
Packit Service 21b5d1
          @brief Return the description of the dataset.
Packit Service 21b5d1
          @param number The dataset number
Packit Service 21b5d1
          @param recordId The IPTC record Id
Packit Service 21b5d1
          @return The description of the dataset
Packit Service 21b5d1
         */
Packit Service 21b5d1
        static const char* dataSetDesc(uint16_t number, uint16_t recordId);
Packit Service 21b5d1
        /*!
Packit Service 21b5d1
          @brief Return the photohsop name of a given dataset.
Packit Service 21b5d1
          @param number The dataset number
Packit Service 21b5d1
          @param recordId The IPTC record Id
Packit Service 21b5d1
          @return The name used by photoshop for a dataset or an empty
Packit Service 21b5d1
                 string if photoshop does not use the dataset.
Packit Service 21b5d1
         */
Packit Service 21b5d1
        static const char* dataSetPsName(uint16_t number, uint16_t recordId);
Packit Service 21b5d1
        /*!
Packit Service 21b5d1
          @brief Check if a given dataset is repeatable
Packit Service 21b5d1
          @param number The dataset number
Packit Service 21b5d1
          @param recordId The IPTC record Id
Packit Service 21b5d1
          @return true if the given dataset is repeatable otherwise false
Packit Service 21b5d1
         */
Packit Service 21b5d1
        static bool dataSetRepeatable(uint16_t number, uint16_t recordId);
Packit Service 21b5d1
        /*!
Packit Service 21b5d1
          @brief Return the dataSet number for dataset name and record id
Packit Service 21b5d1
Packit Service 21b5d1
          @param dataSetName dataSet name
Packit Service 21b5d1
          @param recordId recordId
Packit Service 21b5d1
Packit Service 21b5d1
          @return dataSet number
Packit Service 21b5d1
Packit Service 21b5d1
          @throw Error if the \em dataSetName or \em recordId are invalid
Packit Service 21b5d1
         */
Packit Service 21b5d1
        static uint16_t dataSet(const std::string& dataSetName, uint16_t recordId);
Packit Service 21b5d1
        //! Return the type for dataSet number and Record id
Packit Service 21b5d1
        static TypeId dataSetType(uint16_t number, uint16_t recordId);
Packit Service 21b5d1
        /*!
Packit Service 21b5d1
          @brief Return the name of the Record
Packit Service 21b5d1
          @param recordId The record id
Packit Service 21b5d1
          @return The name of the record or a string containing the hexadecimal
Packit Service 21b5d1
                  value of the record in the form "0x01ff", if this is an
Packit Service 21b5d1
                  unknown record.
Packit Service 21b5d1
         */
Packit Service 21b5d1
        static std::string recordName(uint16_t recordId);
Packit Service 21b5d1
        /*!
Packit Service 21b5d1
           @brief Return the description of a record
Packit Service 21b5d1
           @param recordId Record Id number
Packit Service 21b5d1
           @return the description of the Record
Packit Service 21b5d1
         */
Packit Service 21b5d1
        static const char* recordDesc(uint16_t recordId);
Packit Service 21b5d1
        /*!
Packit Service 21b5d1
           @brief Return the Id number of a record
Packit Service 21b5d1
           @param recordName Name of a record type
Packit Service 21b5d1
           @return the Id number of a Record
Packit Service 21b5d1
           @throw Error if the record is not known;
Packit Service 21b5d1
         */
Packit Service 21b5d1
        static uint16_t recordId(const std::string& recordName);
Packit Service 21b5d1
        //! Return read-only list of built-in Envelope Record datasets
Packit Service 21b5d1
        static const DataSet* envelopeRecordList();
Packit Service 21b5d1
        //! Return read-only list of built-in Application2 Record datasets
Packit Service 21b5d1
        static const DataSet* application2RecordList();
Packit Service 21b5d1
        //! Print a list of all dataSets to output stream
Packit Service 21b5d1
        static void dataSetList(std::ostream& os);
Packit Service 21b5d1
Packit Service 21b5d1
    private:
Packit Service 21b5d1
        static int dataSetIdx(uint16_t number, uint16_t recordId);
Packit Service 21b5d1
        static int dataSetIdx(const std::string& dataSetName, uint16_t recordId);
Packit Service 21b5d1
Packit Service 21b5d1
        static const DataSet* records_[];
Packit Service 21b5d1
        static const RecordInfo recordInfo_[];
Packit Service 21b5d1
Packit Service 21b5d1
    }; // class IptcDataSets
Packit Service 21b5d1
Packit Service 21b5d1
    /*!
Packit Service 21b5d1
      @brief Concrete keys for IPTC metadata.
Packit Service 21b5d1
     */
Packit Service 21b5d1
    class EXIV2API IptcKey : public Key {
Packit Service 21b5d1
    public:
Packit Service 21b5d1
        //! Shortcut for an %IptcKey auto pointer.
Packit Service 21b5d1
        typedef std::auto_ptr<IptcKey> AutoPtr;
Packit Service 21b5d1
Packit Service 21b5d1
        //! @name Creators
Packit Service 21b5d1
        //@{
Packit Service 21b5d1
        /*!
Packit Service 21b5d1
          @brief Constructor to create an IPTC key from a key string.
Packit Service 21b5d1
Packit Service 21b5d1
          @param key The key string.
Packit Service 21b5d1
          @throw Error if the first part of the key is not 'Iptc' or
Packit Service 21b5d1
                 the remaining parts of the key cannot be parsed and
Packit Service 21b5d1
                 converted to a record name and a dataset name.
Packit Service 21b5d1
        */
Packit Service 21b5d1
        explicit IptcKey(const std::string& key);
Packit Service 21b5d1
        /*!
Packit Service 21b5d1
          @brief Constructor to create an IPTC key from dataset and record ids.
Packit Service 21b5d1
          @param tag Dataset id
Packit Service 21b5d1
          @param record Record id
Packit Service 21b5d1
         */
Packit Service 21b5d1
        IptcKey(uint16_t tag, uint16_t record);
Packit Service 21b5d1
        //! Copy constructor
Packit Service 21b5d1
        IptcKey(const IptcKey& rhs);
Packit Service 21b5d1
        //! Destructor
Packit Service 21b5d1
        virtual ~IptcKey();
Packit Service 21b5d1
        //@}
Packit Service 21b5d1
Packit Service 21b5d1
        //! @name Manipulators
Packit Service 21b5d1
        //@{
Packit Service 21b5d1
        /*!
Packit Service 21b5d1
          @brief Assignment operator.
Packit Service 21b5d1
         */
Packit Service 21b5d1
        IptcKey& operator=(const IptcKey& rhs);
Packit Service 21b5d1
        //@}
Packit Service 21b5d1
Packit Service 21b5d1
        //! @name Accessors
Packit Service 21b5d1
        //@{
Packit Service 21b5d1
        virtual std::string key() const;
Packit Service 21b5d1
        virtual const char* familyName() const;
Packit Service 21b5d1
        /*!
Packit Service 21b5d1
          @brief Return the name of the group (the second part of the key).
Packit Service 21b5d1
                 For IPTC keys, the group name is the record name.
Packit Service 21b5d1
        */
Packit Service 21b5d1
        virtual std::string groupName() const;
Packit Service 21b5d1
        virtual std::string tagName() const;
Packit Service 21b5d1
        virtual std::string tagLabel() const;
Packit Service 21b5d1
        virtual uint16_t tag() const;
Packit Service 21b5d1
        AutoPtr clone() const;
Packit Service 21b5d1
        //! Return the name of the record
Packit Service 21b5d1
        std::string recordName() const;
Packit Service 21b5d1
        //! Return the record id
Packit Service 21b5d1
        uint16_t record() const;
Packit Service 21b5d1
        //@}
Packit Service 21b5d1
Packit Service 21b5d1
    protected:
Packit Service 21b5d1
        //! @name Manipulators
Packit Service 21b5d1
        //@{
Packit Service 21b5d1
        /*!
Packit Service 21b5d1
          @brief Set the key corresponding to the dataset and record id.
Packit Service 21b5d1
                 The key is of the form 'Iptc.recordName.dataSetName'.
Packit Service 21b5d1
         */
Packit Service 21b5d1
        void makeKey();
Packit Service 21b5d1
        /*!
Packit Service 21b5d1
          @brief Parse and convert the key string into dataset and record id.
Packit Service 21b5d1
                 Updates data members if the string can be decomposed, or throws
Packit Service 21b5d1
                 \em Error.
Packit Service 21b5d1
Packit Service 21b5d1
          @throw Error if the key cannot be decomposed.
Packit Service 21b5d1
         */
Packit Service 21b5d1
        void decomposeKey();
Packit Service 21b5d1
        //@}
Packit Service 21b5d1
Packit Service 21b5d1
    private:
Packit Service 21b5d1
        //! Internal virtual copy constructor.
Packit Service 21b5d1
        virtual IptcKey* clone_() const;
Packit Service 21b5d1
Packit Service 21b5d1
        // DATA
Packit Service 21b5d1
        static const char* familyName_;
Packit Service 21b5d1
Packit Service 21b5d1
        uint16_t tag_;                 //!< Tag value
Packit Service 21b5d1
        uint16_t record_;              //!< Record value
Packit Service 21b5d1
        std::string key_;              //!< Key
Packit Service 21b5d1
Packit Service 21b5d1
    }; // class IptcKey
Packit Service 21b5d1
Packit Service 21b5d1
    /*!
Packit Service 21b5d1
      @brief typedef for string:string map
Packit Service 21b5d1
     */
Packit Service 21b5d1
    typedef std::map<std::string,std::string>                 Dictionary;
Packit Service 21b5d1
    /*!
Packit Service 21b5d1
      @brief typedef for Dictionary*
Packit Service 21b5d1
     */
Packit Service 21b5d1
    typedef Dictionary*                                       Dictionary_p;
Packit Service 21b5d1
    /*!
Packit Service 21b5d1
      @brief typedef for Dictionary iterator
Packit Service 21b5d1
     */
Packit Service 21b5d1
    typedef Dictionary::const_iterator                        Dictionary_i;
Packit Service 21b5d1
Packit Service 21b5d1
    /*!
Packit Service 21b5d1
      @brief typedef for string set (unique strings)
Packit Service 21b5d1
     */
Packit Service 21b5d1
    typedef std::set<std::string>                             StringSet;
Packit Service 21b5d1
    /*!
Packit Service 21b5d1
      @brief typedef for StringSet*
Packit Service 21b5d1
     */
Packit Service 21b5d1
    typedef StringSet*                                        StringSet_p;
Packit Service 21b5d1
    /*!
Packit Service 21b5d1
      @brief Class to provide a StringSet iterator
Packit Service 21b5d1
     */
Packit Service 21b5d1
    typedef std::set<std::string>::const_iterator             StringSet_i;
Packit Service 21b5d1
Packit Service 21b5d1
    /*!
Packit Service 21b5d1
      @brief typedef for string vector
Packit Service 21b5d1
     */
Packit Service 21b5d1
    typedef std::vector<std::string>                          StringVector;
Packit Service 21b5d1
    /*!
Packit Service 21b5d1
      @brief typedef for StringVector pointer
Packit Service 21b5d1
     */
Packit Service 21b5d1
    typedef StringVector*                                     StringVector_p;
Packit Service 21b5d1
    /*!
Packit Service 21b5d1
      @brief Class to provide a StringVector iterator
Packit Service 21b5d1
     */
Packit Service 21b5d1
    typedef StringVector::const_iterator                      StringVector_i;
Packit Service 21b5d1
Packit Service 21b5d1
    /*!
Packit Service 21b5d1
      @brief typedef for uint32_t vector
Packit Service 21b5d1
     */
Packit Service 21b5d1
    typedef std::vector<uint32_t>                             Uint32Vector  ;
Packit Service 21b5d1
    /*!
Packit Service 21b5d1
      @brief typedef for Uint32Vector pointer
Packit Service 21b5d1
     */
Packit Service 21b5d1
    typedef Uint32Vector*                                     Uint32Vector_p;
Packit Service 21b5d1
    /*!
Packit Service 21b5d1
      @brief typedef for Uint32Vector iterator
Packit Service 21b5d1
     */
Packit Service 21b5d1
    typedef Uint32Vector::const_iterator                      Uint32Vector_i;
Packit Service 21b5d1
Packit Service 21b5d1
Packit Service 21b5d1
// *****************************************************************************
Packit Service 21b5d1
// free functions
Packit Service 21b5d1
Packit Service 21b5d1
    //! Output operator for dataSet
Packit Service 21b5d1
    EXIV2API std::ostream& operator<<(std::ostream& os, const DataSet& dataSet);
Packit Service 21b5d1
Packit Service 21b5d1
}                                       // namespace Exiv2
Packit Service 21b5d1
Packit Service 21b5d1
#endif                                  // #ifndef DATASETS_HPP_