[plug] [PATCH] interface for pass
Vladislav Ivanishin
vlad at ispras.ru
Fri Apr 6 13:40:38 MSK 2018
Добрый день, Иван,
Комментарий к Вашему патчу ниже.
> ---
> pass.h | 34 ++++++++++++++++++++++++++++++++++
> 1 file changed, 34 insertions(+)
> create mode 100644 pass.h
>
> diff --git a/pass.h b/pass.h
> new file mode 100644
> index 0000000..69a03fd
> --- /dev/null
> +++ b/pass.h
> @@ -0,0 +1,34 @@
> +#ifndef PASS_H
> +#define PASS_H
> +#include <string>
> +#include <vector>
> +#include <map>
> +
> +struct PassData {
> + PassData(string& n): passName(n) {}
> + void* data; //actual data
> + string passName; //name of pass which gathered data
> +};
> +
> +class Pass {
> +private:
> + const std::string name; //name of pass
> + const std::vector<std::string> dependsOn;//names of necessary passes
> + std::map<std::string, void*> inputData; // passName <-> his data
Как я понимаю, в inputData хрянятся данные, сгенерированные проходами,
от которых зависит данный проход. Мне кажется, более логично не хранить
эту информацию в поле класса Pass, поскольку информация о зависимостях
уже содержится в поле dependsOn, а информация о связи имён проходов с их
данными по сути не принадлежит никакому конкретному экземпляру класса
Pass. В частности, её можно получить, используя уже имеющееся
отображение Plug в классе PassKeeper и далее поле returnData.
> + PassData returnData;
> +public:
> + Pass(const std::string& n, const std::vector<std::string>& d):
> + name(n), dependsOn(d), returnData(PassData(n)) {}
> +
> + std::string* getName() { return &name; }
> + std::vector<std::string>* getDependencies( return &dependsOn; )
> +
> + void addInput(PassData* data)
> + { return inputData.insert(std::make_pair(data->passName, data->data)->second); }
> + PassData* getResult() { return &returnData; }
> +
> + virtual int launch() = 0;
> + virtual ~Pass() {}
> +};
> +
> +#endif // PASS_H
--
Влад
More information about the plug
mailing list