blob: 8eb8d61ca6826cadea0ff76a2043bdaa0d0a462f [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
#ifndef _SBX_SBXOBJECT_HXX
#define _SBX_SBXOBJECT_HXX
#include <svl/lstner.hxx>
#include <basic/sbxvar.hxx>
///////////////////////////////////////////////////////////////////////////
class SbxProperty;
class SvDispatch;
class SbxObjectImpl;
class SbxObject : public SbxVariable, public SfxListener
{
SbxObjectImpl* mpSbxObjectImpl; // Impl data
SbxArray* FindVar( SbxVariable*, sal_uInt16& );
// AB 23.3.1997, special method for VCPtrRemove (see below)
SbxArray* VCPtrFindVar( SbxVariable*, sal_uInt16& );
protected:
SbxArrayRef pMethods; // Methods
SbxArrayRef pProps; // Properties
SbxArrayRef pObjs; // Objects
SbxProperty* pDfltProp; // Default-Property
String aClassName; // Classname
String aDfltPropName;
virtual sal_Bool LoadData( SvStream&, sal_uInt16 );
virtual sal_Bool StoreData( SvStream& ) const;
virtual ~SbxObject();
virtual void SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId& rBCType,
const SfxHint& rHint, const TypeId& rHintType );
public:
SBX_DECL_PERSIST_NODATA(SBXCR_SBX,SBXID_OBJECT,1);
TYPEINFO();
SbxObject( const String& rClassname );
SbxObject( const SbxObject& );
SbxObject& operator=( const SbxObject& );
virtual SbxDataType GetType() const;
virtual SbxClassType GetClass() const;
virtual void Clear();
virtual sal_Bool IsClass( const String& ) const;
const String& GetClassName() const { return aClassName; }
void SetClassName( const String &rNew ) { aClassName = rNew; }
// Default-Property
SbxProperty* GetDfltProperty();
void SetDfltProperty( const String& r );
void SetDfltProperty( SbxProperty* );
// Search for an element
virtual SbxVariable* FindUserData( sal_uInt32 nUserData );
virtual SbxVariable* Find( const String&, SbxClassType );
SbxVariable* FindQualified( const String&, SbxClassType );
// Quick-Call-Interface for Methods
virtual sal_Bool Call( const String&, SbxArray* = NULL );
// Execution of DDE-Commands
SbxVariable* Execute( const String& );
// Manage elements
virtual sal_Bool GetAll( SbxClassType ) { return sal_True; }
SbxVariable* Make( const String&, SbxClassType, SbxDataType );
virtual SbxObject* MakeObject( const String&, const String& );
virtual void Insert( SbxVariable* );
// AB 23.4.1997, Optimization, Insertion without check for duplicate Entries and
// without Broadcasts, only used in SO2/auto.cxx
void QuickInsert( SbxVariable* );
// AB 23.3.1997, Special-Method, allow corresponding controls
void VCPtrInsert( SbxVariable* );
virtual void Remove( const String&, SbxClassType );
virtual void Remove( SbxVariable* );
// AB 23.3.1997, deletion per pointer for controls (duplicate names!)
void VCPtrRemove( SbxVariable* );
void SetPos( SbxVariable*, sal_uInt16 );
// Macro-Recording
virtual String GenerateSource( const String &rLinePrefix,
const SbxObject *pRelativeTo );
// Direct access on arrays
SbxArray* GetMethods() { return pMethods; }
SbxArray* GetProperties() { return pProps; }
SbxArray* GetObjects() { return pObjs; }
// Hooks
virtual SvDispatch* GetSvDispatch();
// Debugging
void Dump( SvStream&, sal_Bool bDumpAll=sal_False );
static void GarbageCollection( sal_uIntPtr nObjects = 0 /* ::= all */ );
};
#ifndef __SBX_SBXOBJECTREF_HXX
#ifndef SBX_OBJECT_DECL_DEFINED
#define SBX_OBJECT_DECL_DEFINED
SV_DECL_REF(SbxObject)
#endif
SV_IMPL_REF(SbxObject)
#endif /* __SBX_SBXOBJECTREF_HXX */
#endif /* _SBX_SBXOBJECT_HXX */