1ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Copyright 2014 PDFium Authors. All rights reserved.
2ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Use of this source code is governed by a BSD-style license that can be
3ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// found in the LICENSE file.
4ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
5ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
7ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../include/fxcrt/fx_xml.h"
8ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "xml_int.h"
9ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid FX_XML_SplitQualifiedName(FX_BSTR bsFullName, CFX_ByteStringC &bsSpace, CFX_ByteStringC &bsName)
10ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
11ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    if (bsFullName.IsEmpty()) {
12ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return;
13ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
14ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_INT32 iStart = 0;
15ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    for (; iStart < bsFullName.GetLength(); iStart ++) {
16ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        if (bsFullName.GetAt(iStart) == ':') {
17ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov            break;
18ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        }
19ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
20ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    if (iStart >= bsFullName.GetLength()) {
21ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        bsName = bsFullName;
22ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    } else {
23ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        bsSpace = CFX_ByteStringC(bsFullName.GetCStr(), iStart);
24ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        iStart ++;
25ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        bsName = CFX_ByteStringC(bsFullName.GetCStr() + iStart, bsFullName.GetLength() - iStart);
26ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
27ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
28ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CXML_Element::SetTag(FX_BSTR qSpace, FX_BSTR tagname)
29ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
30ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    IFX_Allocator* pAllocator = m_Children.m_pAllocator;
31ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    m_QSpaceName.Set(qSpace, pAllocator);
32ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    m_TagName.Set(tagname, pAllocator);
33ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
34ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CXML_Element::SetTag(FX_BSTR qTagName)
35ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
36ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    ASSERT(!qTagName.IsEmpty());
37ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    IFX_Allocator* pAllocator = m_Children.m_pAllocator;
38ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CFX_ByteStringC bsSpace, bsName;
39ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_XML_SplitQualifiedName(qTagName, bsSpace, bsName);
40ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    m_QSpaceName.Set(bsSpace, pAllocator);
41ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    m_TagName.Set(bsName, pAllocator);
42ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
43