#pragma once #include #include #include "target.h" #include "argument_set.h" #include "katom.h" class Target_set { public: static std::string declare_name; static std::string general_name; Target_set(); void add(Target target); void add(std::vector::iterator begin, std::vector::iterator end, std::vector& katoms); void check_for_previous_definition(std::string name, Locator loc); /* void add_transforms(std::string target_name, std::string transforms); void add_transforms( std::string target_name, std::vector> transforms); */ bool has(std::string target_name); Target get(std::string target_name, Locator loc); void transform(std::string target_name, std::vector& katoms); std::vector user_defined(); std::vector applicable(); std::string describe(int margin=2, bool long_format=false) const; //Argtype_set m_argtypes {}; std::map m_targets {}; std::vector m_names {}; std::vector m_descs {}; Parameter_set m_parameters {}; /* std::string m_parameters_spec {"name | desc :after_apply :after_write :includes | transforms.rest"}; Parameter_set m_parameters = katomize(line_split(m_parameters_spec), Locator().str()); */ //Parameter_set m_parameters = // Parameter_set(katomize({"name :desc | transforms.rest"}, "target_set")); /* // Targets(Statevar_set& statevars); target_ptr check_target_existence( std::string name, Locator loc, bool should_exist); void add(std::string name, std::string desc, std::string include, // Statevar_set& statevars, std::string transform, std::string before_apply, std::string after_apply, std::string after_write, Locator loc); target_ptr check_target_name( std::string target, bool allow_all, Locator loc); std::map targets {}; std::vector names {}; void describe_suffixes(); void describe(); */ };