1*40df464eSAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*40df464eSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*40df464eSAndrew Rist * or more contributor license agreements. See the NOTICE file 5*40df464eSAndrew Rist * distributed with this work for additional information 6*40df464eSAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*40df464eSAndrew Rist * to you under the Apache License, Version 2.0 (the 8*40df464eSAndrew Rist * "License"); you may not use this file except in compliance 9*40df464eSAndrew Rist * with the License. You may obtain a copy of the License at 10*40df464eSAndrew Rist * 11*40df464eSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12*40df464eSAndrew Rist * 13*40df464eSAndrew Rist * Unless required by applicable law or agreed to in writing, 14*40df464eSAndrew Rist * software distributed under the License is distributed on an 15*40df464eSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*40df464eSAndrew Rist * KIND, either express or implied. See the License for the 17*40df464eSAndrew Rist * specific language governing permissions and limitations 18*40df464eSAndrew Rist * under the License. 19*40df464eSAndrew Rist * 20*40df464eSAndrew Rist *************************************************************/ 21*40df464eSAndrew Rist 22*40df464eSAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove 25cdf0e10cSrcweir #include "precompiled_svl.hxx" 26cdf0e10cSrcweir 27cdf0e10cSrcweir #include <map> 28cdf0e10cSrcweir #include <tools/resmgr.hxx> 29cdf0e10cSrcweir #include <tools/shl.hxx> 30cdf0e10cSrcweir #include <vos/process.hxx> 31cdf0e10cSrcweir #include <svl/svldata.hxx> 32cdf0e10cSrcweir 33cdf0e10cSrcweir namespace unnamed_svl_svldata {} 34cdf0e10cSrcweir using namespace unnamed_svl_svldata; 35cdf0e10cSrcweir // unnamed namespaces don't work well yet 36cdf0e10cSrcweir 37cdf0e10cSrcweir //============================================================================ 38cdf0e10cSrcweir namespace unnamed_svl_svldata { 39cdf0e10cSrcweir 40cdf0e10cSrcweir typedef std::map< rtl::OUString, SimpleResMgr * > SimpleResMgrMap; 41cdf0e10cSrcweir 42cdf0e10cSrcweir } 43cdf0e10cSrcweir 44cdf0e10cSrcweir //============================================================================ 45cdf0e10cSrcweir // 46cdf0e10cSrcweir // ImpSvlData 47cdf0e10cSrcweir // 48cdf0e10cSrcweir //============================================================================ 49cdf0e10cSrcweir 50cdf0e10cSrcweir static ImpSvlData* pSvlData = 0; 51cdf0e10cSrcweir ~ImpSvlData()52cdf0e10cSrcweirImpSvlData::~ImpSvlData() 53cdf0e10cSrcweir { 54cdf0e10cSrcweir for (SimpleResMgrMap::iterator t 55cdf0e10cSrcweir = static_cast< SimpleResMgrMap * >(m_pThreadsafeRMs)->begin(); 56cdf0e10cSrcweir t != static_cast< SimpleResMgrMap * >(m_pThreadsafeRMs)->end(); ++t) 57cdf0e10cSrcweir delete t->second; 58cdf0e10cSrcweir delete static_cast< SimpleResMgrMap * >(m_pThreadsafeRMs); 59cdf0e10cSrcweir } 60cdf0e10cSrcweir 61cdf0e10cSrcweir //============================================================================ GetSimpleRM(const::com::sun::star::lang::Locale & rLocale)62cdf0e10cSrcweirSimpleResMgr* ImpSvlData::GetSimpleRM(const ::com::sun::star::lang::Locale& rLocale) 63cdf0e10cSrcweir { 64cdf0e10cSrcweir if (!m_pThreadsafeRMs) 65cdf0e10cSrcweir m_pThreadsafeRMs = new SimpleResMgrMap; 66cdf0e10cSrcweir rtl::OUString aISOcode = rLocale.Language; 67cdf0e10cSrcweir aISOcode += rtl::OStringToOUString("-", RTL_TEXTENCODING_UTF8); 68cdf0e10cSrcweir aISOcode += rLocale.Country; 69cdf0e10cSrcweir 70cdf0e10cSrcweir SimpleResMgr *& rResMgr 71cdf0e10cSrcweir = (*static_cast< SimpleResMgrMap * >(m_pThreadsafeRMs))[aISOcode]; 72cdf0e10cSrcweir if (!rResMgr) 73cdf0e10cSrcweir { 74cdf0e10cSrcweir rResMgr = new SimpleResMgr(CREATEVERSIONRESMGR_NAME(svl), rLocale ); 75cdf0e10cSrcweir } 76cdf0e10cSrcweir return rResMgr; 77cdf0e10cSrcweir } 78cdf0e10cSrcweir 79cdf0e10cSrcweir //============================================================================ 80cdf0e10cSrcweir // static GetSvlData()81cdf0e10cSrcweirImpSvlData & ImpSvlData::GetSvlData() 82cdf0e10cSrcweir { 83cdf0e10cSrcweir if (!pSvlData) 84cdf0e10cSrcweir pSvlData= new ImpSvlData; 85cdf0e10cSrcweir return *pSvlData; 86cdf0e10cSrcweir } 87cdf0e10cSrcweir 88