summaryrefslogtreecommitdiff
path: root/basic/source/sbx/sbxbase.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'basic/source/sbx/sbxbase.cxx')
-rw-r--r--basic/source/sbx/sbxbase.cxx460
1 files changed, 0 insertions, 460 deletions
diff --git a/basic/source/sbx/sbxbase.cxx b/basic/source/sbx/sbxbase.cxx
deleted file mode 100644
index 4eccd7fd17..0000000000
--- a/basic/source/sbx/sbxbase.cxx
+++ /dev/null
@@ -1,460 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_basic.hxx"
-
-
-#include <tools/shl.hxx>
-#include <tools/stream.hxx>
-
-#include <basic/sbx.hxx>
-#include <basic/sbxfac.hxx>
-#include <basic/sbxbase.hxx>
-
-#include <rtl/strbuf.hxx>
-
-// AppData-Structure for SBX:
-
-SV_IMPL_PTRARR(SbxParams,SbxParamInfo*);
-SV_IMPL_PTRARR(SbxFacs,SbxFactory*);
-
-TYPEINIT0(SbxBase)
-
-// Request SBX-Data or if necessary create them
-// we just create the area and waive the release!
-
-SbxAppData* GetSbxData_Impl()
-{
- SbxAppData** ppData = (SbxAppData**) ::GetAppData( SHL_SBX );
- SbxAppData* p = *ppData;
- if( !p )
- p = *ppData = new SbxAppData;
- return p;
-}
-
-SbxAppData::~SbxAppData()
-{
- if( pBasicFormater )
- delete pBasicFormater;
-}
-
-
-//////////////////////////////// SbxBase /////////////////////////////////
-
-DBG_NAME(SbxBase);
-
-SbxBase::SbxBase()
-{
- DBG_CTOR( SbxBase, 0 );
- nFlags = SBX_READWRITE;
-}
-
-SbxBase::SbxBase( const SbxBase& r )
- : SvRefBase( r )
-{
- DBG_CTOR( SbxBase, 0 );
- nFlags = r.nFlags;
-}
-
-SbxBase::~SbxBase()
-{
- DBG_DTOR(SbxBase,0);
-}
-
-SbxBase& SbxBase::operator=( const SbxBase& r )
-{
- DBG_CHKTHIS( SbxBase, 0 );
- nFlags = r.nFlags;
- return *this;
-}
-
-SbxDataType SbxBase::GetType() const
-{
- DBG_CHKTHIS( SbxBase, 0 );
- return SbxEMPTY;
-}
-
-SbxClassType SbxBase::GetClass() const
-{
- DBG_CHKTHIS( SbxBase, 0 );
- return SbxCLASS_DONTCARE;
-}
-
-void SbxBase::Clear()
-{
- DBG_CHKTHIS( SbxBase, 0 );
-}
-
-sal_Bool SbxBase::IsFixed() const
-{
- DBG_CHKTHIS( SbxBase, 0 );
- return IsSet( SBX_FIXED );
-}
-
-void SbxBase::SetModified( sal_Bool b )
-{
- DBG_CHKTHIS( SbxBase, 0 );
- if( IsSet( SBX_NO_MODIFY ) )
- return;
- if( b )
- SetFlag( SBX_MODIFIED );
- else
- ResetFlag( SBX_MODIFIED );
-}
-
-SbxError SbxBase::GetError()
-{
- return GetSbxData_Impl()->eSbxError;
-}
-
-void SbxBase::SetError( SbxError e )
-{
- SbxAppData* p = GetSbxData_Impl();
- if( e && p->eSbxError == SbxERR_OK )
- p->eSbxError = e;
-}
-
-sal_Bool SbxBase::IsError()
-{
- return sal_Bool( GetSbxData_Impl()->eSbxError != SbxERR_OK );
-}
-
-void SbxBase::ResetError()
-{
- GetSbxData_Impl()->eSbxError = SbxERR_OK;
-}
-
-void SbxBase::AddFactory( SbxFactory* pFac )
-{
- SbxAppData* p = GetSbxData_Impl();
- const SbxFactory* pTemp = pFac;
-
- // From 1996-03-06: take the HandleLast-Flag into account
- sal_uInt16 nPos = p->aFacs.Count(); // Insert position
- if( !pFac->IsHandleLast() ) // Only if not self HandleLast
- {
- // Rank new factory in front of factories with HandleLast
- while( nPos > 0 &&
- (static_cast<SbxFactory*>(p->aFacs.GetObject( nPos-1 )))->IsHandleLast() )
- nPos--;
- }
- p->aFacs.Insert( pTemp, nPos );
-}
-
-void SbxBase::RemoveFactory( SbxFactory* pFac )
-{
- SbxAppData* p = GetSbxData_Impl();
- for( sal_uInt16 i = 0; i < p->aFacs.Count(); i++ )
- {
- if( p->aFacs.GetObject( i ) == pFac )
- {
- p->aFacs.Remove( i, 1 ); break;
- }
- }
-}
-
-
-SbxBase* SbxBase::Create( sal_uInt16 nSbxId, sal_uInt32 nCreator )
-{
- // #91626: Hack to skip old Basic dialogs
- // Problem: There does not exist a factory any more,
- // so we have to create a dummy SbxVariable instead
- if( nSbxId == 0x65 ) // Dialog Id
- return new SbxVariable;
-
- XubString aEmptyStr;
- if( nCreator == SBXCR_SBX )
- switch( nSbxId )
- {
- case SBXID_VALUE: return new SbxValue;
- case SBXID_VARIABLE: return new SbxVariable;
- case SBXID_ARRAY: return new SbxArray;
- case SBXID_DIMARRAY: return new SbxDimArray;
- case SBXID_OBJECT: return new SbxObject( aEmptyStr );
- case SBXID_COLLECTION: return new SbxCollection( aEmptyStr );
- case SBXID_FIXCOLLECTION:
- return new SbxStdCollection( aEmptyStr, aEmptyStr );
- case SBXID_METHOD: return new SbxMethod( aEmptyStr, SbxEMPTY );
- case SBXID_PROPERTY: return new SbxProperty( aEmptyStr, SbxEMPTY );
- }
- // Unknown type: go over the factories!
- SbxAppData* p = GetSbxData_Impl();
- SbxBase* pNew = NULL;
- for( sal_uInt16 i = 0; i < p->aFacs.Count(); i++ )
- {
- SbxFactory* pFac = p->aFacs.GetObject( i );
- pNew = pFac->Create( nSbxId, nCreator );
- if( pNew )
- break;
- }
-#ifdef DBG_UTIL
- if( !pNew )
- {
- rtl::OStringBuffer aMsg(
- RTL_CONSTASCII_STRINGPARAM("SBX: Keine Factory fuer SBX-ID "));
- aMsg.append(static_cast<sal_Int32>(nSbxId));
- DbgError(aMsg.getStr());
- }
-#endif
- return pNew;
-}
-
-SbxObject* SbxBase::CreateObject( const XubString& rClass )
-{
- SbxAppData* p = GetSbxData_Impl();
- SbxObject* pNew = NULL;
- for( sal_uInt16 i = 0; i < p->aFacs.Count(); i++ )
- {
- pNew = p->aFacs.GetObject( i )->CreateObject( rClass );
- if( pNew )
- break;
- }
-#ifdef DBG_UTIL
- if( !pNew )
- {
- ByteString aMsg( "SBX: Keine Factory fuer Objektklasse " );
- ByteString aClassStr( (const UniString&)rClass, RTL_TEXTENCODING_ASCII_US );
- aMsg += aClassStr;
- DbgError( (const char*)aMsg.GetBuffer() );
- }
-#endif
- return pNew;
-}
-
-static sal_Bool bStaticEnableBroadcasting = sal_True;
-
-// Sbx-Solution in exchange for SfxBroadcaster::Enable()
-void SbxBase::StaticEnableBroadcasting( sal_Bool bEnable )
-{
- bStaticEnableBroadcasting = bEnable;
-}
-
-sal_Bool SbxBase::StaticIsEnabledBroadcasting( void )
-{
- return bStaticEnableBroadcasting;
-}
-
-
-SbxBase* SbxBase::Load( SvStream& rStrm )
-{
- sal_uInt16 nSbxId, nFlags, nVer;
- sal_uInt32 nCreator, nSize;
- rStrm >> nCreator >> nSbxId >> nFlags >> nVer;
-
- // Correcting a foolishness of mine:
- if( nFlags & SBX_RESERVED )
- nFlags = ( nFlags & ~SBX_RESERVED ) | SBX_GBLSEARCH;
-
- sal_uIntPtr nOldPos = rStrm.Tell();
- rStrm >> nSize;
- SbxBase* p = Create( nSbxId, nCreator );
- if( p )
- {
- p->nFlags = nFlags;
- if( p->LoadData( rStrm, nVer ) )
- {
- sal_uIntPtr nNewPos = rStrm.Tell();
- nOldPos += nSize;
- DBG_ASSERT( nOldPos >= nNewPos, "SBX: Zu viele Daten eingelesen" );
- if( nOldPos != nNewPos )
- rStrm.Seek( nOldPos );
- if( !p->LoadCompleted() )
- {
- // Deleting of the object
- SbxBaseRef aRef( p );
- p = NULL;
- }
- }
- else
- {
- rStrm.SetError( SVSTREAM_FILEFORMAT_ERROR );
- // Deleting of the object
- SbxBaseRef aRef( p );
- p = NULL;
- }
- }
- else
- rStrm.SetError( SVSTREAM_FILEFORMAT_ERROR );
- return p;
-}
-
-// Skip the Sbx-Object inside the stream
-void SbxBase::Skip( SvStream& rStrm )
-{
- sal_uInt16 nSbxId, nFlags, nVer;
- sal_uInt32 nCreator, nSize;
- rStrm >> nCreator >> nSbxId >> nFlags >> nVer;
-
- sal_uIntPtr nStartPos = rStrm.Tell();
- rStrm >> nSize;
-
- rStrm.Seek( nStartPos + nSize );
-}
-
-sal_Bool SbxBase::Store( SvStream& rStrm )
-{
- DBG_CHKTHIS( SbxBase, 0 );
- if( !( nFlags & SBX_DONTSTORE ) )
- {
- rStrm << (sal_uInt32) GetCreator()
- << (sal_uInt16) GetSbxId()
- << (sal_uInt16) GetFlags()
- << (sal_uInt16) GetVersion();
- sal_uIntPtr nOldPos = rStrm.Tell();
- rStrm << (sal_uInt32) 0L;
- sal_Bool bRes = StoreData( rStrm );
- sal_uIntPtr nNewPos = rStrm.Tell();
- rStrm.Seek( nOldPos );
- rStrm << (sal_uInt32) ( nNewPos - nOldPos );
- rStrm.Seek( nNewPos );
- if( rStrm.GetError() != SVSTREAM_OK )
- bRes = sal_False;
- if( bRes )
- bRes = StoreCompleted();
- return bRes;
- }
- else
- return sal_True;
-}
-
-sal_Bool SbxBase::LoadData( SvStream&, sal_uInt16 )
-{
- DBG_CHKTHIS( SbxBase, 0 );
- return sal_False;
-}
-
-sal_Bool SbxBase::StoreData( SvStream& ) const
-{
- DBG_CHKTHIS( SbxBase, 0 );
- return sal_False;
-}
-
-sal_Bool SbxBase::LoadPrivateData( SvStream&, sal_uInt16 )
-{
- DBG_CHKTHIS( SbxBase, 0 );
- return sal_True;
-}
-
-sal_Bool SbxBase::StorePrivateData( SvStream& ) const
-{
- DBG_CHKTHIS( SbxBase, 0 );
- return sal_True;
-}
-
-sal_Bool SbxBase::LoadCompleted()
-{
- DBG_CHKTHIS( SbxBase, 0 );
- return sal_True;
-}
-
-sal_Bool SbxBase::StoreCompleted()
-{
- DBG_CHKTHIS( SbxBase, 0 );
- return sal_True;
-}
-
-//////////////////////////////// SbxFactory ////////////////////////////////
-
-SbxBase* SbxFactory::Create( sal_uInt16, sal_uInt32 )
-{
- return NULL;
-}
-
-SbxObject* SbxFactory::CreateObject( const XubString& )
-{
- return NULL;
-}
-
-///////////////////////////////// SbxInfo //////////////////////////////////
-
-SbxInfo::~SbxInfo()
-{}
-
-void SbxInfo::AddParam
- ( const XubString& rName, SbxDataType eType, sal_uInt16 nFlags )
-{
- const SbxParamInfo* p = new SbxParamInfo( rName, eType, nFlags );
- aParams.Insert( p, aParams.Count() );
-}
-
-void SbxInfo::AddParam( const SbxParamInfo& r )
-{
- const SbxParamInfo* p = new SbxParamInfo
- ( r.aName, r.eType, r.nFlags, r.aTypeRef );
- aParams.Insert( p, aParams.Count() );
-}
-
-const SbxParamInfo* SbxInfo::GetParam( sal_uInt16 n ) const
-{
- if( n < 1 || n > aParams.Count() )
- return NULL;
- else
- return aParams.GetObject( n-1 );
-}
-
-sal_Bool SbxInfo::LoadData( SvStream& rStrm, sal_uInt16 nVer )
-{
- aParams.Remove( 0, aParams.Count() );
- sal_uInt16 nParam;
- rStrm.ReadByteString( aComment, RTL_TEXTENCODING_ASCII_US );
- rStrm.ReadByteString( aHelpFile, RTL_TEXTENCODING_ASCII_US );
- rStrm >> nHelpId >> nParam;
- while( nParam-- )
- {
- XubString aName;
- sal_uInt16 nType, nFlags;
- sal_uInt32 nUserData = 0;
- rStrm.ReadByteString( aName, RTL_TEXTENCODING_ASCII_US );
- rStrm >> nType >> nFlags;
- if( nVer > 1 )
- rStrm >> nUserData;
- AddParam( aName, (SbxDataType) nType, nFlags );
- SbxParamInfo* p = aParams.GetObject( aParams.Count() - 1 );
- p->nUserData = nUserData;
- }
- return sal_True;
-}
-
-sal_Bool SbxInfo::StoreData( SvStream& rStrm ) const
-{
- rStrm.WriteByteString( aComment, RTL_TEXTENCODING_ASCII_US );
- rStrm.WriteByteString( aHelpFile, RTL_TEXTENCODING_ASCII_US );
- rStrm << nHelpId << aParams.Count();
- for( sal_uInt16 i = 0; i < aParams.Count(); i++ )
- {
- SbxParamInfo* p = aParams.GetObject( i );
- rStrm.WriteByteString( p->aName, RTL_TEXTENCODING_ASCII_US );
- rStrm << (sal_uInt16) p->eType
- << (sal_uInt16) p->nFlags
- << (sal_uInt32) p->nUserData;
- }
- return sal_True;
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */