94 class InputLessPGMController;
105 std::vector<P<r_code::Code> > productions_;
115 bool evaluate(uint16 index);
117 virtual r_code::Code *get_mk_rdx(uint16 &extent_index)
const;
119 void patch_tpl_args();
120 void patch_tpl_code(uint16 pgm_code_index, uint16 ipgm_code_index);
121 virtual void patch_input_code(uint16 pgm_code_index, uint16 input_index, uint16 input_code_index, int16 parent_index = -1);
128 void reset()
override;
130 bool inject_productions();
141 Timestamp birth_time_;
144 std::vector<P<r_code::_View> > input_views_;
152 MatchResult match(
r_exec::View *input, uint16 &input_index);
155 MatchResult _match(
r_exec::View *input, uint16 pattern_index);
161 MatchResult __match(
r_exec::View *input, uint16 pattern_index);
164 void patch_input_code(uint16 pgm_code_index, uint16 input_index, uint16 input_code_index, int16 parent_index = -1)
override;
166 r_code::Code *get_mk_rdx(uint16 &extent_index)
const override;
175 void reset()
override {
176 InputLessPGMOverlay::reset();
177 patch_indices_.clear();
178 input_views_.clear();
179 input_pattern_indices_.clear();
188 Timestamp get_birth_time()
const {
return birth_time_; }
190 bool is_invalidated()
override;
202 :
PGMOverlay(original, last_input_index, value_limit) {}
211 #include "pgm_overlay.inline.cpp"