This commit is contained in:
Elena.Subbotina
2023-03-28 23:43:05 +03:00
parent 71da997cc2
commit 5ed129e7ae
83 changed files with 757 additions and 905 deletions

View File

@ -146,27 +146,7 @@ namespace XmlUtils
static void EnableOutput();
};
class CXmlNodeBase;
class CXmlNode;
class KERNEL_DECL CXmlNodes
{
private:
class Impl;
Impl *impl_;
public:
CXmlNodes();
~CXmlNodes();
bool IsValid();
int GetCount();
bool GetAt(int nIndex, CXmlNode& oXmlNode);
void push_back(CXmlNode &node);
friend class CXmlNode;
};
class CXmlNodeBase;
class KERNEL_DECL CXmlNode
{
private:
@ -236,14 +216,14 @@ namespace XmlUtils
CXmlNode ReadNode(const wchar_t* strNodeName);
CXmlNode ReadNode(const std::wstring& strNodeName);
CXmlNode ReadNodeNoNS(const std::wstring& strNodeName);
CXmlNodes ReadNodesNoNS(const std::wstring& strNodeName);
std::vector<CXmlNode> ReadNodesNoNS(const std::wstring& strNodeName);
CXmlNode GetNode(const std::wstring& sName);
CXmlNodes GetNodes(const std::wstring& sName);
bool GetChilds(CXmlNodes& oXmlNodes);
std::vector<CXmlNode> GetNodes(const std::wstring& sName);
bool GetChilds(std::vector<CXmlNode>& oXmlNodes);
bool GetNode(const std::wstring& sName, CXmlNode& oNode);
bool GetNodes(const std::wstring& sName, CXmlNodes& oNodes);
bool GetNodes(const std::wstring& sName, std::vector<CXmlNode>& oNodes);
CXmlNode& operator=(const CXmlNode& oSrc);
@ -265,15 +245,14 @@ namespace XmlUtils
#define XmlMacroLoadArray(node, name, list, type) \
{ \
XmlUtils::CXmlNodes oNodes; \
std::vector<XmlUtils::CXmlNode> oNodes; \
if (node.GetNodes(name, oNodes)) \
{ \
int nCount = oNodes.GetCount(); \
for (int i = 0; i < nCount; ++i) \
int nCount = oNodes.size(); \
for (size_t i = 0; i < nCount; ++i) \
{ \
XmlUtils::CXmlNode oItem; \
oNodes.GetAt(i, oItem); \
list.push_back(type()); \
XmlUtils::CXmlNode & oItem = oNodes[i]; \
list.push_back(type()); \
list[i].fromXML(oItem); \
} \
} \

View File

@ -156,51 +156,7 @@ namespace XmlUtils
namespace XmlUtils
{
class CXmlNodes::Impl
{
public:
std::vector<CXmlNode> m_nodes;
};
CXmlNodes::CXmlNodes() :impl_(NULL)
{
impl_ = new Impl();
}
CXmlNodes::~CXmlNodes()
{
if (impl_)
delete impl_;
impl_ = NULL;
}
bool CXmlNodes::IsValid()
{
return true;
}
int CXmlNodes::GetCount()
{
if (impl_)
return (int) impl_->m_nodes.size();
else
return 0;
}
bool CXmlNodes::GetAt(int nIndex, CXmlNode& oXmlNode)
{
if (nIndex < 0 || nIndex >= GetCount())
return false;
if (impl_)
oXmlNode = impl_->m_nodes[nIndex];
return true;
}
void CXmlNodes::push_back(CXmlNode &oNode)
{
if (impl_)
impl_->m_nodes.insert(impl_->m_nodes.end(), oNode);
}
}
namespace XmlUtils
{
class CXmlDOMDocument : public IXmlDOMDocument, public CXmlLiteReader_Private
class CXmlDOMDocument : public IXmlDOMDocument, public CXmlLiteReader_Private
{
public:
CXmlNodeBase* m_pNode;
@ -763,9 +719,9 @@ namespace XmlUtils
}
return node;
}
CXmlNodes CXmlNode::ReadNodesNoNS(const std::wstring& sName)
std::vector<CXmlNode> CXmlNode::ReadNodesNoNS(const std::wstring& sName)
{
CXmlNodes oNodes;
std::vector<CXmlNode> oNodes;
if (IsValid())
{
@ -795,9 +751,9 @@ namespace XmlUtils
GetNode(sName, oNode);
return oNode;
}
CXmlNodes CXmlNode::GetNodes(const std::wstring& sName)
std::vector<CXmlNode> CXmlNode::GetNodes(const std::wstring& sName)
{
CXmlNodes oNodes;
std::vector<CXmlNode> oNodes;
if (IsValid())
{
bool bGetAll = false;
@ -818,7 +774,7 @@ namespace XmlUtils
return oNodes;
}
bool CXmlNode::GetChilds(CXmlNodes& oXmlNodes)
bool CXmlNode::GetChilds(std::vector<CXmlNode>& oXmlNodes)
{
bool bRes = false;
if (IsValid())
@ -858,10 +814,10 @@ namespace XmlUtils
}
return bRes;
}
bool CXmlNode::GetNodes(const std::wstring& sName, CXmlNodes& oNodes)
bool CXmlNode::GetNodes(const std::wstring& sName, std::vector<CXmlNode>& oNodes)
{
oNodes = GetNodes(sName);
return (0 != oNodes.GetCount());
return (0 != oNodes.size());
}
CXmlNode& CXmlNode::operator=(const CXmlNode& oSrc)