// Copyright (c) 2025 Codemongous LLC. All Rights Reserved.

#pragma once

#include "ISCW_FMetaData.h"

#if ISCW_UE_VERSION_NEWER_THAN_OR_EQUAL(5, 6, 0)

#include "ISCW_UObject.h"
#include "SCW_Base.h"

class FMetaData;

namespace Sourcify
{
	class SCW_FMetaData : public SCW_Base, public virtual ISCW_FMetaData
	{
	public:
		SCW_FMetaData(FMetaData* InMetaData);

		FMetaData* ToFMetaData() const;

		ISCW_FMetaDataPtr ToFMetaDataPtr() override;
		ISCW_FMetaDataConstPtr ToFMetaDataConstPtr() const override;

		wstring GetValue(ISCW_UObjectConstPtr Object, const wstring& Key) const override;

		void SetValue(ISCW_UObjectPtr Object, const wstring& Key, const wstring& Value) override;

	protected:
		FMetaData* MetaData;
	};
} // namespace Sourcify

#endif // ISCW_UE_VERSION_NEWER_THAN_OR_EQUAL(5, 6, 0)