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

#pragma once

#include "ISCW_FField.h"
#include "SCW_Base.h"

class FField;

namespace Sourcify
{
	class SCW_FField : public SCW_Base, public virtual ISCW_FField
	{
	public:
		SCW_FField(FField* InField);

		bool GetBoolMetaData(const wstring& Key) const override;

		map<wstring, wstring> GetMetaDataMap() const override;

		bool IsNative() const override;

		bool Less(const ISCW_FField& Other) const override;

		bool ISCW_Equals(const ISCW_FField& Other) const override;

		bool ISCW_Equals(const shared_ptr<const ISCW_FField> Other) const override;

		size_t GetHash() const override;

		FField* ToFField() const;

		ISCW_FFieldPtr ToFFieldPtr() override;
		ISCW_FFieldConstPtr ToFFieldPtr() const override;
		
	protected:
		FField* Field;
	};
} // namespace Sourcify