2000-09-18 15:18:56 +00:00
|
|
|
/*************************************************************************
|
|
|
|
*
|
2008-04-11 10:58:15 +00:00
|
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
2005-09-29 12:02:15 +00:00
|
|
|
*
|
2010-02-12 15:01:35 +01:00
|
|
|
* Copyright 2000, 2010 Oracle and/or its affiliates.
|
2005-09-29 12:02:15 +00:00
|
|
|
*
|
2008-04-11 10:58:15 +00:00
|
|
|
* OpenOffice.org - a multi-platform office productivity suite
|
2000-09-18 15:18:56 +00:00
|
|
|
*
|
2008-04-11 10:58:15 +00:00
|
|
|
* This file is part of OpenOffice.org.
|
2000-09-18 15:18:56 +00:00
|
|
|
*
|
2008-04-11 10:58:15 +00:00
|
|
|
* 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.
|
2000-09-18 15:18:56 +00:00
|
|
|
*
|
2008-04-11 10:58:15 +00:00
|
|
|
* 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).
|
2000-09-18 15:18:56 +00:00
|
|
|
*
|
2008-04-11 10:58:15 +00:00
|
|
|
* 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.
|
2000-09-18 15:18:56 +00:00
|
|
|
*
|
|
|
|
************************************************************************/
|
|
|
|
|
|
|
|
#ifndef _SB_INTERN_HXX
|
|
|
|
#define _SB_INTERN_HXX
|
|
|
|
|
2007-06-27 13:22:17 +00:00
|
|
|
#include <basic/sbxfac.hxx>
|
2001-11-26 15:29:09 +00:00
|
|
|
#include <unotools/transliterationwrapper.hxx>
|
2000-09-18 15:18:56 +00:00
|
|
|
#include "sb.hxx"
|
|
|
|
|
2008-10-10 13:02:43 +00:00
|
|
|
namespace utl
|
|
|
|
{
|
|
|
|
class TransliterationWrapper;
|
|
|
|
}
|
2000-09-18 15:18:56 +00:00
|
|
|
class SbUnoFactory;
|
2004-03-17 12:34:46 +00:00
|
|
|
class SbTypeFactory;
|
|
|
|
class SbOLEFactory;
|
2010-06-15 20:02:53 +02:00
|
|
|
class SbFormFactory;
|
2000-09-18 15:18:56 +00:00
|
|
|
class SbiInstance;
|
|
|
|
class SbModule;
|
|
|
|
|
|
|
|
class SbiFactory : public SbxFactory
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
virtual SbxBase* Create( UINT16 nSbxId, UINT32 = SBXCR_SBX );
|
|
|
|
virtual SbxObject* CreateObject( const String& );
|
|
|
|
};
|
|
|
|
|
2010-08-05 11:52:07 +02:00
|
|
|
typedef ::std::vector< String > StringVector;
|
|
|
|
|
2005-03-29 10:51:28 +00:00
|
|
|
struct SbClassData
|
|
|
|
{
|
|
|
|
SbxArrayRef mxIfaces;
|
|
|
|
|
2010-08-05 11:52:07 +02:00
|
|
|
// types this module depends on because of use in Dim As New <type>
|
|
|
|
// needed for initialization order of class modules
|
|
|
|
StringVector maRequiredTypes;
|
|
|
|
|
2005-03-29 10:51:28 +00:00
|
|
|
SbClassData( void );
|
|
|
|
~SbClassData( void )
|
|
|
|
{ clear(); }
|
|
|
|
void clear( void );
|
|
|
|
};
|
|
|
|
|
2004-11-02 10:56:34 +00:00
|
|
|
// #115824: Factory class to create class objects (type command)
|
|
|
|
// Implementation: sb.cxx
|
|
|
|
class SbClassFactory : public SbxFactory
|
|
|
|
{
|
|
|
|
SbxObjectRef xClassModules;
|
|
|
|
|
|
|
|
public:
|
|
|
|
SbClassFactory( void );
|
2006-06-19 16:44:19 +00:00
|
|
|
virtual ~SbClassFactory();
|
2004-11-02 10:56:34 +00:00
|
|
|
|
|
|
|
void AddClassModule( SbModule* pClassModule );
|
|
|
|
void RemoveClassModule( SbModule* pClassModule );
|
|
|
|
|
|
|
|
virtual SbxBase* Create( UINT16 nSbxId, UINT32 = SBXCR_SBX );
|
|
|
|
virtual SbxObject* CreateObject( const String& );
|
2005-03-29 10:51:28 +00:00
|
|
|
|
|
|
|
SbModule* FindClass( const String& rClassName );
|
2004-11-02 10:56:34 +00:00
|
|
|
};
|
|
|
|
|
2000-09-18 15:18:56 +00:00
|
|
|
// Stack fuer die im Fehlerfall abgebaute SbiRuntime Kette
|
|
|
|
class SbErrorStackEntry
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
SbErrorStackEntry(SbMethodRef aM, xub_StrLen nL, xub_StrLen nC1, xub_StrLen nC2)
|
|
|
|
: aMethod(aM), nLine(nL), nCol1(nC1), nCol2(nC2) {}
|
|
|
|
SbMethodRef aMethod;
|
|
|
|
xub_StrLen nLine;
|
|
|
|
xub_StrLen nCol1, nCol2;
|
|
|
|
};
|
|
|
|
|
|
|
|
SV_DECL_PTRARR_DEL(SbErrorStack, SbErrorStackEntry*, 1, 1)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
struct SbiGlobals
|
|
|
|
{
|
|
|
|
SbiInstance* pInst; // alle aktiven Runtime-Instanzen
|
|
|
|
SbiFactory* pSbFac; // StarBASIC-Factory
|
|
|
|
SbUnoFactory* pUnoFac; // Factory fuer Uno-Structs bei DIM AS NEW
|
2004-03-17 12:34:46 +00:00
|
|
|
SbTypeFactory* pTypeFac; // Factory for user defined types
|
2004-11-02 10:56:34 +00:00
|
|
|
SbClassFactory* pClassFac; // Factory for user defined classes (based on class modules)
|
2004-03-17 12:34:46 +00:00
|
|
|
SbOLEFactory* pOLEFac; // Factory for OLE types
|
2010-06-15 20:02:53 +02:00
|
|
|
SbFormFactory* pFormFac; // Factory for user forms
|
2000-09-18 15:18:56 +00:00
|
|
|
SbModule* pMod; // aktuell aktives Modul
|
|
|
|
SbModule* pCompMod; // aktuell compiliertes Modul
|
|
|
|
short nInst; // Anzahl BASICs
|
|
|
|
Link aErrHdl; // globaler Error-Handler
|
|
|
|
Link aBreakHdl; // globaler Break-Handler
|
|
|
|
SbError nCode; // aktueller Fehlercode
|
|
|
|
xub_StrLen nLine; // aktuelle Zeile
|
|
|
|
xub_StrLen nCol1,nCol2; // aktuelle Spalten (von,bis)
|
|
|
|
BOOL bCompiler; // Flag fuer Compiler-Error
|
|
|
|
BOOL bGlobalInitErr; // Beim GlobalInit trat ein Compiler-Fehler auf
|
|
|
|
BOOL bRunInit; // TRUE, wenn RunInit vom Basic aktiv ist
|
|
|
|
String aErrMsg; // Puffer fuer GetErrorText()
|
|
|
|
SbLanguageMode eLanguageMode; // Flag fuer Visual-Basic-Script-Modus
|
|
|
|
SbErrorStack* pErrStack; // Stack fuer die im Fehlerfall abgebaute SbiRuntime Kette
|
2001-11-26 15:29:09 +00:00
|
|
|
::utl::TransliterationWrapper* pTransliterationWrapper; // For StrComp
|
2003-03-18 15:28:40 +00:00
|
|
|
BOOL bBlockCompilerError;
|
2004-11-09 11:24:48 +00:00
|
|
|
BasicManager* pAppBasMgr;
|
2007-08-03 08:55:43 +00:00
|
|
|
StarBASIC* pMSOMacroRuntimLib; // Lib containing MSO Macro Runtime API entry symbols
|
2000-09-18 15:18:56 +00:00
|
|
|
|
|
|
|
SbiGlobals();
|
|
|
|
~SbiGlobals();
|
|
|
|
};
|
|
|
|
|
|
|
|
// Utility-Makros und -Routinen
|
|
|
|
|
|
|
|
SbiGlobals* GetSbData();
|
|
|
|
|
|
|
|
#define pINST GetSbData()->pInst
|
|
|
|
#define pMOD GetSbData()->pMod
|
|
|
|
#define pCMOD GetSbData()->pCompMod
|
|
|
|
#define pSBFAC GetSbData()->pSbFac
|
|
|
|
#define pUNOFAC GetSbData()->pUnoFac
|
2004-03-17 12:34:46 +00:00
|
|
|
#define pTYPEFAC GetSbData()->pTypeFac
|
2004-11-02 10:56:34 +00:00
|
|
|
#define pCLASSFAC GetSbData()->pClassFac
|
2004-03-17 12:34:46 +00:00
|
|
|
#define pOLEFAC GetSbData()->pOLEFac
|
2010-06-15 20:02:53 +02:00
|
|
|
#define pFORMFAC GetSbData()->pFormFac
|
2000-09-18 15:18:56 +00:00
|
|
|
|
|
|
|
#endif
|
|
|
|
|