#pragma once #include #include #include #include "katom.h" #include "locator.h" class Target { public: Target() = default; // Target(std::vector::iterator begin, std::vector::iterator end, Argtype_set argtypes); Target(std::string name, std::string desc, Locator loc) : m_name(name) , m_desc(desc) , m_loc(loc) {}; void add_transform(std::string original, std::string transformed); void add_transforms(std::string transforms); void add_transforms(std::vector> transforms); void transform(std::vector& katoms); void add_escapes(std::string escape_spec); std::string escape_text(std::string text) const; std::string unescape_text(std::string text) const; std::string resolve_escapes(std::string text) const; static std::string escape_marker(const std::string& ch); void add_after_apply(std::string function_specs); std::string m_name {}; std::string m_desc {}; std::vector m_includes {}; std::vector m_provides {}; std::vector m_after_apply {}; Locator m_loc {}; std::vector> m_transforms {}; std::vector> m_escapes {}; // Argtype_set m_argtypes {}; }; std::vector> parse_transforms(std::string transform_string);