mib18: merging

This commit is contained in:
Mikhail Voytenko
2010-08-13 13:38:18 +02:00
22 changed files with 235 additions and 224 deletions

View File

@@ -178,7 +178,7 @@ struct SbxValues
sal_uInt64 uInt64; sal_uInt64 uInt64;
int nInt; int nInt;
unsigned int nUInt; unsigned int nUInt;
String* pString; ::rtl::OUString* pOUString;
SbxDecimal* pDecimal; SbxDecimal* pDecimal;
SbxBase* pObj; SbxBase* pObj;
@@ -212,7 +212,7 @@ struct SbxValues
SbxValues( double _nDouble ): nDouble( _nDouble ), eType(SbxDOUBLE) {} SbxValues( double _nDouble ): nDouble( _nDouble ), eType(SbxDOUBLE) {}
SbxValues( int _nInt ): nInt( _nInt ), eType(SbxINT) {} SbxValues( int _nInt ): nInt( _nInt ), eType(SbxINT) {}
SbxValues( unsigned int _nUInt ): nUInt( _nUInt ), eType(SbxUINT) {} SbxValues( unsigned int _nUInt ): nUInt( _nUInt ), eType(SbxUINT) {}
SbxValues( const String* _pString ): pString( (String*) _pString ), eType(SbxSTRING) {} SbxValues( const ::rtl::OUString* _pString ): pOUString( (::rtl::OUString*)_pString ), eType(SbxSTRING) {}
SbxValues( SbxBase* _pObj ): pObj( _pObj ), eType(SbxOBJECT) {} SbxValues( SbxBase* _pObj ): pObj( _pObj ), eType(SbxOBJECT) {}
SbxValues( sal_Unicode* _pChar ): pChar( _pChar ), eType(SbxLPSTR) {} SbxValues( sal_Unicode* _pChar ): pChar( _pChar ), eType(SbxLPSTR) {}
SbxValues( void* _pData ): pData( _pData ), eType(SbxPOINTER) {} SbxValues( void* _pData ): pData( _pData ), eType(SbxPOINTER) {}
@@ -237,7 +237,8 @@ class SbxValue : public SbxBase
SbxValue* TheRealValue() const; SbxValue* TheRealValue() const;
protected: protected:
SbxValues aData; // Data SbxValues aData; // Data
String aPic; // Picture-String ::rtl::OUString aPic; // Picture-String
String aToolString; // tool string copy
virtual void Broadcast( ULONG ); // Broadcast-Call virtual void Broadcast( ULONG ); // Broadcast-Call
virtual ~SbxValue(); virtual ~SbxValue();
@@ -303,6 +304,7 @@ public:
UINT16 GetErr() const; UINT16 GetErr() const;
const String& GetString() const; const String& GetString() const;
const String& GetCoreString() const; const String& GetCoreString() const;
::rtl::OUString GetOUString() const;
SbxDecimal* GetDecimal() const; SbxDecimal* GetDecimal() const;
SbxBase* GetObject() const; SbxBase* GetObject() const;
BOOL HasObject() const; BOOL HasObject() const;
@@ -325,8 +327,8 @@ public:
BOOL PutDate( double ); BOOL PutDate( double );
BOOL PutBool( BOOL ); BOOL PutBool( BOOL );
BOOL PutErr( USHORT ); BOOL PutErr( USHORT );
BOOL PutStringExt( const String& ); // with extended analysis (International, "TRUE"/"FALSE") BOOL PutStringExt( const ::rtl::OUString& ); // with extended analysis (International, "TRUE"/"FALSE")
BOOL PutString( const String& ); BOOL PutString( const ::rtl::OUString& );
BOOL PutString( const sal_Unicode* ); // Type = SbxSTRING BOOL PutString( const sal_Unicode* ); // Type = SbxSTRING
BOOL PutpChar( const sal_Unicode* ); // Type = SbxLPSTR BOOL PutpChar( const sal_Unicode* ); // Type = SbxLPSTR
BOOL PutDecimal( SbxDecimal* pDecimal ); BOOL PutDecimal( SbxDecimal* pDecimal );

View File

@@ -1461,7 +1461,7 @@ Any sbxToUnoValue( SbxVariable* pVar, const Type& rType, Property* pUnoProperty
aRetVal.setValue( &c , getCharCppuType() ); aRetVal.setValue( &c , getCharCppuType() );
break; break;
} }
case TypeClass_STRING: aRetVal <<= ::rtl::OUString( pVar->GetString() ); break; case TypeClass_STRING: aRetVal <<= pVar->GetOUString(); break;
case TypeClass_FLOAT: aRetVal <<= pVar->GetSingle(); break; case TypeClass_FLOAT: aRetVal <<= pVar->GetSingle(); break;
case TypeClass_DOUBLE: aRetVal <<= pVar->GetDouble(); break; case TypeClass_DOUBLE: aRetVal <<= pVar->GetDouble(); break;
//case TypeClass_OCTET: break; //case TypeClass_OCTET: break;

View File

