Diffstat (limited to 'noncore/tools/calc2/instruction.h') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/tools/calc2/instruction.h | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/noncore/tools/calc2/instruction.h b/noncore/tools/calc2/instruction.h new file mode 100644 index 0000000..6077bf0 --- a/dev/null +++ b/noncore/tools/calc2/instruction.h @@ -0,0 +1,69 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qtopia Environment. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ +#ifndef INSTRUCTION_H +#define INSTRUCTION_H + +/* Internal representation of data +The first four types indicate an int, +that is, Data.i, and are incompatible +with the other two types. + +- Plugin is responsible for telling engine +which Rep to use at any given time +- Instructions from that plugin only +have to handle that representation +- Engine is responsible for error-checking +according to its current rep and display */ +enum Representation { + rBin, + rOct, + rDec, + rHex, + rDouble, + rFraction +}; + +// An atom of data +union Data { + int i; + double dbl; + struct Fraction { + int numerator, denominator; + } fraction; +}; + +// Instruction base class +class Instruction { +public: + Instruction (int p = 0) { + precedence = p; + }; + + virtual ~ Instruction () {}; + + virtual Data eval(Data) = 0; + void setRep(Representation r) { rep = r; }; + + Representation rep; + Data acc; + int precedence; +}; + +#endif |