127 lines
4.2 KiB
C++
127 lines
4.2 KiB
C++
/* -*- 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.
|
|
*
|
|
************************************************************************/
|
|
|
|
#ifndef _SB_INTERN_HXX
|
|
#define _SB_INTERN_HXX
|
|
|
|
#include <basic/basicdllapi.h>
|
|
#include <basic/sbxfac.hxx>
|
|
#include <unotools/transliterationwrapper.hxx>
|
|
#include "sb.hxx"
|
|
|
|
namespace utl
|
|
{
|
|
class TransliterationWrapper;
|
|
}
|
|
class SbUnoFactory;
|
|
class SbTypeFactory;
|
|
class SbOLEFactory;
|
|
class SbFormFactory;
|
|
class SbiInstance;
|
|
class SbModule;
|
|
|
|
class SbiFactory : public SbxFactory
|
|
{
|
|
public:
|
|
virtual SbxBase* Create( sal_uInt16 nSbxId, sal_uInt32 = SBXCR_SBX );
|
|
virtual SbxObject* CreateObject( const String& );
|
|
};
|
|
|
|
typedef ::std::vector< String > StringVector;
|
|
|
|
struct SbClassData
|
|
{
|
|
SbxArrayRef mxIfaces;
|
|
|
|
// types this module depends on because of use in Dim As New <type>
|
|
// needed for initialization order of class modules
|
|
StringVector maRequiredTypes;
|
|
|
|
SbClassData( void );
|
|
~SbClassData( void )
|
|
{ clear(); }
|
|
void clear( void );
|
|
};
|
|
|
|
// #115824: Factory class to create class objects (type command)
|
|
// Implementation: sb.cxx
|
|
class BASIC_DLLPUBLIC SbClassFactory : public SbxFactory
|
|
{
|
|
SbxObjectRef xClassModules;
|
|
|
|
public:
|
|
SbClassFactory( void );
|
|
virtual ~SbClassFactory();
|
|
|
|
void AddClassModule( SbModule* pClassModule );
|
|
void RemoveClassModule( SbModule* pClassModule );
|
|
|
|
virtual SbxBase* Create( sal_uInt16 nSbxId, sal_uInt32 = SBXCR_SBX );
|
|
virtual SbxObject* CreateObject( const String& );
|
|
|
|
SbModule* FindClass( const String& rClassName );
|
|
};
|
|
|
|
struct SbiGlobals
|
|
{
|
|
SbiInstance* pInst; // all active runtime instances
|
|
SbiFactory* pSbFac; // StarBASIC-Factory
|
|
SbUnoFactory* pUnoFac; // Factory for Uno-Structs at DIM AS NEW
|
|
SbTypeFactory* pTypeFac; // Factory for user defined types
|
|
SbClassFactory* pClassFac; // Factory for user defined classes (based on class modules)
|
|
SbOLEFactory* pOLEFac; // Factory for OLE types
|
|
SbFormFactory* pFormFac; // Factory for user forms
|
|
SbModule* pMod; // currently active module
|
|
SbModule* pCompMod; // currently compiled module
|
|
short nInst; // number of BASICs
|
|
Link aErrHdl; // global error handler
|
|
Link aBreakHdl; // global break handler
|
|
SbError nCode;
|
|
xub_StrLen nLine;
|
|
xub_StrLen nCol1,nCol2; // from... to...
|
|
sal_Bool bCompiler; // flag for compiler error
|
|
sal_Bool bGlobalInitErr;
|
|
sal_Bool bRunInit; // sal_True, if RunInit active from the Basic
|
|
String aErrMsg; // buffer for GetErrorText()
|
|
::utl::TransliterationWrapper* pTransliterationWrapper; // For StrComp
|
|
sal_Bool bBlockCompilerError;
|
|
BasicManager* pAppBasMgr;
|
|
StarBASIC* pMSOMacroRuntimLib; // Lib containing MSO Macro Runtime API entry symbols
|
|
|
|
SbiGlobals();
|
|
~SbiGlobals();
|
|
};
|
|
|
|
// utility macros and routines
|
|
|
|
BASIC_DLLPUBLIC SbiGlobals* GetSbData();
|
|
|
|
#endif
|
|
|
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|