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

#pragma once

#include "ISCW_FMemberReference.h"
#include "ISCW_UK2Node_Variable.h"
#include "SCW_UK2Node.h"

class UK2Node_Variable;

namespace Sourcify
{
	class SCW_UK2Node_Variable : public SCW_UK2Node, public virtual ISCW_UK2Node_Variable
	{
	public:
		SCW_UK2Node_Variable(UK2Node_Variable* InK2Node_Variable);
					
		wstring GetVarName() const override;

		ISCW_FPropertyPtr GetPropertyForVariable() const override;
			
		ISCW_FMemberReferencePtr GetVariableReference() const override;

		UK2Node_Variable* ToUK2Node_Variable() const;

		ISCW_UK2Node_VariablePtr ToUK2Node_VariablePtr() override;
		ISCW_UK2Node_VariableConstPtr ToUK2Node_VariablePtr() const override;

	protected:
		UK2Node_Variable* K2Node_Variable;
	};
} // namespace Sourcify