1d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Copyright 2014 PDFium Authors. All rights reserved. 2d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Use of this source code is governed by a BSD-style license that can be 3d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// found in the LICENSE file. 4d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 5d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 7d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include "xfa/fxfa/parser/cxfa_nodelocale.h" 8d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 9d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include <utility> 10d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 11d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include "core/fxcrt/xml/cxml_element.h" 12d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include "fxjs/xfa/cjx_object.h" 13d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include "xfa/fxfa/parser/cxfa_calendarsymbols.h" 14d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include "xfa/fxfa/parser/cxfa_datetimesymbols.h" 15d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include "xfa/fxfa/parser/cxfa_document.h" 16d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include "xfa/fxfa/parser/cxfa_localemgr.h" 17d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include "xfa/fxfa/parser/cxfa_node.h" 18d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include "xfa/fxfa/parser/cxfa_timezoneprovider.h" 19d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include "xfa/fxfa/parser/xfa_utils.h" 20d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 21d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmannnamespace { 22d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 23d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmannconst wchar_t g_FX_Percent[] = L"z,zzz,zzz,zzz,zzz,zzz%"; 24d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmannconst wchar_t g_FX_Currency[] = L"$z,zzz,zzz,zzz,zzz,zz9.99"; 25d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmannconst wchar_t g_FX_Decimal[] = L"z,zzz,zzz,zzz,zzz,zz9.zzz"; 26d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmannconst wchar_t g_FX_Integer[] = L"z,zzz,zzz,zzz,zzz,zzz"; 27d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 28d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann} // namespace 29d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 30d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannWideString XFA_PatternToString(FX_LOCALENUMSUBCATEGORY category) { 31d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann switch (category) { 32d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann case FX_LOCALENUMPATTERN_Percent: 33d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return g_FX_Percent; 34d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann case FX_LOCALENUMPATTERN_Currency: 35d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return g_FX_Currency; 36d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann case FX_LOCALENUMPATTERN_Decimal: 37d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return g_FX_Decimal; 38d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann case FX_LOCALENUMPATTERN_Integer: 39d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return g_FX_Integer; 40d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann } 41d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return WideString(); 42d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann} 43d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 44d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannCXFA_NodeLocale::CXFA_NodeLocale(CXFA_Node* pLocale) : m_pLocale(pLocale) {} 45d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 46d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannCXFA_NodeLocale::~CXFA_NodeLocale() {} 47d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 48d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannWideString CXFA_NodeLocale::GetName() const { 49d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return WideString(m_pLocale 50d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann ? m_pLocale->JSObject()->GetCData(XFA_Attribute::Name) 51d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann : nullptr); 52d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann} 53d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 54d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannWideString CXFA_NodeLocale::GetNumbericSymbol(FX_LOCALENUMSYMBOL eType) const { 55d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann switch (eType) { 56d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann case FX_LOCALENUMSYMBOL_Decimal: 57d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return GetSymbol(XFA_Element::NumberSymbols, L"decimal"); 58d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann case FX_LOCALENUMSYMBOL_Grouping: 59d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return GetSymbol(XFA_Element::NumberSymbols, L"grouping"); 60d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann case FX_LOCALENUMSYMBOL_Percent: 61d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return GetSymbol(XFA_Element::NumberSymbols, L"percent"); 62d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann case FX_LOCALENUMSYMBOL_Minus: 63d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return GetSymbol(XFA_Element::NumberSymbols, L"minus"); 64d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann case FX_LOCALENUMSYMBOL_Zero: 65d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return GetSymbol(XFA_Element::NumberSymbols, L"zero"); 66d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann case FX_LOCALENUMSYMBOL_CurrencySymbol: 67d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return GetSymbol(XFA_Element::CurrencySymbols, L"symbol"); 68d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann case FX_LOCALENUMSYMBOL_CurrencyName: 69d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return GetSymbol(XFA_Element::CurrencySymbols, L"isoname"); 70d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann } 71d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return WideString(); 72d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann} 73d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 74d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannWideString CXFA_NodeLocale::GetDateTimeSymbols() const { 75d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_DateTimeSymbols* pSymbols = 76d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann m_pLocale ? m_pLocale->GetChild<CXFA_DateTimeSymbols>( 77d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 0, XFA_Element::DateTimeSymbols, false) 78d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann : nullptr; 79d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return pSymbols ? pSymbols->JSObject()->GetContent(false) : WideString(); 80d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann} 81d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 82d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannWideString CXFA_NodeLocale::GetMonthName(int32_t nMonth, bool bAbbr) const { 83d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return GetCalendarSymbol(XFA_Element::MonthNames, nMonth, bAbbr); 84d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann} 85d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 86d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannWideString CXFA_NodeLocale::GetDayName(int32_t nWeek, bool bAbbr) const { 87d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return GetCalendarSymbol(XFA_Element::DayNames, nWeek, bAbbr); 88d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann} 89d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 90d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannWideString CXFA_NodeLocale::GetMeridiemName(bool bAM) const { 91d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return GetCalendarSymbol(XFA_Element::MeridiemNames, bAM ? 0 : 1, false); 92d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann} 93d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 94d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannFX_TIMEZONE CXFA_NodeLocale::GetTimeZone() const { 95d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CXFA_TimeZoneProvider().GetTimeZone(); 96d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann} 97d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 98d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannWideString CXFA_NodeLocale::GetEraName(bool bAD) const { 99d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return GetCalendarSymbol(XFA_Element::EraNames, bAD ? 1 : 0, false); 100d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann} 101d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 102d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannWideString CXFA_NodeLocale::GetDatePattern( 103d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann FX_LOCALEDATETIMESUBCATEGORY eType) const { 104d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann switch (eType) { 105d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann case FX_LOCALEDATETIMESUBCATEGORY_Short: 106d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return GetSymbol(XFA_Element::DatePatterns, L"short"); 107d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann case FX_LOCALEDATETIMESUBCATEGORY_Medium: 108d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann case FX_LOCALEDATETIMESUBCATEGORY_Default: 109d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return GetSymbol(XFA_Element::DatePatterns, L"med"); 110d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann case FX_LOCALEDATETIMESUBCATEGORY_Full: 111d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return GetSymbol(XFA_Element::DatePatterns, L"full"); 112d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann case FX_LOCALEDATETIMESUBCATEGORY_Long: 113d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return GetSymbol(XFA_Element::DatePatterns, L"long"); 114d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann } 115d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return WideString(); 116d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann} 117d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 118d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannWideString CXFA_NodeLocale::GetTimePattern( 119d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann FX_LOCALEDATETIMESUBCATEGORY eType) const { 120d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann switch (eType) { 121d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann case FX_LOCALEDATETIMESUBCATEGORY_Short: 122d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return GetSymbol(XFA_Element::TimePatterns, L"short"); 123d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann case FX_LOCALEDATETIMESUBCATEGORY_Medium: 124d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann case FX_LOCALEDATETIMESUBCATEGORY_Default: 125d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return GetSymbol(XFA_Element::TimePatterns, L"med"); 126d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann case FX_LOCALEDATETIMESUBCATEGORY_Full: 127d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return GetSymbol(XFA_Element::TimePatterns, L"full"); 128d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann case FX_LOCALEDATETIMESUBCATEGORY_Long: 129d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return GetSymbol(XFA_Element::TimePatterns, L"long"); 130d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann } 131d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return WideString(); 132d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann} 133d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 134d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannWideString CXFA_NodeLocale::GetNumPattern(FX_LOCALENUMSUBCATEGORY eType) const { 135d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return XFA_PatternToString(eType); 136d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann} 137d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 138d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannCXFA_Node* CXFA_NodeLocale::GetNodeByName(CXFA_Node* pParent, 139d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann const WideStringView& wsName) const { 140d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_Node* pChild = pParent ? pParent->GetFirstChild() : nullptr; 141d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann while (pChild) { 142d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (pChild->JSObject()->GetAttribute(XFA_Attribute::Name) == wsName) 143d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return pChild; 144d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 145d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pChild = pChild->GetNextSibling(); 146d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann } 147d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return nullptr; 148d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann} 149d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 150d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannWideString CXFA_NodeLocale::GetSymbol(XFA_Element eElement, 151d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann const WideStringView& symbol_type) const { 152d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_Node* pSymbols = 153d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann m_pLocale ? m_pLocale->GetChild<CXFA_Node>(0, eElement, false) : nullptr; 154d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_Node* pSymbol = GetNodeByName(pSymbols, symbol_type); 155d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return pSymbol ? pSymbol->JSObject()->GetContent(false) : WideString(); 156d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann} 157d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 158d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannWideString CXFA_NodeLocale::GetCalendarSymbol(XFA_Element eElement, 159d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann int index, 160d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann bool bAbbr) const { 161d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_CalendarSymbols* pCalendar = 162d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann m_pLocale ? m_pLocale->GetChild<CXFA_CalendarSymbols>( 163d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 0, XFA_Element::CalendarSymbols, false) 164d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann : nullptr; 165d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!pCalendar) 166d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return WideString(); 167d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 168d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_Node* pNode = pCalendar->GetFirstChildByClass<CXFA_Node>(eElement); 169d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann for (; pNode; pNode = pNode->GetNextSameClassSibling<CXFA_Node>(eElement)) { 170d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (pNode->JSObject()->GetBoolean(XFA_Attribute::Abbr) == bAbbr) { 171d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_Node* pSymbol = 172d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pNode->GetChild<CXFA_Node>(index, XFA_Element::Unknown, false); 173d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return pSymbol ? pSymbol->JSObject()->GetContent(false) : WideString(); 174d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann } 175d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann } 176d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return WideString(); 177d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann} 178