#ifndef USMETADATABAG_H
#define USMETADATABAG_H

#include <QObject>
#include <QVariant>

#include "model/ultrasoundModule/metadata/UsBaseMetadata.h"

/*************************************************************************************************/
/**
 * @brief This class acts as the holder of all metadata for a given type
 * @author Hessamoddin Hediyehloo(H-4nd-H)
 * @date 2020/10/04(1399/7/13)
 */
/*************************************************************************************************/
class UsMetadataBag
{
private:
	QList<QVariant> _metadataList;

public:
	UsMetadataBag();

	template<typename T>
	void appendMetadata(const QVariant& metadata);
	template<typename T>
	T getMetadata() const;
    template<typename T>
    bool hasMetadata() const;
	QList<QVariant> getAllMetadata() const;
	template<typename T>
	void deleteMetadata();
	void clear();
};

#endif //USMETADATABAG_H