Implement set/set_value/operator= for long types
This makes the coverage for basic numeric types complete (sans long double). Fixes #78.
This commit is contained in:
parent
c712dd84ba
commit
f441c63ea4
2 changed files with 80 additions and 0 deletions
|
@ -4550,6 +4550,26 @@ PUGI__NS_BEGIN
|
|||
return strcpy_insitu(dest, header, header_mask, begin, end - begin);
|
||||
}
|
||||
|
||||
template <typename String, typename Header>
|
||||
PUGI__FN bool set_value_convert(String& dest, Header& header, uintptr_t header_mask, long value)
|
||||
{
|
||||
char_t buf[64];
|
||||
char_t* end = buf + sizeof(buf) / sizeof(buf[0]);
|
||||
char_t* begin = integer_to_string<unsigned long>(buf, end, value, value < 0);
|
||||
|
||||
return strcpy_insitu(dest, header, header_mask, begin, end - begin);
|
||||
}
|
||||
|
||||
template <typename String, typename Header>
|
||||
PUGI__FN bool set_value_convert(String& dest, Header& header, uintptr_t header_mask, unsigned long value)
|
||||
{
|
||||
char_t buf[64];
|
||||
char_t* end = buf + sizeof(buf) / sizeof(buf[0]);
|
||||
char_t* begin = integer_to_string<unsigned long>(buf, end, value, false);
|
||||
|
||||
return strcpy_insitu(dest, header, header_mask, begin, end - begin);
|
||||
}
|
||||
|
||||
template <typename String, typename Header>
|
||||
PUGI__FN bool set_value_convert(String& dest, Header& header, uintptr_t header_mask, float value)
|
||||
{
|
||||
|
@ -5154,6 +5174,18 @@ namespace pugi
|
|||
return *this;
|
||||
}
|
||||
|
||||
PUGI__FN xml_attribute& xml_attribute::operator=(long rhs)
|
||||
{
|
||||
set_value(rhs);
|
||||
return *this;
|
||||
}
|
||||
|
||||
PUGI__FN xml_attribute& xml_attribute::operator=(unsigned long rhs)
|
||||
{
|
||||
set_value(rhs);
|
||||
return *this;
|
||||
}
|
||||
|
||||
PUGI__FN xml_attribute& xml_attribute::operator=(double rhs)
|
||||
{
|
||||
set_value(rhs);
|
||||
|
@ -5214,6 +5246,20 @@ namespace pugi
|
|||
return impl::set_value_convert(_attr->value, _attr->header, impl::xml_memory_page_value_allocated_mask, rhs);
|
||||
}
|
||||
|
||||
PUGI__FN bool xml_attribute::set_value(long rhs)
|
||||
{
|
||||
if (!_attr) return false;
|
||||
|
||||
return impl::set_value_convert(_attr->value, _attr->header, impl::xml_memory_page_value_allocated_mask, rhs);
|
||||
}
|
||||
|
||||
PUGI__FN bool xml_attribute::set_value(unsigned long rhs)
|
||||
{
|
||||
if (!_attr) return false;
|
||||
|
||||
return impl::set_value_convert(_attr->value, _attr->header, impl::xml_memory_page_value_allocated_mask, rhs);
|
||||
}
|
||||
|
||||
PUGI__FN bool xml_attribute::set_value(double rhs)
|
||||
{
|
||||
if (!_attr) return false;
|
||||
|
@ -6355,6 +6401,20 @@ namespace pugi
|
|||
return dn ? impl::set_value_convert(dn->value, dn->header, impl::xml_memory_page_value_allocated_mask, rhs) : false;
|
||||
}
|
||||
|
||||
PUGI__FN bool xml_text::set(long rhs)
|
||||
{
|
||||
xml_node_struct* dn = _data_new();
|
||||
|
||||
return dn ? impl::set_value_convert(dn->value, dn->header, impl::xml_memory_page_value_allocated_mask, rhs) : false;
|
||||
}
|
||||
|
||||
PUGI__FN bool xml_text::set(unsigned long rhs)
|
||||
{
|
||||
xml_node_struct* dn = _data_new();
|
||||
|
||||
return dn ? impl::set_value_convert(dn->value, dn->header, impl::xml_memory_page_value_allocated_mask, rhs) : false;
|
||||
}
|
||||
|
||||
PUGI__FN bool xml_text::set(float rhs)
|
||||
{
|
||||
xml_node_struct* dn = _data_new();
|
||||
|
@ -6410,6 +6470,18 @@ namespace pugi
|
|||
return *this;
|
||||
}
|
||||
|
||||
PUGI__FN xml_text& xml_text::operator=(long rhs)
|
||||
{
|
||||
set(rhs);
|
||||
return *this;
|
||||
}
|
||||
|
||||
PUGI__FN xml_text& xml_text::operator=(unsigned long rhs)
|
||||
{
|
||||
set(rhs);
|
||||
return *this;
|
||||
}
|
||||
|
||||
PUGI__FN xml_text& xml_text::operator=(double rhs)
|
||||
{
|
||||
set(rhs);
|
||||
|
|
|
@ -359,6 +359,8 @@ namespace pugi
|
|||
// Set attribute value with type conversion (numbers are converted to strings, boolean is converted to "true"/"false")
|
||||
bool set_value(int rhs);
|
||||
bool set_value(unsigned int rhs);
|
||||
bool set_value(long rhs);
|
||||
bool set_value(unsigned long rhs);
|
||||
bool set_value(double rhs);
|
||||
bool set_value(float rhs);
|
||||
bool set_value(bool rhs);
|
||||
|
@ -372,6 +374,8 @@ namespace pugi
|
|||
xml_attribute& operator=(const char_t* rhs);
|
||||
xml_attribute& operator=(int rhs);
|
||||
xml_attribute& operator=(unsigned int rhs);
|
||||
xml_attribute& operator=(long rhs);
|
||||
xml_attribute& operator=(unsigned long rhs);
|
||||
xml_attribute& operator=(double rhs);
|
||||
xml_attribute& operator=(float rhs);
|
||||
xml_attribute& operator=(bool rhs);
|
||||
|
@ -706,6 +710,8 @@ namespace pugi
|
|||
// Set text with type conversion (numbers are converted to strings, boolean is converted to "true"/"false")
|
||||
bool set(int rhs);
|
||||
bool set(unsigned int rhs);
|
||||
bool set(long rhs);
|
||||
bool set(unsigned long rhs);
|
||||
bool set(double rhs);
|
||||
bool set(float rhs);
|
||||
bool set(bool rhs);
|
||||
|
@ -719,6 +725,8 @@ namespace pugi
|
|||
xml_text& operator=(const char_t* rhs);
|
||||
xml_text& operator=(int rhs);
|
||||
xml_text& operator=(unsigned int rhs);
|
||||
xml_text& operator=(long rhs);
|
||||
xml_text& operator=(unsigned long rhs);
|
||||
xml_text& operator=(double rhs);
|
||||
xml_text& operator=(float rhs);
|
||||
xml_text& operator=(bool rhs);
|
||||
|
|
Loading…
Add table
Reference in a new issue