1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220
|
/* $Id: wk1.hh,v 1.18 1997/02/10 15:09:59 aml Exp $*/
/* Cell format opcodes */
#include "xlf.hh"
#define PARSE_ERROR -1
#define PARSE_OK 0
#define CODE_BOF 0
#define CODE_EOF 1
#define CODE_RECALC 2
#define CODE_BLANK 12
#define CODE_INTEGER 13
#define CODE_NUMBER 14
#define CODE_LABEL 15
#define CODE_FORMULA 16
#define CODE_ERROR 17
#define CODE_NUMBER_SIZE 13
#define CODE_ORANGE 25
#define CODE_PRANGE 26
#define CODE_SRANGE 27
#define CODE_FRANGE 28
#define CODE_KRANGE1 29
#define CODE_HRANGE 32
#define CODE_KRANGE2 35
#define CODE_WINDOW1 7
#define CODE_COLW1 8
#define CODE_STRING_VAL 51
/* Formula format opcodes */
#define FORM_FP_SIZE 8
#define FORM_REF_SIZE 4
#define FORM_RANGE_SIZE 8
#define FORM_RETURN_SIZE 0
#define FORM_PAR_SIZE 0
#define FORM_INT_SIZE 2
#define FORM_STRING_SIZE 0
#define FORM_VAR_ARG_CNT 256
#define FORM_FP 0
#define FORM_REF 1
#define FORM_RANGE 2
#define FORM_RETURN 3
#define FORM_PAR 4
#define FORM_INT 5
#define FORM_STRING 6
#define FORM_ERROR 7
#define FORM_UNMINUS 8
#define FORM_PLUS 9
#define FORM_SUB 10
#define FORM_MULT 11
#define FORM_DIV 12
#define FORM_POWER 13
#define FORM_EQUAL 14
#define FORM_NEQUAL 15
#define FORM_SMALLEREQ 16
#define FORM_GREATEREQ 17
#define FORM_SMALLER 18
#define FORM_GREATER 19
#define FORM_AND 20
#define FORM_OR 21
#define FORM_NOT 22
#define FORM_UNARY_MINUS 23
#define FORM_NA 31
#define FORM_ERR 32
#define FORM_ABS 33
#define FORM_INTF 34
#define FORM_SQRT 35
#define FORM_LOG 36
#define FORM_LN 37
#define FORM_PI 38
#define FORM_SIN 39
#define FORM_COS 40
#define FORM_TAN 41
#define FORM_ATAN2 42
#define FORM_ATAN 43
#define FORM_ASIN 44
#define FORM_ACOS 45
#define FORM_EXP 46
#define FORM_MOD 47
#define FORM_ISNA 49
#define FORM_ISERR 50
#define FORM_FALSE 51
#define FORM_TRUE 52
#define FORM_RAND 53
#define FORM_TODAY 54
#define FORM_DAY 60
#define FORM_MONTH 61
#define FORM_ROUND 63
#define FORM_HOUR 65
#define FORM_MINUTE 66
#define FORM_SECOND 67
#define FORM_ISNUMBER 68
#define FORM_ISSTRING 69
#define FORM_LENGTH 70
#define FORM_VALUE 71
#define FORM_STRINGF 72
#define FORM_CHAR 74
#define FORM_CODE 75
#define FORM_TIMEVALUE 78
#define FORM_CELLPOINTER 79
#define FORM_IF 59
#define FORM_SUM 80
#define FORM_AVG 81
#define FORM_COUNT 82
#define FORM_MIN 83
#define FORM_MAX 84
#define FORM_VLOOKUP 85
#define FORM_HLOOKUP 90
#define FORM_UPPER 102
#define FORM_LOWER 103
#define FORM_PROPER 107
/*
$Log: wk1.hh,v $
Revision 1.18 1997/02/10 15:09:59 aml
Print settings now are saved to file.
Fixed buggy error message when loading sheets.
Revision 1.17 1997/01/02 16:15:29 aml
Fixed unsufficient range of colunm width.
First cut of vlookup and hlookup functions.
Fixed bug in display routines.
Revision 1.16 1996/12/31 17:38:25 aml
On-demand calculation improved. Loops are detected.
Automatic recalculation can now be disabled.
Printing was improved.
Revision 1.15 1996/10/07 12:35:26 aml
First cut at error handling.
Date formats are in.
Fixed problem with blank cell drawing.
# Revision 1.14 1996/09/02 10:51:05 aml
# Cell fonts created, loaded and saved.
# Row height created.
#
# Revision 1.13 1996/08/28 17:17:12 aml
# Load and save now accept string_value for formula cells.
# This fixes previous thought problem of formula values not
# being stored.
# Functions upper,lower and proper created.
# Function if can now return labels.
# Fixed problem with function count.
# Reasonably stable version, very used to manipulate notas.wk1.
#
Revision 1.12 1996/08/27 17:18:46 aml
First version of regressive tests created.
Changes were made to allow for string functions.
String function upper created. Raises the problem
that formulas do NOT have a space for string values,
and therefore have to be evaluated upon loading.
Revision 1.11 1996/08/26 17:22:24 aml
Function round fixed.
Many other functions added, from power to mod.
Revision 1.10 1996/03/11 15:47:45 aml
Made redraw more efficient by removing at once all cells before redrawing.
Fixed problem with unsufficient difinition of logical expressions.
Added >=, <=, <>, @and and @or functions.
Revision 1.9 1996/03/08 19:00:19 aml
Fixed problem in string_single_arg macro
Created if function, boolean evaluations and so on.
Revision 1.8 1996/03/07 20:32:50 aml
Created print range ability.
Set in gray non-working menus.
Created RangeKill command.
Created round function and macros for single argument functions.
Revision 1.7 1996/01/11 22:48:43 aml
Range iterators created.
Functions sum, max and min now work properly.
Negative numbers now allowed by flex (oops :-)
# Revision 1.6 1996/01/07 09:07:27 aml
# Sheet::save and Sheet::load created.
# Program can now write and read wk1 files.
# Slight changes made to relative references. Bit 14 is now always 0.
#
# Revision 1.5 1996/01/05 23:05:56 aml
# Cell references evaluated.
# Spreadsheet is recalculated at every change, by an arbitrary order.
# Reformulated program structure. Evaluation and reverse parsing
# are member functions of Sheet.
#
# Revision 1.4 1996/01/04 20:27:16 aml
# Range references parsed and reverse parsed.
#
# Revision 1.3 1996/01/02 16:22:07 aml
# Formula compilation, evaluation and decompilation now work.
# Cells can be of type label, numerical formula or numbers.
#
# Revision 1.2 1995/12/30 16:40:26 aml
# First cut of formula compilation.
#
# Revision 1.1 1995/12/30 15:02:56 aml
# Initial revision
#
*/
|