Klammerset: the @@@klammerset construct, its search path, and const correctness
The @@@klammerset system command formally declares a klammerset — a named, logically related group of klammer definitions — with an operative, idempotent declaration (:requires and :files load in order at the declaration point, relative to the declaring file). A bare symbol given to ktext -k, kdesc --input, or :requires resolves to x/x.k on the search path: the document's directory, then KLAMMERTEXT_KLAMMERSETS, then KLAMMERTEXT_HOME; kdesc --klammerset lists the available sets. sks/sks.k is the first declared klammerset, so `-k sks` loads the SKS by name. The engine's lookup classes were renamed *_set → *_registry to keep the two concepts apart, and the whole C++ tree now follows standard const-correctness conventions. tst/ gains klammerset_test.sh (18 cases). (from dev 64b1abf23e56)
This commit is contained in:
@@ -4,9 +4,10 @@
|
||||
|
||||
// #include "source.h"
|
||||
#include "katom_list.h"
|
||||
#include "klammer_set.h"
|
||||
#include "target_set.h"
|
||||
#include "argtype_set.h"
|
||||
#include "klammer_registry.h"
|
||||
#include "klammerset_registry.h"
|
||||
#include "target_registry.h"
|
||||
#include "argtype_registry.h"
|
||||
#include "state.h"
|
||||
|
||||
#include "error.h"
|
||||
@@ -20,11 +21,12 @@ public:
|
||||
Machine();
|
||||
|
||||
// Copy constructor
|
||||
Machine(const Machine& other)
|
||||
Machine(const Machine& other)
|
||||
: m_argtypes(other.m_argtypes)
|
||||
, m_state(other.m_state)
|
||||
, m_targets(other.m_targets)
|
||||
, m_klammers(other.m_klammers)
|
||||
, m_klammersets(other.m_klammersets)
|
||||
, m_result(other.m_result)
|
||||
{}
|
||||
|
||||
@@ -35,6 +37,7 @@ public:
|
||||
m_state = other.m_state;
|
||||
m_targets = other.m_targets;
|
||||
m_klammers = other.m_klammers;
|
||||
m_klammersets = other.m_klammersets;
|
||||
m_result = other.m_result;
|
||||
}
|
||||
return *this;
|
||||
@@ -65,6 +68,7 @@ public:
|
||||
bool klammers=true, bool eval=true, bool cond=true, bool read=true);
|
||||
|
||||
void expand_constant_klammers(katom_list& katoms, const Katom& op, const Katom& cl);
|
||||
void load_klammerset_files(const Klammerset& klammerset, katom_iter insert_at);
|
||||
void extract_machine_definitions();
|
||||
void extract_klammer_definitions();
|
||||
void extract_klammer_definitions(katom_list katoms);
|
||||
@@ -72,18 +76,19 @@ public:
|
||||
|
||||
katom_list apply_klammer(Klammer& klammer, const std::string& target, katom_iter arguments_begin, katom_iter arguments_end);
|
||||
|
||||
void apply_klammer_set(Klammer_set& klammer_set,
|
||||
void apply_klammer_registry(Klammer_registry& klammer_registry,
|
||||
katom_list& katoms, const std::string& target, katom_iter begin, katom_iter end);
|
||||
|
||||
void apply(Klammer_set& klammer_set, katom_list& katoms, const std::string& target);
|
||||
void apply(Klammer_registry& klammer_registry, katom_list& katoms, const std::string& target);
|
||||
|
||||
std::string run_phase_functions();
|
||||
std::string apply(const std::string& target_name, bool final_processing=true, bool escape_characters=true);
|
||||
|
||||
Argtype_set m_argtypes {};
|
||||
Argtype_registry m_argtypes {};
|
||||
State m_state {};
|
||||
Target_set m_targets {};
|
||||
Klammer_set m_klammers {};
|
||||
Target_registry m_targets {};
|
||||
Klammer_registry m_klammers {};
|
||||
Klammerset_registry m_klammersets {};
|
||||
input_sources_t m_sources {};
|
||||
std::string m_result {};
|
||||
std::vector<Katom> m_katoms {};
|
||||
|
||||
Reference in New Issue
Block a user