2010-10-27 13:11:31 +01:00
|
|
|
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
2000-09-18 15:18:56 +00:00
|
|
|
/*************************************************************************
|
|
|
|
*
|
2008-04-11 10:56:39 +00:00
|
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
2005-09-29 12:00:17 +00:00
|
|
|
*
|
2010-02-12 15:01:35 +01:00
|
|
|
* Copyright 2000, 2010 Oracle and/or its affiliates.
|
2005-09-29 12:00:17 +00:00
|
|
|
*
|
2008-04-11 10:56:39 +00:00
|
|
|
* OpenOffice.org - a multi-platform office productivity suite
|
2000-09-18 15:18:56 +00:00
|
|
|
*
|
2008-04-11 10:56:39 +00:00
|
|
|
* This file is part of OpenOffice.org.
|
2000-09-18 15:18:56 +00:00
|
|
|
*
|
2008-04-11 10:56:39 +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:56:39 +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:56:39 +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 _OPCODES_HXX
|
|
|
|
#define _OPCODES_HXX
|
|
|
|
|
|
|
|
#include "sbintern.hxx"
|
|
|
|
|
|
|
|
// Ein Opcode ist entweder 1, 3 oder 5 Bytes lang, je nach numerischen
|
|
|
|
// Wert des Opcodes (s.u.).
|
|
|
|
|
|
|
|
enum SbiOpcode {
|
|
|
|
// Alle Opcodes ohne Operanden
|
|
|
|
_NOP = 0,
|
|
|
|
|
|
|
|
SbOP0_START = _NOP,
|
|
|
|
|
|
|
|
// Operatoren
|
|
|
|
// die folgenden Operatoren sind genauso angeordnet
|
|
|
|
// wie der enum SbxVarOp
|
|
|
|
_EXP, _MUL, _DIV, _MOD, _PLUS, _MINUS, _NEG,
|
|
|
|
_EQ, _NE, _LT, _GT, _LE, _GE,
|
|
|
|
_IDIV, _AND, _OR, _XOR, _EQV, _IMP, _NOT,
|
|
|
|
_CAT,
|
|
|
|
// Ende enum SbxVarOp
|
|
|
|
_LIKE, _IS,
|
|
|
|
// Laden/speichern
|
|
|
|
_ARGC, // neuen Argv einrichten
|
|
|
|
_ARGV, // TOS ==> aktueller Argv
|
|
|
|
_INPUT, // Input ==> TOS
|
|
|
|
_LINPUT, // Line Input ==> TOS
|
|
|
|
_GET, // TOS anfassen
|
|
|
|
_SET, // Speichern Objekt TOS ==> TOS-1
|
|
|
|
_PUT, // TOS ==> TOS-1
|
|
|
|
_PUTC, // TOS ==> TOS-1, dann ReadOnly
|
|
|
|
_DIM, // DIM
|
|
|
|
_REDIM, // REDIM
|
|
|
|
_REDIMP, // REDIM PRESERVE
|
|
|
|
_ERASE, // TOS loeschen
|
|
|
|
// Verzweigen
|
|
|
|
_STOP, // Programmende
|
|
|
|
_INITFOR, // FOR-Variable initialisieren
|
|
|
|
_NEXT, // FOR-Variable inkrementieren
|
|
|
|
_CASE, // Anfang CASE
|
|
|
|
_ENDCASE, // Ende CASE
|
|
|
|
_STDERROR, // Standard-Fehlerbehandlung
|
|
|
|
_NOERROR, // keine Fehlerbehandlung
|
|
|
|
_LEAVE, // UP verlassen
|
|
|
|
// E/A
|
|
|
|
_CHANNEL, // TOS = Kanalnummer
|
|
|
|
_BPRINT, // print TOS
|
|
|
|
_PRINTF, // print TOS in field
|
|
|
|
_BWRITE, // write TOS
|
|
|
|
_RENAME, // Rename Tos+1 to Tos
|
|
|
|
_PROMPT, // TOS = Prompt for Input
|
|
|
|
_RESTART, // Restartpunkt definieren
|
|
|
|
_CHAN0, // I/O-Kanal 0
|
|
|
|
// Sonstiges
|
|
|
|
_EMPTY, // Leeren Ausdruck auf Stack
|
|
|
|
_ERROR, // TOS = Fehlercode
|
|
|
|
_LSET, // Speichern Objekt TOS ==> TOS-1
|
|
|
|
_RSET, // Speichern Objekt TOS ==> TOS-1
|
2000-10-18 07:58:04 +00:00
|
|
|
_REDIMP_ERASE, // Copies array to be later used by REDIM PRESERVE before erasing it
|
2005-01-28 15:07:35 +00:00
|
|
|
_INITFOREACH,
|
2006-11-02 15:32:24 +00:00
|
|
|
_VBASET, // VBA-like Set
|
2007-08-30 09:00:44 +00:00
|
|
|
_ERASE_CLEAR, // Erase array and clear variable
|
2008-06-24 15:03:00 +00:00
|
|
|
_ARRAYACCESS, // Assign parameters to TOS and get value, used for array of arrays
|
2010-06-15 20:02:53 +02:00
|
|
|
_BYVAL, // byref -> byval for lvalue parameter passed in call
|
2011-05-14 11:36:54 +02:00
|
|
|
|
|
|
|
SbOP0_END = _BYVAL,
|
2000-09-18 15:18:56 +00:00
|
|
|
|
|
|
|
// Alle Opcodes mit einem Operanden
|
|
|
|
|
|
|
|
_NUMBER = 0x40, // Laden einer numerischen Konstanten (+ID)
|
|
|
|
|
|
|
|
SbOP1_START = _NUMBER,
|
|
|
|
|
|
|
|
_SCONST, // Laden einer Stringkonstanten (+ID)
|
|
|
|
_CONST, // Immediate Load (+Wert)
|
|
|
|
_ARGN, // Speichern eines named Args in Argv (+StringID)
|
|
|
|
_PAD, // String auf feste Laenge bringen (+Laenge)
|
|
|
|
// Verzweigungen
|
|
|
|
_JUMP, // Sprung (+Target)
|
|
|
|
_JUMPT, // TOS auswerten, bedingter Sprung (+Target)
|
|
|
|
_JUMPF, // TOS auswerten, bedingter Sprung (+Target)
|
|
|
|
_ONJUMP, // TOS auswerten, Sprung in JUMP-Tabelle (+MaxVal)
|
|
|
|
_GOSUB, // UP-Aufruf (+Target)
|
|
|
|
_RETURN, // UP-Return (+0 oder Target)
|
|
|
|
_TESTFOR, // FOR-Variable testen, inkrementieren (+Endlabel)
|
|
|
|
_CASETO, // Tos+1 <= Case <= Tos, 2xremove (+Target)
|
|
|
|
_ERRHDL, // Fehler-Handler (+Offset)
|
|
|
|
_RESUME, // Resume nach Fehlern (+0 or 1 or Label)
|
|
|
|
// E/A
|
|
|
|
_CLOSE, // (+Kanal/0)
|
|
|
|
_PRCHAR, // (+char)
|
|
|
|
// Verwaltung
|
2005-03-29 10:50:40 +00:00
|
|
|
_SETCLASS, // Set + Klassennamen testen (+StringId)
|
|
|
|
_TESTCLASS, // Check TOS class (+StringId)
|
2000-09-18 15:18:56 +00:00
|
|
|
_LIB, // Libnamen fuer Declare-Procs setzen (+StringId)
|
|
|
|
_BASED, // TOS wird um BASE erhoeht, BASE davor gepusht (+base)
|
|
|
|
// Typanpassung im Argv
|
|
|
|
_ARGTYP, // Letzten Parameter in Argv konvertieren (+Typ)
|
2007-08-30 09:00:44 +00:00
|
|
|
_VBASETCLASS, // VBA-like Set
|
2011-05-14 11:36:54 +02:00
|
|
|
|
|
|
|
SbOP1_END = _VBASETCLASS,
|
2000-09-18 15:18:56 +00:00
|
|
|
|
|
|
|
// Alle Opcodes mit zwei Operanden
|
|
|
|
|
|
|
|
_RTL = 0x80, // Laden aus RTL (+StringID+Typ)
|
|
|
|
|
|
|
|
SbOP2_START = _RTL,
|
|
|
|
|
|
|
|
_FIND, // Laden (+StringID+Typ)
|
|
|
|
_ELEM, // Laden Element (+StringID+Typ)
|
|
|
|
_PARAM, // Parameter (+Offset+Typ)
|
|
|
|
// Verzweigen
|
|
|
|
_CALL, // DECLARE-Methode rufen (+StringID+Typ)
|
|
|
|
_CALLC, // Cdecl-DECLARE-Methode rufen (+StringID+Typ)
|
|
|
|
_CASEIS, // Case-Test (+Test-Opcode+True-Target)
|
|
|
|
// Verwaltung
|
|
|
|
_STMNT, // Beginn eines Statements (+Line+Col)
|
|
|
|
// E/A
|
|
|
|
_OPEN, // (+SvStreamFlags+Flags)
|
|
|
|
// Objekte
|
|
|
|
_LOCAL, // Lokale Variable definieren (+StringID+Typ)
|
|
|
|
_PUBLIC, // Modulglobale Variable (+StringID+Typ)
|
2001-09-04 06:24:55 +00:00
|
|
|
_GLOBAL, // Globale Variable definieren, public-Anweisung (+StringID+Typ)
|
2000-09-18 15:18:56 +00:00
|
|
|
_CREATE, // Objekt kreieren (+StringId+StringID)
|
|
|
|
_STATIC, // Statische Variabl (+StringID+Typ) JSM
|
|
|
|
_TCREATE, // User Defined Objekt kreieren
|
|
|
|
_DCREATE, // Objekt-Array kreieren (+StringId+StringID)
|
2001-09-04 06:24:55 +00:00
|
|
|
_GLOBAL_P, // Globale Variable definieren, die beim Neustart von Basic
|
|
|
|
// nicht ueberschrieben wird, P=PERSIST (+StringID+Typ)
|
|
|
|
_FIND_G, // Sucht globale Variable mit Spezialbehandlung wegen _GLOBAL_P
|
2003-03-18 15:28:40 +00:00
|
|
|
_DCREATE_REDIMP, // Objekt-Array redimensionieren (+StringId+StringID)
|
2004-11-02 10:55:40 +00:00
|
|
|
_FIND_CM, // Search inside a class module (CM) to enable global search in time
|
2007-08-30 09:00:44 +00:00
|
|
|
_PUBLIC_P, // Module global Variable (persisted between calls)(+StringID+Typ)
|
2008-07-02 08:59:35 +00:00
|
|
|
_FIND_STATIC, // local static var lookup (+StringID+Typ)
|
|
|
|
|
2011-05-14 11:36:54 +02:00
|
|
|
SbOP2_END = _FIND_STATIC
|
2000-09-18 15:18:56 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|
2010-10-27 13:11:31 +01:00
|
|
|
|
|
|
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|