summaryrefslogtreecommitdiff
path: root/basic
diff options
context:
space:
mode:
authorAugust Sodora <augsod@gmail.com>2011-11-20 23:44:21 -0500
committerAugust Sodora <augsod@gmail.com>2011-11-20 23:44:21 -0500
commitee3ad385fb3ca476e57e80d7b77c1e184e52e1d8 (patch)
tree7fb8851b7f455153cd2e3a5a4c46538ccae24735 /basic
parent7fc462044e6579aed96934d782e80d7a9e56f873 (diff)
Convert to boost::ptr_vector
Diffstat (limited to 'basic')
-rw-r--r--basic/source/comp/symtbl.cxx32
-rw-r--r--basic/source/inc/symtbl.hxx14
2 files changed, 21 insertions, 25 deletions
diff --git a/basic/source/comp/symtbl.cxx b/basic/source/comp/symtbl.cxx
index 4e6e93283c2b..22b31eab1a92 100644
--- a/basic/source/comp/symtbl.cxx
+++ b/basic/source/comp/symtbl.cxx
@@ -34,7 +34,6 @@
#include <string.h>
#include <ctype.h>
-SV_IMPL_PTRARR(SbiStrings,String*)
SV_IMPL_PTRARR(SbiSymbols,SbiSymDef*)
// All symbol names are laid down int the symbol-pool's stringpool, so that
@@ -57,30 +56,27 @@ SbiStringPool::SbiStringPool( SbiParser* p )
SbiStringPool::~SbiStringPool()
{}
-
-const String& SbiStringPool::Find( sal_uInt16 n ) const
+const rtl::OUString& SbiStringPool::Find( sal_uInt32 n ) const
{
- if( !n || n > aData.Count() )
- return aEmpty;
+ if( n == 0 || n > aData.size() )
+ return aEmpty; //hack, returning a reference to a simulation of null
else
- return *aData.GetObject( n-1 );
+ return aData[n - 1];
}
-
-
-short SbiStringPool::Add( const String& rVal, sal_Bool bNoCase )
+short SbiStringPool::Add( const rtl::OUString& rVal, sal_Bool bNoCase )
{
- sal_uInt16 n = aData.Count();
- for( sal_uInt16 i = 0; i < n; i++ )
+ sal_uInt32 n = aData.size();
+ for( sal_uInt32 i = 0; i < n; ++i )
{
- String* p = aData.GetObject( i );
- if( ( bNoCase && p->Equals( rVal ) )
- || ( !bNoCase && p->EqualsIgnoreCaseAscii( rVal ) ) )
+ rtl::OUString& p = aData[i];
+ if( ( bNoCase && p == rVal )
+ || ( !bNoCase && p.equalsIgnoreAsciiCase( rVal ) ) )
return i+1;
}
- const String* pNew = new String( rVal );
- aData.Insert( pNew, n++ );
- return (short) n;
+
+ aData.push_back(new rtl::OUString(rVal));
+ return (short) ++n;
}
short SbiStringPool::Add( double n, SbxDataType t )
@@ -94,7 +90,7 @@ short SbiStringPool::Add( double n, SbxDataType t )
case SbxDOUBLE: snprintf( buf, sizeof(buf), "%.16g", n ); break;
default: break;
}
- return Add( String::CreateFromAscii( buf ) );
+ return Add( rtl::OUString::createFromAscii( buf ) );
}
/***************************************************************************
diff --git a/basic/source/inc/symtbl.hxx b/basic/source/inc/symtbl.hxx
index 8e4540e1a59e..33da527fcf12 100644
--- a/basic/source/inc/symtbl.hxx
+++ b/basic/source/inc/symtbl.hxx
@@ -29,6 +29,8 @@
#ifndef _SYMTBL_HXX
#define _SYMTBL_HXX
+#include <boost/ptr_container/ptr_vector.hpp>
+
class SbiConstDef;
class SbiParser;
class SbiProcDef;
@@ -40,21 +42,19 @@ enum SbiSymScope { SbLOCAL, SbPARAM, SbPUBLIC, SbGLOBAL, SbRTL };
// The string-pool collects string entries and
// makes sure that they don't exist twice.
-SV_DECL_PTRARR_DEL(SbiStrings,String*,5,5)
-
class SbiStringPool {
- SbiStrings aData;
- String aEmpty; // for convenience
+ const rtl::OUString aEmpty;
+ boost::ptr_vector<rtl::OUString> aData;
SbiParser* pParser;
public:
SbiStringPool( SbiParser* );
~SbiStringPool();
- sal_uInt16 GetSize() const { return aData.Count(); }
+ sal_uInt32 GetSize() const { return aData.size(); }
// From 8.4.1999: default changed to sal_True because of #64236 -
// change it back to sal_False when the bug is cleanly removed.
- short Add( const String&, sal_Bool=sal_True );
+ short Add( const rtl::OUString&, sal_Bool=sal_True );
short Add( double, SbxDataType );
- const String& Find( sal_uInt16 ) const;
+ const rtl::OUString& Find( sal_uInt32 ) const;
SbiParser* GetParser() { return pParser; }
};