xref: /aoo41x/main/basic/inc/basic/sbmeth.hxx (revision cdf0e10c)
1*cdf0e10cSrcweir /*************************************************************************
2*cdf0e10cSrcweir  *
3*cdf0e10cSrcweir  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4*cdf0e10cSrcweir  *
5*cdf0e10cSrcweir  * Copyright 2000, 2010 Oracle and/or its affiliates.
6*cdf0e10cSrcweir  *
7*cdf0e10cSrcweir  * OpenOffice.org - a multi-platform office productivity suite
8*cdf0e10cSrcweir  *
9*cdf0e10cSrcweir  * This file is part of OpenOffice.org.
10*cdf0e10cSrcweir  *
11*cdf0e10cSrcweir  * OpenOffice.org is free software: you can redistribute it and/or modify
12*cdf0e10cSrcweir  * it under the terms of the GNU Lesser General Public License version 3
13*cdf0e10cSrcweir  * only, as published by the Free Software Foundation.
14*cdf0e10cSrcweir  *
15*cdf0e10cSrcweir  * OpenOffice.org is distributed in the hope that it will be useful,
16*cdf0e10cSrcweir  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17*cdf0e10cSrcweir  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18*cdf0e10cSrcweir  * GNU Lesser General Public License version 3 for more details
19*cdf0e10cSrcweir  * (a copy is included in the LICENSE file that accompanied this code).
20*cdf0e10cSrcweir  *
21*cdf0e10cSrcweir  * You should have received a copy of the GNU Lesser General Public License
22*cdf0e10cSrcweir  * version 3 along with OpenOffice.org.  If not, see
23*cdf0e10cSrcweir  * <http://www.openoffice.org/license.html>
24*cdf0e10cSrcweir  * for a copy of the LGPLv3 License.
25*cdf0e10cSrcweir  *
26*cdf0e10cSrcweir  ************************************************************************/
27*cdf0e10cSrcweir 
28*cdf0e10cSrcweir #ifndef _SB_SBMETH_HXX
29*cdf0e10cSrcweir #define _SB_SBMETH_HXX
30*cdf0e10cSrcweir 
31*cdf0e10cSrcweir #include <tools/errcode.hxx>
32*cdf0e10cSrcweir #include <basic/sbxmeth.hxx>
33*cdf0e10cSrcweir #include <basic/sbdef.hxx>
34*cdf0e10cSrcweir 
35*cdf0e10cSrcweir class SbModule;
36*cdf0e10cSrcweir class SbMethodImpl;
37*cdf0e10cSrcweir 
38*cdf0e10cSrcweir class SbMethod : public SbxMethod
39*cdf0e10cSrcweir {
40*cdf0e10cSrcweir 	friend class SbiRuntime;
41*cdf0e10cSrcweir 	friend class SbiFactory;
42*cdf0e10cSrcweir 	friend class SbModule;
43*cdf0e10cSrcweir 	friend class SbClassModuleObject;
44*cdf0e10cSrcweir 	friend class SbiCodeGen;
45*cdf0e10cSrcweir 	friend class SbJScriptMethod;
46*cdf0e10cSrcweir 	friend class SbIfaceMapperMethod;
47*cdf0e10cSrcweir 
48*cdf0e10cSrcweir 	SbMethodImpl* mpSbMethodImpl;			// Impl data
49*cdf0e10cSrcweir 	SbModule* pMod;
50*cdf0e10cSrcweir 	sal_uInt16    nDebugFlags;
51*cdf0e10cSrcweir 	sal_uInt16	  nLine1, nLine2;
52*cdf0e10cSrcweir 	sal_uInt32	  nStart;
53*cdf0e10cSrcweir 	sal_Bool	  bInvalid;
54*cdf0e10cSrcweir 	SbxArrayRef refStatics;
55*cdf0e10cSrcweir 	SbMethod( const String&, SbxDataType, SbModule* );
56*cdf0e10cSrcweir 	SbMethod( const SbMethod& );
57*cdf0e10cSrcweir 	virtual sal_Bool LoadData( SvStream&, sal_uInt16 );
58*cdf0e10cSrcweir 	virtual sal_Bool StoreData( SvStream& ) const;
59*cdf0e10cSrcweir 	virtual ~SbMethod();
60*cdf0e10cSrcweir 
61*cdf0e10cSrcweir public:
62*cdf0e10cSrcweir 	SBX_DECL_PERSIST_NODATA(SBXCR_SBX,SBXID_BASICMETHOD,2);
63*cdf0e10cSrcweir 	TYPEINFO();
64*cdf0e10cSrcweir 	virtual SbxInfo* GetInfo();
65*cdf0e10cSrcweir 	SbxArray* GetLocals();
66*cdf0e10cSrcweir 	SbxArray* GetStatics();
67*cdf0e10cSrcweir 	void      ClearStatics();
68*cdf0e10cSrcweir 	SbModule* GetModule() 				 { return pMod; 	   }
69*cdf0e10cSrcweir 	sal_uInt32	  GetId() const				 { return nStart;	   }
70*cdf0e10cSrcweir 	sal_uInt16    GetDebugFlags()			 { return nDebugFlags; }
71*cdf0e10cSrcweir 	void 	  SetDebugFlags( sal_uInt16 n )  { nDebugFlags = n;    }
72*cdf0e10cSrcweir 	void 	  GetLineRange( sal_uInt16&, sal_uInt16& );
73*cdf0e10cSrcweir 
74*cdf0e10cSrcweir 	// Schnittstelle zum Ausfuehren einer Methode aus den Applikationen
75*cdf0e10cSrcweir 	virtual ErrCode Call( SbxValue* pRet = NULL );
76*cdf0e10cSrcweir 	virtual void Broadcast( sal_uIntPtr nHintId );
77*cdf0e10cSrcweir };
78*cdf0e10cSrcweir 
79*cdf0e10cSrcweir #ifndef __SB_SBMETHODREF_HXX
80*cdf0e10cSrcweir #define __SB_SBMETHODREF_HXX
81*cdf0e10cSrcweir SV_DECL_IMPL_REF(SbMethod)
82*cdf0e10cSrcweir #endif
83*cdf0e10cSrcweir 
84*cdf0e10cSrcweir class SbIfaceMapperMethod : public SbMethod
85*cdf0e10cSrcweir {
86*cdf0e10cSrcweir 	friend class SbiRuntime;
87*cdf0e10cSrcweir 
88*cdf0e10cSrcweir 	SbMethodRef mxImplMeth;
89*cdf0e10cSrcweir 
90*cdf0e10cSrcweir public:
91*cdf0e10cSrcweir 	TYPEINFO();
92*cdf0e10cSrcweir 	SbIfaceMapperMethod( const String& rName, SbMethod* pImplMeth )
93*cdf0e10cSrcweir 		: SbMethod( rName, pImplMeth->GetType(), NULL )
94*cdf0e10cSrcweir 		, mxImplMeth( pImplMeth )
95*cdf0e10cSrcweir 	{}
96*cdf0e10cSrcweir 	virtual ~SbIfaceMapperMethod();
97*cdf0e10cSrcweir 	SbMethod* getImplMethod( void )
98*cdf0e10cSrcweir 		{ return mxImplMeth; }
99*cdf0e10cSrcweir };
100*cdf0e10cSrcweir 
101*cdf0e10cSrcweir #endif
102