Update ooo320-m1
[ooovba.git] / basic / source / inc / opcodes.hxx
blob4d2685e346191620130fbab8ce1a6bfe72ae7e9f
1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: opcodes.hxx,v $
10 * $Revision: 1.15 $
12 * This file is part of OpenOffice.org.
14 * OpenOffice.org is free software: you can redistribute it and/or modify
15 * it under the terms of the GNU Lesser General Public License version 3
16 * only, as published by the Free Software Foundation.
18 * OpenOffice.org is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU Lesser General Public License version 3 for more details
22 * (a copy is included in the LICENSE file that accompanied this code).
24 * You should have received a copy of the GNU Lesser General Public License
25 * version 3 along with OpenOffice.org. If not, see
26 * <http://www.openoffice.org/license.html>
27 * for a copy of the LGPLv3 License.
29 ************************************************************************/
31 #ifndef _OPCODES_HXX
32 #define _OPCODES_HXX
34 #include "sbintern.hxx"
36 #ifdef MTW
37 #undef _NUMBER
38 #endif
40 // Ein Opcode ist entweder 1, 3 oder 5 Bytes lang, je nach numerischen
41 // Wert des Opcodes (s.u.).
43 enum SbiOpcode {
44 // Alle Opcodes ohne Operanden
45 _NOP = 0,
47 SbOP0_START = _NOP,
49 // Operatoren
50 // die folgenden Operatoren sind genauso angeordnet
51 // wie der enum SbxVarOp
52 _EXP, _MUL, _DIV, _MOD, _PLUS, _MINUS, _NEG,
53 _EQ, _NE, _LT, _GT, _LE, _GE,
54 _IDIV, _AND, _OR, _XOR, _EQV, _IMP, _NOT,
55 _CAT,
56 // Ende enum SbxVarOp
57 _LIKE, _IS,
58 // Laden/speichern
59 _ARGC, // neuen Argv einrichten
60 _ARGV, // TOS ==> aktueller Argv
61 _INPUT, // Input ==> TOS
62 _LINPUT, // Line Input ==> TOS
63 _GET, // TOS anfassen
64 _SET, // Speichern Objekt TOS ==> TOS-1
65 _PUT, // TOS ==> TOS-1
66 _PUTC, // TOS ==> TOS-1, dann ReadOnly
67 _DIM, // DIM
68 _REDIM, // REDIM
69 _REDIMP, // REDIM PRESERVE
70 _ERASE, // TOS loeschen
71 // Verzweigen
72 _STOP, // Programmende
73 _INITFOR, // FOR-Variable initialisieren
74 _NEXT, // FOR-Variable inkrementieren
75 _CASE, // Anfang CASE
76 _ENDCASE, // Ende CASE
77 _STDERROR, // Standard-Fehlerbehandlung
78 _NOERROR, // keine Fehlerbehandlung
79 _LEAVE, // UP verlassen
80 // E/A
81 _CHANNEL, // TOS = Kanalnummer
82 _BPRINT, // print TOS
83 _PRINTF, // print TOS in field
84 _BWRITE, // write TOS
85 _RENAME, // Rename Tos+1 to Tos
86 _PROMPT, // TOS = Prompt for Input
87 _RESTART, // Restartpunkt definieren
88 _CHAN0, // I/O-Kanal 0
89 // Sonstiges
90 _EMPTY, // Leeren Ausdruck auf Stack
91 _ERROR, // TOS = Fehlercode
92 _LSET, // Speichern Objekt TOS ==> TOS-1
93 _RSET, // Speichern Objekt TOS ==> TOS-1
94 _REDIMP_ERASE, // Copies array to be later used by REDIM PRESERVE before erasing it
95 _INITFOREACH,
96 _VBASET, // VBA-like Set
97 _ERASE_CLEAR, // Erase array and clear variable
98 _ARRAYACCESS, // Assign parameters to TOS and get value, used for array of arrays
99 SbOP0_END,
101 // Alle Opcodes mit einem Operanden
103 _NUMBER = 0x40, // Laden einer numerischen Konstanten (+ID)
105 SbOP1_START = _NUMBER,
107 _SCONST, // Laden einer Stringkonstanten (+ID)
108 _CONST, // Immediate Load (+Wert)
109 _ARGN, // Speichern eines named Args in Argv (+StringID)
110 _PAD, // String auf feste Laenge bringen (+Laenge)
111 // Verzweigungen
112 _JUMP, // Sprung (+Target)
113 _JUMPT, // TOS auswerten, bedingter Sprung (+Target)
114 _JUMPF, // TOS auswerten, bedingter Sprung (+Target)
115 _ONJUMP, // TOS auswerten, Sprung in JUMP-Tabelle (+MaxVal)
116 _GOSUB, // UP-Aufruf (+Target)
117 _RETURN, // UP-Return (+0 oder Target)
118 _TESTFOR, // FOR-Variable testen, inkrementieren (+Endlabel)
119 _CASETO, // Tos+1 <= Case <= Tos, 2xremove (+Target)
120 _ERRHDL, // Fehler-Handler (+Offset)
121 _RESUME, // Resume nach Fehlern (+0 or 1 or Label)
122 // E/A
123 _CLOSE, // (+Kanal/0)
124 _PRCHAR, // (+char)
125 // Verwaltung
126 _SETCLASS, // Set + Klassennamen testen (+StringId)
127 _TESTCLASS, // Check TOS class (+StringId)
128 _LIB, // Libnamen fuer Declare-Procs setzen (+StringId)
129 _BASED, // TOS wird um BASE erhoeht, BASE davor gepusht (+base)
130 // Typanpassung im Argv
131 _ARGTYP, // Letzten Parameter in Argv konvertieren (+Typ)
132 _VBASETCLASS, // VBA-like Set
133 SbOP1_END,
135 // Alle Opcodes mit zwei Operanden
137 _RTL = 0x80, // Laden aus RTL (+StringID+Typ)
139 SbOP2_START = _RTL,
141 _FIND, // Laden (+StringID+Typ)
142 _ELEM, // Laden Element (+StringID+Typ)
143 _PARAM, // Parameter (+Offset+Typ)
144 // Verzweigen
145 _CALL, // DECLARE-Methode rufen (+StringID+Typ)
146 _CALLC, // Cdecl-DECLARE-Methode rufen (+StringID+Typ)
147 _CASEIS, // Case-Test (+Test-Opcode+True-Target)
148 // Verwaltung
149 _STMNT, // Beginn eines Statements (+Line+Col)
150 // E/A
151 _OPEN, // (+SvStreamFlags+Flags)
152 // Objekte
153 _LOCAL, // Lokale Variable definieren (+StringID+Typ)
154 _PUBLIC, // Modulglobale Variable (+StringID+Typ)
155 _GLOBAL, // Globale Variable definieren, public-Anweisung (+StringID+Typ)
156 _CREATE, // Objekt kreieren (+StringId+StringID)
157 _STATIC, // Statische Variabl (+StringID+Typ) JSM
158 _TCREATE, // User Defined Objekt kreieren
159 _DCREATE, // Objekt-Array kreieren (+StringId+StringID)
160 _GLOBAL_P, // Globale Variable definieren, die beim Neustart von Basic
161 // nicht ueberschrieben wird, P=PERSIST (+StringID+Typ)
162 _FIND_G, // Sucht globale Variable mit Spezialbehandlung wegen _GLOBAL_P
163 _DCREATE_REDIMP, // Objekt-Array redimensionieren (+StringId+StringID)
164 _FIND_CM, // Search inside a class module (CM) to enable global search in time
165 _PUBLIC_P, // Module global Variable (persisted between calls)(+StringID+Typ)
166 _FIND_STATIC, // local static var lookup (+StringID+Typ)
168 SbOP2_END
174 #endif