summaryrefslogtreecommitdiff
path: root/core/src/fxcrt/fx_xml_composer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/fxcrt/fx_xml_composer.cpp')
-rw-r--r--core/src/fxcrt/fx_xml_composer.cpp42
1 files changed, 42 insertions, 0 deletions
diff --git a/core/src/fxcrt/fx_xml_composer.cpp b/core/src/fxcrt/fx_xml_composer.cpp
new file mode 100644
index 0000000000..d68dd1ff27
--- /dev/null
+++ b/core/src/fxcrt/fx_xml_composer.cpp
@@ -0,0 +1,42 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "../../include/fxcrt/fx_xml.h"
+#include "xml_int.h"
+void FX_XML_SplitQualifiedName(FX_BSTR bsFullName, CFX_ByteStringC &bsSpace, CFX_ByteStringC &bsName)
+{
+ if (bsFullName.IsEmpty()) {
+ return;
+ }
+ FX_INT32 iStart = 0;
+ for (; iStart < bsFullName.GetLength(); iStart ++) {
+ if (bsFullName.GetAt(iStart) == ':') {
+ break;
+ }
+ }
+ if (iStart >= bsFullName.GetLength()) {
+ bsName = bsFullName;
+ } else {
+ bsSpace = CFX_ByteStringC(bsFullName.GetCStr(), iStart);
+ iStart ++;
+ bsName = CFX_ByteStringC(bsFullName.GetCStr() + iStart, bsFullName.GetLength() - iStart);
+ }
+}
+void CXML_Element::SetTag(FX_BSTR qSpace, FX_BSTR tagname)
+{
+ IFX_Allocator* pAllocator = m_Children.m_pAllocator;
+ m_QSpaceName.Set(qSpace, pAllocator);
+ m_TagName.Set(tagname, pAllocator);
+}
+void CXML_Element::SetTag(FX_BSTR qTagName)
+{
+ ASSERT(!qTagName.IsEmpty());
+ IFX_Allocator* pAllocator = m_Children.m_pAllocator;
+ CFX_ByteStringC bsSpace, bsName;
+ FX_XML_SplitQualifiedName(qTagName, bsSpace, bsName);
+ m_QSpaceName.Set(bsSpace, pAllocator);
+ m_TagName.Set(bsName, pAllocator);
+}