67#define IR_GIVE_FIELD(__ir, __value, __id) (__ir).giveField(__value, __id);
75#define IR_GIVE_OPTIONAL_FIELD(__ir, __value, __id) (__ir).giveOptionalField(__value, __id);
82#define IR_GIVE_RECORD_KEYWORD_FIELD(__ir, __name, __value) \
83 (__ir).giveRecordKeywordField(__name, __value);
108 virtual std::shared_ptr<InputRecord>
clone()
const = 0;
109 std::shared_ptr<InputRecord>
ptr();
149 static std::string
error_msg_with_hints(
const std::string& val,
const std::map<
int,std::vector<std::string>>& v2nn);
153 template<
typename AnEnum>
158 #ifdef _USE_TRACE_FIELDS
159 if(InputRecord::TraceFields::active){
160 traceEnum(Traits::enum_name,Traits::all_values_to_names());
161 traceField(
id,(std::string(
"enum:")+Traits::enum_name).c_str());
164 if(std::regex_match(s,std::regex(
"\\s*[0-9]+\\s*"))){
165 int val=std::atoi(s.c_str());
166 auto v=Traits::value(val);
170 auto v=Traits::value(s.c_str());
175 #ifdef _USE_TRACE_FIELDS
179 static std::ofstream out;
180 static void write(
const std::string& s);
182 static void traceEnum(
const std::string& name,
const std::map<
int,std::vector<std::string>>& val2names);
183 virtual void traceField(InputFieldType
id,
const char* type) {};
204#ifdef _INPUTRECORD_OPTIONAL_OLD
237 virtual void finish(
bool wrn =
true) = 0;
260 const char*
what() const noexcept override;
271 const char*
what() const noexcept override;
282 const char*
what() const noexcept override;
299 const char*
what() const noexcept override;
const char * InputFieldType
Identifier of fields in input records.