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

#pragma once

#include "ISCW_UPropertyWrapper.h"
#include "SCW_UObject.h"
#include "ISCW_FProperty.h"

class UPropertyWrapper;

namespace Sourcify
{
	class SCW_UPropertyWrapper : public SCW_UObject, public virtual ISCW_UPropertyWrapper
	{
	public:
		SCW_UPropertyWrapper(UPropertyWrapper* InPropertyWrapper);

		UPropertyWrapper* ToUPropertyWrapper() const;

		ISCW_UPropertyWrapperPtr ToUPropertyWrapperPtr() override;
		ISCW_UPropertyWrapperConstPtr ToUPropertyWrapperPtr() const override;

		ISCW_FPropertyConstPtr GetProperty() const override;
		ISCW_FPropertyPtr GetProperty() override;

	protected:
		UPropertyWrapper* PropertyWrapper;
	};
} // namespace Sourcify