xref: /aoo41x/main/tools/source/rc/resary.cxx (revision cdf0e10c)
1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 
28 // MARKER(update_precomp.py): autogen include statement, do not remove
29 #include "precompiled_tools.hxx"
30 
31 #define _TOOLS_RESARY_CXX
32 #include <tools/resary.hxx>
33 #include <tools/rcid.h>
34 
35 // =======================================================================
36 
37 ResStringArray::ResStringArray( const ResId& rResId )
38 {
39     rResId.SetRT( RSC_STRINGARRAY );
40     ResMgr* pMgr = rResId.GetResMgr();
41     if( pMgr && pMgr->GetResource( rResId ) )
42     {
43         pMgr->GetClass();
44         pMgr->Increment( sizeof( RSHEADER_TYPE ) );
45         const sal_uInt32 nItems = pMgr->ReadLong();
46         if ( nItems )
47         {
48             m_aStrings.reserve( nItems );
49             for ( sal_uInt32 i = 0; i < nItems; i++ )
50             {
51                 // load string
52                 m_aStrings.push_back( ImplResStringItem( pMgr->ReadString() ) );
53 
54                 // load value
55                 m_aStrings[i].m_nValue = pMgr->ReadLong();
56             }
57         }
58     }
59 }
60 
61 // -----------------------------------------------------------------------
62 
63 ResStringArray::~ResStringArray()
64 {
65 }
66 
67 // -----------------------------------------------------------------------
68 
69 sal_uInt32 ResStringArray::FindIndex( long nValue ) const
70 {
71     const sal_uInt32 nItems = m_aStrings.size();
72 	for ( sal_uInt32 i = 0; i < nItems; i++ )
73 	{
74 		if ( m_aStrings[i].m_nValue == nValue )
75 			return i;
76 	}
77 	return RESARRAY_INDEX_NOTFOUND;
78 }
79