@@ -87,21 +87,20 @@ enum SbxBOOL ImpGetBool( const SbxValues* p )
case SbxSTRING: case SbxSTRING:
case SbxLPSTR: case SbxLPSTR:
nRes = SbxFALSE; nRes = SbxFALSE;
if( p->pString ) if ( p->pOUString )
{ {
if( p->pString->EqualsIgnoreCaseAscii( SbxRes( STRING_TRUE ) ) ) if( p->pOUString->equalsIgnoreAsciiCase( SbxRes( STRING_TRUE ) ) )
nRes = SbxTRUE; nRes = SbxTRUE;
else if( !p->pString->EqualsIgnoreCaseAscii( SbxRes( STRING_FALSE ) ) ) else if( p->pOUString->equalsIgnoreAsciiCase( SbxRes( STRING_FALSE ) ) )
{ {
// Jetzt kann es noch in eine Zahl konvertierbar sein // Jetzt kann es noch in eine Zahl konvertierbar sein
BOOL bError = TRUE; BOOL bError = TRUE;
double n; double n;
SbxDataType t; SbxDataType t;
USHORT nLen = 0; USHORT nLen = 0;
String s( *p->pString ); if( ImpScan( *p->pOUString, n, t, &nLen ) == SbxERR_OK )
if( ImpScan( s, n, t, &nLen ) == SbxERR_OK )
{ {
if( nLen == s.Len() ) if( nLen == p->pOUString->getLength() )
{ {
bError = FALSE; bError = FALSE;
if( n != 0.0 ) if( n != 0.0 )
@@ -202,9 +201,10 @@ void ImpPutBool( SbxValues* p, INT16 n )
case SbxBYREF | SbxSTRING: case SbxBYREF | SbxSTRING:
case SbxSTRING: case SbxSTRING:
case SbxLPSTR: case SbxLPSTR:
if( !p->pString ) if ( !p->pOUString )
p->pString = new XubString; p->pOUString = new ::rtl::OUString( SbxRes( n ? STRING_TRUE : STRING_FALSE ) );
*p->pString = SbxRes( n ? STRING_TRUE : STRING_FALSE ); else
*p->pOUString = SbxRes( n ? STRING_TRUE : STRING_FALSE );
break; break;
case SbxOBJECT: case SbxOBJECT:

View File

@@ -165,13 +165,13 @@ start:
case SbxBYREF | SbxSTRING: case SbxBYREF | SbxSTRING:
case SbxSTRING: case SbxSTRING:
case SbxLPSTR: case SbxLPSTR:
if( !p->pString ) if( !p->pOUString )
nRes = 0; nRes = 0;
else else
{ {
double d; double d;
SbxDataType t; SbxDataType t;
if( ImpScan( *p->pString, d, t, NULL ) != SbxERR_OK ) if( ImpScan( *p->pOUString, d, t, NULL ) != SbxERR_OK )
nRes = 0; nRes = 0;
else if( d > SbxMAXBYTE ) else if( d > SbxMAXBYTE )
{ {
@@ -279,9 +279,9 @@ void ImpPutByte( SbxValues* p, BYTE n )
case SbxBYREF | SbxSTRING: case SbxBYREF | SbxSTRING:
case SbxSTRING: case SbxSTRING:
case SbxLPSTR: case SbxLPSTR:
if( !p->pString ) if( !p->pOUString )
p->pString = new XubString; p->pOUString = new ::rtl::OUString;
ImpCvtNum( (double) n, 0, *p->pString ); ImpCvtNum( (double) n, 0, *p->pOUString );
break; break;
case SbxOBJECT: case SbxOBJECT:
{ {

View File

@@ -39,7 +39,7 @@ using namespace rtl;
xub_Unicode ImpGetChar( const SbxValues* p ) xub_Unicode ImpGetChar( const SbxValues* p )
{ {
SbxValues aTmp; SbxValues aTmp;
xub_Unicode nRes; xub_Unicode nRes = 0;
start: start:
switch( +p->eType ) switch( +p->eType )
{ {
@@ -156,13 +156,11 @@ start:
case SbxBYREF | SbxSTRING: case SbxBYREF | SbxSTRING:
case SbxSTRING: case SbxSTRING:
case SbxLPSTR: case SbxLPSTR:
if( !p->pString ) if ( p->pOUString )
nRes = 0;
else
{ {
double d; double d;
SbxDataType t; SbxDataType t;
if( ImpScan( *p->pString, d, t, NULL ) != SbxERR_OK ) if( ImpScan( *p->pOUString, d, t, NULL ) != SbxERR_OK )
nRes = 0; nRes = 0;
else if( d > SbxMAXCHAR ) else if( d > SbxMAXCHAR )
{ {
@@ -274,9 +272,10 @@ start:
case SbxBYREF | SbxSTRING: case SbxBYREF | SbxSTRING:
case SbxSTRING: case SbxSTRING:
case SbxLPSTR: case SbxLPSTR:
if( !p->pString ) if ( !p->pOUString )
p->pString = new XubString; p->pOUString = new ::rtl::OUString( n );
*p->pString = n; else
*p->pOUString = ::rtl::OUString( n );
break; break;
case SbxOBJECT: case SbxOBJECT:
{ {

View File

@@ -33,13 +33,13 @@
class SbxArray; class SbxArray;
// SBXSCAN.CXX // SBXSCAN.CXX
extern void ImpCvtNum( double nNum, short nPrec, String& rRes, BOOL bCoreString=FALSE ); extern void ImpCvtNum( double nNum, short nPrec, ::rtl::OUString& rRes, BOOL bCoreString=FALSE );
extern SbxError ImpScan extern SbxError ImpScan
( const String& rSrc, double& nVal, SbxDataType& rType, USHORT* pLen, ( const ::rtl::OUString& rSrc, double& nVal, SbxDataType& rType, USHORT* pLen,
BOOL bAllowIntntl=FALSE, BOOL bOnlyIntntl=FALSE ); BOOL bAllowIntntl=FALSE, BOOL bOnlyIntntl=FALSE );
// mit erweiterter Auswertung (International, "TRUE"/"FALSE") // mit erweiterter Auswertung (International, "TRUE"/"FALSE")
extern BOOL ImpConvStringExt( String& rSrc, SbxDataType eTargetType ); extern BOOL ImpConvStringExt( ::rtl::OUString& rSrc, SbxDataType eTargetType );
// SBXINT.CXX // SBXINT.CXX
@@ -116,9 +116,9 @@ void ImpPutDate( SbxValues*, double );
// SBXSTR.CXX // SBXSTR.CXX
String ImpGetString( const SbxValues* ); ::rtl::OUString ImpGetString( const SbxValues* );
String ImpGetCoreString( const SbxValues* ); ::rtl::OUString ImpGetCoreString( const SbxValues* );
void ImpPutString( SbxValues*, const String* ); void ImpPutString( SbxValues*, const ::rtl::OUString* );
// SBXCHAR.CXX // SBXCHAR.CXX
@@ -145,7 +145,7 @@ enum SbxBOOL ImpGetBool( const SbxValues* );
void ImpPutBool( SbxValues*, INT16 ); void ImpPutBool( SbxValues*, INT16 );
// ByteArry <--> String // ByteArry <--> String
SbxArray* StringToByteArray(const String& rStr); SbxArray* StringToByteArray(const ::rtl::OUString& rStr);
String ByteArrayToString(SbxArray* pArr); ::rtl::OUString ByteArrayToString(SbxArray* pArr);
#endif #endif

View File

@@ -37,8 +37,8 @@
#include <basic/sbxvar.hxx> #include <basic/sbxvar.hxx>
#include "sbxconv.hxx" #include "sbxconv.hxx"
static String ImpCurrencyToString( const SbxINT64& ); static ::rtl::OUString ImpCurrencyToString( const SbxINT64& );
static SbxINT64 ImpStringToCurrency( const String& ); static SbxINT64 ImpStringToCurrency( const ::rtl::OUString& );
SbxINT64 ImpGetCurrency( const SbxValues* p ) SbxINT64 ImpGetCurrency( const SbxValues* p )
{ {
@@ -121,10 +121,10 @@ start:
case SbxBYREF | SbxSTRING: case SbxBYREF | SbxSTRING:
case SbxSTRING: case SbxSTRING:
case SbxLPSTR: case SbxLPSTR:
if( !p->pString ) if( !p->pOUString )
nRes.SetNull(); nRes.SetNull();
else else
nRes = ImpStringToCurrency( *p->pString ); nRes = ImpStringToCurrency( *p->pOUString );
break; break;
case SbxOBJECT: case SbxOBJECT:
{ {
@@ -224,10 +224,10 @@ start:
case SbxBYREF | SbxSTRING: case SbxBYREF | SbxSTRING:
case SbxSTRING: case SbxSTRING:
case SbxLPSTR: case SbxLPSTR:
if( !p->pString ) if( !p->pOUString )
p->pString = new XubString; p->pOUString = new ::rtl::OUString;
*p->pString = ImpCurrencyToString( r ); *p->pOUString = ImpCurrencyToString( r );
break; break;
case SbxOBJECT: case SbxOBJECT:
{ {
@@ -319,7 +319,7 @@ start:
// Hilfs-Funktionen zur Wandlung // Hilfs-Funktionen zur Wandlung
static String ImpCurrencyToString( const SbxINT64 &r ) static ::rtl::OUString ImpCurrencyToString( const SbxINT64 &r )
{ {
BigInt a10000 = 10000; BigInt a10000 = 10000;
@@ -331,20 +331,20 @@ static String ImpCurrencyToString( const SbxINT64 &r )
aFrac %= a10000; aFrac %= a10000;
aFrac += a10000; aFrac += a10000;
String aString; ::rtl::OUString aString;
if( r.nHigh < 0 ) if( r.nHigh < 0 )
aString = '-'; aString = ::rtl::OUString( (sal_Unicode)'-' );
aString += aInt.GetString(); aString += aInt.GetString();
aString += '.'; aString += ::rtl::OUString( (sal_Unicode)'.' );
aString += aFrac.GetString().GetBuffer()+1; aString += aFrac.GetString().GetBuffer()+1;
return aString; return aString;
} }
static SbxINT64 ImpStringToCurrency( const String &r ) static SbxINT64 ImpStringToCurrency( const ::rtl::OUString &r )
{ {
int nDec = 4; int nDec = 4;
String aStr; String aStr;
const sal_Unicode* p = r.GetBuffer(); const sal_Unicode* p = r.getStr();
if( *p == '-' ) if( *p == '-' )
aStr += *p++; aStr += *p++;

View File

@@ -86,7 +86,7 @@ double ImpGetDate( const SbxValues* p )
case SbxBYREF | SbxSTRING: case SbxBYREF | SbxSTRING:
case SbxSTRING: case SbxSTRING:
case SbxLPSTR: case SbxLPSTR:
if( !p->pString ) if( !p->pOUString )
nRes = 0; nRes = 0;
else else
{ {
@@ -126,7 +126,7 @@ double ImpGetDate( const SbxValues* p )
pFormatter->PutandConvertEntry( aStr, nCheckPos, nType, pFormatter->PutandConvertEntry( aStr, nCheckPos, nType,
nIndex, LANGUAGE_GERMAN, eLangType ); nIndex, LANGUAGE_GERMAN, eLangType );
BOOL bSuccess = pFormatter->IsNumberFormat( *p->pString, nIndex, nRes ); BOOL bSuccess = pFormatter->IsNumberFormat( *p->pOUString, nIndex, nRes );
if ( bSuccess ) if ( bSuccess )
{ {
short nType_ = pFormatter->GetType( nIndex ); short nType_ = pFormatter->GetType( nIndex );
@@ -248,8 +248,8 @@ start:
case SbxLPSTR: case SbxLPSTR:
#ifndef DOS #ifndef DOS
{ {
if( !p->pString ) if( !p->pOUString )
p->pString = new XubString; p->pOUString = new ::rtl::OUString;
Color* pColor; Color* pColor;
LanguageType eLangType = GetpApp()->GetSettings().GetLanguage(); LanguageType eLangType = GetpApp()->GetSettings().GetLanguage();
@@ -299,7 +299,9 @@ start:
nIndex, nIndex,
LANGUAGE_GERMAN, LANGUAGE_GERMAN,
eLangType ); eLangType );
pFormatter->GetOutputString( n, nIndex, *p->pString, &pColor ); String aTmpString;
pFormatter->GetOutputString( n, nIndex, aTmpString, &pColor );
*p->pOUString = aTmpString;
delete pFormatter; delete pFormatter;
#endif #endif
break; break;

View File

@@ -76,7 +76,7 @@ double ImpGetDouble( const SbxValues* p )
case SbxBYREF | SbxSTRING: case SbxBYREF | SbxSTRING:
case SbxSTRING: case SbxSTRING:
case SbxLPSTR: case SbxLPSTR:
if( !p->pString ) if( !p->pOUString )
{ {
nRes = 0; nRes = 0;
if ( SbiRuntime::isVBAEnabled() )// VBA only behaviour if ( SbiRuntime::isVBAEnabled() )// VBA only behaviour
@@ -86,7 +86,7 @@ double ImpGetDouble( const SbxValues* p )
{ {
double d; double d;
SbxDataType t; SbxDataType t;
if( ImpScan( *p->pString, d, t, NULL ) != SbxERR_OK ) if( ImpScan( *p->pOUString, d, t, NULL ) != SbxERR_OK )
{ {
nRes = 0; nRes = 0;
if ( SbiRuntime::isVBAEnabled() )// VBA only behaviour if ( SbiRuntime::isVBAEnabled() )// VBA only behaviour
@@ -188,9 +188,9 @@ start:
case SbxBYREF | SbxSTRING: case SbxBYREF | SbxSTRING:
case SbxSTRING: case SbxSTRING:
case SbxLPSTR: case SbxLPSTR:
if( !p->pString ) if( !p->pOUString )
p->pString = new XubString; p->pOUString = new ::rtl::OUString;
ImpCvtNum( (double) n, 14, *p->pString, bCoreString ); ImpCvtNum( (double) n, 14, *p->pOUString, bCoreString );
break; break;
case SbxOBJECT: case SbxOBJECT:
{ {

View File

@@ -211,7 +211,7 @@ void SbxDecimal::setUInt( unsigned int val )
// sbxscan.cxx // sbxscan.cxx
void ImpGetIntntlSep( sal_Unicode& rcDecimalSep, sal_Unicode& rcThousandSep ); void ImpGetIntntlSep( sal_Unicode& rcDecimalSep, sal_Unicode& rcThousandSep );
bool SbxDecimal::setString( String* pString ) bool SbxDecimal::setString( ::rtl::OUString* pOUString )
{ {
static LCID nLANGID = MAKELANGID( LANG_ENGLISH, SUBLANG_ENGLISH_US ); static LCID nLANGID = MAKELANGID( LANG_ENGLISH, SUBLANG_ENGLISH_US );
@@ -224,11 +224,11 @@ bool SbxDecimal::setString( String* pString )
HRESULT hResult; HRESULT hResult;
if( cDecimalSep != '.' || cThousandSep != ',' ) if( cDecimalSep != '.' || cThousandSep != ',' )
{ {
int nLen = pString->Len(); int nLen = pOUString->getLength();
sal_Unicode* pBuffer = new sal_Unicode[nLen + 1]; sal_Unicode* pBuffer = new sal_Unicode[nLen + 1];
pBuffer[nLen] = 0; pBuffer[nLen] = 0;
const sal_Unicode* pSrc = pString->GetBuffer(); const sal_Unicode* pSrc = pOUString->getStr();
int i; int i;
for( i = 0 ; i < nLen ; ++i ) for( i = 0 ; i < nLen ; ++i )
pBuffer[i] = pSrc[i]; pBuffer[i] = pSrc[i];
@@ -248,7 +248,7 @@ bool SbxDecimal::setString( String* pString )
} }
else else
{ {
hResult = VarDecFromStr( (OLECHAR*)pString->GetBuffer(), nLANGID, 0, &maDec ); hResult = VarDecFromStr( (OLECHAR*)pOUString->getStr(), nLANGID, 0, &maDec );
} }
bRet = ( hResult == S_OK ); bRet = ( hResult == S_OK );
return bRet; return bRet;
@@ -373,7 +373,7 @@ bool SbxDecimal::setSingle( float val ) { (void)val; return false; }
bool SbxDecimal::setDouble( double val ) { (void)val; return false; } bool SbxDecimal::setDouble( double val ) { (void)val; return false; }
void SbxDecimal::setInt( int val ) { (void)val; } void SbxDecimal::setInt( int val ) { (void)val; }
void SbxDecimal::setUInt( unsigned int val ) { (void)val; } void SbxDecimal::setUInt( unsigned int val ) { (void)val; }
bool SbxDecimal::setString( String* pString ) { (void)pString; return false; } bool SbxDecimal::setString( ::rtl::OUString* pOUString ) { (void)pOUString; return false; }
bool SbxDecimal::getChar( sal_Unicode& rVal ) { (void)rVal; return false; } bool SbxDecimal::getChar( sal_Unicode& rVal ) { (void)rVal; return false; }
bool SbxDecimal::getByte( BYTE& rVal ) { (void)rVal; return false; } bool SbxDecimal::getByte( BYTE& rVal ) { (void)rVal; return false; }
@@ -388,7 +388,7 @@ bool SbxDecimal::getUInt( unsigned int& rVal ) { (void)rVal; return false; }
#endif #endif
bool SbxDecimal::getString( String& rString ) bool SbxDecimal::getString( ::rtl::OUString& rString )
{ {
#ifdef WIN32 #ifdef WIN32
static LCID nLANGID = MAKELANGID( LANG_ENGLISH, SUBLANG_ENGLISH_US ); static LCID nLANGID = MAKELANGID( LANG_ENGLISH, SUBLANG_ENGLISH_US );
@@ -528,7 +528,7 @@ start:
case SbxLPSTR: case SbxLPSTR:
case SbxSTRING: case SbxSTRING:
case SbxBYREF | SbxSTRING: case SbxBYREF | SbxSTRING:
pnDecRes->setString( p->pString ); break; pnDecRes->setString( p->pOUString ); break;
case SbxOBJECT: case SbxOBJECT:
{ {
SbxValue* pVal = PTR_CAST(SbxValue,p->pObj); SbxValue* pVal = PTR_CAST(SbxValue,p->pObj);
@@ -670,10 +670,10 @@ start:
case SbxLPSTR: case SbxLPSTR:
case SbxSTRING: case SbxSTRING:
case SbxBYREF | SbxSTRING: case SbxBYREF | SbxSTRING:
if( !p->pString ) if( !p->pOUString )
p->pString = new XubString; p->pOUString = new ::rtl::OUString;
// ImpCvtNum( (double) n, 0, *p->pString ); // ImpCvtNum( (double) n, 0, *p->pString );
pDec->getString( *p->pString ); pDec->getString( *p->pOUString );
break; break;
case SbxOBJECT: case SbxOBJECT:
{ {

View File

@@ -85,7 +85,7 @@ public:
bool setDouble( double val ); bool setDouble( double val );
void setInt( int val ); void setInt( int val );
void setUInt( unsigned int val ); void setUInt( unsigned int val );
bool setString( String* pString ); bool setString( ::rtl::OUString* pOUString );
void setDecimal( SbxDecimal* pDecimal ) void setDecimal( SbxDecimal* pDecimal )
{ {
#ifdef WIN32 #ifdef WIN32
@@ -106,7 +106,7 @@ public:
bool getDouble( double& rVal ); bool getDouble( double& rVal );
bool getInt( int& rVal ); bool getInt( int& rVal );
bool getUInt( unsigned int& rVal ); bool getUInt( unsigned int& rVal );
bool getString( String& rString ); bool getString( ::rtl::OUString& rString );
bool operator -= ( const SbxDecimal &r ); bool operator -= ( const SbxDecimal &r );
bool operator += ( const SbxDecimal &r ); bool operator += ( const SbxDecimal &r );

View File

@@ -154,13 +154,13 @@ start:
case SbxLPSTR: case SbxLPSTR:
case SbxSTRING: case SbxSTRING:
case SbxBYREF | SbxSTRING: case SbxBYREF | SbxSTRING:
if( !p->pString ) if( !p->pOUString )
nRes = 0; nRes = 0;
else else
{ {
double d; double d;
SbxDataType t; SbxDataType t;
if( ImpScan( *p->pString, d, t, NULL ) != SbxERR_OK ) if( ImpScan( *p->pOUString, d, t, NULL ) != SbxERR_OK )
nRes = 0; nRes = 0;
else if( d > SbxMAXINT ) else if( d > SbxMAXINT )
{ {
@@ -275,9 +275,9 @@ start:
case SbxLPSTR: case SbxLPSTR:
case SbxSTRING: case SbxSTRING:
case SbxBYREF | SbxSTRING: case SbxBYREF | SbxSTRING:
if( !p->pString ) if( !p->pOUString )
p->pString = new XubString; p->pOUString = new ::rtl::OUString;
ImpCvtNum( (double) n, 0, *p->pString ); ImpCvtNum( (double) n, 0, *p->pOUString );
break; break;
case SbxOBJECT: case SbxOBJECT:
{ {
@@ -456,20 +456,19 @@ start:
case SbxBYREF | SbxSTRING: case SbxBYREF | SbxSTRING:
case SbxSTRING: case SbxSTRING:
case SbxLPSTR: case SbxLPSTR:
if( !p->pString ) if( !p->pOUString )
nRes = 0; nRes = 0;
else else
{ {
::rtl::OUString aOUStr( *p->pString );
::rtl::OString aOStr = ::rtl::OUStringToOString ::rtl::OString aOStr = ::rtl::OUStringToOString
( aOUStr, RTL_TEXTENCODING_ASCII_US ); ( *p->pOUString, RTL_TEXTENCODING_ASCII_US );
nRes = aOStr.toInt64(); nRes = aOStr.toInt64();
if( nRes == 0 ) if( nRes == 0 )
{ {
// Check if really 0 or invalid conversion // Check if really 0 or invalid conversion
double d; double d;
SbxDataType t; SbxDataType t;
if( ImpScan( *p->pString, d, t, NULL ) != SbxERR_OK ) if( ImpScan( *p->pOUString, d, t, NULL ) != SbxERR_OK )
nRes = 0; nRes = 0;
else else
nRes = ImpDoubleToSalInt64( d ); nRes = ImpDoubleToSalInt64( d );
@@ -575,13 +574,12 @@ start:
case SbxSTRING: case SbxSTRING:
case SbxLPSTR: case SbxLPSTR:
{ {
if( !p->pString ) if( !p->pOUString )
p->pString = new XubString; p->pOUString = new ::rtl::OUString;
::rtl::OString aOStr = ::rtl::OString::valueOf( n ); ::rtl::OString aOStr = ::rtl::OString::valueOf( n );
::rtl::OUString aOUStr = ::rtl::OStringToOUString (*p->pOUString) = ::rtl::OStringToOUString
( aOStr, RTL_TEXTENCODING_ASCII_US ); ( aOStr, RTL_TEXTENCODING_ASCII_US );
(*p->pString) = aOUStr;
break; break;
} }
case SbxOBJECT: case SbxOBJECT:
@@ -745,20 +743,19 @@ start:
case SbxBYREF | SbxSTRING: case SbxBYREF | SbxSTRING:
case SbxSTRING: case SbxSTRING:
case SbxLPSTR: case SbxLPSTR:
if( !p->pString ) if( !p->pOUString )
nRes = 0; nRes = 0;
else else
{ {
::rtl::OUString aOUStr( *p->pString );
::rtl::OString aOStr = ::rtl::OUStringToOString ::rtl::OString aOStr = ::rtl::OUStringToOString
( aOUStr, RTL_TEXTENCODING_ASCII_US ); ( *p->pOUString, RTL_TEXTENCODING_ASCII_US );
sal_Int64 n64 = aOStr.toInt64(); sal_Int64 n64 = aOStr.toInt64();
if( n64 == 0 ) if( n64 == 0 )
{ {
// Check if really 0 or invalid conversion // Check if really 0 or invalid conversion
double d; double d;
SbxDataType t; SbxDataType t;
if( ImpScan( *p->pString, d, t, NULL ) != SbxERR_OK ) if( ImpScan( *p->pOUString, d, t, NULL ) != SbxERR_OK )
nRes = 0; nRes = 0;
else if( d > SbxMAXSALUINT64 ) else if( d > SbxMAXSALUINT64 )
{ {
@@ -879,16 +876,15 @@ start:
case SbxBYREF | SbxSTRING: case SbxBYREF | SbxSTRING:
case SbxSTRING: case SbxSTRING:
case SbxLPSTR: case SbxLPSTR:
if( !p->pString ) if( !p->pOUString )
p->pString = new XubString; p->pOUString = new ::rtl::OUString;
if( n > SbxMAXSALINT64 ) if( n > SbxMAXSALINT64 )
SbxBase::SetError( SbxERR_CONVERSION ); SbxBase::SetError( SbxERR_CONVERSION );
else else
{ {
::rtl::OString aOStr = ::rtl::OString::valueOf( (sal_Int64)n ); ::rtl::OString aOStr = ::rtl::OString::valueOf( (sal_Int64)n );
::rtl::OUString aOUStr = ::rtl::OStringToOUString (*p->pOUString) = ::rtl::OStringToOUString
( aOStr, RTL_TEXTENCODING_ASCII_US ); ( aOStr, RTL_TEXTENCODING_ASCII_US );
(*p->pString) = aOUStr;
} }
break; break;
case SbxOBJECT: case SbxOBJECT:

View File

@@ -119,13 +119,13 @@ start:
case SbxBYREF | SbxSTRING: case SbxBYREF | SbxSTRING:
case SbxSTRING: case SbxSTRING:
case SbxLPSTR: case SbxLPSTR:
if( !p->pString ) if( !p->pOUString )
nRes = 0; nRes = 0;
else else
{ {
double d; double d;
SbxDataType t; SbxDataType t;
if( ImpScan( *p->pString, d, t, NULL ) != SbxERR_OK ) if( ImpScan( *p->pOUString, d, t, NULL ) != SbxERR_OK )
nRes = 0; nRes = 0;
else if( d > SbxMAXLNG ) else if( d > SbxMAXLNG )
{ {
@@ -240,9 +240,9 @@ start:
case SbxBYREF | SbxSTRING: case SbxBYREF | SbxSTRING:
case SbxSTRING: case SbxSTRING:
case SbxLPSTR: case SbxLPSTR:
if( !p->pString ) if( !p->pOUString )
p->pString = new XubString; p->pOUString = new ::rtl::OUString;
ImpCvtNum( (double) n, 0, *p->pString ); ImpCvtNum( (double) n, 0, *p->pOUString );
break; break;
case SbxOBJECT: case SbxOBJECT:
{ {

View File

@@ -86,6 +86,6 @@ const char* GetSbxRes( USHORT nId )
} }
SbxRes::SbxRes( USHORT nId ) SbxRes::SbxRes( USHORT nId )
: XubString( String::CreateFromAscii( GetSbxRes( nId ) ) ) : ::rtl::OUString( ::rtl::OUString::createFromAscii( GetSbxRes( nId ) ) )
{} {}

View File

@@ -75,7 +75,7 @@
#define SBXRES_MAX 44 #define SBXRES_MAX 44
class SbxRes : public String class SbxRes : public ::rtl::OUString
{ {
public: public:
SbxRes( USHORT ); SbxRes( USHORT );

View File

@@ -71,10 +71,10 @@ void ImpGetIntntlSep( sal_Unicode& rcDecimalSep, sal_Unicode& rcThousandSep )
// Das ganze gibt auch noch einen Konversionsfehler, wenn der Datentyp // Das ganze gibt auch noch einen Konversionsfehler, wenn der Datentyp
// Fixed ist und das ganze nicht hineinpasst! // Fixed ist und das ganze nicht hineinpasst!
SbxError ImpScan( const XubString& rWSrc, double& nVal, SbxDataType& rType, SbxError ImpScan( const ::rtl::OUString& rWSrc, double& nVal, SbxDataType& rType,
USHORT* pLen, BOOL bAllowIntntl, BOOL bOnlyIntntl ) USHORT* pLen, BOOL bAllowIntntl, BOOL bOnlyIntntl )
{ {
ByteString aBStr( rWSrc, RTL_TEXTENCODING_ASCII_US ); ::rtl::OString aBStr( ::rtl::OUStringToOString( rWSrc, RTL_TEXTENCODING_ASCII_US ) );
// Bei International Komma besorgen // Bei International Komma besorgen
char cIntntlComma, cIntntl1000; char cIntntlComma, cIntntl1000;
@@ -100,7 +100,7 @@ SbxError ImpScan( const XubString& rWSrc, double& nVal, SbxDataType& rType,
cIntntl1000 = (char)cThousandSep; cIntntl1000 = (char)cThousandSep;
} }
const char* pStart = aBStr.GetBuffer(); const char* pStart = aBStr.getStr();
const char* p = pStart; const char* p = pStart;
char buf[ 80 ], *q = buf; char buf[ 80 ], *q = buf;
BOOL bRes = TRUE; BOOL bRes = TRUE;
@@ -391,7 +391,7 @@ static void myftoa( double nNum, char * pBuf, short nPrec, short nExpWidth,
#pragma warning(disable: 4748) // "... because optimizations are disabled ..." #pragma warning(disable: 4748) // "... because optimizations are disabled ..."
#endif #endif
void ImpCvtNum( double nNum, short nPrec, XubString& rRes, BOOL bCoreString ) void ImpCvtNum( double nNum, short nPrec, ::rtl::OUString& rRes, BOOL bCoreString )
{ {
char *q; char *q;
char cBuf[ 40 ], *p = cBuf; char cBuf[ 40 ], *p = cBuf;
@@ -415,18 +415,18 @@ void ImpCvtNum( double nNum, short nPrec, XubString& rRes, BOOL bCoreString )
if( *p == cDecimalSep ) p--; if( *p == cDecimalSep ) p--;
while( *q ) *++p = *q++; while( *q ) *++p = *q++;
*++p = 0; *++p = 0;
rRes = String::CreateFromAscii( cBuf ); rRes = ::rtl::OUString::createFromAscii( cBuf );
} }
#ifdef _MSC_VER #ifdef _MSC_VER
#pragma optimize( "", on ) #pragma optimize( "", on )
#endif #endif
BOOL ImpConvStringExt( XubString& rSrc, SbxDataType eTargetType ) BOOL ImpConvStringExt( ::rtl::OUString& rSrc, SbxDataType eTargetType )
{ {
// Merken, ob ueberhaupt was geaendert wurde // Merken, ob ueberhaupt was geaendert wurde
BOOL bChanged = FALSE; BOOL bChanged = FALSE;
String aNewString; ::rtl::OUString aNewString;
// Nur Spezial-F<>lle behandeln, als Default tun wir nichts // Nur Spezial-F<>lle behandeln, als Default tun wir nichts
switch( eTargetType ) switch( eTargetType )
@@ -436,7 +436,7 @@ BOOL ImpConvStringExt( XubString& rSrc, SbxDataType eTargetType )
case SbxDOUBLE: case SbxDOUBLE:
case SbxCURRENCY: case SbxCURRENCY:
{ {
ByteString aBStr( rSrc, RTL_TEXTENCODING_ASCII_US ); ::rtl::OString aBStr( ::rtl::OUStringToOString( rSrc, RTL_TEXTENCODING_ASCII_US ) );
// Komma besorgen // Komma besorgen
sal_Unicode cDecimalSep, cThousandSep; sal_Unicode cDecimalSep, cThousandSep;
@@ -446,10 +446,11 @@ BOOL ImpConvStringExt( XubString& rSrc, SbxDataType eTargetType )
// Ersetzen, wenn DecimalSep kein '.' (nur den ersten) // Ersetzen, wenn DecimalSep kein '.' (nur den ersten)
if( cDecimalSep != (sal_Unicode)'.' ) if( cDecimalSep != (sal_Unicode)'.' )
{ {
USHORT nPos = aNewString.Search( cDecimalSep ); sal_Int32 nPos = aNewString.indexOf( cDecimalSep );
if( nPos != STRING_NOTFOUND ) if( nPos != -1 )
{ {
aNewString.SetChar( nPos, '.' ); sal_Unicode* pStr = (sal_Unicode*)aNewString.getStr();
pStr[nPos] = (sal_Unicode)'.';
bChanged = TRUE; bChanged = TRUE;
} }
} }
@@ -459,15 +460,15 @@ BOOL ImpConvStringExt( XubString& rSrc, SbxDataType eTargetType )
// Bei BOOL TRUE und FALSE als String pruefen // Bei BOOL TRUE und FALSE als String pruefen
case SbxBOOL: case SbxBOOL:
{ {
if( rSrc.EqualsIgnoreCaseAscii( "true" ) ) if( rSrc.equalsIgnoreAsciiCaseAscii( "true" ) )
{ {
aNewString = String::CreateFromInt32(SbxTRUE); aNewString = ::rtl::OUString::valueOf( (sal_Int32)SbxTRUE );
bChanged = TRUE; bChanged = TRUE;
} }
else else
if( rSrc.EqualsIgnoreCaseAscii( "false" ) ) if( rSrc.equalsIgnoreAsciiCaseAscii( "false" ) )
{ {
aNewString = String::CreateFromInt32(SbxFALSE); aNewString = ::rtl::OUString::valueOf( (sal_Int32)SbxFALSE );
bChanged = TRUE; bChanged = TRUE;
} }
break; break;
@@ -935,7 +936,11 @@ void SbxValue::Format( XubString& rRes, const XubString* pFmt ) const
//old: printfmtnum( GetDouble(), rRes, *pFmt ); //old: printfmtnum( GetDouble(), rRes, *pFmt );
} }
else else
ImpCvtNum( GetDouble(), nComma, rRes ); {
::rtl::OUString aTmpString( rRes );
ImpCvtNum( GetDouble(), nComma, aTmpString );
rRes = aTmpString;
}
break; break;
case SbxSTRING: case SbxSTRING:
if( pFmt ) if( pFmt )

View File

@@ -112,13 +112,13 @@ start:
case SbxBYREF | SbxSTRING: case SbxBYREF | SbxSTRING:
case SbxSTRING: case SbxSTRING:
case SbxLPSTR: case SbxLPSTR:
if( !p->pString ) if( !p->pOUString )
nRes = 0; nRes = 0;
else else
{ {
double d; double d;
SbxDataType t; SbxDataType t;
if( ImpScan( *p->pString, d, t, NULL ) != SbxERR_OK ) if( ImpScan( *p->pOUString, d, t, NULL ) != SbxERR_OK )
nRes = 0; nRes = 0;
else if( d > SbxMAXSNG ) else if( d > SbxMAXSNG )
{ {
@@ -237,9 +237,9 @@ start:
case SbxSTRING: case SbxSTRING:
case SbxLPSTR: case SbxLPSTR:
{ {
if( !p->pString ) if( !p->pOUString )
p->pString = new XubString; p->pOUString = new ::rtl::OUString;
ImpCvtNum( (double) n, 6, *p->pString ); ImpCvtNum( (double) n, 6, *p->pOUString );
break; break;
} }
case SbxOBJECT: case SbxOBJECT:

View File

@@ -44,12 +44,12 @@ using namespace rtl;
// Die Konversion eines Items auf String wird ueber die Put-Methoden // Die Konversion eines Items auf String wird ueber die Put-Methoden
// der einzelnen Datentypen abgewickelt, um doppelten Code zu vermeiden. // der einzelnen Datentypen abgewickelt, um doppelten Code zu vermeiden.
XubString ImpGetString( const SbxValues* p ) ::rtl::OUString ImpGetString( const SbxValues* p )
{ {
SbxValues aTmp; SbxValues aTmp;
XubString aRes; ::rtl::OUString aRes;
aTmp.eType = SbxSTRING; aTmp.eType = SbxSTRING;
aTmp.pString = &aRes; aTmp.pOUString = &aRes;
switch( +p->eType ) switch( +p->eType )
{ {
case SbxNULL: case SbxNULL:
@@ -86,8 +86,8 @@ XubString ImpGetString( const SbxValues* p )
case SbxBYREF | SbxSTRING: case SbxBYREF | SbxSTRING:
case SbxSTRING: case SbxSTRING:
case SbxLPSTR: case SbxLPSTR:
if( p->pString ) if ( p->pOUString )
aRes = *p->pString; *aTmp.pOUString = *p->pOUString;
break; break;
case SbxOBJECT: case SbxOBJECT:
{ {
@@ -109,7 +109,7 @@ XubString ImpGetString( const SbxValues* p )
case SbxERROR: case SbxERROR:
// Hier wird der String "Error n" erzeugt // Hier wird der String "Error n" erzeugt
aRes = SbxRes( STRING_ERRORMSG ); aRes = SbxRes( STRING_ERRORMSG );
aRes += p->nUShort; break; aRes += ::rtl::OUString( p->nUShort ); break;
case SbxDATE: case SbxDATE:
ImpPutDate( &aTmp, p->nDouble ); break; ImpPutDate( &aTmp, p->nDouble ); break;
@@ -145,7 +145,7 @@ XubString ImpGetString( const SbxValues* p )
} }
// AB 10.4.97, neue Funktion fuer SbxValue::GetCoreString() // AB 10.4.97, neue Funktion fuer SbxValue::GetCoreString()
XubString ImpGetCoreString( const SbxValues* p ) ::rtl::OUString ImpGetCoreString( const SbxValues* p )
{ {
// Vorerst nur fuer double // Vorerst nur fuer double
if( ( p->eType & (~SbxBYREF) ) == SbxDOUBLE ) if( ( p->eType & (~SbxBYREF) ) == SbxDOUBLE )
@@ -153,7 +153,6 @@ XubString ImpGetCoreString( const SbxValues* p )
SbxValues aTmp; SbxValues aTmp;
XubString aRes; XubString aRes;
aTmp.eType = SbxSTRING; aTmp.eType = SbxSTRING;
aTmp.pString = &aRes;
if( p->eType == SbxDOUBLE ) if( p->eType == SbxDOUBLE )
ImpPutDouble( &aTmp, p->nDouble, /*bCoreString=*/TRUE ); ImpPutDouble( &aTmp, p->nDouble, /*bCoreString=*/TRUE );
else else
@@ -164,15 +163,15 @@ XubString ImpGetCoreString( const SbxValues* p )
return ImpGetString( p ); return ImpGetString( p );
} }
void ImpPutString( SbxValues* p, const XubString* n ) void ImpPutString( SbxValues* p, const ::rtl::OUString* n )
{ {
SbxValues aTmp; SbxValues aTmp;
aTmp.eType = SbxSTRING; aTmp.eType = SbxSTRING;
XubString* pTmp = NULL; ::rtl::OUString* pTmp = NULL;
// Sicherheitshalber, falls ein NULL-Ptr kommt // Sicherheitshalber, falls ein NULL-Ptr kommt
if( !n ) if( !n )
n = pTmp = new XubString; n = pTmp = new ::rtl::OUString;
aTmp.pString = (XubString*) n; aTmp.pOUString = (::rtl::OUString*)n;
switch( +p->eType ) switch( +p->eType )
{ {
case SbxCHAR: case SbxCHAR:
@@ -209,14 +208,15 @@ void ImpPutString( SbxValues* p, const XubString* n )
case SbxBYREF | SbxSTRING: case SbxBYREF | SbxSTRING:
case SbxSTRING: case SbxSTRING:
case SbxLPSTR: case SbxLPSTR:
if( n->Len() ) if( n->getLength() )
{ {
if( !p->pString ) if( !p->pOUString )
p->pString = new XubString; p->pOUString = new ::rtl::OUString( *n );
*p->pString = *n; else
*p->pOUString = *n;
} }
else else
delete p->pString, p->pString = NULL; delete p->pOUString, p->pOUString = NULL;
break; break;
case SbxOBJECT: case SbxOBJECT:
{ {
@@ -258,18 +258,18 @@ void ImpPutString( SbxValues* p, const XubString* n )
} }
// Convert string to an array of bytes, preserving unicode (2bytes per character) // Convert string to an array of bytes, preserving unicode (2bytes per character)
SbxArray* StringToByteArray(const String& rStr) SbxArray* StringToByteArray(const ::rtl::OUString& rStr)
{ {
USHORT nArraySize = rStr.Len() * 2; sal_Int32 nArraySize = rStr.getLength() * 2;
const sal_Unicode* pSrc = rStr.GetBuffer(); const sal_Unicode* pSrc = rStr.getStr();
SbxDimArray* pArray = new SbxDimArray(SbxBYTE); SbxDimArray* pArray = new SbxDimArray(SbxBYTE);
bool bIncIndex = ( IsBaseIndexOne() && SbiRuntime::isVBAEnabled() ); bool bIncIndex = ( IsBaseIndexOne() && SbiRuntime::isVBAEnabled() );
if( nArraySize ) if( nArraySize )
{ {
if( bIncIndex ) if( bIncIndex )
pArray->AddDim( 1, nArraySize ); pArray->AddDim32( 1, nArraySize );
else else
pArray->AddDim( 0, nArraySize-1 ); pArray->AddDim32( 0, nArraySize-1 );
} }
else else
{ {
@@ -290,7 +290,7 @@ SbxArray* StringToByteArray(const String& rStr)
} }
// Convert an array of bytes to string (2bytes per character) // Convert an array of bytes to string (2bytes per character)
String ByteArrayToString(SbxArray* pArr) ::rtl::OUString ByteArrayToString(SbxArray* pArr)
{ {
USHORT nCount = pArr->Count(); USHORT nCount = pArr->Count();
OUStringBuffer aStrBuf; OUStringBuffer aStrBuf;
@@ -315,7 +315,5 @@ String ByteArrayToString(SbxArray* pArr)
aStrBuf.append(aChar); aStrBuf.append(aChar);
} }
String aStr(aStrBuf.makeStringAndClear()); return aStrBuf.makeStringAndClear();
return aStr;
} }

View File

@@ -151,13 +151,13 @@ start:
case SbxBYREF | SbxSTRING: case SbxBYREF | SbxSTRING:
case SbxSTRING: case SbxSTRING:
case SbxLPSTR: case SbxLPSTR:
if( !p->pString ) if( !p->pOUString )
nRes = 0; nRes = 0;
else else
{ {
double d; double d;
SbxDataType t; SbxDataType t;
if( ImpScan( *p->pString, d, t, NULL ) != SbxERR_OK ) if( ImpScan( *p->pOUString, d, t, NULL ) != SbxERR_OK )
nRes = 0; nRes = 0;
else if( d > SbxMAXUINT ) else if( d > SbxMAXUINT )
{ {
@@ -272,9 +272,9 @@ start:
case SbxBYREF | SbxSTRING: case SbxBYREF | SbxSTRING:
case SbxSTRING: case SbxSTRING:
case SbxLPSTR: case SbxLPSTR:
if( !p->pString ) if( !p->pOUString )
p->pString = new XubString; p->pOUString = new ::rtl::OUString;
ImpCvtNum( (double) n, 0, *p->pString ); ImpCvtNum( (double) n, 0, *p->pOUString );
break; break;
case SbxOBJECT: case SbxOBJECT:
{ {

View File

@@ -127,13 +127,13 @@ start:
case SbxBYREF | SbxSTRING: case SbxBYREF | SbxSTRING:
case SbxSTRING: case SbxSTRING:
case SbxLPSTR: case SbxLPSTR:
if( !p->pString ) if( !p->pOUString )
nRes = 0; nRes = 0;
else else
{ {
double d; double d;
SbxDataType t; SbxDataType t;
if( ImpScan( *p->pString, d, t, NULL ) != SbxERR_OK ) if( ImpScan( *p->pOUString, d, t, NULL ) != SbxERR_OK )
nRes = 0; nRes = 0;
else if( d > SbxMAXULNG ) else if( d > SbxMAXULNG )
{ {
@@ -246,9 +246,9 @@ start:
case SbxBYREF | SbxSTRING: case SbxBYREF | SbxSTRING:
case SbxSTRING: case SbxSTRING:
case SbxLPSTR: case SbxLPSTR:
if( !p->pString ) if( !p->pOUString )
p->pString = new XubString; p->pOUString = new ::rtl::OUString;
ImpCvtNum( (double) n, 0, *p->pString ); ImpCvtNum( (double) n, 0, *p->pOUString );
break; break;
case SbxOBJECT: case SbxOBJECT:
{ {

View File

@@ -236,7 +236,7 @@ SbxValue::SbxValue( SbxDataType t, void* p ) : SbxBase()
case SbxSINGLE: n |= SbxBYREF; aData.pSingle = (float*) p; break; case SbxSINGLE: n |= SbxBYREF; aData.pSingle = (float*) p; break;
case SbxDATE: case SbxDATE:
case SbxDOUBLE: n |= SbxBYREF; aData.pDouble = (double*) p; break; case SbxDOUBLE: n |= SbxBYREF; aData.pDouble = (double*) p; break;
case SbxSTRING: n |= SbxBYREF; aData.pString = (XubString*) p; break; case SbxSTRING: n |= SbxBYREF; aData.pOUString = (::rtl::OUString*) p; break;
case SbxERROR: case SbxERROR:
case SbxUSHORT: case SbxUSHORT:
case SbxBOOL: n |= SbxBYREF; aData.pUShort = (UINT16*) p; break; case SbxBOOL: n |= SbxBYREF; aData.pUShort = (UINT16*) p; break;
@@ -280,8 +280,8 @@ SbxValue::SbxValue( const SbxValue& r )
switch( aData.eType ) switch( aData.eType )
{ {
case SbxSTRING: case SbxSTRING:
if( aData.pString ) if( aData.pOUString )
aData.pString = new XubString( *aData.pString ); aData.pOUString = new ::rtl::OUString( *aData.pOUString );
break; break;
case SbxOBJECT: case SbxOBJECT:
if( aData.pObj ) if( aData.pObj )
@@ -309,7 +309,7 @@ SbxValue& SbxValue::operator=( const SbxValue& r )
&& aData.pObj && ( aData.pObj->GetType() == (SbxARRAY | SbxBYTE) ) && aData.pObj && ( aData.pObj->GetType() == (SbxARRAY | SbxBYTE) )
&& (r.aData.eType == SbxSTRING) ) && (r.aData.eType == SbxSTRING) )
{ {
String aStr = r.GetString(); ::rtl::OUString aStr = r.GetString();
SbxArray* pArr = StringToByteArray(aStr); SbxArray* pArr = StringToByteArray(aStr);
PutObject(pArr); PutObject(pArr);
return *this; return *this;
@@ -323,7 +323,7 @@ SbxValue& SbxValue::operator=( const SbxValue& r )
SbxArray* pArr = PTR_CAST(SbxArray, pObj); SbxArray* pArr = PTR_CAST(SbxArray, pObj);
if( pArr ) if( pArr )
{ {
String aStr = ByteArrayToString( pArr ); ::rtl::OUString aStr = ByteArrayToString( pArr );
PutString(aStr); PutString(aStr);
return *this; return *this;
} }
@@ -385,7 +385,7 @@ void SbxValue::Clear()
case SbxVOID: case SbxVOID:
break; break;
case SbxSTRING: case SbxSTRING:
delete aData.pString; aData.pString = NULL; delete aData.pOUString; aData.pOUString = NULL;
break; break;
case SbxOBJECT: case SbxOBJECT:
if( aData.pObj ) if( aData.pObj )
@@ -551,9 +551,9 @@ BOOL SbxValue::Get( SbxValues& rRes ) const
case SbxULONG: rRes.nULong = ImpGetULong( &p->aData ); break; case SbxULONG: rRes.nULong = ImpGetULong( &p->aData ); break;
case SbxLPSTR: case SbxLPSTR:
case SbxSTRING: p->aPic = ImpGetString( &p->aData ); case SbxSTRING: p->aPic = ImpGetString( &p->aData );
rRes.pString = &p->aPic; break; rRes.pOUString = &p->aPic; break;
case SbxCoreSTRING: p->aPic = ImpGetCoreString( &p->aData ); case SbxCoreSTRING: p->aPic = ImpGetCoreString( &p->aData );
rRes.pString = &p->aPic; break; rRes.pOUString = &p->aPic; break;
case SbxINT: case SbxINT:
#if SAL_TYPES_SIZEOFINT == 2 #if SAL_TYPES_SIZEOFINT == 2
rRes.nInt = (int) ImpGetInteger( &p->aData ); rRes.nInt = (int) ImpGetInteger( &p->aData );
@@ -618,13 +618,11 @@ const XubString& SbxValue::GetString() const
SbxValues aRes; SbxValues aRes;
aRes.eType = SbxSTRING; aRes.eType = SbxSTRING;
if( Get( aRes ) ) if( Get( aRes ) )
// Geht in Ordnung, da Ptr eine Kopie ist ((SbxValue*) this)->aToolString = *aRes.pOUString;
return *aRes.pString;
else else
{ ((SbxValue*) this)->aToolString.Erase();
((SbxValue*) this)->aPic.Erase();
return aPic; return aToolString;
}
} }
const XubString& SbxValue::GetCoreString() const const XubString& SbxValue::GetCoreString() const
@@ -632,13 +630,22 @@ const XubString& SbxValue::GetCoreString() const
SbxValues aRes; SbxValues aRes;
aRes.eType = SbxCoreSTRING; aRes.eType = SbxCoreSTRING;
if( Get( aRes ) ) if( Get( aRes ) )
// Geht in Ordnung, da Ptr eine Kopie ist ((SbxValue*) this)->aToolString = *aRes.pOUString;
return *aRes.pString;
else else
{ ((SbxValue*) this)->aToolString.Erase();
((SbxValue*) this)->aPic.Erase();
return aPic; return aToolString;
} }
::rtl::OUString SbxValue::GetOUString() const
{
::rtl::OUString aResult;
SbxValues aRes;
aRes.eType = SbxSTRING;
if( Get( aRes ) )
aResult = *aRes.pOUString;
return aResult;
} }
BOOL SbxValue::HasObject() const BOOL SbxValue::HasObject() const
@@ -727,7 +734,7 @@ BOOL SbxValue::Put( const SbxValues& rVal )
case SbxUSHORT: ImpPutUShort( &p->aData, rVal.nUShort ); break; case SbxUSHORT: ImpPutUShort( &p->aData, rVal.nUShort ); break;
case SbxULONG: ImpPutULong( &p->aData, rVal.nULong ); break; case SbxULONG: ImpPutULong( &p->aData, rVal.nULong ); break;
case SbxLPSTR: case SbxLPSTR:
case SbxSTRING: ImpPutString( &p->aData, rVal.pString ); break; case SbxSTRING: ImpPutString( &p->aData, rVal.pOUString ); break;
case SbxINT: case SbxINT:
#if SAL_TYPES_SIZEOFINT == 2 #if SAL_TYPES_SIZEOFINT == 2
ImpPutInteger( &p->aData, (INT16) rVal.nInt ); ImpPutInteger( &p->aData, (INT16) rVal.nInt );
@@ -803,10 +810,10 @@ BOOL SbxValue::Put( const SbxValues& rVal )
// werden koennen, wenn Floats mit ',' als Dezimaltrenner oder BOOLs // werden koennen, wenn Floats mit ',' als Dezimaltrenner oder BOOLs
// explizit mit "TRUE" oder "FALSE" angegeben werden. // explizit mit "TRUE" oder "FALSE" angegeben werden.
// Implementierung in ImpConvStringExt (SBXSCAN.CXX) // Implementierung in ImpConvStringExt (SBXSCAN.CXX)
BOOL SbxValue::PutStringExt( const XubString& r ) BOOL SbxValue::PutStringExt( const ::rtl::OUString& r )
{ {
// Kopieren, bei Unicode gleich konvertieren // Kopieren, bei Unicode gleich konvertieren
String aStr( r ); ::rtl::OUString aStr( r );
// Eigenen Typ bestimmen (nicht wie in Put() mit TheRealValue(), // Eigenen Typ bestimmen (nicht wie in Put() mit TheRealValue(),
// Objekte werden sowieso nicht behandelt) // Objekte werden sowieso nicht behandelt)
@@ -820,9 +827,9 @@ BOOL SbxValue::PutStringExt( const XubString& r )
// sonst Original (Unicode bleibt erhalten) // sonst Original (Unicode bleibt erhalten)
BOOL bRet; BOOL bRet;
if( ImpConvStringExt( aStr, eTargetType ) ) if( ImpConvStringExt( aStr, eTargetType ) )
aRes.pString = (XubString*)&aStr; aRes.pOUString = (::rtl::OUString*)&aStr;
else else
aRes.pString = (XubString*)&r; aRes.pOUString = (::rtl::OUString*)&r;
// #34939: Bei Strings. die eine Zahl enthalten und wenn this einen // #34939: Bei Strings. die eine Zahl enthalten und wenn this einen
// Num-Typ hat, Fixed-Flag setzen, damit der Typ nicht veraendert wird // Num-Typ hat, Fixed-Flag setzen, damit der Typ nicht veraendert wird
@@ -851,10 +858,10 @@ BOOL SbxValue::PutStringExt( const XubString& r )
BOOL SbxValue::PutString( const xub_Unicode* p ) BOOL SbxValue::PutString( const xub_Unicode* p )
{ {
XubString aVal( p ); ::rtl::OUString aVal( p );
SbxValues aRes; SbxValues aRes;
aRes.eType = SbxSTRING; aRes.eType = SbxSTRING;
aRes.pString = &aVal; aRes.pOUString = &aVal;
Put( aRes ); Put( aRes );
return BOOL( !IsError() ); return BOOL( !IsError() );
} }
@@ -909,19 +916,19 @@ BOOL SbxValue::fillAutomationDecimal
BOOL SbxValue::PutpChar( const xub_Unicode* p ) BOOL SbxValue::PutpChar( const xub_Unicode* p )
{ {
XubString aVal( p ); ::rtl::OUString aVal( p );
SbxValues aRes; SbxValues aRes;
aRes.eType = SbxLPSTR; aRes.eType = SbxLPSTR;
aRes.pString = &aVal; aRes.pOUString = &aVal;
Put( aRes ); Put( aRes );
return BOOL( !IsError() ); return BOOL( !IsError() );
} }
BOOL SbxValue::PutString( const XubString& r ) BOOL SbxValue::PutString( const ::rtl::OUString& r )
{ {
SbxValues aRes; SbxValues aRes;
aRes.eType = SbxSTRING; aRes.eType = SbxSTRING;
aRes.pString = (XubString*) &r; aRes.pOUString = (::rtl::OUString*) &r;
Put( aRes ); Put( aRes );
return BOOL( !IsError() ); return BOOL( !IsError() );
} }
@@ -986,14 +993,14 @@ BOOL SbxValue::ImpIsNumeric( BOOL bOnlyIntntl ) const
SbxDataType t = GetType(); SbxDataType t = GetType();
if( t == SbxSTRING ) if( t == SbxSTRING )
{ {
if( aData.pString ) if( aData.pOUString )
{ {
XubString s( *aData.pString ); ::rtl::OUString s( *aData.pOUString );
double n; double n;
SbxDataType t2; SbxDataType t2;
USHORT nLen = 0; USHORT nLen = 0;
if( ImpScan( s, n, t2, &nLen, /*bAllowIntntl*/FALSE, bOnlyIntntl ) == SbxERR_OK ) if( ImpScan( s, n, t2, &nLen, /*bAllowIntntl*/FALSE, bOnlyIntntl ) == SbxERR_OK )
return BOOL( nLen == s.Len() ); return BOOL( nLen == s.getLength() );
} }
return FALSE; return FALSE;
} }
@@ -1046,7 +1053,7 @@ BOOL SbxValue::SetType( SbxDataType t )
switch( aData.eType ) switch( aData.eType )
{ {
case SbxSTRING: case SbxSTRING:
delete aData.pString; delete aData.pOUString;
break; break;
case SbxOBJECT: case SbxOBJECT:
if( aData.pObj && aData.pObj != this ) if( aData.pObj && aData.pObj != this )
@@ -1163,14 +1170,14 @@ BOOL SbxValue::Compute( SbxOperator eOp, const SbxValue& rOp )
Get( aL ); Get( aL );
// #30576: Erstmal testen, ob Wandlung geklappt hat // #30576: Erstmal testen, ob Wandlung geklappt hat
if( aL.pString != NULL && aR.pString != NULL ) if( aL.pOUString != NULL && aR.pOUString != NULL )
{ {
*aL.pString += *aR.pString; *aL.pOUString += *aR.pOUString;
} }
// Nicht einmal Left OK? // Nicht einmal Left OK?
else if( aL.pString == NULL ) else if( aL.pOUString == NULL )
{ {
aL.pString = new String(); aL.pOUString = new ::rtl::OUString();
} }
Put( aL ); Put( aL );
} }
@@ -1493,17 +1500,17 @@ BOOL SbxValue::Compare( SbxOperator eOp, const SbxValue& rOp ) const
if( Get( aL ) && rOp.Get( aR ) ) switch( eOp ) if( Get( aL ) && rOp.Get( aR ) ) switch( eOp )
{ {
case SbxEQ: case SbxEQ:
bRes = BOOL( *aL.pString == *aR.pString ); break; bRes = BOOL( *aL.pOUString == *aR.pOUString ); break;
case SbxNE: case SbxNE:
bRes = BOOL( *aL.pString != *aR.pString ); break; bRes = BOOL( *aL.pOUString != *aR.pOUString ); break;
case SbxLT: case SbxLT:
bRes = BOOL( *aL.pString < *aR.pString ); break; bRes = BOOL( *aL.pOUString < *aR.pOUString ); break;
case SbxGT: case SbxGT:
bRes = BOOL( *aL.pString > *aR.pString ); break; bRes = BOOL( *aL.pOUString > *aR.pOUString ); break;
case SbxLE: case SbxLE:
bRes = BOOL( *aL.pString <= *aR.pString ); break; bRes = BOOL( *aL.pOUString <= *aR.pOUString ); break;
case SbxGE: case SbxGE:
bRes = BOOL( *aL.pString >= *aR.pString ); break; bRes = BOOL( *aL.pOUString >= *aR.pOUString ); break;
default: default:
SetError( SbxERR_NOTIMP ); SetError( SbxERR_NOTIMP );
} }
@@ -1668,9 +1675,9 @@ BOOL SbxValue::LoadData( SvStream& r, USHORT )
XubString aVal; XubString aVal;
r.ReadByteString( aVal, RTL_TEXTENCODING_ASCII_US ); r.ReadByteString( aVal, RTL_TEXTENCODING_ASCII_US );
if( aVal.Len() ) if( aVal.Len() )
aData.pString = new XubString( aVal ); aData.pOUString = new ::rtl::OUString( aVal );
else else
aData.pString = NULL; // JSM 22.09.1995 aData.pOUString = NULL; // JSM 22.09.1995
break; break;
} }
case SbxERROR: case SbxERROR:
@@ -1781,9 +1788,9 @@ BOOL SbxValue::StoreData( SvStream& r ) const
break; break;
} }
case SbxSTRING: case SbxSTRING:
if( aData.pString ) if( aData.pOUString )
{ {
r.WriteByteString( *aData.pString, RTL_TEXTENCODING_ASCII_US ); r.WriteByteString( *aData.pOUString, RTL_TEXTENCODING_ASCII_US );
} }
else else
{ {

View File

@@ -239,9 +239,9 @@ const XubString& SbxVariable::GetName( SbxNameType t ) const
if( i ) if( i )
aTmp += ','; aTmp += ',';
if( q->nFlags & SBX_OPTIONAL ) if( q->nFlags & SBX_OPTIONAL )
aTmp += SbxRes( STRING_OPTIONAL ); aTmp += String( SbxRes( STRING_OPTIONAL ) );
if( q->eType & SbxBYREF ) if( q->eType & SbxBYREF )
aTmp += SbxRes( STRING_BYREF ); aTmp += String( SbxRes( STRING_BYREF ) );
aTmp += q->aName; aTmp += q->aName;
cType = ' '; cType = ' ';
// Kurzer Typ? Dann holen, evtl. ist dieser 0. // Kurzer Typ? Dann holen, evtl. ist dieser 0.
@@ -263,12 +263,12 @@ const XubString& SbxVariable::GetName( SbxNameType t ) const
// langer Typ? // langer Typ?
if( t != SbxNAME_SHORT ) if( t != SbxNAME_SHORT )
{ {
aTmp += SbxRes( STRING_AS ); aTmp += String( SbxRes( STRING_AS ) );
if( nt < 32 ) if( nt < 32 )
aTmp += SbxRes( aTmp += String( SbxRes(
sal::static_int_cast< USHORT >( STRING_TYPES + nt ) ); sal::static_int_cast< USHORT >( STRING_TYPES + nt ) ) );
else else
aTmp += SbxRes( STRING_ANY ); aTmp += String( SbxRes( STRING_ANY ) );
} }
} }
} }
@@ -276,15 +276,15 @@ const XubString& SbxVariable::GetName( SbxNameType t ) const
// Langer Typ? Dann holen // Langer Typ? Dann holen
if( t == SbxNAME_LONG_TYPES && et != SbxEMPTY ) if( t == SbxNAME_LONG_TYPES && et != SbxEMPTY )
{ {
aTmp += SbxRes( STRING_AS ); aTmp += String( SbxRes( STRING_AS ) );
if( et < 32 ) if( et < 32 )
aTmp += SbxRes( aTmp += String( SbxRes(
sal::static_int_cast< USHORT >( STRING_TYPES + et ) ); sal::static_int_cast< USHORT >( STRING_TYPES + et ) ) );
else else
aTmp += SbxRes( STRING_ANY ); aTmp += String( SbxRes( STRING_ANY ) );
} }
((SbxVariable*) this)->aPic = aTmp; ((SbxVariable*) this)->aToolString = aTmp;
return aPic; return aToolString;
} }
// Einen simplen Hashcode erzeugen: Es werden die ersten 6 Zeichen gewertet. // Einen simplen Hashcode erzeugen: Es werden die ersten 6 Zeichen gewertet.
@@ -431,9 +431,10 @@ BOOL SbxVariable::LoadData( SvStream& rStrm, USHORT nVer )
if( nType == SbxNULL && GetClass() == SbxCLASS_METHOD ) if( nType == SbxNULL && GetClass() == SbxCLASS_METHOD )
nType = SbxEMPTY; nType = SbxEMPTY;
SbxValues aTmp; SbxValues aTmp;
XubString aVal; String aTmpString;
::rtl::OUString aVal;
aTmp.eType = aData.eType = (SbxDataType) nType; aTmp.eType = aData.eType = (SbxDataType) nType;
aTmp.pString = &aVal; aTmp.pOUString = &aVal;
switch( nType ) switch( nType )
{ {
case SbxBOOL: case SbxBOOL:
@@ -445,10 +446,10 @@ BOOL SbxVariable::LoadData( SvStream& rStrm, USHORT nVer )
case SbxSINGLE: case SbxSINGLE:
{ {
// Floats als ASCII // Floats als ASCII
rStrm.ReadByteString( aVal, RTL_TEXTENCODING_ASCII_US ); rStrm.ReadByteString( aTmpString, RTL_TEXTENCODING_ASCII_US );
double d; double d;
SbxDataType t; SbxDataType t;
if( ImpScan( aVal, d, t, NULL ) != SbxERR_OK || t == SbxDOUBLE ) if( ImpScan( aTmpString, d, t, NULL ) != SbxERR_OK || t == SbxDOUBLE )
{ {
aTmp.nSingle = 0; aTmp.nSingle = 0;
return FALSE; return FALSE;
@@ -460,9 +461,9 @@ BOOL SbxVariable::LoadData( SvStream& rStrm, USHORT nVer )
case SbxDOUBLE: case SbxDOUBLE:
{ {
// Floats als ASCII // Floats als ASCII
rStrm.ReadByteString( aVal, RTL_TEXTENCODING_ASCII_US ); rStrm.ReadByteString( aTmpString, RTL_TEXTENCODING_ASCII_US );
SbxDataType t; SbxDataType t;
if( ImpScan( aVal, aTmp.nDouble, t, NULL ) != SbxERR_OK ) if( ImpScan( aTmpString, aTmp.nDouble, t, NULL ) != SbxERR_OK )
{ {
aTmp.nDouble = 0; aTmp.nDouble = 0;
return FALSE; return FALSE;
@@ -470,7 +471,8 @@ BOOL SbxVariable::LoadData( SvStream& rStrm, USHORT nVer )
break; break;
} }
case SbxSTRING: case SbxSTRING:
rStrm.ReadByteString( aVal, RTL_TEXTENCODING_ASCII_US ); rStrm.ReadByteString( aTmpString, RTL_TEXTENCODING_ASCII_US );
aVal = aTmpString;
break; break;
case SbxEMPTY: case SbxEMPTY:
case SbxNULL: case SbxNULL: