blob: 7a6250ab309c4329a2aff3f58e7e035a341cd8b4 [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_rsc.hxx"
#include <stdio.h>
#include <rscdb.hxx>
#include <rscall.h>
#include <rschash.hxx>
#include <rsctree.hxx>
#include <rsctop.hxx>
#include "rsclst.hxx"
/*************************************************************************
|*
|* RscTypCont::FillNameIdList()
|*
|* Beschreibung
|* Ersterstellung MM 07.05.91
|* Letzte Aenderung MM 30.05.91
|*
*************************************************************************/
REResourceList * InsertList( Atom nClassName, const RscId& rId,
REResourceList * pList ){
REResourceList * pSubList;
const char * pStrClass;
ByteString aStrClass;
pStrClass = pHS->getString( nClassName ).getStr();
if( pStrClass )
aStrClass = pStrClass;
else
aStrClass = ByteString::CreateFromInt32( (long)nClassName );
pSubList = new REResourceList( pList, aStrClass, rId );
pList->Insert( pSubList, 0xFFFFFFFF );
return( pSubList );
}
void FillSubList( RSCINST & rInst, REResourceList * pList )
{
sal_uInt32 nCount, i;
SUBINFO_STRUCT aInfo;
REResourceList* pSubList;
RSCINST aTmpI;
nCount = rInst.pClass->GetCount( rInst );
for( i = 0; i < nCount; i++ ){
aInfo = rInst.pClass->GetInfoEle( rInst, i );
aTmpI = rInst.pClass->GetPosEle( rInst, i );
pSubList = InsertList( aInfo.pClass->GetId(),
aInfo.aId, pList );
FillSubList( aTmpI, pSubList );
};
}
void FillListObj( ObjNode * pObjNode, RscTop * pRscTop,
REResourceList * pList, sal_uLong lFileKey )
{
if( pObjNode ){
if( pObjNode->GetFileKey() == lFileKey ){
RSCINST aTmpI;
REResourceList* pSubList;
FillListObj( (ObjNode*)pObjNode->Left(), pRscTop,
pList, lFileKey );
pSubList = InsertList( pRscTop->GetId(),
pObjNode->GetRscId(), pList );
aTmpI.pClass = pRscTop;
aTmpI.pData = pObjNode->GetRscObj();
FillSubList( aTmpI, pSubList );
FillListObj( (ObjNode*)pObjNode->Right(), pRscTop,
pList, lFileKey );
}
};
}
void FillList( RscTop * pRscTop, REResourceList * pList, sal_uLong lFileKey ){
if( pRscTop ){
FillList( (RscTop*)pRscTop->Left(), pList, lFileKey );
FillListObj( pRscTop->GetObjNode(), pRscTop, pList, lFileKey );
FillList( (RscTop*)pRscTop->Right(), pList, lFileKey );
};
}
void RscTypCont::FillNameIdList( REResourceList * pList, sal_uLong lFileKey ){
FillList( pRoot, pList, lFileKey );
}