PulleyBack: the backend-parameter classes don't belong in pulleyscript itself (just...
authorAdriaan de Groot <groot@kde.org>
Wed, 3 Aug 2016 12:54:15 +0000 (14:54 +0200)
committerAdriaan de Groot <groot@kde.org>
Wed, 3 Aug 2016 12:54:15 +0000 (14:54 +0200)
src/pulley/backend.cpp
src/pulley/backend.h
src/pulley/pulleyscript/parserpp.cpp

index 584803e..e8f6cb1 100644 (file)
@@ -30,6 +30,40 @@ static_assert(sizeof(plugindir) > 1, "Prefix / plugin directory path is weird.")
 // static_assert(plugindir[0] == '/', "Backend must be absolute dir.");
 // static_assert(plugindir[sizeof(plugindir)-1] == '/', "Backend must end in /.");
 
+
+SteamWorks::PulleyBack::Parameters::Parameters(const std::vector<std::string>& expressions) :
+       varc(0),
+       argc(expressions.size()),
+       argv(nullptr)
+{
+       if (argc > 0)
+       {
+               argv = (char **)calloc(argc, sizeof(char *));
+       }
+       if (argv)
+       {
+               unsigned int i = 0;
+               for (const auto& s : expressions)
+               {
+                       argv[i++] = strdup(s.c_str());
+               }
+       }
+}
+
+SteamWorks::PulleyBack::Parameters::~Parameters()
+{
+       if (argv)
+       {
+               for (unsigned int i=0; i < argc; i++)
+               {
+                       free(argv[i]);
+               }
+               free(argv);
+               argv = nullptr;
+       }
+}
+
+
 /**
  * Helper class when loading the API from a DLL. Uses dlfunc()
  * to resolve functions and stores them in referenced function
index e131766..edee647 100644 (file)
@@ -21,6 +21,7 @@ Adriaan de Groot <groot@kde.org>
 #ifndef STEAMWORKS_PULLEY_BACKEND_H
 #define STEAMWORKS_PULLEY_BACKEND_H
 
+#include <vector>
 #include <memory>
 
 namespace SteamWorks
@@ -29,6 +30,17 @@ namespace SteamWorks
 namespace PulleyBack
 {
 
+struct Parameters
+{
+       int varc;
+       int argc;
+       char** argv;
+
+       Parameters(const std::vector<std::string>& expressions);
+       ~Parameters();
+} ;
+
+
 class Instance;
 
 /**
@@ -69,7 +81,7 @@ public:
         * Close this instance of a Pulley backend-plugin api.
         */
        ~Instance();
-       
+
        /**
         * The following functions correspond with the pulleyback_*()
         * functions in pulleyback.h. Calling one of these functions
index 40ecc79..16e5397 100644 (file)
@@ -18,45 +18,6 @@ Adriaan de Groot <groot@kde.org>
 #include <logger.h>
 #include <jsoniterator.h>
 
-struct BackendParms
-{
-       int varc;
-       int argc;
-       char** argv;
-
-       BackendParms(const std::vector<std::string>& expressions) :
-               varc(0),
-               argc(expressions.size()),
-               argv(nullptr)
-       {
-               if (argc > 0)
-               {
-                       argv = (char **)calloc(argc, sizeof(char *));
-               }
-               if (argv)
-               {
-                       unsigned int i = 0;
-                       for (const auto& s : expressions)
-                       {
-                               argv[i++] = strdup(s.c_str());
-                       }
-               }
-       }
-
-       ~BackendParms()
-       {
-               if (argv)
-               {
-                       for (unsigned int i=0; i < argc; i++)
-                       {
-                               free(argv[i]);
-                       }
-                       free(argv);
-                       argv = nullptr;
-               }
-       }
-} ;
-
 class SquealOpener
 {
 public:
@@ -107,7 +68,6 @@ private:
 
        using generator_variablenames_t = std::vector<std::string>;
        std::vector<generator_variablenames_t> m_variables_per_generator;
-       std::vector<BackendParms> m_parameters_per_driver;
 
        bool m_valid;
        State m_state;
@@ -273,7 +233,6 @@ public:
 
                auto& log = SteamWorks::Logging::getLogger("steamworks.pulleyscript");
                log.debugStream() << "Drivers: " << drvtab_count(m_prs.drvtab);
-               m_parameters_per_driver.clear();
                for (unsigned int drvidx=0; drvidx < drvtab_count(m_prs.drvtab); drvidx++)
                {
                        log.debugStream() << "  .. " << drvidx << " name " << drv_get_module(m_prs.drvtab, drvidx);
@@ -284,9 +243,6 @@ public:
                                std::vector<std::string> expressions;
                                decode_parameter_binding(m_prs.vartab, value->typed_blob.str, value->typed_blob.len, expressions);
 
-                               BackendParms parms(expressions);
-                               m_parameters_per_driver.push_back(parms);
-
                                for (auto s : expressions)
                                {
                                        log.debugStream() << "  .. " << drvidx << " parm " << s;