mirror of
https://github.com/ModOrganizer2/modorganizer-plugin_python.git
synced 2026-07-27 14:03:33 -07:00
Return shared_ptr in IPlugin::requirements().
This commit is contained in:
@@ -46,6 +46,6 @@ add_filter(NAME src/utils GROUPS
|
||||
add_filter(NAME src/wrappers GROUPS
|
||||
gamefeatureswrappers
|
||||
proxypluginwrappers
|
||||
pythonwrappersutilities
|
||||
pythonwrapperutilities
|
||||
uibasewrappers
|
||||
)
|
||||
|
||||
@@ -72,11 +72,11 @@ QList<MOBase::PluginSetting> class_name::settings() const \
|
||||
QString class_name::localizedName_Default() const { return IPlugin::localizedName(); } \
|
||||
QString class_name::master_Default() const { return IPlugin::master(); } \
|
||||
BOOST_PP_EXPR_IF(include_requirements, \
|
||||
QList<IPluginRequirement*> class_name::requirements() const { \
|
||||
return basicWrapperFunctionImplementationWithDefault<QList<IPluginRequirement*>>( \
|
||||
this, &class_name::requirements_Default, m_Requirements, "requirements"); \
|
||||
std::vector<std::shared_ptr<const MOBase::IPluginRequirement>> class_name::requirements() const { \
|
||||
return basicWrapperFunctionImplementationWithDefault<std::vector<std::shared_ptr<const MOBase::IPluginRequirement>>>( \
|
||||
this, &class_name::requirements_Default, "requirements"); \
|
||||
} \
|
||||
QList<IPluginRequirement*> class_name::requirements_Default() const { return IPlugin::requirements(); })
|
||||
std::vector<std::shared_ptr<const MOBase::IPluginRequirement>> class_name::requirements_Default() const { return IPlugin::requirements(); })
|
||||
|
||||
#define COMMON_I_PLUGIN_WRAPPER_DEFINITIONS(class_name) COMMON_I_PLUGIN_WRAPPER_DEFINITIONS_IMPL(class_name, 1)
|
||||
|
||||
|
||||
@@ -19,8 +19,6 @@
|
||||
// The wrapper for IPluginGame cannot override requirements() since it's final,
|
||||
// so we need to be able to exclude the declarations.
|
||||
#define COMMON_I_PLUGIN_WRAPPER_DECLARATIONS_IMPL(include_requirements) \
|
||||
BOOST_PP_EXPR_IF(include_requirements, \
|
||||
private: mutable boost::python::object m_Requirements; ) \
|
||||
public: \
|
||||
virtual bool init(MOBase::IOrganizer *moInfo) override; \
|
||||
virtual QString name() const override; \
|
||||
@@ -33,8 +31,8 @@ virtual QList<MOBase::PluginSetting> settings() const override; \
|
||||
QString localizedName_Default() const; \
|
||||
QString master_Default() const; \
|
||||
BOOST_PP_EXPR_IF(include_requirements, \
|
||||
virtual QList<MOBase::IPluginRequirement*> requirements() const override; \
|
||||
QList<MOBase::IPluginRequirement*> requirements_Default() const;)
|
||||
virtual std::vector<std::shared_ptr<const MOBase::IPluginRequirement>> requirements() const override; \
|
||||
std::vector<std::shared_ptr<const MOBase::IPluginRequirement>> requirements_Default() const;)
|
||||
|
||||
#define COMMON_I_PLUGIN_WRAPPER_DECLARATIONS COMMON_I_PLUGIN_WRAPPER_DECLARATIONS_IMPL(1)
|
||||
|
||||
|
||||
+13
-13
@@ -87,16 +87,18 @@ BOOST_PYTHON_MODULE(mobase)
|
||||
utils::register_qflags_converter<IModList::ModStates>();
|
||||
|
||||
// Pointers:
|
||||
utils::shared_ptr_from_python<std::shared_ptr<const ISaveGame>>();
|
||||
bpy::register_ptr_to_python<std::shared_ptr<FileTreeEntry>>();
|
||||
bpy::register_ptr_to_python<std::shared_ptr<const FileTreeEntry>>();
|
||||
bpy::implicitly_convertible<std::shared_ptr<FileTreeEntry>, std::shared_ptr<const FileTreeEntry>>();
|
||||
bpy::register_ptr_to_python<std::shared_ptr<IFileTree>>();
|
||||
bpy::register_ptr_to_python<std::shared_ptr<const IFileTree>>();
|
||||
bpy::implicitly_convertible<std::shared_ptr<IFileTree>, std::shared_ptr<const IFileTree>>();
|
||||
bpy::register_ptr_to_python<std::shared_ptr<ISaveGame>>();
|
||||
|
||||
utils::shared_ptr_from_python<std::shared_ptr<const ISaveGame>>();
|
||||
bpy::register_ptr_to_python<std::shared_ptr<const ISaveGame>>();
|
||||
bpy::implicitly_convertible<std::shared_ptr<ISaveGame>, std::shared_ptr<const ISaveGame>>();
|
||||
|
||||
utils::shared_ptr_from_python<std::shared_ptr<const IPluginRequirement>>();
|
||||
bpy::register_ptr_to_python<std::shared_ptr<const IPluginRequirement>>();
|
||||
|
||||
// Containers:
|
||||
utils::register_sequence_container<std::vector<int>>();
|
||||
@@ -105,13 +107,13 @@ BOOST_PYTHON_MODULE(mobase)
|
||||
utils::register_sequence_container<QList<ExecutableForcedLoadSetting>>();
|
||||
utils::register_sequence_container<QList<PluginSetting>>();
|
||||
utils::register_sequence_container<QList<ModRepositoryFileInfo>>();
|
||||
utils::register_sequence_container<QList<IPluginRequirement*>>();
|
||||
utils::register_sequence_container<QStringList>();
|
||||
utils::register_sequence_container<QList<QString>>();
|
||||
utils::register_sequence_container<QList<QFileInfo>>();
|
||||
utils::register_sequence_container<QList<QVariant>>(); // Required for QVariant since this is QVariantList.
|
||||
utils::register_sequence_container<std::vector<std::shared_ptr<const FileTreeEntry>>>();
|
||||
utils::register_sequence_container<std::vector<std::shared_ptr<const ISaveGame>>>();
|
||||
utils::register_sequence_container<std::vector<std::shared_ptr<const IPluginRequirement>>>();
|
||||
utils::register_sequence_container<std::vector<ModDataContent::Content>>();
|
||||
utils::register_sequence_container<std::vector<Mapping>>();
|
||||
|
||||
@@ -274,7 +276,7 @@ BOOST_PYTHON_MODULE(mobase)
|
||||
|
||||
// Plugin requirements:
|
||||
auto iPluginRequirementClass = bpy::class_<
|
||||
IPluginRequirementWrapper, bpy::bases<>, IPluginRequirementWrapper*, boost::noncopyable>("IPluginRequirement");
|
||||
IPluginRequirementWrapper, bpy::bases<>, boost::noncopyable>("IPluginRequirement");
|
||||
{
|
||||
bpy::scope scope = iPluginRequirementClass;
|
||||
|
||||
@@ -292,26 +294,24 @@ BOOST_PYTHON_MODULE(mobase)
|
||||
// pluginDependency
|
||||
.def("pluginDependency", +[](QStringList const& pluginNames) {
|
||||
return PluginRequirementFactory::pluginDependency(pluginNames);
|
||||
}, bpy::return_value_policy<bpy::reference_existing_object>(), bpy::arg("plugins"))
|
||||
}, bpy::arg("plugins"))
|
||||
.def("pluginDependency", +[](QString const& pluginName) {
|
||||
return PluginRequirementFactory::pluginDependency(pluginName);
|
||||
}, bpy::return_value_policy<bpy::reference_existing_object>(), bpy::arg("plugin"))
|
||||
}, bpy::arg("plugin"))
|
||||
.staticmethod("pluginDependency")
|
||||
// gameDependency
|
||||
.def("gameDependency", +[](QStringList const& gameNames) {
|
||||
return PluginRequirementFactory::gameDependency(gameNames);
|
||||
}, bpy::return_value_policy<bpy::reference_existing_object>(), bpy::arg("games"))
|
||||
}, bpy::arg("games"))
|
||||
.def("gameDependency", +[](QString const& gameNames) {
|
||||
return PluginRequirementFactory::gameDependency(gameNames);
|
||||
}, bpy::return_value_policy<bpy::reference_existing_object>(), bpy::arg("game"))
|
||||
}, bpy::arg("game"))
|
||||
.staticmethod("gameDependency")
|
||||
// diagnose
|
||||
.def("diagnose", &PluginRequirementFactory::diagnose,
|
||||
bpy::return_value_policy<bpy::reference_existing_object>(), bpy::arg("diagnose"))
|
||||
.def("diagnose", &PluginRequirementFactory::diagnose, bpy::arg("diagnose"))
|
||||
.staticmethod("diagnose")
|
||||
// basic
|
||||
.def("basic", &PluginRequirementFactory::basic,
|
||||
bpy::return_value_policy<bpy::reference_existing_object>(), (bpy::arg("checker"), "description"))
|
||||
.def("basic", &PluginRequirementFactory::basic, (bpy::arg("checker"), "description"))
|
||||
.staticmethod("basic");
|
||||
|
||||
bpy::class_<IOrganizer::FileInfo>("FileInfo", bpy::init<>())
|
||||
|
||||
Reference in New Issue
Block a user