summaryrefslogtreecommitdiff
path: root/basic/source/sbx/sbxobj.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'basic/source/sbx/sbxobj.cxx')
-rw-r--r--basic/source/sbx/sbxobj.cxx436
1 files changed, 267 insertions, 169 deletions
diff --git a/basic/source/sbx/sbxobj.cxx b/basic/source/sbx/sbxobj.cxx
index bdf2200c6722..e72a2821c5f0 100644
--- a/basic/source/sbx/sbxobj.cxx
+++ b/basic/source/sbx/sbxobj.cxx
@@ -26,23 +26,23 @@ TYPEINIT1(SbxMethod,SbxVariable)
TYPEINIT1(SbxProperty,SbxVariable)
TYPEINIT2(SbxObject,SbxVariable,SfxListener)
-static const char* pNameProp; // Name-Property
-static const char* pParentProp; // Parent-Property
+static OUString pNameProp; // Name-Property
+static OUString pParentProp; // Parent-Property
static sal_uInt16 nNameHash = 0, nParentHash = 0;
-SbxObject::SbxObject( const XubString& rClass )
+SbxObject::SbxObject( const OUString& rClass )
: SbxVariable( SbxOBJECT ), aClassName( rClass )
{
aData.pObj = this;
if( !nNameHash )
{
- pNameProp = GetSbxRes( STRING_NAMEPROP );
- pParentProp = GetSbxRes( STRING_PARENTPROP );
- nNameHash = MakeHashCode( rtl::OUString::createFromAscii( pNameProp ) );
- nParentHash = MakeHashCode( rtl::OUString::createFromAscii( pParentProp ) );
+ pNameProp = ::rtl::OUString::createFromAscii(GetSbxRes( STRING_NAMEPROP ));
+ pParentProp = ::rtl::OUString::createFromAscii(GetSbxRes( STRING_PARENTPROP ));
+ nNameHash = MakeHashCode( pNameProp );
+ nParentHash = MakeHashCode( pParentProp );
}
SbxObject::Clear();
SbxObject::SetName( rClass );
@@ -83,7 +83,9 @@ static void CheckParentsOnDelete( SbxObject* pObj, SbxArray* p )
{
SbxVariableRef& rRef = p->GetRef( i );
if( rRef->IsBroadcaster() )
+ {
pObj->EndListening( rRef->GetBroadcaster(), sal_True );
+ }
// Did the element have more then one reference and still a Listener?
if( rRef->GetRefCount() > 1 )
{
@@ -119,9 +121,9 @@ void SbxObject::Clear()
pProps = new SbxArray;
pObjs = new SbxArray( SbxOBJECT );
SbxVariable* p;
- p = Make( rtl::OUString::createFromAscii( pNameProp ), SbxCLASS_PROPERTY, SbxSTRING );
+ p = Make( pNameProp, SbxCLASS_PROPERTY, SbxSTRING );
p->SetFlag( SBX_DONTSTORE );
- p = Make( rtl::OUString::createFromAscii( pParentProp ), SbxCLASS_PROPERTY, SbxOBJECT );
+ p = Make( pParentProp, SbxCLASS_PROPERTY, SbxOBJECT );
p->ResetFlag( SBX_WRITE );
p->SetFlag( SBX_DONTSTORE );
pDfltProp = NULL;
@@ -140,43 +142,52 @@ void SbxObject::SFX_NOTIFY( SfxBroadcaster&, const TypeId&,
SbxVariable* pVar = p->GetVar();
if( bRead || bWrite )
{
- XubString aVarName( pVar->GetName() );
+ OUString aVarName( pVar->GetName() );
sal_uInt16 nHash_ = MakeHashCode( aVarName );
- if( nHash_ == nNameHash
- && aVarName.EqualsIgnoreCaseAscii( pNameProp ) )
+ if( nHash_ == nNameHash && aVarName.equalsIgnoreAsciiCase( pNameProp ) )
{
if( bRead )
+ {
pVar->PutString( GetName() );
+ }
else
- SetName( pVar->GetString() );
+ {
+ SetName( pVar->GetOUString() );
+ }
}
- else if( nHash_ == nParentHash
- && aVarName.EqualsIgnoreCaseAscii( pParentProp ) )
+ else if( nHash_ == nParentHash && aVarName.equalsIgnoreAsciiCase( pParentProp ) )
{
SbxObject* p_ = GetParent();
if( !p_ )
+ {
p_ = this;
+ }
pVar->PutObject( p_ );
}
}
}
}
-sal_Bool SbxObject::IsClass( const rtl::OUString& rName ) const
+sal_Bool SbxObject::IsClass( const OUString& rName ) const
{
- return sal_Bool( aClassName.EqualsIgnoreCaseAscii( rName ) );
+ return sal_Bool( aClassName.equalsIgnoreAsciiCase( rName ) );
}
SbxVariable* SbxObject::FindUserData( sal_uInt32 nData )
{
if( !GetAll( SbxCLASS_DONTCARE ) )
+ {
return NULL;
-
+ }
SbxVariable* pRes = pMethods->FindUserData( nData );
if( !pRes )
+ {
pRes = pProps->FindUserData( nData );
+ }
if( !pRes )
+ {
pRes = pObjs->FindUserData( nData );
+ }
// Search in the parents?
if( !pRes && IsSet( SBX_GBLSEARCH ) )
{
@@ -198,46 +209,52 @@ SbxVariable* SbxObject::FindUserData( sal_uInt32 nData )
return pRes;
}
-SbxVariable* SbxObject::Find( const rtl::OUString& rName, SbxClassType t )
+SbxVariable* SbxObject::Find( const OUString& rName, SbxClassType t )
{
#ifdef DBG_UTIL
static sal_uInt16 nLvl = 0;
- static const char* pCls[] =
- { "DontCare","Array","Value","Variable","Method","Property","Object" };
+ static const char* pCls[] = { "DontCare","Array","Value","Variable","Method","Property","Object" };
rtl::OString aNameStr1(rtl::OUStringToOString(rName, RTL_TEXTENCODING_ASCII_US));
rtl::OString aNameStr2(rtl::OUStringToOString(SbxVariable::GetName(), RTL_TEXTENCODING_ASCII_US));
DbgOutf( "SBX: Search %.*s %s %s in %s",
- nLvl++, " ",
- ( t >= SbxCLASS_DONTCARE && t <= SbxCLASS_OBJECT )
- ? pCls[ t-1 ] : "Unknown class", aNameStr1.getStr(), aNameStr1.getStr() );
+ nLvl++, " ",
+ ( t >= SbxCLASS_DONTCARE && t <= SbxCLASS_OBJECT )
+ ? pCls[ t-1 ] : "Unknown class", aNameStr1.getStr(), aNameStr1.getStr() );
#endif
if( !GetAll( t ) )
+ {
return NULL;
+ }
SbxVariable* pRes = NULL;
pObjs->SetFlag( SBX_EXTSEARCH );
if( t == SbxCLASS_DONTCARE )
{
pRes = pMethods->Find( rName, SbxCLASS_METHOD );
if( !pRes )
+ {
pRes = pProps->Find( rName, SbxCLASS_PROPERTY );
+ }
if( !pRes )
+ {
pRes = pObjs->Find( rName, t );
+ }
}
else
{
SbxArray* pArray = NULL;
switch( t )
{
- case SbxCLASS_VARIABLE:
- case SbxCLASS_PROPERTY: pArray = pProps; break;
- case SbxCLASS_METHOD: pArray = pMethods; break;
- case SbxCLASS_OBJECT: pArray = pObjs; break;
- default:
- DBG_ASSERT( !this, "Ungueltige SBX-Klasse" );
+ case SbxCLASS_VARIABLE:
+ case SbxCLASS_PROPERTY: pArray = pProps; break;
+ case SbxCLASS_METHOD: pArray = pMethods; break;
+ case SbxCLASS_OBJECT: pArray = pObjs; break;
+ default: DBG_ASSERT( !this, "Ungueltige SBX-Klasse" ); break;
}
if( pArray )
+ {
pRes = pArray->Find( rName, t );
+ }
}
// ExtendedsSearch in the Object-Array?
// For objects and DontCare is the array of objects already
@@ -279,14 +296,16 @@ SbxVariable* SbxObject::Find( const rtl::OUString& rName, SbxClassType t )
// The whole thing recursive, because Call() might be overloaded
// Qualified names are allowed
-sal_Bool SbxObject::Call( const XubString& rName, SbxArray* pParam )
+sal_Bool SbxObject::Call( const OUString& rName, SbxArray* pParam )
{
SbxVariable* pMeth = FindQualified( rName, SbxCLASS_DONTCARE);
if( pMeth && pMeth->ISA(SbxMethod) )
{
// FindQualified() might have been stroked!
if( pParam )
+ {
pMeth->SetParameters( pParam );
+ }
pMeth->Broadcast( SBX_HINT_DATAWANTED );
pMeth->SetParameters( NULL );
return sal_True;
@@ -297,18 +316,22 @@ sal_Bool SbxObject::Call( const XubString& rName, SbxArray* pParam )
SbxProperty* SbxObject::GetDfltProperty()
{
- if ( !pDfltProp && aDfltPropName.Len() )
+ if ( !pDfltProp && !aDfltPropName.isEmpty() )
{
pDfltProp = (SbxProperty*) Find( aDfltPropName, SbxCLASS_PROPERTY );
if( !pDfltProp )
+ {
pDfltProp = (SbxProperty*) Make( aDfltPropName, SbxCLASS_PROPERTY, SbxVARIANT );
+ }
}
return pDfltProp;
}
-void SbxObject::SetDfltProperty( const XubString& rName )
+void SbxObject::SetDfltProperty( const OUString& rName )
{
if ( rName != aDfltPropName )
+ {
pDfltProp = NULL;
+ }
aDfltPropName = rName;
SetModified( sal_True );
}
@@ -322,12 +345,11 @@ SbxArray* SbxObject::FindVar( SbxVariable* pVar, sal_uInt16& nArrayIdx )
SbxArray* pArray = NULL;
if( pVar ) switch( pVar->GetClass() )
{
- case SbxCLASS_VARIABLE:
- case SbxCLASS_PROPERTY: pArray = pProps; break;
- case SbxCLASS_METHOD: pArray = pMethods; break;
- case SbxCLASS_OBJECT: pArray = pObjs; break;
- default:
- DBG_ASSERT( !this, "Ungueltige SBX-Klasse" );
+ case SbxCLASS_VARIABLE:
+ case SbxCLASS_PROPERTY: pArray = pProps; break;
+ case SbxCLASS_METHOD: pArray = pMethods; break;
+ case SbxCLASS_OBJECT: pArray = pObjs; break;
+ default: DBG_ASSERT( !this, "Ungueltige SBX-Klasse" ); break;
}
if( pArray )
{
@@ -336,12 +358,14 @@ SbxArray* SbxObject::FindVar( SbxVariable* pVar, sal_uInt16& nArrayIdx )
pArray->ResetFlag( SBX_EXTSEARCH );
SbxVariable* pOld = pArray->Find( pVar->GetName(), pVar->GetClass() );
if( pOld )
- for( sal_uInt16 i = 0; i < pArray->Count(); i++ )
{
- SbxVariableRef& rRef = pArray->GetRef( i );
- if( (SbxVariable*) rRef == pOld )
+ for( sal_uInt16 i = 0; i < pArray->Count(); i++ )
{
- nArrayIdx = i; break;
+ SbxVariableRef& rRef = pArray->GetRef( i );
+ if( (SbxVariable*) rRef == pOld )
+ {
+ nArrayIdx = i; break;
+ }
}
}
}
@@ -351,21 +375,22 @@ SbxArray* SbxObject::FindVar( SbxVariable* pVar, sal_uInt16& nArrayIdx )
// If a new object will be established, this object will be indexed,
// if an object of this name exists already.
-SbxVariable* SbxObject::Make( const XubString& rName, SbxClassType ct, SbxDataType dt )
+SbxVariable* SbxObject::Make( const OUString& rName, SbxClassType ct, SbxDataType dt )
{
// Is the object already available?
SbxArray* pArray = NULL;
switch( ct )
{
- case SbxCLASS_VARIABLE:
- case SbxCLASS_PROPERTY: pArray = pProps; break;
- case SbxCLASS_METHOD: pArray = pMethods; break;
- case SbxCLASS_OBJECT: pArray = pObjs; break;
- default:
- DBG_ASSERT( !this, "Ungueltige SBX-Klasse" );
+ case SbxCLASS_VARIABLE:
+ case SbxCLASS_PROPERTY: pArray = pProps; break;
+ case SbxCLASS_METHOD: pArray = pMethods; break;
+ case SbxCLASS_OBJECT: pArray = pObjs; break;
+ default: DBG_ASSERT( !this, "Ungueltige SBX-Klasse" ); break;
}
if( !pArray )
+ {
return NULL;
+ }
// Collections may contain objects of the same name
if( !( ct == SbxCLASS_OBJECT && ISA(SbxCollection) ) )
{
@@ -378,17 +403,18 @@ SbxVariable* SbxObject::Make( const XubString& rName, SbxClassType ct, SbxDataTy
SbxVariable* pVar = NULL;
switch( ct )
{
- case SbxCLASS_VARIABLE:
- case SbxCLASS_PROPERTY:
- pVar = new SbxProperty( rName, dt );
- break;
- case SbxCLASS_METHOD:
- pVar = new SbxMethod( rName, dt );
- break;
- case SbxCLASS_OBJECT:
- pVar = CreateObject( rName );
- break;
- default: break;
+ case SbxCLASS_VARIABLE:
+ case SbxCLASS_PROPERTY:
+ pVar = new SbxProperty( rName, dt );
+ break;
+ case SbxCLASS_METHOD:
+ pVar = new SbxMethod( rName, dt );
+ break;
+ case SbxCLASS_OBJECT:
+ pVar = CreateObject( rName );
+ break;
+ default:
+ break;
}
pVar->SetParent( this );
pArray->Put( pVar, pArray->Count() );
@@ -399,7 +425,7 @@ SbxVariable* SbxObject::Make( const XubString& rName, SbxClassType ct, SbxDataTy
return pVar;
}
-SbxObject* SbxObject::MakeObject( const XubString& rName, const XubString& rClass )
+SbxObject* SbxObject::MakeObject( const OUString& rName, const OUString& rClass )
{
// Is the object already available?
if( !ISA(SbxCollection) )
@@ -436,40 +462,49 @@ void SbxObject::Insert( SbxVariable* pVar )
// Then this element exists already
// There are objects of the same name allowed at collections
if( pArray == pObjs && ISA(SbxCollection) )
+ {
nIdx = pArray->Count();
+ }
else
{
SbxVariable* pOld = pArray->Get( nIdx );
// already inside: overwrite
if( pOld == pVar )
+ {
return;
-
+ }
EndListening( pOld->GetBroadcaster(), sal_True );
if( pVar->GetClass() == SbxCLASS_PROPERTY )
{
if( pOld == pDfltProp )
+ {
pDfltProp = (SbxProperty*) pVar;
+ }
}
}
}
StartListening( pVar->GetBroadcaster(), sal_True );
pArray->Put( pVar, nIdx );
if( pVar->GetParent() != this )
+ {
pVar->SetParent( this );
+ }
SetModified( sal_True );
Broadcast( SBX_HINT_OBJECTCHANGED );
#ifdef DBG_UTIL
- static const char* pCls[] =
- { "DontCare","Array","Value","Variable","Method","Property","Object" };
- XubString aVarName( pVar->GetName() );
- if ( !aVarName.Len() && pVar->ISA(SbxObject) )
- aVarName = PTR_CAST(SbxObject,pVar)->GetClassName();
- rtl::OString aNameStr1(rtl::OUStringToOString(aVarName, RTL_TEXTENCODING_ASCII_US));
- rtl::OString aNameStr2(rtl::OUStringToOString(SbxVariable::GetName(), RTL_TEXTENCODING_ASCII_US));
- DbgOutf( "SBX: Insert %s %s in %s",
- ( pVar->GetClass() >= SbxCLASS_DONTCARE &&
- pVar->GetClass() <= SbxCLASS_OBJECT )
- ? pCls[ pVar->GetClass()-1 ] : "Unknown class", aNameStr1.getStr(), aNameStr1.getStr() );
+ static const char* pCls[] =
+ { "DontCare","Array","Value","Variable","Method","Property","Object" };
+ OUString aVarName( pVar->GetName() );
+ if ( aVarName.isEmpty() && pVar->ISA(SbxObject) )
+ {
+ aVarName = PTR_CAST(SbxObject,pVar)->GetClassName();
+ }
+ rtl::OString aNameStr1(rtl::OUStringToOString(aVarName, RTL_TEXTENCODING_ASCII_US));
+ rtl::OString aNameStr2(rtl::OUStringToOString(SbxVariable::GetName(), RTL_TEXTENCODING_ASCII_US));
+ DbgOutf( "SBX: Insert %s %s in %s",
+ ( pVar->GetClass() >= SbxCLASS_DONTCARE &&
+ pVar->GetClass() <= SbxCLASS_OBJECT )
+ ? pCls[ pVar->GetClass()-1 ] : "Unknown class", aNameStr1.getStr(), aNameStr1.getStr() );
#endif
}
}
@@ -483,12 +518,11 @@ void SbxObject::QuickInsert( SbxVariable* pVar )
{
switch( pVar->GetClass() )
{
- case SbxCLASS_VARIABLE:
- case SbxCLASS_PROPERTY: pArray = pProps; break;
- case SbxCLASS_METHOD: pArray = pMethods; break;
- case SbxCLASS_OBJECT: pArray = pObjs; break;
- default:
- DBG_ASSERT( !this, "Ungueltige SBX-Klasse" );
+ case SbxCLASS_VARIABLE:
+ case SbxCLASS_PROPERTY: pArray = pProps; break;
+ case SbxCLASS_METHOD: pArray = pMethods; break;
+ case SbxCLASS_OBJECT: pArray = pObjs; break;
+ default: DBG_ASSERT( !this, "Ungueltige SBX-Klasse" ); break;
}
}
if( pArray )
@@ -496,25 +530,29 @@ void SbxObject::QuickInsert( SbxVariable* pVar )
StartListening( pVar->GetBroadcaster(), sal_True );
pArray->Put( pVar, pArray->Count() );
if( pVar->GetParent() != this )
+ {
pVar->SetParent( this );
+ }
SetModified( sal_True );
#ifdef DBG_UTIL
- static const char* pCls[] =
- { "DontCare","Array","Value","Variable","Method","Property","Object" };
- XubString aVarName( pVar->GetName() );
- if ( !aVarName.Len() && pVar->ISA(SbxObject) )
- aVarName = PTR_CAST(SbxObject,pVar)->GetClassName();
- rtl::OString aNameStr1(rtl::OUStringToOString(aVarName, RTL_TEXTENCODING_ASCII_US));
- rtl::OString aNameStr2(rtl::OUStringToOString(SbxVariable::GetName(), RTL_TEXTENCODING_ASCII_US));
- DbgOutf( "SBX: Insert %s %s in %s",
- ( pVar->GetClass() >= SbxCLASS_DONTCARE &&
- pVar->GetClass() <= SbxCLASS_OBJECT )
- ? pCls[ pVar->GetClass()-1 ] : "Unknown class", aNameStr1.getStr(), aNameStr1.getStr() );
+ static const char* pCls[] =
+ { "DontCare","Array","Value","Variable","Method","Property","Object" };
+ OUString aVarName( pVar->GetName() );
+ if ( aVarName.isEmpty() && pVar->ISA(SbxObject) )
+ {
+ aVarName = PTR_CAST(SbxObject,pVar)->GetClassName();
+ }
+ rtl::OString aNameStr1(rtl::OUStringToOString(aVarName, RTL_TEXTENCODING_ASCII_US));
+ rtl::OString aNameStr2(rtl::OUStringToOString(SbxVariable::GetName(), RTL_TEXTENCODING_ASCII_US));
+ DbgOutf( "SBX: Insert %s %s in %s",
+ ( pVar->GetClass() >= SbxCLASS_DONTCARE &&
+ pVar->GetClass() <= SbxCLASS_OBJECT )
+ ? pCls[ pVar->GetClass()-1 ] : "Unknown class", aNameStr1.getStr(), aNameStr1.getStr() );
#endif
}
}
-void SbxObject::Remove( const XubString& rName, SbxClassType t )
+void SbxObject::Remove( const OUString& rName, SbxClassType t )
{
Remove( SbxObject::Find( rName, t ) );
}
@@ -526,20 +564,28 @@ void SbxObject::Remove( SbxVariable* pVar )
if( pArray && nIdx < pArray->Count() )
{
#ifdef DBG_UTIL
- XubString aVarName( pVar->GetName() );
- if ( !aVarName.Len() && pVar->ISA(SbxObject) )
- aVarName = PTR_CAST(SbxObject,pVar)->GetClassName();
- rtl::OString aNameStr1(rtl::OUStringToOString(aVarName, RTL_TEXTENCODING_ASCII_US));
- rtl::OString aNameStr2(rtl::OUStringToOString(SbxVariable::GetName(), RTL_TEXTENCODING_ASCII_US));
+ OUString aVarName( pVar->GetName() );
+ if ( aVarName.isEmpty() && pVar->ISA(SbxObject) )
+ {
+ aVarName = PTR_CAST(SbxObject,pVar)->GetClassName();
+ }
+ rtl::OString aNameStr1(rtl::OUStringToOString(aVarName, RTL_TEXTENCODING_ASCII_US));
+ rtl::OString aNameStr2(rtl::OUStringToOString(SbxVariable::GetName(), RTL_TEXTENCODING_ASCII_US));
#endif
SbxVariableRef pVar_ = pArray->Get( nIdx );
if( pVar_->IsBroadcaster() )
+ {
EndListening( pVar_->GetBroadcaster(), sal_True );
+ }
if( (SbxVariable*) pVar_ == pDfltProp )
+ {
pDfltProp = NULL;
+ }
pArray->Remove( nIdx );
if( pVar_->GetParent() == this )
+ {
pVar_->SetParent( NULL );
+ }
SetModified( sal_True );
Broadcast( SBX_HINT_OBJECTCHANGED );
}
@@ -549,7 +595,9 @@ static sal_Bool LoadArray( SvStream& rStrm, SbxObject* pThis, SbxArray* pArray )
{
SbxArrayRef p = (SbxArray*) SbxBase::Load( rStrm );
if( !p.Is() )
+ {
return sal_False;
+ }
for( sal_uInt16 i = 0; i < p->Count(); i++ )
{
SbxVariableRef& r = p->GetRef( i );
@@ -571,36 +619,47 @@ sal_Bool SbxObject::LoadData( SvStream& rStrm, sal_uInt16 nVer )
// Help for the read in of old objects: just TRUE back,
// LoadPrivateData() had to set the default status up
if( !nVer )
+ {
return sal_True;
-
+ }
pDfltProp = NULL;
if( !SbxVariable::LoadData( rStrm, nVer ) )
+ {
return sal_False;
+ }
// If it contains no alien object, insert ourselves
if( aData.eType == SbxOBJECT && !aData.pObj )
+ {
aData.pObj = this;
+ }
sal_uInt32 nSize;
- XubString aDfltProp;
- aClassName = read_lenPrefixed_uInt8s_ToOUString<sal_uInt16>(rStrm,
- RTL_TEXTENCODING_ASCII_US);
- aDfltProp = read_lenPrefixed_uInt8s_ToOUString<sal_uInt16>(rStrm,
- RTL_TEXTENCODING_ASCII_US);
+ OUString aDfltProp;
+ aClassName = read_lenPrefixed_uInt8s_ToOUString<sal_uInt16>(rStrm, RTL_TEXTENCODING_ASCII_US);
+ aDfltProp = read_lenPrefixed_uInt8s_ToOUString<sal_uInt16>(rStrm, RTL_TEXTENCODING_ASCII_US);
sal_uIntPtr nPos = rStrm.Tell();
rStrm >> nSize;
if( !LoadPrivateData( rStrm, nVer ) )
+ {
return sal_False;
+ }
sal_uIntPtr nNewPos = rStrm.Tell();
nPos += nSize;
DBG_ASSERT( nPos >= nNewPos, "SBX: Zu viele Daten eingelesen" );
if( nPos != nNewPos )
+ {
rStrm.Seek( nPos );
- if( !LoadArray( rStrm, this, pMethods )
- || !LoadArray( rStrm, this, pProps )
- || !LoadArray( rStrm, this, pObjs ) )
+ }
+ if( !LoadArray( rStrm, this, pMethods ) ||
+ !LoadArray( rStrm, this, pProps ) ||
+ !LoadArray( rStrm, this, pObjs ) )
+ {
return sal_False;
+ }
// Set properties
- if( aDfltProp.Len() )
+ if( !aDfltProp.isEmpty() )
+ {
pDfltProp = (SbxProperty*) pProps->Find( aDfltProp, SbxCLASS_PROPERTY );
+ }
SetModified( sal_False );
return sal_True;
}
@@ -608,118 +667,137 @@ sal_Bool SbxObject::LoadData( SvStream& rStrm, sal_uInt16 nVer )
sal_Bool SbxObject::StoreData( SvStream& rStrm ) const
{
if( !SbxVariable::StoreData( rStrm ) )
+ {
return sal_False;
- XubString aDfltProp;
+ }
+ OUString aDfltProp;
if( pDfltProp )
+ {
aDfltProp = pDfltProp->GetName();
+ }
write_lenPrefixed_uInt8s_FromOUString<sal_uInt16>(rStrm, aClassName, RTL_TEXTENCODING_ASCII_US);
write_lenPrefixed_uInt8s_FromOUString<sal_uInt16>(rStrm, aDfltProp, RTL_TEXTENCODING_ASCII_US);
sal_uIntPtr nPos = rStrm.Tell();
rStrm << (sal_uInt32) 0L;
if( !StorePrivateData( rStrm ) )
+ {
return sal_False;
+ }
sal_uIntPtr nNew = rStrm.Tell();
rStrm.Seek( nPos );
rStrm << (sal_uInt32) ( nNew - nPos );
rStrm.Seek( nNew );
if( !pMethods->Store( rStrm ) )
+ {
return sal_False;
+ }
if( !pProps->Store( rStrm ) )
+ {
return sal_False;
+ }
if( !pObjs->Store( rStrm ) )
+ {
return sal_False;
+ }
((SbxObject*) this)->SetModified( sal_False );
return sal_True;
}
-XubString SbxObject::GenerateSource( const XubString &rLinePrefix,
- const SbxObject* )
+OUString SbxObject::GenerateSource( const OUString &rLinePrefix,
+ const SbxObject* )
{
// Collect the properties in a String
- XubString aSource;
+ OUString aSource;
SbxArrayRef xProps( GetProperties() );
bool bLineFeed = false;
for ( sal_uInt16 nProp = 0; nProp < xProps->Count(); ++nProp )
{
SbxPropertyRef xProp = (SbxProperty*) xProps->Get(nProp);
- XubString aPropName( xProp->GetName() );
- if ( xProp->CanWrite()
- && !( xProp->GetHashCode() == nNameHash
- && aPropName.EqualsIgnoreCaseAscii( pNameProp ) ) )
+ OUString aPropName( xProp->GetName() );
+ if ( xProp->CanWrite() &&
+ !( xProp->GetHashCode() == nNameHash &&
+ aPropName.equalsIgnoreAsciiCase(pNameProp)))
{
// Insert a break except in front of the first property
if ( bLineFeed )
- aSource.AppendAscii( "\n" );
+ {
+ aSource += "\n";
+ }
else
+ {
bLineFeed = true;
-
+ }
aSource += rLinePrefix;
- aSource += '.';
+ aSource += ".";
aSource += aPropName;
- aSource.AppendAscii( " = " );
+ aSource += " = ";
// Display the property value textual
switch ( xProp->GetType() )
{
- case SbxEMPTY:
- case SbxNULL:
- // no value
- break;
-
- case SbxSTRING:
- {
- // Strings in quotation mark
- aSource.AppendAscii( "\"" );
- aSource += xProp->GetString();
- aSource.AppendAscii( "\"" );
- break;
- }
+ case SbxEMPTY:
+ case SbxNULL:
+ // no value
+ break;
+
+ case SbxSTRING:
+ // Strings in quotation mark
+ aSource += "\"";
+ aSource += xProp->GetOUString();
+ aSource += "\"";
+ break;
- default:
- {
- // miscellaneous, such as e.g.numerary directly
- aSource += xProp->GetString();
- break;
- }
+ default:
+ // miscellaneous, such as e.g.numerary directly
+ aSource += xProp->GetOUString();
+ break;
}
}
}
return aSource;
}
-static sal_Bool CollectAttrs( const SbxBase* p, XubString& rRes )
+static sal_Bool CollectAttrs( const SbxBase* p, OUString& rRes )
{
- XubString aAttrs;
+ OUString aAttrs;
if( p->IsHidden() )
- aAttrs.AssignAscii( "Hidden" );
+ {
+ aAttrs = "Hidden";
+ }
if( p->IsSet( SBX_EXTSEARCH ) )
{
- if( aAttrs.Len() )
- aAttrs += ',';
- aAttrs.AppendAscii( "ExtSearch" );
+ if( !aAttrs.isEmpty() )
+ {
+ aAttrs += ",";
+ }
+ aAttrs += "ExtSearch";
}
if( !p->IsVisible() )
{
- if( aAttrs.Len() )
- aAttrs += ',';
- aAttrs.AppendAscii( "Invisible" );
+ if( !aAttrs.isEmpty() )
+ {
+ aAttrs += ",";
+ }
+ aAttrs += "Invisible";
}
if( p->IsSet( SBX_DONTSTORE ) )
{
- if( aAttrs.Len() )
- aAttrs += ',';
- aAttrs.AppendAscii( "DontStore" );
+ if( !aAttrs.isEmpty() )
+ {
+ aAttrs += ",";
+ }
+ aAttrs += "DontStore";
}
- if( aAttrs.Len() )
+ if( !aAttrs.isEmpty() )
{
- rRes.AssignAscii( " (" );
+ rRes = " (";
rRes += aAttrs;
- rRes += ')';
+ rRes += ")";
return sal_True;
}
else
{
- rRes.Erase();
+ rRes = "";
return sal_False;
}
}
@@ -734,14 +812,16 @@ void SbxObject::Dump( SvStream& rStrm, sal_Bool bFill )
return;
}
++nLevel;
- String aIndent;
+ OUString aIndent("");
for ( sal_uInt16 n = 1; n < nLevel; ++n )
- aIndent.AppendAscii( " " );
-
+ {
+ aIndent += " ";
+ }
// if necessary complete the object
if ( bFill )
+ {
GetAll( SbxCLASS_DONTCARE );
-
+ }
// Output the data of the object itself
rtl::OString aNameStr(rtl::OUStringToOString(GetName(), RTL_TEXTENCODING_ASCII_US));
rtl::OString aClassNameStr(rtl::OUStringToOString(aClassName, RTL_TEXTENCODING_ASCII_US));
@@ -760,13 +840,15 @@ void SbxObject::Dump( SvStream& rStrm, sal_Bool bFill )
<< "=='" << ( aParentNameStr.isEmpty() ? "<unnamed>" : aParentNameStr.getStr() ) << "'";
}
else
+ {
rStrm << "no parent ";
+ }
rStrm << " )" << endl;
rtl::OString aIndentNameStr(rtl::OUStringToOString(aIndent, RTL_TEXTENCODING_ASCII_US));
rStrm << aIndentNameStr.getStr() << "{" << endl;
// Flags
- XubString aAttrs;
+ OUString aAttrs;
if( CollectAttrs( this, aAttrs ) )
{
rtl::OString aAttrStr(rtl::OUStringToOString(aAttrs, RTL_TEXTENCODING_ASCII_US));
@@ -781,14 +863,18 @@ void SbxObject::Dump( SvStream& rStrm, sal_Bool bFill )
SbxVariable* pVar = r;
if( pVar )
{
- XubString aLine( aIndent );
- aLine.AppendAscii( " - " );
+ OUString aLine( aIndent );
+ aLine += " - ";
aLine += pVar->GetName( SbxNAME_SHORT_TYPES );
- XubString aAttrs2;
+ OUString aAttrs2;
if( CollectAttrs( pVar, aAttrs2 ) )
+ {
aLine += aAttrs2;
+ }
if( !pVar->IsA( TYPE(SbxMethod) ) )
- aLine.AppendAscii( " !! Not a Method !!" );
+ {
+ aLine += " !! Not a Method !!";
+ }
write_lenPrefixed_uInt8s_FromOUString<sal_uInt16>(rStrm, aLine, RTL_TEXTENCODING_ASCII_US);
// Output also the object at object-methods
@@ -801,7 +887,9 @@ void SbxObject::Dump( SvStream& rStrm, sal_Bool bFill )
((SbxObject*) pVar->GetValues_Impl().pObj)->Dump( rStrm, bFill );
}
else
+ {
rStrm << endl;
+ }
}
}
@@ -814,14 +902,18 @@ void SbxObject::Dump( SvStream& rStrm, sal_Bool bFill )
SbxVariable* pVar = r;
if( pVar )
{
- XubString aLine( aIndent );
- aLine.AppendAscii( " - " );
+ OUString aLine( aIndent );
+ aLine += " - ";
aLine += pVar->GetName( SbxNAME_SHORT_TYPES );
- XubString aAttrs3;
+ OUString aAttrs3;
if( CollectAttrs( pVar, aAttrs3 ) )
+ {
aLine += aAttrs3;
+ }
if( !pVar->IsA( TYPE(SbxProperty) ) )
- aLine.AppendAscii( " !! Not a Property !!" );
+ {
+ aLine += " !! Not a Property !!";
+ }
write_lenPrefixed_uInt8s_FromOUString<sal_uInt16>(rStrm, aLine, RTL_TEXTENCODING_ASCII_US);
// output also the object at object properties
@@ -834,7 +926,9 @@ void SbxObject::Dump( SvStream& rStrm, sal_Bool bFill )
((SbxObject*) pVar->GetValues_Impl().pObj)->Dump( rStrm, bFill );
}
else
+ {
rStrm << endl;
+ }
}
}
}
@@ -850,9 +944,13 @@ void SbxObject::Dump( SvStream& rStrm, sal_Bool bFill )
{
rStrm << aIndentNameStr.getStr() << " - Sub";
if ( pVar->ISA(SbxObject) )
+ {
((SbxObject*) pVar)->Dump( rStrm, bFill );
+ }
else if ( pVar->ISA(SbxVariable) )
+ {
((SbxVariable*) pVar)->Dump( rStrm, bFill );
+ }
}
}
}
@@ -861,7 +959,7 @@ void SbxObject::Dump( SvStream& rStrm, sal_Bool bFill )
--nLevel;
}
-SbxMethod::SbxMethod( const String& r, SbxDataType t )
+SbxMethod::SbxMethod( const OUString& r, SbxDataType t )
: SbxVariable( t )
{
SetName( r );
@@ -881,7 +979,7 @@ SbxClassType SbxMethod::GetClass() const
return SbxCLASS_METHOD;
}
-SbxProperty::SbxProperty( const String& r, SbxDataType t )
+SbxProperty::SbxProperty( const OUString& r, SbxDataType t )
: SbxVariable( t )
{
SetName( r );