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

#pragma once

#include "ISCW_EngineVersionComparison.h"
#include "ISCW_FObjectPropertyBase.h"
#include "SCW_FProperty.h"

class FObjectPropertyBase;

namespace Sourcify
{
	class SCW_FObjectPropertyBase : public SCW_FProperty, public virtual ISCW_FObjectPropertyBase
	{
	public:
		SCW_FObjectPropertyBase(FObjectPropertyBase* InObjectPropertyBase);

#if ISCW_UE_VERSION_OLDER_THAN(5, 7, 0)
		wstring GetCPPTypeCustom(wstring* ExtendedTypeText, SCW_EPropertyExportCPPFlags CPPExportFlags, const wstring& InnerNativeTypeName) const override;
#endif		
		ISCW_UClassPtr GetPropertyClass() const override;

		FObjectPropertyBase* ToFObjectPropertyBase() const;

		ISCW_FObjectPropertyBasePtr ToFObjectPropertyBasePtr() override;
		ISCW_FObjectPropertyBaseConstPtr ToFObjectPropertyBasePtr() const override;

	protected:
		FObjectPropertyBase* ObjectPropertyBase;
	};
} // namespace Sourcify