Patch level : 12.0 no-patch

Files correlati     :
Commento            :

xml : aggiunte getenclosedtext e setenclosedtext
This commit is contained in:
Alessandro Bonazzi 2020-11-25 19:39:07 +01:00
parent 67da2fd5ae
commit 8d1dd36e17
2 changed files with 127 additions and 7 deletions

View File

@ -150,10 +150,11 @@ TXmlItem& TXmlItem::SetAttr(const char* strAttr, const char* strVal)
const TString& TXmlItem::GetAttr(const char* strAttr) const
{
if (m_Attributes != NULL)
if (m_Attributes != nullptr)
{
const TXmlAttr* str = (const TXmlAttr*)m_Attributes->objptr(strAttr);
if (str != NULL)
if (str != nullptr)
return *str;
}
return EMPTY_STRING;
@ -448,17 +449,126 @@ bool TXmlItem::GetEnclosedText(TString& text) const
return text.not_empty();
}
TXmlItem& TXmlItem::AddEnclosedText(const char* str)
bool TXmlItem::GetEnclosedText(const char* strAttr, TString & str) const
{
TXmlItem * item = FindFirstChild(strAttr); // ->FindFirst("");
if (item != nullptr)
return item->GetEnclosedText(str);
str.cut(0);
return false;
}
bool TXmlItem::GetEnclosedDate(const char* strAttr, TDate & d) const
{
TString s;
if (GetEnclosedText(strAttr, s))
{
s.strip_spaces();
d = TDate(s);
return true;
}
d = NULLDATE;
return false;
}
bool TXmlItem::GetEnclosedInt(const char* strAttr, int & i) const
{
TString s;
if (GetEnclosedText(strAttr, s))
{
s.strip_spaces();
i = atoi(s);
return true;
}
i = 0;
return false;
}
bool TXmlItem::GetEnclosedLong(const char* strAttr, long & l) const
{
TString s;
if (GetEnclosedText(strAttr, s))
{
s.strip_spaces();
l = atol(s);
return true;
}
l = 0L;
return false;
}
bool TXmlItem::GetEnclosedReal(const char* strAttr, real & r) const
{
TString s;
if (GetEnclosedText(strAttr, s))
{
s.strip_spaces();
r = real(s);
return true;
}
r = ZERO;
return false;
}
TXmlItem & TXmlItem::AddEnclosedText(const char* str)
{
TXmlItem* item = FindFirst("");
if (item == NULL)
if (item == nullptr)
item = &AddChild("");
if (item->m_strText == NULL)
if (item->m_strText == nullptr)
item->SetText(str);
else
*item->m_strText << str;
return *item;
}
TXmlItem & TXmlItem::AddEnclosedText(const char* strAttr, const char * str)
{
TXmlItem* item = FindFirst(strAttr);
if (item == nullptr)
item = &AddChild(strAttr);
item->AddEnclosedText(str);
return *item;
}
TXmlItem & TXmlItem::AddEnclosedDate(const char* strAttr, const TDate d, const char* f)
{
TFormatted_date fd(d, f);
TXmlItem& item = AddEnclosedText(strAttr, fd.stringa());
return item;
}
TXmlItem & TXmlItem::AddEnclosedInt(const char* strAttr, const int i)
{
TString & s = get_tmp_string(128);
s << i;
TXmlItem& item = AddEnclosedText(strAttr, s);
return item;
}
TXmlItem & TXmlItem::AddEnclosedLong(const char* strAttr, const long l)
{
TString & s = get_tmp_string(128);
s << l;
TXmlItem& item = AddEnclosedText(strAttr, s);
return item;
}
TXmlItem & TXmlItem::AddEnclosedReal(const char* strAttr, const real r)
{
TString & s = get_tmp_string(128);
s << r;
TXmlItem& item = AddEnclosedText(strAttr, s);
return item;
}
TXmlItem& operator<<(TXmlItem& item, const char* str)
{
@ -600,11 +710,11 @@ TXmlItem* TXmlItem::FindFirstChild(const char* strTag) const
if (c->GetTag() == strTag)
return c;
}
return NULL;
return nullptr;
}
TXmlItem::TXmlItem()
: m_strTag(15), m_strText(NULL), m_Attributes(NULL), m_Children(NULL)
: m_strTag(15), m_strText(nullptr), m_Attributes(nullptr), m_Children(nullptr)
{ }
TXmlItem::~TXmlItem()

View File

@ -42,7 +42,17 @@ public:
}
TXmlItem& AddEnclosedText(const char* str);
TXmlItem& AddEnclosedText(const char* strAttr, const char * str);
TXmlItem& AddEnclosedDate(const char* strAttr, const TDate d, const char* f = "1444-");
TXmlItem& AddEnclosedInt(const char* strAttr, const int i);
TXmlItem& AddEnclosedLong(const char* strAttr, const long l);
TXmlItem& AddEnclosedReal(const char* strAttr, const real r);
bool GetEnclosedText(TString& str) const;
bool GetEnclosedText(const char* strAttr, TString & str) const;
bool GetEnclosedDate(const char* strAttr, TDate & d) const;
bool GetEnclosedInt(const char* strAttr, int & i) const;
bool GetEnclosedLong(const char* strAttr, long & l) const;
bool GetEnclosedReal(const char* strAttr, real & r) const;
TXmlItem& SetAttr(const char* strAttr, const char* strVal);
const TString& GetAttr(const char* strAttr) const;