#pragma once #include "foundation/dispatch.h" #include "nx/nxstring.h" #include "foundation/error.h" #include "metadata/MetadataKeys.h" #include "nx/nxdata.h" #include "metadata/types.h" class NOVTABLE ifc_metadata_editor : public Wasabi2::Dispatchable { protected: ifc_metadata_editor() : Dispatchable(DISPATCHABLE_VERSION) {} ~ifc_metadata_editor() {} public: enum { INDEX_DEFAULT = -1, }; int Save() { return MetadataEditor_Save(); } /* Fields */ int SetField(int field, unsigned int index, nx_string_t value) { return MetadataEditor_SetField(field, index, value); } int SetInteger(int field, unsigned int index, int64_t value) { return MetadataEditor_SetInteger(field, index, value); } int SetReal(int field, unsigned int index, double value) { return MetadataEditor_SetReal(field, index, value); } /* Art */ int SetArtwork(int field, unsigned int index, artwork_t *data, data_flags_t flags=DATA_FLAG_ALL) { return MetadataEditor_SetArtwork(field, index, data, flags); } /* Binary Data */ enum { DISPATCHABLE_VERSION, }; protected: virtual int WASABICALL MetadataEditor_Save()=0; virtual int WASABICALL MetadataEditor_SetField(int field, unsigned int index, nx_string_t value)=0; virtual int WASABICALL MetadataEditor_SetInteger(int field, unsigned int index, int64_t value)=0; virtual int WASABICALL MetadataEditor_SetReal(int field, unsigned int index, double value)=0; virtual int WASABICALL MetadataEditor_SetArtwork(int field, unsigned int index, artwork_t *data, data_flags_t flags)=0; };