xref: /aoo4110/main/basic/source/inc/object.hxx (revision b1cdbd2c)
1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski 
24*b1cdbd2cSJim Jagielski #ifndef _SAMPLE_OBJECT_HXX
25*b1cdbd2cSJim Jagielski #define _SAMPLE_OBJECT_HXX
26*b1cdbd2cSJim Jagielski 
27*b1cdbd2cSJim Jagielski #include <basic/sbxfac.hxx>
28*b1cdbd2cSJim Jagielski #ifndef __SBX_SBXVARIABLE_HXX //autogen
29*b1cdbd2cSJim Jagielski #include <basic/sbxvar.hxx>
30*b1cdbd2cSJim Jagielski #endif
31*b1cdbd2cSJim Jagielski #include <basic/sbxobj.hxx>
32*b1cdbd2cSJim Jagielski 
33*b1cdbd2cSJim Jagielski // 1) Properties:
34*b1cdbd2cSJim Jagielski //    Name      der Name, R/O
35*b1cdbd2cSJim Jagielski //    Value     ein double-Wert, R/W
36*b1cdbd2cSJim Jagielski // 2) Methoden:
37*b1cdbd2cSJim Jagielski //    Display   Ausgabe eines Textes
38*b1cdbd2cSJim Jagielski //    Square    Argument * Argument
39*b1cdbd2cSJim Jagielski //    Event     Aufruf eines Basic-Programms
40*b1cdbd2cSJim Jagielski // 3) Unterobjekte:
41*b1cdbd2cSJim Jagielski //    eine Collection names "Elements". Der Zugriff ist sowohl als
42*b1cdbd2cSJim Jagielski //    Property (fuer das gesamte Objekt) als auch als Methode (fuer
43*b1cdbd2cSJim Jagielski //    einzelne Elemente, wird durchgereicht) implementiert.
44*b1cdbd2cSJim Jagielski // Diese Implementation ist ein Beispiel fuer eine tabellengesteuerte
45*b1cdbd2cSJim Jagielski // Version, die sehr viele Elemente enthalten kann.
46*b1cdbd2cSJim Jagielski // Die Collection findet sich in COLLECTN.*, die in der Collection
47*b1cdbd2cSJim Jagielski // enthaltenen Objekte in COLLELEM.*
48*b1cdbd2cSJim Jagielski 
49*b1cdbd2cSJim Jagielski class SampleObject : public SbxObject
50*b1cdbd2cSJim Jagielski {
51*b1cdbd2cSJim Jagielski using SbxVariable::GetInfo;
52*b1cdbd2cSJim Jagielski 	// Definition eines Tabelleneintrags. Dies wird hier gemacht,
53*b1cdbd2cSJim Jagielski 	// da dadurch die Methoden und Properties als private deklariert
54*b1cdbd2cSJim Jagielski 	// werden koennen.
55*b1cdbd2cSJim Jagielski #if defined ( ICC ) || defined ( HPUX ) || defined ( C50 ) || defined ( C52 )
56*b1cdbd2cSJim Jagielski public:
57*b1cdbd2cSJim Jagielski #endif
58*b1cdbd2cSJim Jagielski 	typedef void( SampleObject::*pMeth )
59*b1cdbd2cSJim Jagielski 		( SbxVariable* pThis, SbxArray* pArgs, sal_Bool bWrite );
60*b1cdbd2cSJim Jagielski #if defined ( ICC ) || defined ( HPUX )
61*b1cdbd2cSJim Jagielski private:
62*b1cdbd2cSJim Jagielski #endif
63*b1cdbd2cSJim Jagielski 
64*b1cdbd2cSJim Jagielski 	struct Methods {
65*b1cdbd2cSJim Jagielski 		const char* pName;      // Name des Eintrags
66*b1cdbd2cSJim Jagielski 		SbxDataType eType;      // Datentyp
67*b1cdbd2cSJim Jagielski 		pMeth pFunc;            // Function Pointer
68*b1cdbd2cSJim Jagielski 		short nArgs;            // Argumente und Flags
69*b1cdbd2cSJim Jagielski 	};
70*b1cdbd2cSJim Jagielski 	static Methods aMethods[];  // Methodentabelle
71*b1cdbd2cSJim Jagielski 
72*b1cdbd2cSJim Jagielski 	// Methoden
73*b1cdbd2cSJim Jagielski 	void Display( SbxVariable*, SbxArray*, sal_Bool );
74*b1cdbd2cSJim Jagielski 	void Event( SbxVariable*, SbxArray*, sal_Bool );
75*b1cdbd2cSJim Jagielski 	void Square( SbxVariable*, SbxArray*, sal_Bool );
76*b1cdbd2cSJim Jagielski 	void Create( SbxVariable*, SbxArray*, sal_Bool );
77*b1cdbd2cSJim Jagielski 	// Infoblock auffuellen
78*b1cdbd2cSJim Jagielski 	SbxInfo* GetInfo( short nIdx );
79*b1cdbd2cSJim Jagielski 	// Broadcaster Notification
80*b1cdbd2cSJim Jagielski 	virtual void SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId& rBCType,
81*b1cdbd2cSJim Jagielski 							 const SfxHint& rHint, const TypeId& rHintType );
82*b1cdbd2cSJim Jagielski public:
83*b1cdbd2cSJim Jagielski 	SampleObject( const String& );
84*b1cdbd2cSJim Jagielski 	// Suchen eines Elements
85*b1cdbd2cSJim Jagielski 	virtual SbxVariable* Find( const String&, SbxClassType );
86*b1cdbd2cSJim Jagielski };
87*b1cdbd2cSJim Jagielski 
88*b1cdbd2cSJim Jagielski // Die dazugehoerige Factory:
89*b1cdbd2cSJim Jagielski 
90*b1cdbd2cSJim Jagielski class SampleObjectFac : public SbxFactory
91*b1cdbd2cSJim Jagielski {
92*b1cdbd2cSJim Jagielski public:
93*b1cdbd2cSJim Jagielski 	virtual SbxObject* CreateObject( const String& );
94*b1cdbd2cSJim Jagielski };
95*b1cdbd2cSJim Jagielski 
96*b1cdbd2cSJim Jagielski #endif
97