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

#pragma once

#include <memory>
#include <string>

using std::shared_ptr;
using std::wstring;

namespace Sourcify
{
	using ISCW_FStructVariableDescriptionConstPtr = std::shared_ptr<const class ISCW_FStructVariableDescription>;
	using ISCW_FStructVariableDescriptionPtr = std::shared_ptr<class ISCW_FStructVariableDescription>;

	class ISCW_UObject;
	class ISCW_FStructVariableDescription
	{
	public:
		virtual ~ISCW_FStructVariableDescription() = default;

		virtual ISCW_FStructVariableDescriptionPtr ToFStructVariableDescriptionPtr() = 0;

		virtual ISCW_FStructVariableDescriptionConstPtr ToFStructVariableDescriptionPtr() const = 0;

		virtual wstring GetDefaultValue() const = 0;

		virtual wstring GetFriendlyName() const = 0;

		virtual shared_ptr<ISCW_UObject> GetSubCategoryObject() const = 0;

		virtual void SetDefaultValue(const wstring& InDefaultValue) const = 0;

		virtual void SetSubCategoryObject(shared_ptr<ISCW_UObject> InSubCategoryObject) = 0;
	};
} // namespace Sourcify