[Libreoffice-commits] core.git: 7 commits - formula/source include/formula sc/source
Eike Rathke
erack at redhat.com
Thu Mar 5 13:04:55 PST 2015
formula/source/core/api/token.cxx | 7
formula/source/core/resource/core_resource.src | 6
include/formula/compiler.hrc | 270 ++++++++++++-------------
include/formula/opcode.hxx | 2
sc/source/core/tool/compiler.cxx | 93 +++++++-
sc/source/core/tool/token.cxx | 2
6 files changed, 227 insertions(+), 153 deletions(-)
New commits:
commit f965b10819fb32d6c6d66f00fb129068749a50ac
Author: Eike Rathke <erack at redhat.com>
Date: Thu Mar 5 20:30:23 2015 +0100
ScCompiler::HandleTableRef() implement ALL case
In general it should work like this..
Change-Id: Ic45ca6138c1b252ce9d216ce61c7129c055342ef
diff --git a/sc/source/core/tool/compiler.cxx b/sc/source/core/tool/compiler.cxx
index 053af69..6469918 100644
--- a/sc/source/core/tool/compiler.cxx
+++ b/sc/source/core/tool/compiler.cxx
@@ -4645,19 +4645,38 @@ bool ScCompiler::HandleDbData()
bool ScCompiler::HandleTableRef()
{
- ScDBData* pDBData = pDoc->GetDBCollection()->getNamedDBs().findByIndex(mpToken->GetIndex());
+ ScTableRefToken* pTR = dynamic_cast<ScTableRefToken*>(mpToken.get());
+ if (!pTR)
+ {
+ SetError(errUnknownToken);
+ return true;
+ }
+
+ ScDBData* pDBData = pDoc->GetDBCollection()->getNamedDBs().findByIndex( pTR->GetIndex());
if ( !pDBData )
SetError(errNoName);
else if (mbJumpCommandReorder)
{
- /* TODO: handle it */
-#if 0
+ ScRange aRange;
+ pDBData->GetArea(aRange);
+ aRange.aEnd.SetTab(aRange.aStart.Tab());
ScTokenArray* pNew = new ScTokenArray();
- pNew->AddDoubleReference( aRefData );
+ ScTableRefToken::Item eItem = pTR->GetItem();
+ if (eItem == ScTableRefToken::ALL)
+ {
+ ScComplexRefData aRefData;
+ aRefData.InitFlags();
+ aRefData.SetRange(aRange, aPos);
+ pNew->AddDoubleReference( aRefData );
+ }
+ else
+ {
+ /* TODO: implement all other cases. */
+ SetError(errUnknownToken);
+ }
PushTokenArray( pNew, true );
pNew->Reset();
return GetToken();
-#endif
}
return true;
}
commit cca2f93eeda560203ac31f44eaf5b5998762afab
Author: Eike Rathke <erack at redhat.com>
Date: Thu Mar 5 19:09:40 2015 +0100
don't count table ref item separator as parameter separator
... similar to ocArrayOpen,ocArrayClose
Change-Id: I10b4cd2f74167cc57ef7a2ed96e0e98f0cd86805
diff --git a/sc/source/core/tool/compiler.cxx b/sc/source/core/tool/compiler.cxx
index 5d6ba70..053af69 100644
--- a/sc/source/core/tool/compiler.cxx
+++ b/sc/source/core/tool/compiler.cxx
@@ -3847,6 +3847,23 @@ ScTokenArray* ScCompiler::CompileString( const OUString& rFormula )
if (bUseFunctionStack && nFunction)
--nFunction;
}
+ case ocTableRefOpen:
+ {
+ // Don't count following item separator as parameter separator.
+ if (bUseFunctionStack)
+ {
+ ++nFunction;
+ pFunctionStack[ nFunction ].eOp = eOp;
+ pFunctionStack[ nFunction ].nSep = 0;
+ }
+ }
+ break;
+ case ocTableRefClose:
+ {
+ if (bUseFunctionStack && nFunction)
+ --nFunction;
+ }
+ break;
default:
break;
}
commit 3b76732e89715ce77b2619230e36f8289958acff
Author: Eike Rathke <erack at redhat.com>
Date: Thu Mar 5 18:39:43 2015 +0100
ocTableRefOpen,ocTableRefClose are of StackVarType svSep
Change-Id: Icfbf088ee8d91d90779dc804b7dff299df1170a4
diff --git a/sc/source/core/tool/token.cxx b/sc/source/core/tool/token.cxx
index b38c370..55a0601 100644
--- a/sc/source/core/tool/token.cxx
+++ b/sc/source/core/tool/token.cxx
@@ -168,6 +168,8 @@ void ScRawToken::SetOpCode( OpCode e )
case ocArrayColSep:
case ocArrayOpen:
case ocArrayClose:
+ case ocTableRefOpen:
+ case ocTableRefClose:
eType = svSep;
break;
default:
commit ce20a967a781a721276b7a96c8a052656ebb6275
Author: Eike Rathke <erack at redhat.com>
Date: Thu Mar 5 16:38:20 2015 +0100
add '[' and ']' to conventions' char flags where appropriate
Change-Id: Ic82ccfcba08ce276eac08609de215ba8edf8e813
diff --git a/sc/source/core/tool/compiler.cxx b/sc/source/core/tool/compiler.cxx
index 6bdf70a..5d6ba70 100644
--- a/sc/source/core/tool/compiler.cxx
+++ b/sc/source/core/tool/compiler.cxx
@@ -353,12 +353,48 @@ ScCompiler::Convention::Convention( FormulaGrammar::AddressConvention eConv )
/* \ */ // FREE
/* ] */ t[93] = SC_COMPILER_C_ODF_RBRACKET;
}
+ else if (FormulaGrammar::CONV_OOO == meConv)
+ {
+/* [ */ t[91] = SC_COMPILER_C_CHAR;
+/* \ */ // FREE
+/* ] */ t[93] = SC_COMPILER_C_CHAR;
+ }
+ else if (FormulaGrammar::CONV_XL_OOX == meConv)
+ {
+#if 1
+ /* TODO: currently SC_COMPILER_C_CHAR doesn't work as long as the
+ * table references aren't implemented. */
+/* [ */ t[91] = SC_COMPILER_C_CHAR_IDENT;
+/* \ */ // FREE
+/* ] */ t[93] = SC_COMPILER_C_IDENT;
+#else
+ /* TODO: check if SC_COMPILER_C_CHAR_IDENT and SC_COMPILER_C_IDENT
+ * were only added to be able to import table structured
+ * reference of a whole table. If so, then remove here. */
+/* [ */ t[91] = SC_COMPILER_C_CHAR | SC_COMPILER_C_CHAR_IDENT;
+/* \ */ // FREE
+/* ] */ t[93] = SC_COMPILER_C_CHAR | SC_COMPILER_C_IDENT;
+#endif
+ }
+ else if (FormulaGrammar::CONV_XL_A1 == meConv)
+ {
+/* [ */ t[91] = SC_COMPILER_C_CHAR;
+/* \ */ // FREE
+/* ] */ t[93] = SC_COMPILER_C_CHAR;
+ }
+ else if( FormulaGrammar::CONV_XL_R1C1 == meConv )
+ {
+/* [ */ t[91] = SC_COMPILER_C_IDENT;
+/* \ */ // FREE
+/* ] */ t[93] = SC_COMPILER_C_IDENT;
+ }
else
{
/* [ */ // FREE
/* \ */ // FREE
/* ] */ // FREE
}
+
/* ^ */ t[94] = SC_COMPILER_C_CHAR | SC_COMPILER_C_WORD_SEP | SC_COMPILER_C_VALUE_SEP;
/* _ */ t[95] = SC_COMPILER_C_CHAR_WORD | SC_COMPILER_C_WORD | SC_COMPILER_C_CHAR_IDENT | SC_COMPILER_C_IDENT | SC_COMPILER_C_CHAR_NAME | SC_COMPILER_C_NAME;
/* ` */ // FREE
@@ -408,17 +444,6 @@ ScCompiler::Convention::Convention( FormulaGrammar::AddressConvention eConv )
/* | */ t[124]|= SC_COMPILER_C_WORD;
/* } */ t[125]|= SC_COMPILER_C_WORD;
/* ~ */ t[126]|= SC_COMPILER_C_WORD;
-
- if( FormulaGrammar::CONV_XL_R1C1 == meConv )
- {
-/* [ */ t[91] |= SC_COMPILER_C_IDENT;
-/* ] */ t[93] |= SC_COMPILER_C_IDENT;
- }
- if( FormulaGrammar::CONV_XL_OOX == meConv )
- {
-/* [ */ t[91] |= SC_COMPILER_C_CHAR_IDENT;
-/* ] */ t[93] |= SC_COMPILER_C_IDENT;
- }
}
}
commit e73c0f53870eb7fd0e2d054be9c85a33baeed1ab
Author: Eike Rathke <erack at redhat.com>
Date: Thu Mar 5 14:28:11 2015 +0100
introduce ocTableRefOpen,ocTableRefClose
Change-Id: Ia9d54fd582f8e195edaa05937ee0f0290e56875f
diff --git a/formula/source/core/resource/core_resource.src b/formula/source/core/resource/core_resource.src
index 483a5d2..0fd104f 100644
--- a/formula/source/core/resource/core_resource.src
+++ b/formula/source/core/resource/core_resource.src
@@ -439,6 +439,8 @@ Resource RID_STRLIST_FUNCTION_NAMES_ENGLISH_OOXML
String SC_OPCODE_CHOOSE { Text = "CHOOSE" ; };
String SC_OPCODE_OPEN { Text = "(" ; };
String SC_OPCODE_CLOSE { Text = ")" ; };
+ String SC_OPCODE_TABLE_REF_OPEN { Text = "[" ; };
+ String SC_OPCODE_TABLE_REF_CLOSE { Text = "]" ; };
String SC_OPCODE_ARRAY_OPEN { Text = "{" ; };
String SC_OPCODE_ARRAY_CLOSE { Text = "}" ; };
String SC_OPCODE_ARRAY_ROW_SEP { Text = ";" ; };
@@ -850,6 +852,8 @@ Resource RID_STRLIST_FUNCTION_NAMES_ENGLISH
String SC_OPCODE_CHOOSE { Text = "CHOOSE" ; };
String SC_OPCODE_OPEN { Text = "(" ; };
String SC_OPCODE_CLOSE { Text = ")" ; };
+ String SC_OPCODE_TABLE_REF_OPEN { Text = "[" ; };
+ String SC_OPCODE_TABLE_REF_CLOSE { Text = "]" ; };
String SC_OPCODE_ARRAY_OPEN { Text = "{" ; };
String SC_OPCODE_ARRAY_CLOSE { Text = "}" ; };
String SC_OPCODE_ARRAY_ROW_SEP { Text = "|" ; };
@@ -1270,6 +1274,8 @@ Resource RID_STRLIST_FUNCTION_NAMES
};
String SC_OPCODE_OPEN { Text = "(" ; };
String SC_OPCODE_CLOSE { Text = ")" ; };
+ String SC_OPCODE_TABLE_REF_OPEN { Text = "[" ; };
+ String SC_OPCODE_TABLE_REF_CLOSE { Text = "]" ; };
String SC_OPCODE_ARRAY_OPEN { Text = "{" ; };
String SC_OPCODE_ARRAY_CLOSE { Text = "}" ; };
String SC_OPCODE_ARRAY_ROW_SEP { Text = "|" ; };
diff --git a/include/formula/compiler.hrc b/include/formula/compiler.hrc
index ba31646..9131ce0 100644
--- a/include/formula/compiler.hrc
+++ b/include/formula/compiler.hrc
@@ -51,153 +51,155 @@
#define SC_OPCODE_ARRAY_CLOSE 25
#define SC_OPCODE_ARRAY_ROW_SEP 26
#define SC_OPCODE_ARRAY_COL_SEP 27 /* some convs use sep != col_sep */
-#define SC_OPCODE_STOP_DIV 28
-#define SC_OPCODE_SKIP 29 /* used to skip raw tokens during string compilation */
+#define SC_OPCODE_TABLE_REF_OPEN 28
+#define SC_OPCODE_TABLE_REF_CLOSE 29
+#define SC_OPCODE_STOP_DIV 30
+#define SC_OPCODE_SKIP 31 /* used to skip raw tokens during string compilation */
/*** error constants #... ***/
-#define SC_OPCODE_START_ERRORS 30
-#define SC_OPCODE_ERROR_NULL 30
-#define SC_OPCODE_ERROR_DIVZERO 31
-#define SC_OPCODE_ERROR_VALUE 32
-#define SC_OPCODE_ERROR_REF 33
-#define SC_OPCODE_ERROR_NAME 34
-#define SC_OPCODE_ERROR_NUM 35
-#define SC_OPCODE_ERROR_NA 36
-#define SC_OPCODE_STOP_ERRORS 37
+#define SC_OPCODE_START_ERRORS 40
+#define SC_OPCODE_ERROR_NULL 40
+#define SC_OPCODE_ERROR_DIVZERO 41
+#define SC_OPCODE_ERROR_VALUE 42
+#define SC_OPCODE_ERROR_REF 43
+#define SC_OPCODE_ERROR_NAME 44
+#define SC_OPCODE_ERROR_NUM 45
+#define SC_OPCODE_ERROR_NA 46
+#define SC_OPCODE_STOP_ERRORS 47
/*** Binary operators ***/
-#define SC_OPCODE_START_BIN_OP 40
-#define SC_OPCODE_ADD 40
-#define SC_OPCODE_SUB 41
-#define SC_OPCODE_MUL 42
-#define SC_OPCODE_DIV 43
-#define SC_OPCODE_AMPERSAND 44
-#define SC_OPCODE_POW 45
-#define SC_OPCODE_EQUAL 46
-#define SC_OPCODE_NOT_EQUAL 47
-#define SC_OPCODE_LESS 48
-#define SC_OPCODE_GREATER 49
-#define SC_OPCODE_LESS_EQUAL 50
-#define SC_OPCODE_GREATER_EQUAL 51
-#define SC_OPCODE_AND 52
-#define SC_OPCODE_OR 53
-#define SC_OPCODE_INTERSECT 54
-#define SC_OPCODE_UNION 55
-#define SC_OPCODE_RANGE 56
-#define SC_OPCODE_STOP_BIN_OP 57
+#define SC_OPCODE_START_BIN_OP 50
+#define SC_OPCODE_ADD 50
+#define SC_OPCODE_SUB 51
+#define SC_OPCODE_MUL 52
+#define SC_OPCODE_DIV 53
+#define SC_OPCODE_AMPERSAND 54
+#define SC_OPCODE_POW 55
+#define SC_OPCODE_EQUAL 56
+#define SC_OPCODE_NOT_EQUAL 57
+#define SC_OPCODE_LESS 58
+#define SC_OPCODE_GREATER 59
+#define SC_OPCODE_LESS_EQUAL 60
+#define SC_OPCODE_GREATER_EQUAL 61
+#define SC_OPCODE_AND 62
+#define SC_OPCODE_OR 63
+#define SC_OPCODE_INTERSECT 64
+#define SC_OPCODE_UNION 65
+#define SC_OPCODE_RANGE 66
+#define SC_OPCODE_STOP_BIN_OP 67
/* NOTE: binary and unary operators must be in sequence for compiler! */
/*** Unary operators ***/
-#define SC_OPCODE_START_UN_OP 60
-#define SC_OPCODE_NOT 60
-#define SC_OPCODE_NEG 61
-#define SC_OPCODE_NEG_SUB 62
-#define SC_OPCODE_STOP_UN_OP 63
+#define SC_OPCODE_START_UN_OP 70
+#define SC_OPCODE_NOT 70
+#define SC_OPCODE_NEG 71
+#define SC_OPCODE_NEG_SUB 72
+#define SC_OPCODE_STOP_UN_OP 73
-#define SC_OPCODE_START_FUNCTION 65
+#define SC_OPCODE_START_FUNCTION 75
/*** Functions without parameters ***/
-#define SC_OPCODE_START_NO_PAR 65
-#define SC_OPCODE_PI 65
-#define SC_OPCODE_RANDOM 66
-#define SC_OPCODE_TRUE 67
-#define SC_OPCODE_FALSE 68
-#define SC_OPCODE_GET_ACT_DATE 69
-#define SC_OPCODE_GET_ACT_TIME 70
-#define SC_OPCODE_NO_VALUE 71
-#define SC_OPCODE_CURRENT 72
-#define SC_OPCODE_STOP_NO_PAR 73
+#define SC_OPCODE_START_NO_PAR 75
+#define SC_OPCODE_PI 75
+#define SC_OPCODE_RANDOM 76
+#define SC_OPCODE_TRUE 77
+#define SC_OPCODE_FALSE 78
+#define SC_OPCODE_GET_ACT_DATE 79
+#define SC_OPCODE_GET_ACT_TIME 80
+#define SC_OPCODE_NO_VALUE 81
+#define SC_OPCODE_CURRENT 82
+#define SC_OPCODE_STOP_NO_PAR 83
/*** Functions with one parameter ***/
-#define SC_OPCODE_START_1_PAR 80
-#define SC_OPCODE_DEG 80 /* trigonometric */
-#define SC_OPCODE_RAD 81
-#define SC_OPCODE_SIN 82
-#define SC_OPCODE_COS 83
-#define SC_OPCODE_TAN 84
-#define SC_OPCODE_COT 85
-#define SC_OPCODE_ARC_SIN 86
-#define SC_OPCODE_ARC_COS 87
-#define SC_OPCODE_ARC_TAN 88
-#define SC_OPCODE_ARC_COT 89
-#define SC_OPCODE_SIN_HYP 90
-#define SC_OPCODE_COS_HYP 91
-#define SC_OPCODE_TAN_HYP 92
-#define SC_OPCODE_COT_HYP 93
-#define SC_OPCODE_ARC_SIN_HYP 94 /* transcendent */
-#define SC_OPCODE_ARC_COS_HYP 95
-#define SC_OPCODE_ARC_TAN_HYP 96
-#define SC_OPCODE_ARC_COT_HYP 97
-#define SC_OPCODE_COSECANT 98
-#define SC_OPCODE_SECANT 99
-#define SC_OPCODE_COSECANT_HYP 100
-#define SC_OPCODE_SECANT_HYP 101
-#define SC_OPCODE_EXP 102
-#define SC_OPCODE_LN 103
-#define SC_OPCODE_SQRT 104
-#define SC_OPCODE_FACT 105
-#define SC_OPCODE_GET_YEAR 106 /* date and time */
-#define SC_OPCODE_GET_MONTH 107
-#define SC_OPCODE_GET_DAY 108
-#define SC_OPCODE_GET_HOUR 109
-#define SC_OPCODE_GET_MIN 110
-#define SC_OPCODE_GET_SEC 111
-#define SC_OPCODE_PLUS_MINUS 112 /* miscellaneous */
-#define SC_OPCODE_ABS 113
-#define SC_OPCODE_INT 114
-#define SC_OPCODE_PHI 115
-#define SC_OPCODE_GAUSS 116
-#define SC_OPCODE_IS_EMPTY 117 /* obtain type */
-#define SC_OPCODE_IS_STRING 118
-#define SC_OPCODE_IS_NON_STRING 119
-#define SC_OPCODE_IS_LOGICAL 120
-#define SC_OPCODE_TYPE 121
-#define SC_OPCODE_IS_REF 122
-#define SC_OPCODE_IS_VALUE 123
-#define SC_OPCODE_IS_FORMULA 124
-#define SC_OPCODE_IS_NV 125
-#define SC_OPCODE_IS_ERR 126
-#define SC_OPCODE_IS_ERROR 127
-#define SC_OPCODE_IS_EVEN 128
-#define SC_OPCODE_IS_ODD 129
-#define SC_OPCODE_N 130
-#define SC_OPCODE_GET_DATE_VALUE 131 /* string functions */
-#define SC_OPCODE_GET_TIME_VALUE 132
-#define SC_OPCODE_CODE 133
-#define SC_OPCODE_TRIM 134
-#define SC_OPCODE_UPPER 135
-#define SC_OPCODE_PROPER 136
-#define SC_OPCODE_LOWER 137
-#define SC_OPCODE_LEN 138
-#define SC_OPCODE_T 139 /* miscellaneous, part 21 */
-#define SC_OPCODE_VALUE 140
-#define SC_OPCODE_CLEAN 141
-#define SC_OPCODE_CHAR 142
-#define SC_OPCODE_LOG10 143
-#define SC_OPCODE_EVEN 144
-#define SC_OPCODE_ODD 145
-#define SC_OPCODE_STD_NORM_DIST 146
-#define SC_OPCODE_FISHER 147
-#define SC_OPCODE_FISHER_INV 148
-#define SC_OPCODE_S_NORM_INV 149
-#define SC_OPCODE_GAMMA_LN 150
-#define SC_OPCODE_ERROR_TYPE 151
-#define SC_OPCODE_FORMULA 153
-#define SC_OPCODE_ARABIC 154
-#define SC_OPCODE_INFO 155
-#define SC_OPCODE_BAHTTEXT 156
-#define SC_OPCODE_JIS 157
-#define SC_OPCODE_ASC 158
-#define SC_OPCODE_UNICODE 159
-#define SC_OPCODE_UNICHAR 160
-#define SC_OPCODE_GAMMA 161
-#define SC_OPCODE_GAMMA_LN_MS 162
-#define SC_OPCODE_ERF_MS 163
-#define SC_OPCODE_ERFC_MS 164
-#define SC_OPCODE_ERROR_TYPE_ODF 165
-#define SC_OPCODE_ENCODEURL 166
-#define SC_OPCODE_STOP_1_PAR 167
+#define SC_OPCODE_START_1_PAR 90
+#define SC_OPCODE_DEG 90 /* trigonometric */
+#define SC_OPCODE_RAD 91
+#define SC_OPCODE_SIN 92
+#define SC_OPCODE_COS 93
+#define SC_OPCODE_TAN 94
+#define SC_OPCODE_COT 95
+#define SC_OPCODE_ARC_SIN 96
+#define SC_OPCODE_ARC_COS 97
+#define SC_OPCODE_ARC_TAN 98
+#define SC_OPCODE_ARC_COT 99
+#define SC_OPCODE_SIN_HYP 100
+#define SC_OPCODE_COS_HYP 101
+#define SC_OPCODE_TAN_HYP 102
+#define SC_OPCODE_COT_HYP 103
+#define SC_OPCODE_ARC_SIN_HYP 104 /* transcendent */
+#define SC_OPCODE_ARC_COS_HYP 105
+#define SC_OPCODE_ARC_TAN_HYP 106
+#define SC_OPCODE_ARC_COT_HYP 107
+#define SC_OPCODE_COSECANT 108
+#define SC_OPCODE_SECANT 109
+#define SC_OPCODE_COSECANT_HYP 110
+#define SC_OPCODE_SECANT_HYP 111
+#define SC_OPCODE_EXP 112
+#define SC_OPCODE_LN 113
+#define SC_OPCODE_SQRT 114
+#define SC_OPCODE_FACT 115
+#define SC_OPCODE_GET_YEAR 116 /* date and time */
+#define SC_OPCODE_GET_MONTH 117
+#define SC_OPCODE_GET_DAY 118
+#define SC_OPCODE_GET_HOUR 119
+#define SC_OPCODE_GET_MIN 120
+#define SC_OPCODE_GET_SEC 121
+#define SC_OPCODE_PLUS_MINUS 122 /* miscellaneous */
+#define SC_OPCODE_ABS 123
+#define SC_OPCODE_INT 124
+#define SC_OPCODE_PHI 125
+#define SC_OPCODE_GAUSS 126
+#define SC_OPCODE_IS_EMPTY 127 /* obtain type */
+#define SC_OPCODE_IS_STRING 128
+#define SC_OPCODE_IS_NON_STRING 129
+#define SC_OPCODE_IS_LOGICAL 130
+#define SC_OPCODE_TYPE 131
+#define SC_OPCODE_IS_REF 132
+#define SC_OPCODE_IS_VALUE 133
+#define SC_OPCODE_IS_FORMULA 134
+#define SC_OPCODE_IS_NV 135
+#define SC_OPCODE_IS_ERR 136
+#define SC_OPCODE_IS_ERROR 137
+#define SC_OPCODE_IS_EVEN 138
+#define SC_OPCODE_IS_ODD 139
+#define SC_OPCODE_N 140
+#define SC_OPCODE_GET_DATE_VALUE 141 /* string functions */
+#define SC_OPCODE_GET_TIME_VALUE 142
+#define SC_OPCODE_CODE 143
+#define SC_OPCODE_TRIM 144
+#define SC_OPCODE_UPPER 145
+#define SC_OPCODE_PROPER 146
+#define SC_OPCODE_LOWER 147
+#define SC_OPCODE_LEN 148
+#define SC_OPCODE_T 149 /* miscellaneous, part 21 */
+#define SC_OPCODE_VALUE 150
+#define SC_OPCODE_CLEAN 151
+#define SC_OPCODE_CHAR 152
+#define SC_OPCODE_LOG10 153
+#define SC_OPCODE_EVEN 154
+#define SC_OPCODE_ODD 155
+#define SC_OPCODE_STD_NORM_DIST 156
+#define SC_OPCODE_FISHER 157
+#define SC_OPCODE_FISHER_INV 158
+#define SC_OPCODE_S_NORM_INV 159
+#define SC_OPCODE_GAMMA_LN 160
+#define SC_OPCODE_ERROR_TYPE 161
+#define SC_OPCODE_FORMULA 163
+#define SC_OPCODE_ARABIC 164
+#define SC_OPCODE_INFO 165
+#define SC_OPCODE_BAHTTEXT 166
+#define SC_OPCODE_JIS 167
+#define SC_OPCODE_ASC 168
+#define SC_OPCODE_UNICODE 169
+#define SC_OPCODE_UNICHAR 170
+#define SC_OPCODE_GAMMA 171
+#define SC_OPCODE_GAMMA_LN_MS 172
+#define SC_OPCODE_ERF_MS 173
+#define SC_OPCODE_ERFC_MS 174
+#define SC_OPCODE_ERROR_TYPE_ODF 175
+#define SC_OPCODE_ENCODEURL 176
+#define SC_OPCODE_STOP_1_PAR 177
/*** Functions with more than one parameters ***/
#define SC_OPCODE_START_2_PAR 201
diff --git a/include/formula/opcode.hxx b/include/formula/opcode.hxx
index 667edeb..c093ab5 100644
--- a/include/formula/opcode.hxx
+++ b/include/formula/opcode.hxx
@@ -40,6 +40,8 @@ enum OpCode : sal_uInt16
// Parentheses and separators
ocOpen = SC_OPCODE_OPEN,
ocClose = SC_OPCODE_CLOSE,
+ ocTableRefOpen = SC_OPCODE_TABLE_REF_OPEN,
+ ocTableRefClose = SC_OPCODE_TABLE_REF_CLOSE,
ocSep = SC_OPCODE_SEP,
ocArrayOpen = SC_OPCODE_ARRAY_OPEN,
ocArrayClose = SC_OPCODE_ARRAY_CLOSE,
commit c7a98ea861d4aae18c74a94772c4939391eb1a24
Author: Eike Rathke <erack at redhat.com>
Date: Thu Mar 5 14:09:50 2015 +0100
translate comments while at it
Change-Id: I62cce7321dfe038d1723c73ba9deb0450a03f0e5
diff --git a/formula/source/core/api/token.cxx b/formula/source/core/api/token.cxx
index 368b9b5..567c12c 100644
--- a/formula/source/core/api/token.cxx
+++ b/formula/source/core/api/token.cxx
@@ -910,7 +910,7 @@ FormulaToken* FormulaTokenArray::AddStringXML( const OUString& rStr )
void FormulaTokenArray::AddRecalcMode( ScRecalcMode nBits )
{
- //! Reihenfolge ist wichtig
+ //! Order is important.
if ( nBits & RECALCMODE_ALWAYS )
SetExclusiveRecalcModeAlways();
else if ( !IsRecalcModeAlways() )
@@ -928,8 +928,8 @@ bool FormulaTokenArray::HasMatrixDoubleRefOps()
{
if ( pRPN && nRPN )
{
- // RPN-Interpreter Simulation
- // als Ergebnis jeder Funktion wird einfach ein Double angenommen
+ // RPN-Interpreter simulation.
+ // Simply assumes a double as return value of each function.
boost::scoped_array<FormulaToken*> pStack(new FormulaToken* [nRPN]);
FormulaToken* pResult = new FormulaDoubleToken( 0.0 );
short sp = 0;
commit 1b5a62e9da2211448ab6485fd75808758cd6e644
Author: Eike Rathke <erack at redhat.com>
Date: Thu Mar 5 14:07:38 2015 +0100
add ocTableRef to lcl_IsReference()
Change-Id: I63b41ea4619098390824f335859d62b4fa8fcc66
diff --git a/formula/source/core/api/token.cxx b/formula/source/core/api/token.cxx
index 1780c57..368b9b5 100644
--- a/formula/source/core/api/token.cxx
+++ b/formula/source/core/api/token.cxx
@@ -56,6 +56,7 @@ inline bool lcl_IsReference( OpCode eOp, StackVar eType )
|| (eOp == ocColRowNameAuto && eType == svDoubleRef)
|| (eOp == ocColRowName && eType == svSingleRef)
|| (eOp == ocMatRef && eType == svSingleRef)
+ || (eOp == ocTableRef && (eType == svSingleRef || eType == svDoubleRef))
;
}
More information about the Libreoffice-commits
mailing list