Kaydet (Commit) 764600bc authored tarafından Kohei Yoshida's avatar Kohei Yoshida

Apply pimpl to ResStringArray, to hide its internals.

Change-Id: I23969735f35e221a1aad39081ee63d02066d856f
üst 1b9aaba0
......@@ -19,42 +19,30 @@
#ifndef INCLUDED_TOOLS_RESARY_HXX
#define INCLUDED_TOOLS_RESARY_HXX
#include <boost/noncopyable.hpp>
#include <vector>
#include <tools/toolsdllapi.h>
#include <tools/resid.hxx>
#include <rtl/ustring.hxx>
#define RESARRAY_INDEX_NOTFOUND (0xffffffff)
class TOOLS_DLLPUBLIC ResStringArray : private boost::noncopyable
{
private:
struct ImplResStringItem
{
OUString m_aStr;
sal_IntPtr m_nValue;
class ResId;
ImplResStringItem( const OUString& rStr, long nValue = 0 ) :
m_aStr( rStr ),
m_nValue( nValue )
{}
};
class TOOLS_DLLPUBLIC ResStringArray
{
struct Impl;
Impl* mpImpl;
std::vector< ImplResStringItem > m_aStrings;
ResStringArray( const ResStringArray& ); // disabled
ResStringArray& operator=( const ResStringArray& ); // disabled
public:
ResStringArray( const ResId& rResId );
~ResStringArray();
const OUString GetString( sal_uInt32 nIndex ) const
{ return (nIndex < m_aStrings.size()) ? m_aStrings[nIndex].m_aStr : OUString(); }
sal_IntPtr GetValue( sal_uInt32 nIndex ) const
{ return (nIndex < m_aStrings.size()) ? m_aStrings[nIndex].m_nValue : -1; }
sal_uInt32 Count() const { return sal_uInt32(m_aStrings.size()); }
sal_uInt32 FindIndex( sal_IntPtr nValue ) const;
sal_uInt32 AddItem( const OUString& rString, sal_IntPtr nValue );
OUString GetString( sal_uInt32 nIndex ) const;
sal_IntPtr GetValue( sal_uInt32 nIndex ) const;
sal_uInt32 Count() const;
sal_uInt32 FindIndex( sal_IntPtr nValue ) const;
sal_uInt32 AddItem( const OUString& rString, sal_IntPtr nValue );
};
#endif
......
......@@ -17,11 +17,34 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#include <tools/resmgr.hxx>
#include <tools/resary.hxx>
#include <tools/resmgr.hxx>
#include <tools/rcid.h>
ResStringArray::ResStringArray( const ResId& rResId )
#include <vector>
namespace {
struct ImplResStringItem
{
OUString m_aStr;
sal_IntPtr m_nValue;
ImplResStringItem( const OUString& rStr, long nValue = 0 ) :
m_aStr(rStr),
m_nValue(nValue)
{ }
};
}
struct ResStringArray::Impl
{
std::vector<ImplResStringItem> m_aStrings;
};
ResStringArray::ResStringArray( const ResId& rResId ) :
mpImpl(new Impl)
{
rResId.SetRT( RSC_STRINGARRAY );
ResMgr* pMgr = rResId.GetResMgr();
......@@ -32,14 +55,14 @@ ResStringArray::ResStringArray( const ResId& rResId )
const sal_uInt32 nItems = pMgr->ReadLong();
if ( nItems )
{
m_aStrings.reserve( nItems );
mpImpl->m_aStrings.reserve( nItems );
for ( sal_uInt32 i = 0; i < nItems; i++ )
{
// load string
m_aStrings.push_back( ImplResStringItem( pMgr->ReadString() ) );
mpImpl->m_aStrings.push_back(ImplResStringItem(pMgr->ReadString()));
// load value
m_aStrings[i].m_nValue = pMgr->ReadLong();
mpImpl->m_aStrings[i].m_nValue = pMgr->ReadLong();
}
}
}
......@@ -47,14 +70,30 @@ ResStringArray::ResStringArray( const ResId& rResId )
ResStringArray::~ResStringArray()
{
delete mpImpl;
}
OUString ResStringArray::GetString( sal_uInt32 nIndex ) const
{
return (nIndex < mpImpl->m_aStrings.size()) ? mpImpl->m_aStrings[nIndex].m_aStr : OUString();
}
sal_IntPtr ResStringArray::GetValue( sal_uInt32 nIndex ) const
{
return (nIndex < mpImpl->m_aStrings.size()) ? mpImpl->m_aStrings[nIndex].m_nValue : -1;
}
sal_uInt32 ResStringArray::Count() const
{
return sal_uInt32(mpImpl->m_aStrings.size());
}
sal_uInt32 ResStringArray::FindIndex( sal_IntPtr nValue ) const
{
const sal_uInt32 nItems = m_aStrings.size();
const sal_uInt32 nItems = mpImpl->m_aStrings.size();
for ( sal_uInt32 i = 0; i < nItems; i++ )
{
if ( m_aStrings[i].m_nValue == nValue )
if (mpImpl->m_aStrings[i].m_nValue == nValue)
return i;
}
return RESARRAY_INDEX_NOTFOUND;
......@@ -62,8 +101,8 @@ sal_uInt32 ResStringArray::FindIndex( sal_IntPtr nValue ) const
sal_uInt32 ResStringArray::AddItem( const OUString& rString, sal_IntPtr nValue )
{
m_aStrings.push_back( ImplResStringItem( rString, nValue));
return m_aStrings.size();
mpImpl->m_aStrings.push_back(ImplResStringItem(rString, nValue));
return mpImpl->m_aStrings.size();
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment