#pragma once #include #include #include "util.h" // strings_t #include "locator.h" // A Klammerset is the formal construct declared by the @@@klammerset system // command: a named, logically related group of klammer definitions loaded // together. The instance holds metadata and the file list only -- the // klammers themselves live in the Machine's Klammer_registry (one flat, // additive namespace; the definition modes govern collisions). Membership // is provenance, not containment. class Klammerset { public: Klammerset() = default; Klammerset(const std::string& symbol, const std::string& desc, const Locator& loc); std::string m_symbol {}; // registry key and command-line name (e.g. "sks") std::string m_desc {}; // the logical relationship that makes this a set std::string m_name {}; // display name (e.g. "Standard Klammer Set") std::string m_author {}; std::string m_date {}; // last update; a date serves as the version std::vector m_requires {}; // klammerset declaration files, loaded first std::vector m_files {}; // definition files, loaded in list order Locator m_loc {}; // the declaring file; relative names resolve against it // Every file this set actually read, as a canonical path: the declaring // file itself (a set may define klammers before or after its declaration) // followed by the resolved :requires and :files. m_files holds the names // as WRITTEN, which cannot be compared against a definition's location; // this holds what was opened. It is what lets a display tell a klammer // that came from a klammerset apart from one the input defined. strings_t m_loaded_files {}; };