70enum_def_name_eq(
D4EnumDef *d,
const string name)
72 return d->
name() == name;
77 auto d = find_if(d_enums.begin(), d_enums.end(), [name](
const D4EnumDef *def) { return name == def->name(); });
79 return (d != d_enums.end()) ? *d :
nullptr;
82void D4EnumDef::print_value(
XMLWriter &xml,
const D4EnumDef::tuple &tuple)
const {
83 if (xmlTextWriterStartElement(xml.
get_writer(), (
const xmlChar *)
"EnumConst") < 0)
84 throw InternalErr(__FILE__, __LINE__,
"Could not write EnumConst element");
86 if (xmlTextWriterWriteAttribute(xml.
get_writer(), (
const xmlChar *)
"name", (
const xmlChar *)tuple.label.c_str()) <
88 throw InternalErr(__FILE__, __LINE__,
"Could not write attribute for name");
92 if (xmlTextWriterWriteAttribute(xml.
get_writer(), (
const xmlChar *)
"value", (
const xmlChar *)oss.str().c_str()) < 0)
93 throw InternalErr(__FILE__, __LINE__,
"Could not write attribute for value");
95 if (xmlTextWriterEndElement(xml.
get_writer()) < 0)
96 throw InternalErr(__FILE__, __LINE__,
"Could not end EnumConst element");
101 while (i != d_tuples.end()) {
102 print_value(xml, *i++);
107 if (xmlTextWriterStartElement(xml.
get_writer(), (
const xmlChar *)
"Enumeration") < 0)
108 throw InternalErr(__FILE__, __LINE__,
"Could not write Enumeration element");
110 if (xmlTextWriterWriteAttribute(xml.
get_writer(), (
const xmlChar *)
"name", (
const xmlChar *)e->
name().c_str()) < 0)
111 throw InternalErr(__FILE__, __LINE__,
"Could not write attribute for name");
113 if (xmlTextWriterWriteAttribute(xml.
get_writer(), (
const xmlChar *)
"basetype",
115 throw InternalErr(__FILE__, __LINE__,
"Could not write attribute for name");
120 if (xmlTextWriterEndElement(xml.
get_writer()) < 0)
121 throw InternalErr(__FILE__, __LINE__,
"Could not end Enumeration element");
126 while (i != d_enums.end()) {
127 if (!constrained ||
parent()->find_first_var_that_uses_enumeration(*i))
128 m_print_enum(xml, *i);
long long value(D4EnumValueIter i)
void print_dap4(XMLWriter &xml) const
bool is_valid_enum_value(long long value)
void print_dap4(XMLWriter &xml, bool constrained=false) const
vector< D4EnumDef * >::const_iterator D4EnumDefCIter
D4EnumDef * find_enum_def(const string &name)
A class for software fault reporting.
xmlTextWriterPtr get_writer() const
top level DAP object to house generic methods
string D4type_name(Type t)
Returns the type of the class instance as a string. Supports all DAP4 types and not the DAP2-only typ...