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

#pragma once

#include "ISCW_FStructVariableDescription.h"
#include "SCW_Base.h"

struct FStructVariableDescription;

namespace Sourcify
{
	class SCW_UObject;

	class SCW_FStructVariableDescription : public ISCW_FStructVariableDescription, public SCW_Base
	{
	public:
		SCW_FStructVariableDescription(FStructVariableDescription* InStructVariableDescription);

		FStructVariableDescription* ToFStructVariableDescription() const;

		ISCW_FStructVariableDescriptionPtr ToFStructVariableDescriptionPtr() override;

		ISCW_FStructVariableDescriptionConstPtr ToFStructVariableDescriptionPtr() const override;

		wstring GetDefaultValue() const override;

		wstring GetFriendlyName() const override;

		shared_ptr<ISCW_UObject> GetSubCategoryObject() const override;

		void SetDefaultValue(const wstring& InDefaultValue) const override;

		void SetSubCategoryObject(shared_ptr<ISCW_UObject> InSubCategoryObject) override;

	protected:
		FStructVariableDescription* StructVariableDescription;
	};
} // namespace Sourcify