replace SC_OPCODE* with oc* constants (1)
I note in moving comments around to preserve them that ocXor is in the wrong place, but it has always been that way, so I will leave it alone. Change-Id: Ia5fd59e96c478fe5f30788554cc260059a1c46e3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/201510 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
This commit is contained in:
+302
-302
@@ -34,40 +34,40 @@
|
||||
// ScCompiler::IsOpCode() in the if (mxSymbols->isODFF()) block.
|
||||
const std::pair<const char *, int> RID_STRLIST_FUNCTION_NAMES_ENGLISH_ODFF[] =
|
||||
{
|
||||
{ "IF" , SC_OPCODE_IF },
|
||||
{ "IFERROR" , SC_OPCODE_IF_ERROR },
|
||||
{ "IFNA" , SC_OPCODE_IF_NA },
|
||||
{ "CHOOSE" , SC_OPCODE_CHOOSE },
|
||||
{ "(" , SC_OPCODE_OPEN },
|
||||
{ ")" , SC_OPCODE_CLOSE },
|
||||
{ "IF" , ocIf },
|
||||
{ "IFERROR" , ocIfError },
|
||||
{ "IFNA" , ocIfNA },
|
||||
{ "CHOOSE" , ocChoose },
|
||||
{ "(" , ocOpen },
|
||||
{ ")" , ocClose },
|
||||
// SC_OPCODE_TABLE_REF_... not supported in ODFF
|
||||
{ "{" , SC_OPCODE_ARRAY_OPEN },
|
||||
{ "}" , SC_OPCODE_ARRAY_CLOSE },
|
||||
{ "|" , SC_OPCODE_ARRAY_ROW_SEP },
|
||||
{ ";" , SC_OPCODE_ARRAY_COL_SEP },
|
||||
{ ";" , SC_OPCODE_SEP },
|
||||
{ "%" , SC_OPCODE_PERCENT_SIGN },
|
||||
{ "+" , SC_OPCODE_ADD },
|
||||
{ "-" , SC_OPCODE_SUB },
|
||||
{ "*" , SC_OPCODE_MUL },
|
||||
{ "/" , SC_OPCODE_DIV },
|
||||
{ "&" , SC_OPCODE_AMPERSAND },
|
||||
{ "^" , SC_OPCODE_POW },
|
||||
{ "=" , SC_OPCODE_EQUAL },
|
||||
{ "<>" , SC_OPCODE_NOT_EQUAL },
|
||||
{ "<" , SC_OPCODE_LESS },
|
||||
{ ">" , SC_OPCODE_GREATER },
|
||||
{ "<=" , SC_OPCODE_LESS_EQUAL },
|
||||
{ ">=" , SC_OPCODE_GREATER_EQUAL },
|
||||
{ "AND" , SC_OPCODE_AND },
|
||||
{ "OR" , SC_OPCODE_OR },
|
||||
{ "XOR" , SC_OPCODE_XOR },
|
||||
{ "!" , SC_OPCODE_INTERSECT },
|
||||
{ "~" , SC_OPCODE_UNION },
|
||||
{ ":" , SC_OPCODE_RANGE },
|
||||
{ "{" , ocArrayOpen },
|
||||
{ "}" , ocArrayClose },
|
||||
{ "|" , ocArrayRowSep },
|
||||
{ ";" , ocArrayColSep },
|
||||
{ ";" , ocSep },
|
||||
{ "%" , ocPercentSign },
|
||||
{ "+" , ocAdd },
|
||||
{ "-" , ocSub },
|
||||
{ "*" , ocMul },
|
||||
{ "/" , ocDiv },
|
||||
{ "&" , ocAmpersand },
|
||||
{ "^" , ocPow },
|
||||
{ "=" , ocEqual },
|
||||
{ "<>" , ocNotEqual },
|
||||
{ "<" , ocLess },
|
||||
{ ">" , ocGreater },
|
||||
{ "<=" , ocLessEqual },
|
||||
{ ">=" , ocGreaterEqual },
|
||||
{ "AND" , ocAnd },
|
||||
{ "OR" , ocOr },
|
||||
{ "XOR" , ocXor },
|
||||
{ "!" , ocIntersect },
|
||||
{ "~" , ocUnion },
|
||||
{ ":" , ocRange },
|
||||
{ "NOT" , SC_OPCODE_NOT },
|
||||
{ "NEG" , SC_OPCODE_NEG },
|
||||
{ "-" , SC_OPCODE_NEG_SUB },
|
||||
{ "-" , ocNegSub },
|
||||
{ "PI" , SC_OPCODE_PI },
|
||||
{ "RAND" , SC_OPCODE_RANDOM },
|
||||
{ "TRUE" , SC_OPCODE_TRUE },
|
||||
@@ -173,7 +173,7 @@ const std::pair<const char *, int> RID_STRLIST_FUNCTION_NAMES_ENGLISH_ODFF[] =
|
||||
{ "ROUNDDOWN" , SC_OPCODE_ROUND_DOWN },
|
||||
{ "TRUNC" , SC_OPCODE_TRUNC },
|
||||
{ "LOG" , SC_OPCODE_LOG },
|
||||
{ "POWER" , SC_OPCODE_POWER },
|
||||
{ "POWER" , ocPowER },
|
||||
{ "GCD" , SC_OPCODE_GCD },
|
||||
{ "LCM" , SC_OPCODE_LCM },
|
||||
{ "MOD" , SC_OPCODE_MOD },
|
||||
@@ -250,7 +250,7 @@ const std::pair<const char *, int> RID_STRLIST_FUNCTION_NAMES_ENGLISH_ODFF[] =
|
||||
{ "CUMPRINC" , SC_OPCODE_CUM_PRINC },
|
||||
{ "EFFECT" , SC_OPCODE_EFFECT },
|
||||
{ "NOMINAL" , SC_OPCODE_NOMINAL },
|
||||
{ "SUBTOTAL" , SC_OPCODE_SUB_TOTAL },
|
||||
{ "SUBTOTAL" , ocSub_TOTAL },
|
||||
{ "DSUM" , SC_OPCODE_DB_SUM },
|
||||
{ "DCOUNT" , SC_OPCODE_DB_COUNT },
|
||||
{ "DCOUNTA" , SC_OPCODE_DB_COUNT_2 },
|
||||
@@ -264,7 +264,7 @@ const std::pair<const char *, int> RID_STRLIST_FUNCTION_NAMES_ENGLISH_ODFF[] =
|
||||
{ "DVAR" , SC_OPCODE_DB_VAR },
|
||||
{ "DVARP" , SC_OPCODE_DB_VAR_P },
|
||||
{ "INDIRECT" , SC_OPCODE_INDIRECT },
|
||||
{ "ADDRESS" , SC_OPCODE_ADDRESS },
|
||||
{ "ADDRESS" , ocAddRESS },
|
||||
{ "MATCH" , SC_OPCODE_MATCH },
|
||||
{ "COM.MICROSOFT.XMATCH" , SC_OPCODE_X_MATCH },
|
||||
{ "COUNTBLANK" , SC_OPCODE_COUNT_EMPTY_CELLS },
|
||||
@@ -294,11 +294,11 @@ const std::pair<const char *, int> RID_STRLIST_FUNCTION_NAMES_ENGLISH_ODFF[] =
|
||||
{ "COM.MICROSOFT.TOCOL" , SC_OPCODE_TOCOL },
|
||||
{ "COM.MICROSOFT.TOROW" , SC_OPCODE_TOROW },
|
||||
{ "COM.MICROSOFT.UNIQUE" , SC_OPCODE_UNIQUE },
|
||||
{ "COM.MICROSOFT.LET" , SC_OPCODE_LET },
|
||||
{ "COM.MICROSOFT.LET" , ocLet },
|
||||
{ "COM.MICROSOFT.WRAPCOLS" , SC_OPCODE_WRAPCOLS },
|
||||
{ "COM.MICROSOFT.WRAPROWS" , SC_OPCODE_WRAPROWS },
|
||||
{ "_xlpm." , SC_OPCODE_STRINGNAME },
|
||||
{ "ORG.OPENOFFICE.MULTIRANGE" , SC_OPCODE_MULTI_AREA }, // legacy for range list (union)
|
||||
{ "_xlpm." , ocStringName },
|
||||
{ "ORG.OPENOFFICE.MULTIRANGE" , ocMulTI_AREA }, // legacy for range list (union)
|
||||
{ "OFFSET" , SC_OPCODE_OFFSET },
|
||||
{ "INDEX" , SC_OPCODE_INDEX },
|
||||
{ "AREAS" , SC_OPCODE_AREAS },
|
||||
@@ -319,7 +319,7 @@ const std::pair<const char *, int> RID_STRLIST_FUNCTION_NAMES_ENGLISH_ODFF[] =
|
||||
{ "SEARCHB" , SC_OPCODE_SEARCHB },
|
||||
{ "MIDB" , SC_OPCODE_MIDB },
|
||||
{ "TEXT" , SC_OPCODE_TEXT },
|
||||
{ "SUBSTITUTE" , SC_OPCODE_SUBSTITUTE },
|
||||
{ "SUBSTITUTE" , ocSubSTITUTE },
|
||||
{ "REPT" , SC_OPCODE_REPT },
|
||||
{ "CONCATENATE" , SC_OPCODE_CONCAT },
|
||||
{ "COM.MICROSOFT.CONCAT" , SC_OPCODE_CONCAT_MS },
|
||||
@@ -472,13 +472,13 @@ const std::pair<const char *, int> RID_STRLIST_FUNCTION_NAMES_ENGLISH_ODFF[] =
|
||||
{ "BITRSHIFT" , SC_OPCODE_BITRSHIFT },
|
||||
{ "BITLSHIFT" , SC_OPCODE_BITLSHIFT },
|
||||
/* BEGIN defined ERROR.TYPE() values. */
|
||||
{ "#NULL!" , SC_OPCODE_ERROR_NULL },
|
||||
{ "#DIV/0!" , SC_OPCODE_ERROR_DIVZERO },
|
||||
{ "#VALUE!" , SC_OPCODE_ERROR_VALUE },
|
||||
{ "#REF!" , SC_OPCODE_ERROR_REF },
|
||||
{ "#NAME?" , SC_OPCODE_ERROR_NAME },
|
||||
{ "#NUM!" , SC_OPCODE_ERROR_NUM },
|
||||
{ "#N/A" , SC_OPCODE_ERROR_NA },
|
||||
{ "#NULL!" , ocErrNull },
|
||||
{ "#DIV/0!" , ocErrDivZero },
|
||||
{ "#VALUE!" , ocErrValue },
|
||||
{ "#REF!" , ocErrRef },
|
||||
{ "#NAME?" , ocErrName },
|
||||
{ "#NUM!" , ocErrNum },
|
||||
{ "#N/A" , ocErrNA },
|
||||
/* END defined ERROR.TYPE() values. */
|
||||
{ "COM.MICROSOFT.FILTERXML" , SC_OPCODE_FILTERXML },
|
||||
{ "COM.MICROSOFT.WEBSERVICE" , SC_OPCODE_WEBSERVICE },
|
||||
@@ -499,46 +499,46 @@ const std::pair<const char *, int> RID_STRLIST_FUNCTION_NAMES_ENGLISH_ODFF[] =
|
||||
/** These function names are used in the OOXML XLSX import/export. */
|
||||
const std::pair<const char *, int> RID_STRLIST_FUNCTION_NAMES_ENGLISH_OOXML[] =
|
||||
{
|
||||
{ "IF" , SC_OPCODE_IF },
|
||||
{ "IFERROR" , SC_OPCODE_IF_ERROR },
|
||||
{ "_xlfn.IFNA" , SC_OPCODE_IF_NA },
|
||||
{ "CHOOSE" , SC_OPCODE_CHOOSE },
|
||||
{ "(" , SC_OPCODE_OPEN },
|
||||
{ ")" , SC_OPCODE_CLOSE },
|
||||
{ "[" , SC_OPCODE_TABLE_REF_OPEN },
|
||||
{ "]" , SC_OPCODE_TABLE_REF_CLOSE },
|
||||
{ "#All" , SC_OPCODE_TABLE_REF_ITEM_ALL },
|
||||
{ "#Headers" , SC_OPCODE_TABLE_REF_ITEM_HEADERS },
|
||||
{ "#Data" , SC_OPCODE_TABLE_REF_ITEM_DATA },
|
||||
{ "#Totals" , SC_OPCODE_TABLE_REF_ITEM_TOTALS },
|
||||
{ "#This Row" , SC_OPCODE_TABLE_REF_ITEM_THIS_ROW },
|
||||
{ "{" , SC_OPCODE_ARRAY_OPEN },
|
||||
{ "}" , SC_OPCODE_ARRAY_CLOSE },
|
||||
{ ";" , SC_OPCODE_ARRAY_ROW_SEP },
|
||||
{ "," , SC_OPCODE_ARRAY_COL_SEP },
|
||||
{ "," , SC_OPCODE_SEP },
|
||||
{ "%" , SC_OPCODE_PERCENT_SIGN },
|
||||
{ "+" , SC_OPCODE_ADD },
|
||||
{ "-" , SC_OPCODE_SUB },
|
||||
{ "*" , SC_OPCODE_MUL },
|
||||
{ "/" , SC_OPCODE_DIV },
|
||||
{ "&" , SC_OPCODE_AMPERSAND },
|
||||
{ "^" , SC_OPCODE_POW },
|
||||
{ "=" , SC_OPCODE_EQUAL },
|
||||
{ "<>" , SC_OPCODE_NOT_EQUAL },
|
||||
{ "<" , SC_OPCODE_LESS },
|
||||
{ ">" , SC_OPCODE_GREATER },
|
||||
{ "<=" , SC_OPCODE_LESS_EQUAL },
|
||||
{ ">=" , SC_OPCODE_GREATER_EQUAL },
|
||||
{ "AND" , SC_OPCODE_AND },
|
||||
{ "OR" , SC_OPCODE_OR },
|
||||
{ "_xlfn.XOR" , SC_OPCODE_XOR },
|
||||
{ " " , SC_OPCODE_INTERSECT },
|
||||
{ "," , SC_OPCODE_UNION }, // Excel uses ',' as Union operator
|
||||
{ ":" , SC_OPCODE_RANGE },
|
||||
{ "IF" , ocIf },
|
||||
{ "IFERROR" , ocIfError },
|
||||
{ "_xlfn.IFNA" , ocIfNA },
|
||||
{ "CHOOSE" , ocChoose },
|
||||
{ "(" , ocOpen },
|
||||
{ ")" , ocClose },
|
||||
{ "[" , ocTableRefOpen },
|
||||
{ "]" , ocTableRefClose },
|
||||
{ "#All" , ocTableRefItemAll },
|
||||
{ "#Headers" , ocTableRefItemHeaders },
|
||||
{ "#Data" , ocTableRefItemData },
|
||||
{ "#Totals" , ocTableRefItemTotals },
|
||||
{ "#This Row" , ocTableRefItemThisRow },
|
||||
{ "{" , ocArrayOpen },
|
||||
{ "}" , ocArrayClose },
|
||||
{ ";" , ocArrayRowSep },
|
||||
{ "," , ocArrayColSep },
|
||||
{ "," , ocSep },
|
||||
{ "%" , ocPercentSign },
|
||||
{ "+" , ocAdd },
|
||||
{ "-" , ocSub },
|
||||
{ "*" , ocMul },
|
||||
{ "/" , ocDiv },
|
||||
{ "&" , ocAmpersand },
|
||||
{ "^" , ocPow },
|
||||
{ "=" , ocEqual },
|
||||
{ "<>" , ocNotEqual },
|
||||
{ "<" , ocLess },
|
||||
{ ">" , ocGreater },
|
||||
{ "<=" , ocLessEqual },
|
||||
{ ">=" , ocGreaterEqual },
|
||||
{ "AND" , ocAnd },
|
||||
{ "OR" , ocOr },
|
||||
{ "_xlfn.XOR" , ocXor },
|
||||
{ " " , ocIntersect },
|
||||
{ "," , ocUnion }, // Excel uses ',' as Union operator
|
||||
{ ":" , ocRange },
|
||||
{ "NOT" , SC_OPCODE_NOT },
|
||||
{ "NEG" , SC_OPCODE_NEG },
|
||||
{ "-" , SC_OPCODE_NEG_SUB },
|
||||
{ "-" , ocNegSub },
|
||||
{ "PI" , SC_OPCODE_PI },
|
||||
{ "RAND" , SC_OPCODE_RANDOM },
|
||||
{ "TRUE" , SC_OPCODE_TRUE },
|
||||
@@ -644,7 +644,7 @@ const std::pair<const char *, int> RID_STRLIST_FUNCTION_NAMES_ENGLISH_OOXML[] =
|
||||
{ "ROUNDDOWN" , SC_OPCODE_ROUND_DOWN },
|
||||
{ "TRUNC" , SC_OPCODE_TRUNC },
|
||||
{ "LOG" , SC_OPCODE_LOG },
|
||||
{ "POWER" , SC_OPCODE_POWER },
|
||||
{ "POWER" , ocPowER },
|
||||
{ "GCD" , SC_OPCODE_GCD },
|
||||
{ "LCM" , SC_OPCODE_LCM },
|
||||
{ "MOD" , SC_OPCODE_MOD },
|
||||
@@ -721,7 +721,7 @@ const std::pair<const char *, int> RID_STRLIST_FUNCTION_NAMES_ENGLISH_OOXML[] =
|
||||
{ "CUMPRINC" , SC_OPCODE_CUM_PRINC },
|
||||
{ "EFFECT" , SC_OPCODE_EFFECT },
|
||||
{ "NOMINAL" , SC_OPCODE_NOMINAL },
|
||||
{ "SUBTOTAL" , SC_OPCODE_SUB_TOTAL },
|
||||
{ "SUBTOTAL" , ocSub_TOTAL },
|
||||
{ "DSUM" , SC_OPCODE_DB_SUM },
|
||||
{ "DCOUNT" , SC_OPCODE_DB_COUNT },
|
||||
{ "DCOUNTA" , SC_OPCODE_DB_COUNT_2 },
|
||||
@@ -735,7 +735,7 @@ const std::pair<const char *, int> RID_STRLIST_FUNCTION_NAMES_ENGLISH_OOXML[] =
|
||||
{ "DVAR" , SC_OPCODE_DB_VAR },
|
||||
{ "DVARP" , SC_OPCODE_DB_VAR_P },
|
||||
{ "INDIRECT" , SC_OPCODE_INDIRECT },
|
||||
{ "ADDRESS" , SC_OPCODE_ADDRESS },
|
||||
{ "ADDRESS" , ocAddRESS },
|
||||
{ "MATCH" , SC_OPCODE_MATCH },
|
||||
{ "_xlfn.XMATCH" , SC_OPCODE_X_MATCH },
|
||||
{ "COUNTBLANK" , SC_OPCODE_COUNT_EMPTY_CELLS },
|
||||
@@ -765,11 +765,11 @@ const std::pair<const char *, int> RID_STRLIST_FUNCTION_NAMES_ENGLISH_OOXML[] =
|
||||
{ "_xlfn.TOCOL" , SC_OPCODE_TOCOL },
|
||||
{ "_xlfn.TOROW" , SC_OPCODE_TOROW },
|
||||
{ "_xlfn.UNIQUE" , SC_OPCODE_UNIQUE },
|
||||
{ "_xlfn.LET" , SC_OPCODE_LET },
|
||||
{ "_xlfn.LET" , ocLet },
|
||||
{ "_xlfn.WRAPCOLS" , SC_OPCODE_WRAPCOLS },
|
||||
{ "_xlfn.WRAPROWS" , SC_OPCODE_WRAPROWS },
|
||||
{ "_xlpm." , SC_OPCODE_STRINGNAME },
|
||||
{ "_xlfn.ORG.OPENOFFICE.MULTIRANGE" , SC_OPCODE_MULTI_AREA }, // legacy for range list (union)
|
||||
{ "_xlpm." , ocStringName },
|
||||
{ "_xlfn.ORG.OPENOFFICE.MULTIRANGE" , ocMulTI_AREA }, // legacy for range list (union)
|
||||
{ "OFFSET" , SC_OPCODE_OFFSET },
|
||||
{ "INDEX" , SC_OPCODE_INDEX },
|
||||
{ "AREAS" , SC_OPCODE_AREAS },
|
||||
@@ -790,7 +790,7 @@ const std::pair<const char *, int> RID_STRLIST_FUNCTION_NAMES_ENGLISH_OOXML[] =
|
||||
{ "SEARCHB" , SC_OPCODE_SEARCHB },
|
||||
{ "MIDB" , SC_OPCODE_MIDB },
|
||||
{ "TEXT" , SC_OPCODE_TEXT },
|
||||
{ "SUBSTITUTE" , SC_OPCODE_SUBSTITUTE },
|
||||
{ "SUBSTITUTE" , ocSubSTITUTE },
|
||||
{ "REPT" , SC_OPCODE_REPT },
|
||||
{ "CONCATENATE" , SC_OPCODE_CONCAT },
|
||||
{ "_xlfn.CONCAT" , SC_OPCODE_CONCAT_MS },
|
||||
@@ -942,13 +942,13 @@ const std::pair<const char *, int> RID_STRLIST_FUNCTION_NAMES_ENGLISH_OOXML[] =
|
||||
{ "_xlfn.BITXOR" , SC_OPCODE_BITXOR },
|
||||
{ "_xlfn.BITRSHIFT" , SC_OPCODE_BITRSHIFT },
|
||||
{ "_xlfn.BITLSHIFT" , SC_OPCODE_BITLSHIFT },
|
||||
{ "#NULL!" , SC_OPCODE_ERROR_NULL },
|
||||
{ "#DIV/0!" , SC_OPCODE_ERROR_DIVZERO },
|
||||
{ "#VALUE!" , SC_OPCODE_ERROR_VALUE },
|
||||
{ "#REF!" , SC_OPCODE_ERROR_REF },
|
||||
{ "#NAME?" , SC_OPCODE_ERROR_NAME },
|
||||
{ "#NUM!" , SC_OPCODE_ERROR_NUM },
|
||||
{ "#N/A" , SC_OPCODE_ERROR_NA },
|
||||
{ "#NULL!" , ocErrNull },
|
||||
{ "#DIV/0!" , ocErrDivZero },
|
||||
{ "#VALUE!" , ocErrValue },
|
||||
{ "#REF!" , ocErrRef },
|
||||
{ "#NAME?" , ocErrName },
|
||||
{ "#NUM!" , ocErrNum },
|
||||
{ "#N/A" , ocErrNA },
|
||||
/* END defined ERROR.TYPE() values. */
|
||||
{ "_xlfn.FILTERXML" , SC_OPCODE_FILTERXML },
|
||||
{ "_xlfn.WEBSERVICE" , SC_OPCODE_WEBSERVICE },
|
||||
@@ -963,7 +963,7 @@ const std::pair<const char *, int> RID_STRLIST_FUNCTION_NAMES_ENGLISH_OOXML[] =
|
||||
{ "_xlfn.ORG.LIBREOFFICE.RAND.NV" , SC_OPCODE_RANDOM_NV },
|
||||
{ "_xlfn.ORG.LIBREOFFICE.RANDBETWEEN.NV" , SC_OPCODE_RANDBETWEEN_NV },
|
||||
{ "_xlfn.RANDARRAY" , SC_OPCODE_RANDARRAY },
|
||||
{ "#REF!", SC_OPCODE_STOP },
|
||||
{ "#REF!", ocStop },
|
||||
{ nullptr, -1 }
|
||||
};
|
||||
|
||||
@@ -974,46 +974,46 @@ const std::pair<const char *, int> RID_STRLIST_FUNCTION_NAMES_ENGLISH_OOXML[] =
|
||||
// ScCompiler::IsOpCode() in the else if (mxSymbols->isPODF()) block.
|
||||
const std::pair<const char *, int> RID_STRLIST_FUNCTION_NAMES_ENGLISH_PODF[] =
|
||||
{
|
||||
{ "IF" , SC_OPCODE_IF },
|
||||
{ "IFERROR" , SC_OPCODE_IF_ERROR },
|
||||
{ "IFNA" , SC_OPCODE_IF_NA },
|
||||
{ "CHOOSE" , SC_OPCODE_CHOOSE },
|
||||
{ "(" , SC_OPCODE_OPEN },
|
||||
{ ")" , SC_OPCODE_CLOSE },
|
||||
{ "[" , SC_OPCODE_TABLE_REF_OPEN },
|
||||
{ "]" , SC_OPCODE_TABLE_REF_CLOSE },
|
||||
{ "#All" , SC_OPCODE_TABLE_REF_ITEM_ALL },
|
||||
{ "#Headers" , SC_OPCODE_TABLE_REF_ITEM_HEADERS },
|
||||
{ "#Data" , SC_OPCODE_TABLE_REF_ITEM_DATA },
|
||||
{ "#Totals" , SC_OPCODE_TABLE_REF_ITEM_TOTALS },
|
||||
{ "#This Row" , SC_OPCODE_TABLE_REF_ITEM_THIS_ROW },
|
||||
{ "{" , SC_OPCODE_ARRAY_OPEN },
|
||||
{ "}" , SC_OPCODE_ARRAY_CLOSE },
|
||||
{ "|" , SC_OPCODE_ARRAY_ROW_SEP },
|
||||
{ ";" , SC_OPCODE_ARRAY_COL_SEP },
|
||||
{ ";" , SC_OPCODE_SEP },
|
||||
{ "%" , SC_OPCODE_PERCENT_SIGN },
|
||||
{ "+" , SC_OPCODE_ADD },
|
||||
{ "-" , SC_OPCODE_SUB },
|
||||
{ "*" , SC_OPCODE_MUL },
|
||||
{ "/" , SC_OPCODE_DIV },
|
||||
{ "&" , SC_OPCODE_AMPERSAND },
|
||||
{ "^" , SC_OPCODE_POW },
|
||||
{ "=" , SC_OPCODE_EQUAL },
|
||||
{ "<>" , SC_OPCODE_NOT_EQUAL },
|
||||
{ "<" , SC_OPCODE_LESS },
|
||||
{ ">" , SC_OPCODE_GREATER },
|
||||
{ "<=" , SC_OPCODE_LESS_EQUAL },
|
||||
{ ">=" , SC_OPCODE_GREATER_EQUAL },
|
||||
{ "AND" , SC_OPCODE_AND },
|
||||
{ "OR" , SC_OPCODE_OR },
|
||||
{ "XOR" , SC_OPCODE_XOR },
|
||||
{ "!" , SC_OPCODE_INTERSECT },
|
||||
{ "~" , SC_OPCODE_UNION },
|
||||
{ ":" , SC_OPCODE_RANGE },
|
||||
{ "IF" , ocIf },
|
||||
{ "IFERROR" , ocIfError },
|
||||
{ "IFNA" , ocIfNA },
|
||||
{ "CHOOSE" , ocChoose },
|
||||
{ "(" , ocOpen },
|
||||
{ ")" , ocClose },
|
||||
{ "[" , ocTableRefOpen },
|
||||
{ "]" , ocTableRefClose },
|
||||
{ "#All" , ocTableRefItemAll },
|
||||
{ "#Headers" , ocTableRefItemHeaders },
|
||||
{ "#Data" , ocTableRefItemData },
|
||||
{ "#Totals" , ocTableRefItemTotals },
|
||||
{ "#This Row" , ocTableRefItemThisRow },
|
||||
{ "{" , ocArrayOpen },
|
||||
{ "}" , ocArrayClose },
|
||||
{ "|" , ocArrayRowSep },
|
||||
{ ";" , ocArrayColSep },
|
||||
{ ";" , ocSep },
|
||||
{ "%" , ocPercentSign },
|
||||
{ "+" , ocAdd },
|
||||
{ "-" , ocSub },
|
||||
{ "*" , ocMul },
|
||||
{ "/" , ocDiv },
|
||||
{ "&" , ocAmpersand },
|
||||
{ "^" , ocPow },
|
||||
{ "=" , ocEqual },
|
||||
{ "<>" , ocNotEqual },
|
||||
{ "<" , ocLess },
|
||||
{ ">" , ocGreater },
|
||||
{ "<=" , ocLessEqual },
|
||||
{ ">=" , ocGreaterEqual },
|
||||
{ "AND" , ocAnd },
|
||||
{ "OR" , ocOr },
|
||||
{ "XOR" , ocXor },
|
||||
{ "!" , ocIntersect },
|
||||
{ "~" , ocUnion },
|
||||
{ ":" , ocRange },
|
||||
{ "NOT" , SC_OPCODE_NOT },
|
||||
{ "NEG" , SC_OPCODE_NEG },
|
||||
{ "-" , SC_OPCODE_NEG_SUB },
|
||||
{ "-" , ocNegSub },
|
||||
{ "PI" , SC_OPCODE_PI },
|
||||
{ "RAND" , SC_OPCODE_RANDOM },
|
||||
{ "TRUE" , SC_OPCODE_TRUE },
|
||||
@@ -1119,7 +1119,7 @@ const std::pair<const char *, int> RID_STRLIST_FUNCTION_NAMES_ENGLISH_PODF[] =
|
||||
{ "ROUNDDOWN" , SC_OPCODE_ROUND_DOWN },
|
||||
{ "TRUNC" , SC_OPCODE_TRUNC },
|
||||
{ "LOG" , SC_OPCODE_LOG },
|
||||
{ "POWER" , SC_OPCODE_POWER },
|
||||
{ "POWER" , ocPowER },
|
||||
{ "GCD" , SC_OPCODE_GCD },
|
||||
{ "LCM" , SC_OPCODE_LCM },
|
||||
{ "MOD" , SC_OPCODE_MOD },
|
||||
@@ -1196,7 +1196,7 @@ const std::pair<const char *, int> RID_STRLIST_FUNCTION_NAMES_ENGLISH_PODF[] =
|
||||
{ "CUMPRINC" , SC_OPCODE_CUM_PRINC },
|
||||
{ "EFFECTIVE" , SC_OPCODE_EFFECT },
|
||||
{ "NOMINAL" , SC_OPCODE_NOMINAL },
|
||||
{ "SUBTOTAL" , SC_OPCODE_SUB_TOTAL },
|
||||
{ "SUBTOTAL" , ocSub_TOTAL },
|
||||
{ "DSUM" , SC_OPCODE_DB_SUM },
|
||||
{ "DCOUNT" , SC_OPCODE_DB_COUNT },
|
||||
{ "DCOUNTA" , SC_OPCODE_DB_COUNT_2 },
|
||||
@@ -1210,7 +1210,7 @@ const std::pair<const char *, int> RID_STRLIST_FUNCTION_NAMES_ENGLISH_PODF[] =
|
||||
{ "DVAR" , SC_OPCODE_DB_VAR },
|
||||
{ "DVARP" , SC_OPCODE_DB_VAR_P },
|
||||
{ "INDIRECT" , SC_OPCODE_INDIRECT },
|
||||
{ "ADDRESS" , SC_OPCODE_ADDRESS },
|
||||
{ "ADDRESS" , ocAddRESS },
|
||||
{ "MATCH" , SC_OPCODE_MATCH },
|
||||
{ "XMATCH" , SC_OPCODE_X_MATCH },
|
||||
{ "COUNTBLANK" , SC_OPCODE_COUNT_EMPTY_CELLS },
|
||||
@@ -1240,10 +1240,10 @@ const std::pair<const char *, int> RID_STRLIST_FUNCTION_NAMES_ENGLISH_PODF[] =
|
||||
{ "TOCOL" , SC_OPCODE_TOCOL },
|
||||
{ "TOROW" , SC_OPCODE_TOROW },
|
||||
{ "UNIQUE" , SC_OPCODE_UNIQUE },
|
||||
{ "LET" , SC_OPCODE_LET },
|
||||
{ "LET" , ocLet },
|
||||
{ "WRAPCOLS" , SC_OPCODE_WRAPCOLS },
|
||||
{ "WRAPROWS" , SC_OPCODE_WRAPROWS },
|
||||
{ "MULTIRANGE" , SC_OPCODE_MULTI_AREA }, // legacy for range list (union)
|
||||
{ "MULTIRANGE" , ocMulTI_AREA }, // legacy for range list (union)
|
||||
{ "OFFSET" , SC_OPCODE_OFFSET },
|
||||
{ "INDEX" , SC_OPCODE_INDEX },
|
||||
{ "AREAS" , SC_OPCODE_AREAS },
|
||||
@@ -1264,7 +1264,7 @@ const std::pair<const char *, int> RID_STRLIST_FUNCTION_NAMES_ENGLISH_PODF[] =
|
||||
{ "SEARCHB" , SC_OPCODE_SEARCHB },
|
||||
{ "MIDB" , SC_OPCODE_MIDB },
|
||||
{ "TEXT" , SC_OPCODE_TEXT },
|
||||
{ "SUBSTITUTE" , SC_OPCODE_SUBSTITUTE },
|
||||
{ "SUBSTITUTE" , ocSubSTITUTE },
|
||||
{ "REPT" , SC_OPCODE_REPT },
|
||||
{ "CONCATENATE" , SC_OPCODE_CONCAT },
|
||||
{ "CONCAT" , SC_OPCODE_CONCAT_MS },
|
||||
@@ -1417,13 +1417,13 @@ const std::pair<const char *, int> RID_STRLIST_FUNCTION_NAMES_ENGLISH_PODF[] =
|
||||
{ "BITRSHIFT" , SC_OPCODE_BITRSHIFT },
|
||||
{ "BITLSHIFT" , SC_OPCODE_BITLSHIFT },
|
||||
/* BEGIN defined ERROR.TYPE() values. */
|
||||
{ "#NULL!" , SC_OPCODE_ERROR_NULL },
|
||||
{ "#DIV/0!" , SC_OPCODE_ERROR_DIVZERO },
|
||||
{ "#VALUE!" , SC_OPCODE_ERROR_VALUE },
|
||||
{ "#REF!" , SC_OPCODE_ERROR_REF },
|
||||
{ "#NAME?" , SC_OPCODE_ERROR_NAME },
|
||||
{ "#NUM!" , SC_OPCODE_ERROR_NUM },
|
||||
{ "#N/A" , SC_OPCODE_ERROR_NA },
|
||||
{ "#NULL!" , ocErrNull },
|
||||
{ "#DIV/0!" , ocErrDivZero },
|
||||
{ "#VALUE!" , ocErrValue },
|
||||
{ "#REF!" , ocErrRef },
|
||||
{ "#NAME?" , ocErrName },
|
||||
{ "#NUM!" , ocErrNum },
|
||||
{ "#N/A" , ocErrNA },
|
||||
/* END defined ERROR.TYPE() values. */
|
||||
{ "FILTERXML" , SC_OPCODE_FILTERXML },
|
||||
{ "WEBSERVICE" , SC_OPCODE_WEBSERVICE },
|
||||
@@ -1448,46 +1448,46 @@ const std::pair<const char *, int> RID_STRLIST_FUNCTION_NAMES_ENGLISH_PODF[] =
|
||||
// ScCompiler::IsOpCode().
|
||||
const std::pair<const char *, int> RID_STRLIST_FUNCTION_NAMES_ENGLISH_API[] =
|
||||
{
|
||||
{ "IF" , SC_OPCODE_IF },
|
||||
{ "IFERROR" , SC_OPCODE_IF_ERROR },
|
||||
{ "IFNA" , SC_OPCODE_IF_NA },
|
||||
{ "CHOOSE" , SC_OPCODE_CHOOSE },
|
||||
{ "(" , SC_OPCODE_OPEN },
|
||||
{ ")" , SC_OPCODE_CLOSE },
|
||||
{ "[" , SC_OPCODE_TABLE_REF_OPEN },
|
||||
{ "]" , SC_OPCODE_TABLE_REF_CLOSE },
|
||||
{ "#All" , SC_OPCODE_TABLE_REF_ITEM_ALL },
|
||||
{ "#Headers" , SC_OPCODE_TABLE_REF_ITEM_HEADERS },
|
||||
{ "#Data" , SC_OPCODE_TABLE_REF_ITEM_DATA },
|
||||
{ "#Totals" , SC_OPCODE_TABLE_REF_ITEM_TOTALS },
|
||||
{ "#This Row" , SC_OPCODE_TABLE_REF_ITEM_THIS_ROW },
|
||||
{ "{" , SC_OPCODE_ARRAY_OPEN },
|
||||
{ "}" , SC_OPCODE_ARRAY_CLOSE },
|
||||
{ "|" , SC_OPCODE_ARRAY_ROW_SEP },
|
||||
{ ";" , SC_OPCODE_ARRAY_COL_SEP },
|
||||
{ ";" , SC_OPCODE_SEP },
|
||||
{ "%" , SC_OPCODE_PERCENT_SIGN },
|
||||
{ "+" , SC_OPCODE_ADD },
|
||||
{ "-" , SC_OPCODE_SUB },
|
||||
{ "*" , SC_OPCODE_MUL },
|
||||
{ "/" , SC_OPCODE_DIV },
|
||||
{ "&" , SC_OPCODE_AMPERSAND },
|
||||
{ "^" , SC_OPCODE_POW },
|
||||
{ "=" , SC_OPCODE_EQUAL },
|
||||
{ "<>" , SC_OPCODE_NOT_EQUAL },
|
||||
{ "<" , SC_OPCODE_LESS },
|
||||
{ ">" , SC_OPCODE_GREATER },
|
||||
{ "<=" , SC_OPCODE_LESS_EQUAL },
|
||||
{ ">=" , SC_OPCODE_GREATER_EQUAL },
|
||||
{ "AND" , SC_OPCODE_AND },
|
||||
{ "OR" , SC_OPCODE_OR },
|
||||
{ "XOR" , SC_OPCODE_XOR },
|
||||
{ "!" , SC_OPCODE_INTERSECT },
|
||||
{ "~" , SC_OPCODE_UNION },
|
||||
{ ":" , SC_OPCODE_RANGE },
|
||||
{ "IF" , ocIf },
|
||||
{ "IFERROR" , ocIfError },
|
||||
{ "IFNA" , ocIfNA },
|
||||
{ "CHOOSE" , ocChoose },
|
||||
{ "(" , ocOpen },
|
||||
{ ")" , ocClose },
|
||||
{ "[" , ocTableRefOpen },
|
||||
{ "]" , ocTableRefClose },
|
||||
{ "#All" , ocTableRefItemAll },
|
||||
{ "#Headers" , ocTableRefItemHeaders },
|
||||
{ "#Data" , ocTableRefItemData },
|
||||
{ "#Totals" , ocTableRefItemTotals },
|
||||
{ "#This Row" , ocTableRefItemThisRow },
|
||||
{ "{" , ocArrayOpen },
|
||||
{ "}" , ocArrayClose },
|
||||
{ "|" , ocArrayRowSep },
|
||||
{ ";" , ocArrayColSep },
|
||||
{ ";" , ocSep },
|
||||
{ "%" , ocPercentSign },
|
||||
{ "+" , ocAdd },
|
||||
{ "-" , ocSub },
|
||||
{ "*" , ocMul },
|
||||
{ "/" , ocDiv },
|
||||
{ "&" , ocAmpersand },
|
||||
{ "^" , ocPow },
|
||||
{ "=" , ocEqual },
|
||||
{ "<>" , ocNotEqual },
|
||||
{ "<" , ocLess },
|
||||
{ ">" , ocGreater },
|
||||
{ "<=" , ocLessEqual },
|
||||
{ ">=" , ocGreaterEqual },
|
||||
{ "AND" , ocAnd },
|
||||
{ "OR" , ocOr },
|
||||
{ "XOR" , ocXor },
|
||||
{ "!" , ocIntersect },
|
||||
{ "~" , ocUnion },
|
||||
{ ":" , ocRange },
|
||||
{ "NOT" , SC_OPCODE_NOT },
|
||||
{ "NEG" , SC_OPCODE_NEG },
|
||||
{ "-" , SC_OPCODE_NEG_SUB },
|
||||
{ "-" , ocNegSub },
|
||||
{ "PI" , SC_OPCODE_PI },
|
||||
{ "RAND" , SC_OPCODE_RANDOM },
|
||||
{ "TRUE" , SC_OPCODE_TRUE },
|
||||
@@ -1593,7 +1593,7 @@ const std::pair<const char *, int> RID_STRLIST_FUNCTION_NAMES_ENGLISH_API[] =
|
||||
{ "ROUNDDOWN" , SC_OPCODE_ROUND_DOWN },
|
||||
{ "TRUNC" , SC_OPCODE_TRUNC },
|
||||
{ "LOG" , SC_OPCODE_LOG },
|
||||
{ "POWER" , SC_OPCODE_POWER },
|
||||
{ "POWER" , ocPowER },
|
||||
{ "GCD" , SC_OPCODE_GCD },
|
||||
{ "LCM" , SC_OPCODE_LCM },
|
||||
{ "MOD" , SC_OPCODE_MOD },
|
||||
@@ -1670,7 +1670,7 @@ const std::pair<const char *, int> RID_STRLIST_FUNCTION_NAMES_ENGLISH_API[] =
|
||||
{ "CUMPRINC" , SC_OPCODE_CUM_PRINC },
|
||||
{ "EFFECTIVE" , SC_OPCODE_EFFECT },
|
||||
{ "NOMINAL" , SC_OPCODE_NOMINAL },
|
||||
{ "SUBTOTAL" , SC_OPCODE_SUB_TOTAL },
|
||||
{ "SUBTOTAL" , ocSub_TOTAL },
|
||||
{ "DSUM" , SC_OPCODE_DB_SUM },
|
||||
{ "DCOUNT" , SC_OPCODE_DB_COUNT },
|
||||
{ "DCOUNTA" , SC_OPCODE_DB_COUNT_2 },
|
||||
@@ -1684,7 +1684,7 @@ const std::pair<const char *, int> RID_STRLIST_FUNCTION_NAMES_ENGLISH_API[] =
|
||||
{ "DVAR" , SC_OPCODE_DB_VAR },
|
||||
{ "DVARP" , SC_OPCODE_DB_VAR_P },
|
||||
{ "INDIRECT" , SC_OPCODE_INDIRECT },
|
||||
{ "ADDRESS" , SC_OPCODE_ADDRESS },
|
||||
{ "ADDRESS" , ocAddRESS },
|
||||
{ "MATCH" , SC_OPCODE_MATCH },
|
||||
{ "XMATCH" , SC_OPCODE_X_MATCH },
|
||||
{ "COUNTBLANK" , SC_OPCODE_COUNT_EMPTY_CELLS },
|
||||
@@ -1714,10 +1714,10 @@ const std::pair<const char *, int> RID_STRLIST_FUNCTION_NAMES_ENGLISH_API[] =
|
||||
{ "TOCOL" , SC_OPCODE_TOCOL },
|
||||
{ "TOROW" , SC_OPCODE_TOROW },
|
||||
{ "UNIQUE" , SC_OPCODE_UNIQUE },
|
||||
{ "LET" , SC_OPCODE_LET },
|
||||
{ "LET" , ocLet },
|
||||
{ "WRAPCOLS" , SC_OPCODE_WRAPCOLS },
|
||||
{ "WRAPROWS" , SC_OPCODE_WRAPROWS },
|
||||
{ "MULTIRANGE" , SC_OPCODE_MULTI_AREA }, // legacy for range list (union)
|
||||
{ "MULTIRANGE" , ocMulTI_AREA }, // legacy for range list (union)
|
||||
{ "OFFSET" , SC_OPCODE_OFFSET },
|
||||
{ "INDEX" , SC_OPCODE_INDEX }, // ?? first character = I ??
|
||||
{ "AREAS" , SC_OPCODE_AREAS },
|
||||
@@ -1738,7 +1738,7 @@ const std::pair<const char *, int> RID_STRLIST_FUNCTION_NAMES_ENGLISH_API[] =
|
||||
{ "SEARCHB" , SC_OPCODE_SEARCHB },
|
||||
{ "MIDB" , SC_OPCODE_MIDB },
|
||||
{ "TEXT" , SC_OPCODE_TEXT },
|
||||
{ "SUBSTITUTE" , SC_OPCODE_SUBSTITUTE },
|
||||
{ "SUBSTITUTE" , ocSubSTITUTE },
|
||||
{ "REPT" , SC_OPCODE_REPT },
|
||||
{ "CONCATENATE" , SC_OPCODE_CONCAT },
|
||||
{ "CONCAT" , SC_OPCODE_CONCAT_MS },
|
||||
@@ -1890,13 +1890,13 @@ const std::pair<const char *, int> RID_STRLIST_FUNCTION_NAMES_ENGLISH_API[] =
|
||||
{ "BITXOR" , SC_OPCODE_BITXOR },
|
||||
{ "BITRSHIFT" , SC_OPCODE_BITRSHIFT },
|
||||
{ "BITLSHIFT" , SC_OPCODE_BITLSHIFT },
|
||||
{ "#NULL!" , SC_OPCODE_ERROR_NULL },
|
||||
{ "#DIV/0!" , SC_OPCODE_ERROR_DIVZERO },
|
||||
{ "#VALUE!" , SC_OPCODE_ERROR_VALUE },
|
||||
{ "#REF!" , SC_OPCODE_ERROR_REF },
|
||||
{ "#NAME?" , SC_OPCODE_ERROR_NAME },
|
||||
{ "#NUM!" , SC_OPCODE_ERROR_NUM },
|
||||
{ "#N/A" , SC_OPCODE_ERROR_NA },
|
||||
{ "#NULL!" , ocErrNull },
|
||||
{ "#DIV/0!" , ocErrDivZero },
|
||||
{ "#VALUE!" , ocErrValue },
|
||||
{ "#REF!" , ocErrRef },
|
||||
{ "#NAME?" , ocErrName },
|
||||
{ "#NUM!" , ocErrNum },
|
||||
{ "#N/A" , ocErrNA },
|
||||
/* END defined ERROR.TYPE() values. */
|
||||
{ "FILTERXML" , SC_OPCODE_FILTERXML },
|
||||
{ "WEBSERVICE" , SC_OPCODE_WEBSERVICE },
|
||||
@@ -1920,46 +1920,46 @@ const std::pair<const char *, int> RID_STRLIST_FUNCTION_NAMES_ENGLISH_API[] =
|
||||
// at the same time.
|
||||
const std::pair<const char *, int> RID_STRLIST_FUNCTION_NAMES_ENGLISH[] =
|
||||
{
|
||||
{ "IF" , SC_OPCODE_IF },
|
||||
{ "IFERROR" , SC_OPCODE_IF_ERROR },
|
||||
{ "IFNA" , SC_OPCODE_IF_NA },
|
||||
{ "CHOOSE" , SC_OPCODE_CHOOSE },
|
||||
{ "(" , SC_OPCODE_OPEN },
|
||||
{ ")" , SC_OPCODE_CLOSE },
|
||||
{ "[" , SC_OPCODE_TABLE_REF_OPEN },
|
||||
{ "]" , SC_OPCODE_TABLE_REF_CLOSE },
|
||||
{ "#All" , SC_OPCODE_TABLE_REF_ITEM_ALL },
|
||||
{ "#Headers" , SC_OPCODE_TABLE_REF_ITEM_HEADERS },
|
||||
{ "#Data" , SC_OPCODE_TABLE_REF_ITEM_DATA },
|
||||
{ "#Totals" , SC_OPCODE_TABLE_REF_ITEM_TOTALS },
|
||||
{ "#This Row" , SC_OPCODE_TABLE_REF_ITEM_THIS_ROW },
|
||||
{ "{" , SC_OPCODE_ARRAY_OPEN },
|
||||
{ "}" , SC_OPCODE_ARRAY_CLOSE },
|
||||
{ "|" , SC_OPCODE_ARRAY_ROW_SEP },
|
||||
{ ";" , SC_OPCODE_ARRAY_COL_SEP },
|
||||
{ ";" , SC_OPCODE_SEP },
|
||||
{ "%" , SC_OPCODE_PERCENT_SIGN },
|
||||
{ "+" , SC_OPCODE_ADD },
|
||||
{ "-" , SC_OPCODE_SUB },
|
||||
{ "*" , SC_OPCODE_MUL },
|
||||
{ "/" , SC_OPCODE_DIV },
|
||||
{ "&" , SC_OPCODE_AMPERSAND },
|
||||
{ "^" , SC_OPCODE_POW },
|
||||
{ "=" , SC_OPCODE_EQUAL },
|
||||
{ "<>" , SC_OPCODE_NOT_EQUAL },
|
||||
{ "<" , SC_OPCODE_LESS },
|
||||
{ ">" , SC_OPCODE_GREATER },
|
||||
{ "<=" , SC_OPCODE_LESS_EQUAL },
|
||||
{ ">=" , SC_OPCODE_GREATER_EQUAL },
|
||||
{ "AND" , SC_OPCODE_AND },
|
||||
{ "OR" , SC_OPCODE_OR },
|
||||
{ "XOR" , SC_OPCODE_XOR },
|
||||
{ "!" , SC_OPCODE_INTERSECT },
|
||||
{ "~" , SC_OPCODE_UNION },
|
||||
{ ":" , SC_OPCODE_RANGE },
|
||||
{ "IF" , ocIf },
|
||||
{ "IFERROR" , ocIfError },
|
||||
{ "IFNA" , ocIfNA },
|
||||
{ "CHOOSE" , ocChoose },
|
||||
{ "(" , ocOpen },
|
||||
{ ")" , ocClose },
|
||||
{ "[" , ocTableRefOpen },
|
||||
{ "]" , ocTableRefClose },
|
||||
{ "#All" , ocTableRefItemAll },
|
||||
{ "#Headers" , ocTableRefItemHeaders },
|
||||
{ "#Data" , ocTableRefItemData },
|
||||
{ "#Totals" , ocTableRefItemTotals },
|
||||
{ "#This Row" , ocTableRefItemThisRow },
|
||||
{ "{" , ocArrayOpen },
|
||||
{ "}" , ocArrayClose },
|
||||
{ "|" , ocArrayRowSep },
|
||||
{ ";" , ocArrayColSep },
|
||||
{ ";" , ocSep },
|
||||
{ "%" , ocPercentSign },
|
||||
{ "+" , ocAdd },
|
||||
{ "-" , ocSub },
|
||||
{ "*" , ocMul },
|
||||
{ "/" , ocDiv },
|
||||
{ "&" , ocAmpersand },
|
||||
{ "^" , ocPow },
|
||||
{ "=" , ocEqual },
|
||||
{ "<>" , ocNotEqual },
|
||||
{ "<" , ocLess },
|
||||
{ ">" , ocGreater },
|
||||
{ "<=" , ocLessEqual },
|
||||
{ ">=" , ocGreaterEqual },
|
||||
{ "AND" , ocAnd },
|
||||
{ "OR" , ocOr },
|
||||
{ "XOR" , ocXor },
|
||||
{ "!" , ocIntersect },
|
||||
{ "~" , ocUnion },
|
||||
{ ":" , ocRange },
|
||||
{ "NOT" , SC_OPCODE_NOT },
|
||||
{ "NEG" , SC_OPCODE_NEG },
|
||||
{ "-" , SC_OPCODE_NEG_SUB },
|
||||
{ "-" , ocNegSub },
|
||||
{ "PI" , SC_OPCODE_PI },
|
||||
{ "RAND" , SC_OPCODE_RANDOM },
|
||||
{ "TRUE" , SC_OPCODE_TRUE },
|
||||
@@ -2065,7 +2065,7 @@ const std::pair<const char *, int> RID_STRLIST_FUNCTION_NAMES_ENGLISH[] =
|
||||
{ "ROUNDDOWN" , SC_OPCODE_ROUND_DOWN },
|
||||
{ "TRUNC" , SC_OPCODE_TRUNC },
|
||||
{ "LOG" , SC_OPCODE_LOG },
|
||||
{ "POWER" , SC_OPCODE_POWER },
|
||||
{ "POWER" , ocPowER },
|
||||
{ "GCD" , SC_OPCODE_GCD },
|
||||
{ "LCM" , SC_OPCODE_LCM },
|
||||
{ "MOD" , SC_OPCODE_MOD },
|
||||
@@ -2142,7 +2142,7 @@ const std::pair<const char *, int> RID_STRLIST_FUNCTION_NAMES_ENGLISH[] =
|
||||
{ "CUMPRINC" , SC_OPCODE_CUM_PRINC },
|
||||
{ "EFFECT" , SC_OPCODE_EFFECT },
|
||||
{ "NOMINAL" , SC_OPCODE_NOMINAL },
|
||||
{ "SUBTOTAL" , SC_OPCODE_SUB_TOTAL },
|
||||
{ "SUBTOTAL" , ocSub_TOTAL },
|
||||
{ "DSUM" , SC_OPCODE_DB_SUM },
|
||||
{ "DCOUNT" , SC_OPCODE_DB_COUNT },
|
||||
{ "DCOUNTA" , SC_OPCODE_DB_COUNT_2 },
|
||||
@@ -2156,7 +2156,7 @@ const std::pair<const char *, int> RID_STRLIST_FUNCTION_NAMES_ENGLISH[] =
|
||||
{ "DVAR" , SC_OPCODE_DB_VAR },
|
||||
{ "DVARP" , SC_OPCODE_DB_VAR_P },
|
||||
{ "INDIRECT" , SC_OPCODE_INDIRECT },
|
||||
{ "ADDRESS" , SC_OPCODE_ADDRESS },
|
||||
{ "ADDRESS" , ocAddRESS },
|
||||
{ "MATCH" , SC_OPCODE_MATCH },
|
||||
{ "XMATCH" , SC_OPCODE_X_MATCH },
|
||||
{ "COUNTBLANK" , SC_OPCODE_COUNT_EMPTY_CELLS },
|
||||
@@ -2186,10 +2186,10 @@ const std::pair<const char *, int> RID_STRLIST_FUNCTION_NAMES_ENGLISH[] =
|
||||
{ "TOCOL" , SC_OPCODE_TOCOL },
|
||||
{ "TOROW" , SC_OPCODE_TOROW },
|
||||
{ "UNIQUE" , SC_OPCODE_UNIQUE },
|
||||
{ "LET" , SC_OPCODE_LET },
|
||||
{ "LET" , ocLet },
|
||||
{ "WRAPCOLS" , SC_OPCODE_WRAPCOLS },
|
||||
{ "WRAPROWS" , SC_OPCODE_WRAPROWS },
|
||||
{ "MULTIRANGE" , SC_OPCODE_MULTI_AREA },
|
||||
{ "MULTIRANGE" , ocMulTI_AREA },
|
||||
{ "OFFSET" , SC_OPCODE_OFFSET },
|
||||
{ "INDEX" , SC_OPCODE_INDEX },
|
||||
{ "AREAS" , SC_OPCODE_AREAS },
|
||||
@@ -2210,7 +2210,7 @@ const std::pair<const char *, int> RID_STRLIST_FUNCTION_NAMES_ENGLISH[] =
|
||||
{ "SEARCHB" , SC_OPCODE_SEARCHB },
|
||||
{ "MIDB" , SC_OPCODE_MIDB },
|
||||
{ "TEXT" , SC_OPCODE_TEXT },
|
||||
{ "SUBSTITUTE" , SC_OPCODE_SUBSTITUTE },
|
||||
{ "SUBSTITUTE" , ocSubSTITUTE },
|
||||
{ "REPT" , SC_OPCODE_REPT },
|
||||
{ "CONCATENATE" , SC_OPCODE_CONCAT },
|
||||
{ "CONCAT" , SC_OPCODE_CONCAT_MS },
|
||||
@@ -2362,13 +2362,13 @@ const std::pair<const char *, int> RID_STRLIST_FUNCTION_NAMES_ENGLISH[] =
|
||||
{ "BITXOR" , SC_OPCODE_BITXOR },
|
||||
{ "BITRSHIFT" , SC_OPCODE_BITRSHIFT },
|
||||
{ "BITLSHIFT" , SC_OPCODE_BITLSHIFT },
|
||||
{ "#NULL!" , SC_OPCODE_ERROR_NULL },
|
||||
{ "#DIV/0!" , SC_OPCODE_ERROR_DIVZERO },
|
||||
{ "#VALUE!" , SC_OPCODE_ERROR_VALUE },
|
||||
{ "#REF!" , SC_OPCODE_ERROR_REF },
|
||||
{ "#NAME?" , SC_OPCODE_ERROR_NAME },
|
||||
{ "#NUM!" , SC_OPCODE_ERROR_NUM },
|
||||
{ "#N/A" , SC_OPCODE_ERROR_NA },
|
||||
{ "#NULL!" , ocErrNull },
|
||||
{ "#DIV/0!" , ocErrDivZero },
|
||||
{ "#VALUE!" , ocErrValue },
|
||||
{ "#REF!" , ocErrRef },
|
||||
{ "#NAME?" , ocErrName },
|
||||
{ "#NUM!" , ocErrNum },
|
||||
{ "#N/A" , ocErrNA },
|
||||
/* END defined ERROR.TYPE() values. */
|
||||
{ "FILTERXML" , SC_OPCODE_FILTERXML },
|
||||
{ "WEBSERVICE" , SC_OPCODE_WEBSERVICE },
|
||||
@@ -2393,23 +2393,23 @@ const std::pair<const char *, int> RID_STRLIST_FUNCTION_NAMES_ENGLISH[] =
|
||||
*/
|
||||
const std::pair<TranslateId, int> RID_STRLIST_FUNCTION_NAMES[] =
|
||||
{
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "IF") , SC_OPCODE_IF },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "IFERROR") , SC_OPCODE_IF_ERROR },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "IFNA") , SC_OPCODE_IF_NA },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "CHOOSE") , SC_OPCODE_CHOOSE },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "IF") , ocIf },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "IFERROR") , ocIfError },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "IFNA") , ocIfNA },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "CHOOSE") , ocChoose },
|
||||
/* L10n: preserve the leading '#' hash character in translations. */
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "#All") , SC_OPCODE_TABLE_REF_ITEM_ALL },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "#All") , ocTableRefItemAll },
|
||||
/* L10n: preserve the leading '#' hash character in translations. */
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "#Headers") , SC_OPCODE_TABLE_REF_ITEM_HEADERS },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "#Headers") , ocTableRefItemHeaders },
|
||||
/* L10n: preserve the leading '#' hash character in translations. */
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "#Data") , SC_OPCODE_TABLE_REF_ITEM_DATA },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "#Data") , ocTableRefItemData },
|
||||
/* L10n: preserve the leading '#' hash character in translations. */
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "#Totals") , SC_OPCODE_TABLE_REF_ITEM_TOTALS },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "#Totals") , ocTableRefItemTotals },
|
||||
/* L10n: preserve the leading '#' hash character in translations. */
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "#This Row") , SC_OPCODE_TABLE_REF_ITEM_THIS_ROW },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "AND") , SC_OPCODE_AND },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "OR") , SC_OPCODE_OR },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "XOR") , SC_OPCODE_XOR },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "#This Row") , ocTableRefItemThisRow },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "AND") , ocAnd },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "OR") , ocOr },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "XOR") , ocXor },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "NOT") , SC_OPCODE_NOT },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "NEG") , SC_OPCODE_NEG },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "PI") , SC_OPCODE_PI }, // ???
|
||||
@@ -2518,7 +2518,7 @@ const std::pair<TranslateId, int> RID_STRLIST_FUNCTION_NAMES[] =
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "ROUNDDOWN") , SC_OPCODE_ROUND_DOWN },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "TRUNC") , SC_OPCODE_TRUNC },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "LOG") , SC_OPCODE_LOG },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "POWER") , SC_OPCODE_POWER },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "POWER") , ocPowER },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "GCD") , SC_OPCODE_GCD },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "LCM") , SC_OPCODE_LCM },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "MOD") , SC_OPCODE_MOD },
|
||||
@@ -2595,7 +2595,7 @@ const std::pair<TranslateId, int> RID_STRLIST_FUNCTION_NAMES[] =
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "CUMPRINC") , SC_OPCODE_CUM_PRINC },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "EFFECT") , SC_OPCODE_EFFECT },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "NOMINAL") , SC_OPCODE_NOMINAL },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "SUBTOTAL") , SC_OPCODE_SUB_TOTAL },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "SUBTOTAL") , ocSub_TOTAL },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "DSUM") , SC_OPCODE_DB_SUM },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "DCOUNT") , SC_OPCODE_DB_COUNT },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "DCOUNTA") , SC_OPCODE_DB_COUNT_2 },
|
||||
@@ -2609,7 +2609,7 @@ const std::pair<TranslateId, int> RID_STRLIST_FUNCTION_NAMES[] =
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "DVAR") , SC_OPCODE_DB_VAR },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "DVARP") , SC_OPCODE_DB_VAR_P },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "INDIRECT") , SC_OPCODE_INDIRECT },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "ADDRESS") , SC_OPCODE_ADDRESS },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "ADDRESS") , ocAddRESS },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "MATCH") , SC_OPCODE_MATCH },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "XMATCH") , SC_OPCODE_X_MATCH },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "COUNTBLANK") , SC_OPCODE_COUNT_EMPTY_CELLS },
|
||||
@@ -2639,10 +2639,10 @@ const std::pair<TranslateId, int> RID_STRLIST_FUNCTION_NAMES[] =
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "TOCOL") , SC_OPCODE_TOCOL },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "TOROW") , SC_OPCODE_TOROW },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "UNIQUE") , SC_OPCODE_UNIQUE },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "LET") , SC_OPCODE_LET },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "LET") , ocLet },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "WRAPCOLS") , SC_OPCODE_WRAPCOLS },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "WRAPROWS") , SC_OPCODE_WRAPROWS },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "MULTIRANGE") , SC_OPCODE_MULTI_AREA }, // legacy for range list (union)
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "MULTIRANGE") , ocMulTI_AREA }, // legacy for range list (union)
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "OFFSET") , SC_OPCODE_OFFSET },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "INDEX") , SC_OPCODE_INDEX }, // ?? first character = I ??
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "AREAS") , SC_OPCODE_AREAS },
|
||||
@@ -2661,7 +2661,7 @@ const std::pair<TranslateId, int> RID_STRLIST_FUNCTION_NAMES[] =
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "REPLACEB") , SC_OPCODE_REPLACEB },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "MIDB") , SC_OPCODE_MIDB },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "TEXT") , SC_OPCODE_TEXT },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "SUBSTITUTE") , SC_OPCODE_SUBSTITUTE },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "SUBSTITUTE") , ocSubSTITUTE },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "REPT") , SC_OPCODE_REPT },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "CONCATENATE") , SC_OPCODE_CONCAT },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "CONCAT") , SC_OPCODE_CONCAT_MS },
|
||||
@@ -2816,25 +2816,25 @@ const std::pair<TranslateId, int> RID_STRLIST_FUNCTION_NAMES[] =
|
||||
/* BEGIN defined ERROR.TYPE() values. */
|
||||
/* ERROR.TYPE( #NULL! ) == 1 */
|
||||
/* L10n: preserve the leading '#' hash character in translations. */
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "#NULL!") , SC_OPCODE_ERROR_NULL },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "#NULL!") , ocErrNull },
|
||||
/* ERROR.TYPE( #DIV/0! ) == 2 */
|
||||
/* L10n: preserve the leading '#' hash character in translations. */
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "#DIV/0!") , SC_OPCODE_ERROR_DIVZERO },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "#DIV/0!") , ocErrDivZero },
|
||||
/* ERROR.TYPE( #VALUE! ) == 3 */
|
||||
/* L10n: preserve the leading '#' hash character in translations. */
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "#VALUE!") , SC_OPCODE_ERROR_VALUE },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "#VALUE!") , ocErrValue },
|
||||
/* ERROR.TYPE( #REF! ) == 4 */
|
||||
/* L10n: preserve the leading '#' hash character in translations. */
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "#REF!") , SC_OPCODE_ERROR_REF },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "#REF!") , ocErrRef },
|
||||
/* ERROR.TYPE( #NAME! ) == 5 */
|
||||
/* L10n: preserve the leading '#' hash character in translations. */
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "#NAME?") , SC_OPCODE_ERROR_NAME },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "#NAME?") , ocErrName },
|
||||
/* ERROR.TYPE( #NUM! ) == 6 */
|
||||
/* L10n: preserve the leading '#' hash character in translations. */
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "#NUM!") , SC_OPCODE_ERROR_NUM },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "#NUM!") , ocErrNum },
|
||||
/* ERROR.TYPE( #N/A ) == 7 */
|
||||
/* L10n: preserve the leading '#' hash character in translations. */
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "#N/A") , SC_OPCODE_ERROR_NA },
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "#N/A") , ocErrNA },
|
||||
/* END defined ERROR.TYPE() values. */
|
||||
|
||||
{ NC_("RID_STRLIST_FUNCTION_NAMES", "FILTERXML") , SC_OPCODE_FILTERXML },
|
||||
@@ -2858,32 +2858,32 @@ const std::pair<TranslateId, int> RID_STRLIST_FUNCTION_NAMES[] =
|
||||
|
||||
const std::pair<const char *, int> RID_STRLIST_FUNCTION_NAMES_SYMBOLS[] =
|
||||
{
|
||||
{ "(" , SC_OPCODE_OPEN },
|
||||
{ ")" , SC_OPCODE_CLOSE },
|
||||
{ "[" , SC_OPCODE_TABLE_REF_OPEN },
|
||||
{ "]" , SC_OPCODE_TABLE_REF_CLOSE },
|
||||
{ "{" , SC_OPCODE_ARRAY_OPEN },
|
||||
{ "}" , SC_OPCODE_ARRAY_CLOSE },
|
||||
{ "|" , SC_OPCODE_ARRAY_ROW_SEP },
|
||||
{ ";" , SC_OPCODE_ARRAY_COL_SEP },
|
||||
{ ";" , SC_OPCODE_SEP },
|
||||
{ "%" , SC_OPCODE_PERCENT_SIGN },
|
||||
{ "+" , SC_OPCODE_ADD },
|
||||
{ "-" , SC_OPCODE_SUB },
|
||||
{ "*" , SC_OPCODE_MUL },
|
||||
{ "/" , SC_OPCODE_DIV },
|
||||
{ "&" , SC_OPCODE_AMPERSAND },
|
||||
{ "^" , SC_OPCODE_POW },
|
||||
{ "=" , SC_OPCODE_EQUAL },
|
||||
{ "<>" , SC_OPCODE_NOT_EQUAL },
|
||||
{ "<" , SC_OPCODE_LESS },
|
||||
{ ">" , SC_OPCODE_GREATER },
|
||||
{ "<=" , SC_OPCODE_LESS_EQUAL },
|
||||
{ ">=" , SC_OPCODE_GREATER_EQUAL },
|
||||
{ "!" , SC_OPCODE_INTERSECT },
|
||||
{ "~" , SC_OPCODE_UNION },
|
||||
{ ":" , SC_OPCODE_RANGE },
|
||||
{ "-" , SC_OPCODE_NEG_SUB },
|
||||
{ "(" , ocOpen },
|
||||
{ ")" , ocClose },
|
||||
{ "[" , ocTableRefOpen },
|
||||
{ "]" , ocTableRefClose },
|
||||
{ "{" , ocArrayOpen },
|
||||
{ "}" , ocArrayClose },
|
||||
{ "|" , ocArrayRowSep },
|
||||
{ ";" , ocArrayColSep },
|
||||
{ ";" , ocSep },
|
||||
{ "%" , ocPercentSign },
|
||||
{ "+" , ocAdd },
|
||||
{ "-" , ocSub },
|
||||
{ "*" , ocMul },
|
||||
{ "/" , ocDiv },
|
||||
{ "&" , ocAmpersand },
|
||||
{ "^" , ocPow },
|
||||
{ "=" , ocEqual },
|
||||
{ "<>" , ocNotEqual },
|
||||
{ "<" , ocLess },
|
||||
{ ">" , ocGreater },
|
||||
{ "<=" , ocLessEqual },
|
||||
{ ">=" , ocGreaterEqual },
|
||||
{ "!" , ocIntersect },
|
||||
{ "~" , ocUnion },
|
||||
{ ":" , ocRange },
|
||||
{ "-" , ocNegSub },
|
||||
{ nullptr, -1 }
|
||||
};
|
||||
|
||||
|
||||
@@ -231,7 +231,7 @@ bool OpCodeList::getOpCodeString( OUString& rStr, sal_uInt16 nOp )
|
||||
{
|
||||
switch (nOp)
|
||||
{
|
||||
case SC_OPCODE_SEP:
|
||||
case ocSep:
|
||||
{
|
||||
if (meSepType == FormulaCompiler::SeparatorType::SEMICOLON_BASE)
|
||||
{
|
||||
@@ -240,7 +240,7 @@ bool OpCodeList::getOpCodeString( OUString& rStr, sal_uInt16 nOp )
|
||||
}
|
||||
}
|
||||
break;
|
||||
case SC_OPCODE_ARRAY_COL_SEP:
|
||||
case ocArrayColSep:
|
||||
{
|
||||
if (meSepType == FormulaCompiler::SeparatorType::SEMICOLON_BASE)
|
||||
{
|
||||
@@ -249,7 +249,7 @@ bool OpCodeList::getOpCodeString( OUString& rStr, sal_uInt16 nOp )
|
||||
}
|
||||
}
|
||||
break;
|
||||
case SC_OPCODE_ARRAY_ROW_SEP:
|
||||
case ocArrayRowSep:
|
||||
{
|
||||
if (meSepType == FormulaCompiler::SeparatorType::SEMICOLON_BASE)
|
||||
{
|
||||
@@ -565,19 +565,19 @@ uno::Sequence< sheet::FormulaOpCodeMapEntry > FormulaCompiler::OpCodeMap::create
|
||||
if ((nGroups & FormulaMapGroup::SEPARATORS) != 0)
|
||||
{
|
||||
static const sal_uInt16 aOpCodes[] = {
|
||||
SC_OPCODE_OPEN,
|
||||
SC_OPCODE_CLOSE,
|
||||
SC_OPCODE_SEP,
|
||||
ocOpen,
|
||||
ocClose,
|
||||
ocSep,
|
||||
};
|
||||
lclPushOpCodeMapEntries( aVec, mpTable.get(), aOpCodes, std::size(aOpCodes) );
|
||||
}
|
||||
if ((nGroups & FormulaMapGroup::ARRAY_SEPARATORS) != 0)
|
||||
{
|
||||
static const sal_uInt16 aOpCodes[] = {
|
||||
SC_OPCODE_ARRAY_OPEN,
|
||||
SC_OPCODE_ARRAY_CLOSE,
|
||||
SC_OPCODE_ARRAY_ROW_SEP,
|
||||
SC_OPCODE_ARRAY_COL_SEP
|
||||
ocArrayOpen,
|
||||
ocArrayClose,
|
||||
ocArrayRowSep,
|
||||
ocArrayColSep
|
||||
};
|
||||
lclPushOpCodeMapEntries( aVec, mpTable.get(), aOpCodes, std::size(aOpCodes) );
|
||||
}
|
||||
@@ -590,21 +590,21 @@ uno::Sequence< sheet::FormulaOpCodeMapEntry > FormulaCompiler::OpCodeMap::create
|
||||
if ((nGroups & FormulaMapGroup::BINARY_OPERATORS) == 0)
|
||||
lclPushOpCodeMapEntry( aVec, mpTable.get(), ocAdd );
|
||||
// regular unary operators
|
||||
for (sal_uInt16 nOp = SC_OPCODE_START_UN_OP; nOp < SC_OPCODE_STOP_UN_OP && nOp < mnSymbols; ++nOp)
|
||||
for (sal_uInt16 nOp = ocStartUnaryOp; nOp < ocStopUnaryOp && nOp < mnSymbols; ++nOp)
|
||||
{
|
||||
lclPushOpCodeMapEntry( aVec, mpTable.get(), nOp );
|
||||
}
|
||||
}
|
||||
if ((nGroups & FormulaMapGroup::BINARY_OPERATORS) != 0)
|
||||
{
|
||||
for (sal_uInt16 nOp = SC_OPCODE_START_BIN_OP; nOp < SC_OPCODE_STOP_BIN_OP && nOp < mnSymbols; ++nOp)
|
||||
for (sal_uInt16 nOp = ocStartBinOp; nOp < ocStopBinOp && nOp < mnSymbols; ++nOp)
|
||||
{
|
||||
switch (nOp)
|
||||
{
|
||||
// AND and OR in fact are functions but for legacy reasons
|
||||
// are sorted into binary operators for compiler interna.
|
||||
case SC_OPCODE_AND :
|
||||
case SC_OPCODE_OR :
|
||||
case ocAnd :
|
||||
case ocOr :
|
||||
break; // nothing,
|
||||
default:
|
||||
lclPushOpCodeMapEntry( aVec, mpTable.get(), nOp );
|
||||
@@ -621,13 +621,13 @@ uno::Sequence< sheet::FormulaOpCodeMapEntry > FormulaCompiler::OpCodeMap::create
|
||||
::std::min< sal_uInt16 >( SC_OPCODE_STOP_1_PAR, mnSymbols ) );
|
||||
// Additional functions not within range of functions.
|
||||
static const sal_uInt16 aOpCodes[] = {
|
||||
SC_OPCODE_IF,
|
||||
SC_OPCODE_IF_ERROR,
|
||||
SC_OPCODE_IF_NA,
|
||||
SC_OPCODE_CHOOSE,
|
||||
SC_OPCODE_LET,
|
||||
SC_OPCODE_AND,
|
||||
SC_OPCODE_OR
|
||||
ocIf,
|
||||
ocIfError,
|
||||
ocIfNA,
|
||||
ocChoose,
|
||||
ocLet,
|
||||
ocAnd,
|
||||
ocOr
|
||||
};
|
||||
lclPushOpCodeMapEntries( aVec, mpTable.get(), aOpCodes, std::size(aOpCodes) );
|
||||
// functions with 2 or more parameters.
|
||||
@@ -2194,8 +2194,8 @@ void FormulaCompiler::UnaryLine()
|
||||
{
|
||||
if( mpToken->GetOpCode() == ocAdd )
|
||||
GetToken();
|
||||
else if (SC_OPCODE_START_UN_OP <= mpToken->GetOpCode() &&
|
||||
mpToken->GetOpCode() < SC_OPCODE_STOP_UN_OP)
|
||||
else if (ocStartUnaryOp <= mpToken->GetOpCode() &&
|
||||
mpToken->GetOpCode() < ocStopUnaryOp)
|
||||
{
|
||||
FormulaTokenRef p = mpToken;
|
||||
NextToken();
|
||||
@@ -2862,11 +2862,11 @@ OpCode FormulaCompiler::NextToken()
|
||||
// There must be an operator before a push
|
||||
if ( (eOp == ocPush || eOp == ocColRowNameAuto) &&
|
||||
!( (eLastOp == ocOpen) || (eLastOp == ocSep) ||
|
||||
(SC_OPCODE_START_BIN_OP <= eLastOp && eLastOp < SC_OPCODE_STOP_UN_OP)) )
|
||||
(ocStartBinOp <= eLastOp && eLastOp < ocStopUnaryOp)) )
|
||||
SetError( FormulaError::OperatorExpected);
|
||||
// Operator and Plus => operator
|
||||
if (eOp == ocAdd && (eLastOp == ocOpen || eLastOp == ocSep ||
|
||||
(SC_OPCODE_START_BIN_OP <= eLastOp && eLastOp < SC_OPCODE_STOP_UN_OP)))
|
||||
(ocStartBinOp <= eLastOp && eLastOp < ocStopUnaryOp)))
|
||||
{
|
||||
FormulaCompilerRecursionGuard aRecursionGuard( nRecursion );
|
||||
eOp = NextToken();
|
||||
@@ -2876,9 +2876,9 @@ OpCode FormulaCompiler::NextToken()
|
||||
// Before an operator there must not be another operator, with the
|
||||
// exception of AND and OR.
|
||||
if ( eOp != ocAnd && eOp != ocOr &&
|
||||
(SC_OPCODE_START_BIN_OP <= eOp && eOp < SC_OPCODE_STOP_BIN_OP )
|
||||
(ocStartBinOp <= eOp && eOp < ocStopBinOp )
|
||||
&& (eLastOp == ocOpen || eLastOp == ocSep ||
|
||||
(SC_OPCODE_START_BIN_OP <= eLastOp && eLastOp < SC_OPCODE_STOP_UN_OP)))
|
||||
(ocStartBinOp <= eLastOp && eLastOp < ocStopUnaryOp)))
|
||||
{
|
||||
SetError( FormulaError::VariableExpected);
|
||||
if ( bAutoCorrect && !pStack )
|
||||
@@ -3121,7 +3121,7 @@ void FormulaCompiler::ForceArrayOperator( FormulaTokenRef const & rCurr )
|
||||
// below.
|
||||
rCurr->SetInForceArray( ParamClass::ForceArray);
|
||||
}
|
||||
else if (pc >= 2 && SC_OPCODE_START_BIN_OP <= eOp && eOp < SC_OPCODE_STOP_BIN_OP)
|
||||
else if (pc >= 2 && ocStartBinOp <= eOp && eOp < ocStopBinOp)
|
||||
{
|
||||
// Binary operators are not functions followed by arguments
|
||||
// and need some peeking into RPN to inspect their operands.
|
||||
@@ -3148,7 +3148,7 @@ void FormulaCompiler::ForceArrayOperator( FormulaTokenRef const & rCurr )
|
||||
rCurr->SetInForceArray( eArrayReturn);
|
||||
}
|
||||
}
|
||||
else if (pc >= 1 && SC_OPCODE_START_UN_OP <= eOp && eOp < SC_OPCODE_STOP_UN_OP)
|
||||
else if (pc >= 1 && ocStartUnaryOp <= eOp && eOp < ocStopUnaryOp)
|
||||
{
|
||||
// Similar for unary operators.
|
||||
if (pCode[-1]->GetInForceArray() != ParamClass::Unknown || IsMatrixFunction(pCode[-1]->GetOpCode()))
|
||||
|
||||
@@ -88,7 +88,7 @@ bool FormulaToken::IsFunction() const
|
||||
|
||||
sal_uInt8 FormulaToken::GetParamCount() const
|
||||
{
|
||||
if ( eOp < SC_OPCODE_STOP_DIV && eOp != ocExternal && eOp != ocMacro &&
|
||||
if ( eOp < ocStopDiv && eOp != ocExternal && eOp != ocMacro &&
|
||||
!FormulaCompiler::IsOpCodeJumpCommand( eOp ) &&
|
||||
eOp != ocPercentSign )
|
||||
return 0; // parameters and specials
|
||||
@@ -96,9 +96,9 @@ sal_uInt8 FormulaToken::GetParamCount() const
|
||||
//2do: bool parameter whether FAP or not?
|
||||
else if (GetByte())
|
||||
return GetByte(); // all functions, also ocExternal and ocMacro
|
||||
else if (SC_OPCODE_START_BIN_OP <= eOp && eOp < SC_OPCODE_STOP_BIN_OP && eOp != ocAnd && eOp != ocOr)
|
||||
else if (ocStartBinOp <= eOp && eOp < ocStopBinOp && eOp != ocAnd && eOp != ocOr)
|
||||
return 2; // binary operators, compiler checked; OR and AND legacy but are functions
|
||||
else if ((SC_OPCODE_START_UN_OP <= eOp && eOp < SC_OPCODE_STOP_UN_OP) || eOp == ocPercentSign)
|
||||
else if ((ocStartUnaryOp <= eOp && eOp < ocStopUnaryOp) || eOp == ocPercentSign)
|
||||
return 1; // unary operators, compiler checked
|
||||
else if (SC_OPCODE_START_NO_PAR <= eOp && eOp < SC_OPCODE_STOP_NO_PAR)
|
||||
return 0; // no parameter
|
||||
@@ -1624,9 +1624,9 @@ bool FormulaTokenArray::MayReferenceFollow()
|
||||
if (i > 0 || !isWhitespace( pCode[i]->GetOpCode()))
|
||||
{
|
||||
OpCode eOp = pCode[i]->GetOpCode();
|
||||
if ( (SC_OPCODE_START_BIN_OP <= eOp && eOp < SC_OPCODE_STOP_BIN_OP ) ||
|
||||
(SC_OPCODE_START_UN_OP <= eOp && eOp < SC_OPCODE_STOP_UN_OP ) ||
|
||||
eOp == SC_OPCODE_OPEN || eOp == SC_OPCODE_SEP )
|
||||
if ( (ocStartBinOp <= eOp && eOp < ocStopBinOp ) ||
|
||||
(ocStartUnaryOp <= eOp && eOp < ocStopUnaryOp ) ||
|
||||
eOp == ocOpen || eOp == ocSep )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -630,8 +630,8 @@ void FormulaDlg_Impl::MakeTree(StructPage* _pTree, weld::TreeIter* pParent, cons
|
||||
{
|
||||
_pTree->InsertEntry(aResult, pParent, StructType::Error, 0, _pToken, *xEntry);
|
||||
}
|
||||
else if (!((SC_OPCODE_START_BIN_OP <= eOp && eOp < SC_OPCODE_STOP_BIN_OP) ||
|
||||
(SC_OPCODE_START_UN_OP <= eOp && eOp < SC_OPCODE_STOP_UN_OP)))
|
||||
else if (!((ocStartBinOp <= eOp && eOp < ocStopBinOp) ||
|
||||
(ocStartUnaryOp <= eOp && eOp < ocStopUnaryOp)))
|
||||
{
|
||||
// Not a binary or unary operator.
|
||||
bCalcSubformula = true;
|
||||
|
||||
@@ -19,89 +19,6 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
/* Central definition of OpCodes for spreadsheet functions */
|
||||
|
||||
/*** Special commands ***/
|
||||
#define SC_OPCODE_PUSH 0 /* internal commands */
|
||||
// used to be SC_OPCODE_CALL
|
||||
#define SC_OPCODE_STOP 2
|
||||
#define SC_OPCODE_EXTERNAL 3
|
||||
#define SC_OPCODE_NAME 4
|
||||
#define SC_OPCODE_EXTERNAL_REF 5
|
||||
#define SC_OPCODE_IF 6 /* jump commands */
|
||||
#define SC_OPCODE_IF_ERROR 7
|
||||
#define SC_OPCODE_IF_NA 8
|
||||
#define SC_OPCODE_CHOOSE 9
|
||||
#define SC_OPCODE_OPEN 10 /* parentheses and separators */
|
||||
#define SC_OPCODE_CLOSE 11
|
||||
#define SC_OPCODE_SEP 12
|
||||
#define SC_OPCODE_MISSING 13 /* special OpCodes */
|
||||
#define SC_OPCODE_BAD 14
|
||||
#define SC_OPCODE_STRINGXML 15
|
||||
#define SC_OPCODE_SPACES 16
|
||||
#define SC_OPCODE_WHITESPACE 17
|
||||
#define SC_OPCODE_MAT_REF 18
|
||||
#define SC_OPCODE_DB_AREA 19 /* additional access operators */
|
||||
#define SC_OPCODE_TABLE_REF 20
|
||||
#define SC_OPCODE_MACRO 21
|
||||
#define SC_OPCODE_COL_ROW_NAME 22
|
||||
#define SC_OPCODE_COL_ROW_NAME_AUTO 23
|
||||
#define SC_OPCODE_PERCENT_SIGN 24 /* operator _follows_ value */
|
||||
#define SC_OPCODE_ARRAY_OPEN 25
|
||||
#define SC_OPCODE_ARRAY_CLOSE 26
|
||||
#define SC_OPCODE_ARRAY_ROW_SEP 27
|
||||
#define SC_OPCODE_ARRAY_COL_SEP 28 /* some convs use sep != col_sep */
|
||||
#define SC_OPCODE_TABLE_REF_OPEN 29
|
||||
#define SC_OPCODE_TABLE_REF_CLOSE 30
|
||||
#define SC_OPCODE_TABLE_REF_ITEM_ALL 31
|
||||
#define SC_OPCODE_TABLE_REF_ITEM_HEADERS 32
|
||||
#define SC_OPCODE_TABLE_REF_ITEM_DATA 33
|
||||
#define SC_OPCODE_TABLE_REF_ITEM_TOTALS 34
|
||||
#define SC_OPCODE_TABLE_REF_ITEM_THIS_ROW 35
|
||||
#define SC_OPCODE_STOP_DIV 36
|
||||
#define SC_OPCODE_SKIP 37 /* used to skip raw tokens during string compilation */
|
||||
#define SC_OPCODE_STRINGNAME 38 /* special OpCode for lambda function names */
|
||||
#define SC_OPCODE_LET 39
|
||||
|
||||
/*** error constants #... ***/
|
||||
#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 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 70
|
||||
#define SC_OPCODE_NEG_SUB 70
|
||||
#define SC_OPCODE_STOP_UN_OP 71
|
||||
|
||||
#define SC_OPCODE_START_FUNCTION 75
|
||||
|
||||
/*** Functions without parameters ***/
|
||||
@@ -220,7 +137,7 @@
|
||||
#define SC_OPCODE_ROUND_DOWN 206
|
||||
#define SC_OPCODE_TRUNC 207
|
||||
#define SC_OPCODE_LOG 208
|
||||
#define SC_OPCODE_POWER 209
|
||||
#define ocPowER 209
|
||||
#define SC_OPCODE_GCD 210
|
||||
#define SC_OPCODE_LCM 211
|
||||
#define SC_OPCODE_MOD 212
|
||||
@@ -277,7 +194,7 @@
|
||||
#define SC_OPCODE_CUM_PRINC 263
|
||||
#define SC_OPCODE_EFFECT 264
|
||||
#define SC_OPCODE_NOMINAL 265
|
||||
#define SC_OPCODE_SUB_TOTAL 266
|
||||
#define ocSub_TOTAL 266
|
||||
#define SC_OPCODE_DB_SUM 267 /* database functions */
|
||||
#define SC_OPCODE_DB_COUNT 268
|
||||
#define SC_OPCODE_DB_COUNT_2 269
|
||||
@@ -291,7 +208,7 @@
|
||||
#define SC_OPCODE_DB_VAR 277
|
||||
#define SC_OPCODE_DB_VAR_P 278
|
||||
#define SC_OPCODE_INDIRECT 279 /* management functions */
|
||||
#define SC_OPCODE_ADDRESS 280
|
||||
#define ocAddRESS 280
|
||||
#define SC_OPCODE_MATCH 281
|
||||
#define SC_OPCODE_COUNT_EMPTY_CELLS 282
|
||||
#define SC_OPCODE_COUNT_IF 283
|
||||
@@ -299,7 +216,7 @@
|
||||
#define SC_OPCODE_LOOKUP 285
|
||||
#define SC_OPCODE_V_LOOKUP 286
|
||||
#define SC_OPCODE_H_LOOKUP 287
|
||||
#define SC_OPCODE_MULTI_AREA 288
|
||||
#define ocMulTI_AREA 288
|
||||
#define SC_OPCODE_OFFSET 289
|
||||
#define SC_OPCODE_INDEX 290
|
||||
#define SC_OPCODE_AREAS 291
|
||||
@@ -313,7 +230,7 @@
|
||||
#define SC_OPCODE_SEARCH 299
|
||||
#define SC_OPCODE_MID 300
|
||||
#define SC_OPCODE_TEXT 301
|
||||
#define SC_OPCODE_SUBSTITUTE 302
|
||||
#define ocSubSTITUTE 302
|
||||
#define SC_OPCODE_REPT 303
|
||||
#define SC_OPCODE_CONCAT 304
|
||||
#define SC_OPCODE_MAT_VALUE 305 /* matrix functions */
|
||||
@@ -412,7 +329,6 @@
|
||||
#define SC_OPCODE_BITRSHIFT 398
|
||||
#define SC_OPCODE_BITLSHIFT 399
|
||||
#define SC_OPCODE_GET_DATEDIF 400
|
||||
#define SC_OPCODE_XOR 401
|
||||
#define SC_OPCODE_AVERAGE_IF 402
|
||||
#define SC_OPCODE_SUM_IFS 403
|
||||
#define SC_OPCODE_AVERAGE_IFS 404
|
||||
|
||||
+80
-68
@@ -24,80 +24,90 @@
|
||||
#include <formula/compiler.hxx>
|
||||
#include <sal/types.h>
|
||||
|
||||
/* Central definition of OpCodes for spreadsheet functions */
|
||||
|
||||
enum OpCode : sal_uInt16
|
||||
{
|
||||
// Special commands
|
||||
ocPush = SC_OPCODE_PUSH,
|
||||
ocStop = SC_OPCODE_STOP,
|
||||
ocExternal = SC_OPCODE_EXTERNAL,
|
||||
ocName = SC_OPCODE_NAME,
|
||||
ocPush = 0,
|
||||
// 1 used to be ocCall
|
||||
ocStop = 2,
|
||||
ocExternal = 3,
|
||||
ocName = 4,
|
||||
// 5 is externalRef
|
||||
// Jump commands
|
||||
ocIf = SC_OPCODE_IF,
|
||||
ocIfError = SC_OPCODE_IF_ERROR,
|
||||
ocIfNA = SC_OPCODE_IF_NA,
|
||||
ocChoose = SC_OPCODE_CHOOSE,
|
||||
ocLet = SC_OPCODE_LET,
|
||||
ocIf = 6,
|
||||
ocIfError = 7,
|
||||
ocIfNA = 8,
|
||||
ocChoose = 9,
|
||||
ocLet = 39,
|
||||
// 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,
|
||||
ocArrayRowSep = SC_OPCODE_ARRAY_ROW_SEP,
|
||||
ocArrayColSep = SC_OPCODE_ARRAY_COL_SEP,
|
||||
ocOpen = 10,
|
||||
ocClose = 11,
|
||||
ocTableRefOpen = 29,
|
||||
ocTableRefClose = 30,
|
||||
ocSep = 12,
|
||||
ocArrayOpen = 25,
|
||||
ocArrayClose = 26,
|
||||
ocArrayRowSep = 27,
|
||||
ocArrayColSep = 28, /* some convs use sep != col_sep */
|
||||
// Special OpCodes
|
||||
ocMissing = SC_OPCODE_MISSING,
|
||||
ocBad = SC_OPCODE_BAD,
|
||||
ocStringXML = SC_OPCODE_STRINGXML,
|
||||
ocSpaces = SC_OPCODE_SPACES,
|
||||
ocWhitespace = SC_OPCODE_WHITESPACE,
|
||||
ocMatRef = SC_OPCODE_MAT_REF,
|
||||
ocTableRefItemAll = SC_OPCODE_TABLE_REF_ITEM_ALL,
|
||||
ocTableRefItemHeaders = SC_OPCODE_TABLE_REF_ITEM_HEADERS,
|
||||
ocTableRefItemData = SC_OPCODE_TABLE_REF_ITEM_DATA,
|
||||
ocTableRefItemTotals = SC_OPCODE_TABLE_REF_ITEM_TOTALS,
|
||||
ocTableRefItemThisRow = SC_OPCODE_TABLE_REF_ITEM_THIS_ROW,
|
||||
ocSkip = SC_OPCODE_SKIP,
|
||||
ocStringName = SC_OPCODE_STRINGNAME,
|
||||
ocMissing = 13,
|
||||
ocBad = 14,
|
||||
ocStringXML = 15,
|
||||
ocSpaces = 16,
|
||||
ocWhitespace = 17,
|
||||
ocMatRef = 18,
|
||||
ocTableRefItemAll = 31,
|
||||
ocTableRefItemHeaders = 32,
|
||||
ocTableRefItemData = 33,
|
||||
ocTableRefItemTotals = 34,
|
||||
ocTableRefItemThisRow = 35,
|
||||
ocStopDiv = 36,
|
||||
ocSkip = 37, /* used to skip raw tokens during string compilation */
|
||||
ocStringName = 38, /* special OpCode for lambda function names */
|
||||
// Access commands
|
||||
ocDBArea = SC_OPCODE_DB_AREA,
|
||||
ocTableRef = SC_OPCODE_TABLE_REF,
|
||||
ocMacro = SC_OPCODE_MACRO,
|
||||
ocColRowName = SC_OPCODE_COL_ROW_NAME,
|
||||
ocColRowNameAuto = SC_OPCODE_COL_ROW_NAME_AUTO,
|
||||
ocDBArea = 19,
|
||||
ocTableRef = 20,
|
||||
ocMacro = 21,
|
||||
ocColRowName = 22,
|
||||
ocColRowNameAuto = 23,
|
||||
// Percent operator _follows_ value
|
||||
ocPercentSign = SC_OPCODE_PERCENT_SIGN,
|
||||
ocPercentSign = 24,
|
||||
// Error constants
|
||||
ocErrNull = SC_OPCODE_ERROR_NULL,
|
||||
ocErrDivZero = SC_OPCODE_ERROR_DIVZERO,
|
||||
ocErrValue = SC_OPCODE_ERROR_VALUE,
|
||||
ocErrRef = SC_OPCODE_ERROR_REF,
|
||||
ocErrName = SC_OPCODE_ERROR_NAME,
|
||||
ocErrNum = SC_OPCODE_ERROR_NUM,
|
||||
ocErrNA = SC_OPCODE_ERROR_NA,
|
||||
ocErrNull = 40,
|
||||
ocErrDivZero = 41,
|
||||
ocErrValue = 42,
|
||||
ocErrRef = 43,
|
||||
ocErrName = 44,
|
||||
ocErrNum = 45,
|
||||
ocErrNA = 46,
|
||||
/* NOTE: binary and unary operators must be in sequence for compiler! */
|
||||
// Binary operators
|
||||
ocAdd = SC_OPCODE_ADD,
|
||||
ocSub = SC_OPCODE_SUB,
|
||||
ocMul = SC_OPCODE_MUL,
|
||||
ocDiv = SC_OPCODE_DIV,
|
||||
ocAmpersand = SC_OPCODE_AMPERSAND,
|
||||
ocPow = SC_OPCODE_POW,
|
||||
ocEqual = SC_OPCODE_EQUAL,
|
||||
ocNotEqual = SC_OPCODE_NOT_EQUAL,
|
||||
ocLess = SC_OPCODE_LESS,
|
||||
ocGreater = SC_OPCODE_GREATER,
|
||||
ocLessEqual = SC_OPCODE_LESS_EQUAL,
|
||||
ocGreaterEqual = SC_OPCODE_GREATER_EQUAL,
|
||||
ocAnd = SC_OPCODE_AND,
|
||||
ocOr = SC_OPCODE_OR,
|
||||
ocXor = SC_OPCODE_XOR,
|
||||
ocIntersect = SC_OPCODE_INTERSECT,
|
||||
ocUnion = SC_OPCODE_UNION,
|
||||
ocRange = SC_OPCODE_RANGE,
|
||||
ocStartBinOp = 50,
|
||||
ocAdd = 50,
|
||||
ocSub = 51,
|
||||
ocMul = 52,
|
||||
ocDiv = 53,
|
||||
ocAmpersand = 54,
|
||||
ocPow = 55,
|
||||
ocEqual = 56,
|
||||
ocNotEqual = 57,
|
||||
ocLess = 58,
|
||||
ocGreater = 59,
|
||||
ocLessEqual = 60,
|
||||
ocGreaterEqual = 61,
|
||||
ocAnd = 62,
|
||||
ocOr = 63,
|
||||
ocXor = 401,
|
||||
ocIntersect = 64,
|
||||
ocUnion = 65,
|
||||
ocRange = 66,
|
||||
ocStopBinOp = 67,
|
||||
// Unary operators
|
||||
ocNegSub = SC_OPCODE_NEG_SUB,
|
||||
ocStartUnaryOp = 70,
|
||||
ocNegSub = 70,
|
||||
ocStopUnaryOp = 71,
|
||||
// Functions with no parameters
|
||||
ocPi = SC_OPCODE_PI,
|
||||
ocRandom = SC_OPCODE_RANDOM,
|
||||
@@ -214,7 +224,7 @@ enum OpCode : sal_uInt16
|
||||
ocRoundDown = SC_OPCODE_ROUND_DOWN,
|
||||
ocTrunc = SC_OPCODE_TRUNC,
|
||||
ocLog = SC_OPCODE_LOG,
|
||||
ocPower = SC_OPCODE_POWER,
|
||||
ocPower = ocPowER,
|
||||
ocGCD = SC_OPCODE_GCD,
|
||||
ocLCM = SC_OPCODE_LCM,
|
||||
ocMod = SC_OPCODE_MOD,
|
||||
@@ -283,7 +293,7 @@ enum OpCode : sal_uInt16
|
||||
ocCumPrinc = SC_OPCODE_CUM_PRINC,
|
||||
ocEffect = SC_OPCODE_EFFECT,
|
||||
ocNominal = SC_OPCODE_NOMINAL,
|
||||
ocSubTotal = SC_OPCODE_SUB_TOTAL,
|
||||
ocSubTotal = ocSub_TOTAL,
|
||||
ocRawSubtract = SC_OPCODE_RAWSUBTRACT,
|
||||
ocIfs_MS = SC_OPCODE_IFS_MS,
|
||||
ocSwitch_MS = SC_OPCODE_SWITCH_MS,
|
||||
@@ -305,7 +315,7 @@ enum OpCode : sal_uInt16
|
||||
ocDBVarP = SC_OPCODE_DB_VAR_P,
|
||||
// Management functions
|
||||
ocIndirect = SC_OPCODE_INDIRECT,
|
||||
ocAddress = SC_OPCODE_ADDRESS,
|
||||
ocAddress = ocAddRESS,
|
||||
ocMatch = SC_OPCODE_MATCH,
|
||||
ocXMatch = SC_OPCODE_X_MATCH,
|
||||
ocCountEmptyCells = SC_OPCODE_COUNT_EMPTY_CELLS,
|
||||
@@ -319,7 +329,7 @@ enum OpCode : sal_uInt16
|
||||
ocVLookup = SC_OPCODE_V_LOOKUP,
|
||||
ocXLookup = SC_OPCODE_X_LOOKUP,
|
||||
ocHLookup = SC_OPCODE_H_LOOKUP,
|
||||
ocMultiArea = SC_OPCODE_MULTI_AREA,
|
||||
ocMultiArea = ocMulTI_AREA,
|
||||
ocOffset = SC_OPCODE_OFFSET,
|
||||
ocIndex = SC_OPCODE_INDEX,
|
||||
ocAreas = SC_OPCODE_AREAS,
|
||||
@@ -334,7 +344,7 @@ enum OpCode : sal_uInt16
|
||||
ocSearch = SC_OPCODE_SEARCH,
|
||||
ocMid = SC_OPCODE_MID,
|
||||
ocText = SC_OPCODE_TEXT,
|
||||
ocSubstitute = SC_OPCODE_SUBSTITUTE,
|
||||
ocSubstitute = ocSubSTITUTE,
|
||||
ocRept = SC_OPCODE_REPT,
|
||||
ocConcat = SC_OPCODE_CONCAT,
|
||||
ocConcat_MS = SC_OPCODE_CONCAT_MS,
|
||||
@@ -575,6 +585,7 @@ inline std::string OpCodeEnumToString(OpCode eCode)
|
||||
case ocTableRefItemData: return "TableRefItemData";
|
||||
case ocTableRefItemTotals: return "TableRefItemTotals";
|
||||
case ocTableRefItemThisRow: return "TableRefItemThisRow";
|
||||
case ocStopDiv: return "StopDiv";
|
||||
case ocSkip: return "Skip";
|
||||
case ocDBArea: return "DBArea";
|
||||
case ocTableRef: return "TableRef";
|
||||
@@ -1029,6 +1040,7 @@ inline std::string OpCodeEnumToString(OpCode eCode)
|
||||
case ocDebugVar: return "DebugVar";
|
||||
case ocDataToken1: return "DataToken1";
|
||||
case ocNone: return "None";
|
||||
default: break;
|
||||
}
|
||||
std::ostringstream os;
|
||||
os << static_cast<int>(eCode);
|
||||
|
||||
+46
-46
@@ -898,27 +898,27 @@ const TranslateId SC_OPCODE_IF_NA_ARY[] =
|
||||
};
|
||||
|
||||
// -=*# Resource for function OR #*=-
|
||||
const TranslateId SC_OPCODE_OR_ARY[] =
|
||||
const TranslateId ocOr_ARY[] =
|
||||
{
|
||||
NC_("SC_OPCODE_OR", "Returns TRUE if an argument is TRUE."),
|
||||
NC_("SC_OPCODE_OR", "Logical value "),
|
||||
NC_("SC_OPCODE_OR", "Logical value 1, logical value 2,... are conditions to be tested and which return either TRUE or FALSE.")
|
||||
NC_("ocOr", "Returns TRUE if an argument is TRUE."),
|
||||
NC_("ocOr", "Logical value "),
|
||||
NC_("ocOr", "Logical value 1, logical value 2,... are conditions to be tested and which return either TRUE or FALSE.")
|
||||
};
|
||||
|
||||
// -=*# Resource for function XOR #*=-
|
||||
const TranslateId SC_OPCODE_XOR_ARY[] =
|
||||
const TranslateId ocXor_ARY[] =
|
||||
{
|
||||
NC_("SC_OPCODE_XOR", "Returns TRUE if an odd number of arguments evaluates to TRUE."),
|
||||
NC_("SC_OPCODE_XOR", "Logical value "),
|
||||
NC_("SC_OPCODE_XOR", "Logical value 1, logical value 2, ... are conditions to be tested and which return either TRUE or FALSE.")
|
||||
NC_("ocXor", "Returns TRUE if an odd number of arguments evaluates to TRUE."),
|
||||
NC_("ocXor", "Logical value "),
|
||||
NC_("ocXor", "Logical value 1, logical value 2, ... are conditions to be tested and which return either TRUE or FALSE.")
|
||||
};
|
||||
|
||||
// -=*# Resource for function AND #*=-
|
||||
const TranslateId SC_OPCODE_AND_ARY[] =
|
||||
const TranslateId ocAnd_ARY[] =
|
||||
{
|
||||
NC_("SC_OPCODE_AND", "Returns TRUE if all arguments are TRUE."),
|
||||
NC_("SC_OPCODE_AND", "Logical value "),
|
||||
NC_("SC_OPCODE_AND", "Logical value 1, logical value 2;...are conditions to be tested and each returns either TRUE or FALSE.")
|
||||
NC_("ocAnd", "Returns TRUE if all arguments are TRUE."),
|
||||
NC_("ocAnd", "Logical value "),
|
||||
NC_("ocAnd", "Logical value 1, logical value 2;...are conditions to be tested and each returns either TRUE or FALSE.")
|
||||
};
|
||||
|
||||
// -=*# Resource for function ABS #*=-
|
||||
@@ -930,13 +930,13 @@ const TranslateId SC_OPCODE_ABS_ARY[] =
|
||||
};
|
||||
|
||||
// -=*# Resource for function POWER #*=-
|
||||
const TranslateId SC_OPCODE_POWER_ARY[] =
|
||||
const TranslateId ocPowER_ARY[] =
|
||||
{
|
||||
NC_("SC_OPCODE_POWER", "Returns a^b, base a raised to the power of exponent b."),
|
||||
NC_("SC_OPCODE_POWER", "Base"),
|
||||
NC_("SC_OPCODE_POWER", "The base a of the power a^b."),
|
||||
NC_("SC_OPCODE_POWER", "Exponent"),
|
||||
NC_("SC_OPCODE_POWER", "The exponent b of the power a^b.")
|
||||
NC_("ocPowER", "Returns a^b, base a raised to the power of exponent b."),
|
||||
NC_("ocPowER", "Base"),
|
||||
NC_("ocPowER", "The base a of the power a^b."),
|
||||
NC_("ocPowER", "Exponent"),
|
||||
NC_("ocPowER", "The exponent b of the power a^b.")
|
||||
};
|
||||
|
||||
// -=*# Resource for function COUNTBLANK #*=-
|
||||
@@ -1341,13 +1341,13 @@ const TranslateId SC_OPCODE_PLUS_MINUS_ARY[] =
|
||||
};
|
||||
|
||||
// -=*# Resource for function SUBTOTAL #*=-
|
||||
const TranslateId SC_OPCODE_SUB_TOTAL_ARY[] =
|
||||
const TranslateId ocSub_TOTAL_ARY[] =
|
||||
{
|
||||
NC_("SC_OPCODE_SUB_TOTAL", "Calculates subtotals in a spreadsheet."),
|
||||
NC_("SC_OPCODE_SUB_TOTAL", "Function"),
|
||||
NC_("SC_OPCODE_SUB_TOTAL", "Function index. Is an index of the possible functions Total, Max, ..."),
|
||||
NC_("SC_OPCODE_SUB_TOTAL", "Range"),
|
||||
NC_("SC_OPCODE_SUB_TOTAL", "The cells of the range which are to be taken into account.")
|
||||
NC_("ocSub_TOTAL", "Calculates subtotals in a spreadsheet."),
|
||||
NC_("ocSub_TOTAL", "Function"),
|
||||
NC_("ocSub_TOTAL", "Function index. Is an index of the possible functions Total, Max, ..."),
|
||||
NC_("ocSub_TOTAL", "Range"),
|
||||
NC_("ocSub_TOTAL", "The cells of the range which are to be taken into account.")
|
||||
};
|
||||
|
||||
// -=*# Resource for function AGGREGATE #*=-
|
||||
@@ -3268,19 +3268,19 @@ const TranslateId SC_OPCODE_FORECAST_LIN_ARY[] =
|
||||
};
|
||||
|
||||
// -=*# Resource for function ADDRESS #*=-
|
||||
const TranslateId SC_OPCODE_ADDRESS_ARY[] =
|
||||
const TranslateId ocAddRESS_ARY[] =
|
||||
{
|
||||
NC_("SC_OPCODE_ADDRESS", "Returns the reference to a cell as text."),
|
||||
NC_("SC_OPCODE_ADDRESS", "Row"),
|
||||
NC_("SC_OPCODE_ADDRESS", "The row number of the cell."),
|
||||
NC_("SC_OPCODE_ADDRESS", "Column"),
|
||||
NC_("SC_OPCODE_ADDRESS", "The column number of the cell."),
|
||||
NC_("SC_OPCODE_ADDRESS", "ABS"),
|
||||
NC_("SC_OPCODE_ADDRESS", "Specifies whether absolute or relative referencing is to be used."),
|
||||
NC_("SC_OPCODE_ADDRESS", "A1"),
|
||||
NC_("SC_OPCODE_ADDRESS", "The reference style: 0 or FALSE means R1C1 style, any other value or omitted means A1 style."),
|
||||
NC_("SC_OPCODE_ADDRESS", "Sheet"),
|
||||
NC_("SC_OPCODE_ADDRESS", "The spreadsheet name of the cell reference.")
|
||||
NC_("ocAddRESS", "Returns the reference to a cell as text."),
|
||||
NC_("ocAddRESS", "Row"),
|
||||
NC_("ocAddRESS", "The row number of the cell."),
|
||||
NC_("ocAddRESS", "Column"),
|
||||
NC_("ocAddRESS", "The column number of the cell."),
|
||||
NC_("ocAddRESS", "ABS"),
|
||||
NC_("ocAddRESS", "Specifies whether absolute or relative referencing is to be used."),
|
||||
NC_("ocAddRESS", "A1"),
|
||||
NC_("ocAddRESS", "The reference style: 0 or FALSE means R1C1 style, any other value or omitted means A1 style."),
|
||||
NC_("ocAddRESS", "Sheet"),
|
||||
NC_("ocAddRESS", "The spreadsheet name of the cell reference.")
|
||||
};
|
||||
|
||||
// -=*# Resource for function AREAS #*=-
|
||||
@@ -3836,17 +3836,17 @@ const TranslateId SC_OPCODE_REPT_ARY[] =
|
||||
};
|
||||
|
||||
// -=*# Resource for function SUBSTITUTE #*=-
|
||||
const TranslateId SC_OPCODE_SUBSTITUTE_ARY[] =
|
||||
const TranslateId ocSubSTITUTE_ARY[] =
|
||||
{
|
||||
NC_("SC_OPCODE_SUBSTITUTE", "Substitutes new text for old text in a string."),
|
||||
NC_("SC_OPCODE_SUBSTITUTE", "Text"),
|
||||
NC_("SC_OPCODE_SUBSTITUTE", "The text in which partial words are to be replaced."),
|
||||
NC_("SC_OPCODE_SUBSTITUTE", "Search text"),
|
||||
NC_("SC_OPCODE_SUBSTITUTE", "The partial string to be (repeatedly) replaced."),
|
||||
NC_("SC_OPCODE_SUBSTITUTE", "New text"),
|
||||
NC_("SC_OPCODE_SUBSTITUTE", "The text which is to replace the text string."),
|
||||
NC_("SC_OPCODE_SUBSTITUTE", "Occurrence"),
|
||||
NC_("SC_OPCODE_SUBSTITUTE", "Which occurrence of the old text is to be replaced.")
|
||||
NC_("ocSubSTITUTE", "Substitutes new text for old text in a string."),
|
||||
NC_("ocSubSTITUTE", "Text"),
|
||||
NC_("ocSubSTITUTE", "The text in which partial words are to be replaced."),
|
||||
NC_("ocSubSTITUTE", "Search text"),
|
||||
NC_("ocSubSTITUTE", "The partial string to be (repeatedly) replaced."),
|
||||
NC_("ocSubSTITUTE", "New text"),
|
||||
NC_("ocSubSTITUTE", "The text which is to replace the text string."),
|
||||
NC_("ocSubSTITUTE", "Occurrence"),
|
||||
NC_("ocSubSTITUTE", "Which occurrence of the old text is to be replaced.")
|
||||
};
|
||||
|
||||
// -=*# Resource for function REGEX #*=-
|
||||
|
||||
@@ -390,13 +390,13 @@ ScFunctionList::ScFunctionList( bool bEnglishFunctionNames )
|
||||
// which will concept check that the list is sorted on first use to ensure this holds
|
||||
static const ScFuncDescCore aDescs[] =
|
||||
{
|
||||
{ SC_OPCODE_IF, ENTRY(SC_OPCODE_IF_ARY), 0, ID_FUNCTION_GRP_LOGIC, HID_FUNC_WENN, 3, { 0, 1, 1 }, 0 },
|
||||
{ SC_OPCODE_IF_ERROR, ENTRY(SC_OPCODE_IF_ERROR_ARY), 0, ID_FUNCTION_GRP_LOGIC, HID_FUNC_IFERROR, 2, { 0, 0 }, 0 },
|
||||
{ SC_OPCODE_IF_NA, ENTRY(SC_OPCODE_IF_NA_ARY), 0, ID_FUNCTION_GRP_LOGIC, HID_FUNC_IFNA, 2, { 0, 0 }, 0 },
|
||||
{ SC_OPCODE_CHOOSE, ENTRY(SC_OPCODE_CHOOSE_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_WAHL, VAR_ARGS+1, { 0, 0 }, 31 },
|
||||
{ SC_OPCODE_LET, ENTRY(SC_OPCODE_LET_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_LET_MS, PAIRED_VAR_ARGS + 1, { 0, 0, 0 }, 0 },
|
||||
{ SC_OPCODE_AND, ENTRY(SC_OPCODE_AND_ARY), 0, ID_FUNCTION_GRP_LOGIC, HID_FUNC_UND, VAR_ARGS, { 0 }, 0 },
|
||||
{ SC_OPCODE_OR, ENTRY(SC_OPCODE_OR_ARY), 0, ID_FUNCTION_GRP_LOGIC, HID_FUNC_ODER, VAR_ARGS, { 0 }, 0 },
|
||||
{ ocIf, ENTRY(SC_OPCODE_IF_ARY), 0, ID_FUNCTION_GRP_LOGIC, HID_FUNC_WENN, 3, { 0, 1, 1 }, 0 },
|
||||
{ ocIfError, ENTRY(SC_OPCODE_IF_ERROR_ARY), 0, ID_FUNCTION_GRP_LOGIC, HID_FUNC_IFERROR, 2, { 0, 0 }, 0 },
|
||||
{ ocIfNA, ENTRY(SC_OPCODE_IF_NA_ARY), 0, ID_FUNCTION_GRP_LOGIC, HID_FUNC_IFNA, 2, { 0, 0 }, 0 },
|
||||
{ ocChoose, ENTRY(SC_OPCODE_CHOOSE_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_WAHL, VAR_ARGS+1, { 0, 0 }, 31 },
|
||||
{ ocLet, ENTRY(SC_OPCODE_LET_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_LET_MS, PAIRED_VAR_ARGS + 1, { 0, 0, 0 }, 0 },
|
||||
{ ocAnd, ENTRY(ocAnd_ARY), 0, ID_FUNCTION_GRP_LOGIC, HID_FUNC_UND, VAR_ARGS, { 0 }, 0 },
|
||||
{ ocOr, ENTRY(ocOr_ARY), 0, ID_FUNCTION_GRP_LOGIC, HID_FUNC_ODER, VAR_ARGS, { 0 }, 0 },
|
||||
{ SC_OPCODE_PI, ENTRY(SC_OPCODE_PI_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_PI, 0, { }, 0 },
|
||||
{ SC_OPCODE_RANDOM, ENTRY(SC_OPCODE_RANDOM_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_ZUFALLSZAHL, 0, { }, 0 },
|
||||
{ SC_OPCODE_TRUE, ENTRY(SC_OPCODE_TRUE_ARY), 0, ID_FUNCTION_GRP_LOGIC, HID_FUNC_WAHR, 0, { }, 0 },
|
||||
@@ -502,7 +502,7 @@ ScFunctionList::ScFunctionList( bool bEnglishFunctionNames )
|
||||
{ SC_OPCODE_ROUND_DOWN, ENTRY(SC_OPCODE_ROUND_DOWN_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_ABRUNDEN, 2, { 0, 1 }, 0 },
|
||||
{ SC_OPCODE_TRUNC, ENTRY(SC_OPCODE_TRUNC_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_KUERZEN, 2, { 0, 0 }, 0 },
|
||||
{ SC_OPCODE_LOG, ENTRY(SC_OPCODE_LOG_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_LOG, 2, { 0, 1 }, 0 },
|
||||
{ SC_OPCODE_POWER, ENTRY(SC_OPCODE_POWER_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_POTENZ, 2, { 0, 0 }, 0 },
|
||||
{ ocPowER, ENTRY(ocPowER_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_POTENZ, 2, { 0, 0 }, 0 },
|
||||
{ SC_OPCODE_GCD, ENTRY(SC_OPCODE_GCD_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_GGT, VAR_ARGS, { 0 }, 0 },
|
||||
{ SC_OPCODE_LCM, ENTRY(SC_OPCODE_LCM_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_KGV, VAR_ARGS, { 0 }, 0 },
|
||||
{ SC_OPCODE_MOD, ENTRY(SC_OPCODE_MOD_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_REST, 2, { 0, 0 }, 0 },
|
||||
@@ -559,7 +559,7 @@ ScFunctionList::ScFunctionList( bool bEnglishFunctionNames )
|
||||
{ SC_OPCODE_CUM_PRINC, ENTRY(SC_OPCODE_CUM_PRINC_ARY), 0, ID_FUNCTION_GRP_FINANCIAL, HID_FUNC_KUMKAPITAL, 6, { 0, 0, 0, 0, 0, 0 }, 0 },
|
||||
{ SC_OPCODE_EFFECT, ENTRY(SC_OPCODE_EFFECT_ARY), 0, ID_FUNCTION_GRP_FINANCIAL, HID_FUNC_EFFEKTIV, 2, { 0, 0 }, 0 },
|
||||
{ SC_OPCODE_NOMINAL, ENTRY(SC_OPCODE_NOMINAL_ARY), 0, ID_FUNCTION_GRP_FINANCIAL, HID_FUNC_NOMINAL, 2, { 0, 0 }, 0 },
|
||||
{ SC_OPCODE_SUB_TOTAL, ENTRY(SC_OPCODE_SUB_TOTAL_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_TEILERGEBNIS, 2, { 0, 0 }, 0 },
|
||||
{ ocSub_TOTAL, ENTRY(ocSub_TOTAL_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_TEILERGEBNIS, 2, { 0, 0 }, 0 },
|
||||
{ SC_OPCODE_DB_SUM, ENTRY(SC_OPCODE_DB_SUM_ARY), 0, ID_FUNCTION_GRP_DATABASE, HID_FUNC_DBSUMME, 3, { 0, 0, 0 }, 0 },
|
||||
{ SC_OPCODE_DB_COUNT, ENTRY(SC_OPCODE_DB_COUNT_ARY), 0, ID_FUNCTION_GRP_DATABASE, HID_FUNC_DBANZAHL, 3, { 0, 1, 0 }, 0 },
|
||||
{ SC_OPCODE_DB_COUNT_2, ENTRY(SC_OPCODE_DB_COUNT_2_ARY), 0, ID_FUNCTION_GRP_DATABASE, HID_FUNC_DBANZAHL2, 3, { 0, 1, 0 }, 0 },
|
||||
@@ -573,7 +573,7 @@ ScFunctionList::ScFunctionList( bool bEnglishFunctionNames )
|
||||
{ SC_OPCODE_DB_VAR, ENTRY(SC_OPCODE_DB_VAR_ARY), 0, ID_FUNCTION_GRP_DATABASE, HID_FUNC_DBVARIANZ, 3, { 0, 0, 0 }, 0 },
|
||||
{ SC_OPCODE_DB_VAR_P, ENTRY(SC_OPCODE_DB_VAR_P_ARY), 0, ID_FUNCTION_GRP_DATABASE, HID_FUNC_DBVARIANZEN, 3, { 0, 0, 0 }, 0 },
|
||||
{ SC_OPCODE_INDIRECT, ENTRY(SC_OPCODE_INDIRECT_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_INDIREKT, 2, { 0, 1 }, 0 },
|
||||
{ SC_OPCODE_ADDRESS, ENTRY(SC_OPCODE_ADDRESS_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_ADRESSE, 5, { 0, 0, 1, 1, 1 }, 0 },
|
||||
{ ocAddRESS, ENTRY(ocAddRESS_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_ADRESSE, 5, { 0, 0, 1, 1, 1 }, 0 },
|
||||
{ SC_OPCODE_MATCH, ENTRY(SC_OPCODE_MATCH_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_VERGLEICH, 3, { 0, 0, 1 }, 0 },
|
||||
{ SC_OPCODE_COUNT_EMPTY_CELLS, ENTRY(SC_OPCODE_COUNT_EMPTY_CELLS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_ANZAHLLEEREZELLEN, 1, { 0 }, 0 },
|
||||
{ SC_OPCODE_COUNT_IF, ENTRY(SC_OPCODE_COUNT_IF_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_ZAEHLENWENN, 2, { 0, 0 }, 0 },
|
||||
@@ -594,7 +594,7 @@ ScFunctionList::ScFunctionList( bool bEnglishFunctionNames )
|
||||
{ SC_OPCODE_SEARCH, ENTRY(SC_OPCODE_SEARCH_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_SUCHEN, 3, { 0, 0, 1 }, 0 },
|
||||
{ SC_OPCODE_MID, ENTRY(SC_OPCODE_MID_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_TEIL, 3, { 0, 0, 0 }, 0 },
|
||||
{ SC_OPCODE_TEXT, ENTRY(SC_OPCODE_TEXT_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_TEXT, 2, { 0, 0 }, 0 },
|
||||
{ SC_OPCODE_SUBSTITUTE, ENTRY(SC_OPCODE_SUBSTITUTE_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_WECHSELN, 4, { 0, 0, 0, 1 }, 0 },
|
||||
{ ocSubSTITUTE, ENTRY(ocSubSTITUTE_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_WECHSELN, 4, { 0, 0, 0, 1 }, 0 },
|
||||
{ SC_OPCODE_REPT, ENTRY(SC_OPCODE_REPT_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_WIEDERHOLEN, 2, { 0, 0 }, 0 },
|
||||
{ SC_OPCODE_CONCAT, ENTRY(SC_OPCODE_CONCAT_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_VERKETTEN, VAR_ARGS, { 0 }, 0 },
|
||||
{ SC_OPCODE_MAT_DET, ENTRY(SC_OPCODE_MAT_DET_ARY), 0, ID_FUNCTION_GRP_MATRIX, HID_FUNC_MDET, 1, { 0 }, 0 },
|
||||
@@ -689,7 +689,7 @@ ScFunctionList::ScFunctionList( bool bEnglishFunctionNames )
|
||||
{ SC_OPCODE_BITRSHIFT, ENTRY(SC_OPCODE_BITRSHIFT_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_BITRSHIFT, 2, { 0, 0 }, 0 },
|
||||
{ SC_OPCODE_BITLSHIFT, ENTRY(SC_OPCODE_BITLSHIFT_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_BITLSHIFT, 2, { 0, 0 }, 0 },
|
||||
{ SC_OPCODE_GET_DATEDIF, ENTRY(SC_OPCODE_GET_DATEDIF_ARY), 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_DATEDIF, 3, { 0, 0, 0 }, 0 },
|
||||
{ SC_OPCODE_XOR, ENTRY(SC_OPCODE_XOR_ARY), 0, ID_FUNCTION_GRP_LOGIC, HID_FUNC_XOR, VAR_ARGS, { 0 }, 0 },
|
||||
{ ocXor, ENTRY(ocXor_ARY), 0, ID_FUNCTION_GRP_LOGIC, HID_FUNC_XOR, VAR_ARGS, { 0 }, 0 },
|
||||
{ SC_OPCODE_AVERAGE_IF, ENTRY(SC_OPCODE_AVERAGE_IF_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_AVERAGEIF, 3, { 0, 0, 1 }, 0 },
|
||||
{ SC_OPCODE_SUM_IFS, ENTRY(SC_OPCODE_SUM_IFS_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_SUMIFS, PAIRED_VAR_ARGS+1, { 0, 0, 0 }, 0 },
|
||||
{ SC_OPCODE_AVERAGE_IFS, ENTRY(SC_OPCODE_AVERAGE_IFS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_AVERAGEIFS, PAIRED_VAR_ARGS+1, { 0, 0, 0 }, 0 },
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
#include <global.hxx>
|
||||
#include <userlist.hxx>
|
||||
#include <formula/compiler.hxx>
|
||||
#include <formula/opcode.hxx>
|
||||
#include <miscuno.hxx>
|
||||
#include <vector>
|
||||
#include <osl/diagnose.h>
|
||||
@@ -66,7 +67,7 @@ void ScAppOptions::SetDefaults()
|
||||
pLRUList[1] = SC_OPCODE_AVERAGE;
|
||||
pLRUList[2] = SC_OPCODE_MIN;
|
||||
pLRUList[3] = SC_OPCODE_MAX;
|
||||
pLRUList[4] = SC_OPCODE_IF;
|
||||
pLRUList[4] = ocIf;
|
||||
nLRUFuncCount = 5;
|
||||
|
||||
nTrackContentColor = COL_TRANSPARENT;
|
||||
|
||||
@@ -3212,7 +3212,7 @@ bool ScCompiler::ParseOpCode( const OUString& rName, bool bInArray )
|
||||
{
|
||||
bool bShouldBeNegSub =
|
||||
(eLastOp == ocOpen || eLastOp == ocSep || eLastOp == ocNegSub ||
|
||||
(SC_OPCODE_START_BIN_OP <= eLastOp && eLastOp < SC_OPCODE_STOP_BIN_OP) ||
|
||||
(ocStartBinOp <= eLastOp && eLastOp < ocStopBinOp) ||
|
||||
eLastOp == ocArrayOpen ||
|
||||
eLastOp == ocArrayColSep || eLastOp == ocArrayRowSep);
|
||||
if (bShouldBeNegSub && eOp == ocSub)
|
||||
@@ -5757,8 +5757,8 @@ bool ScCompiler::GetRefColRowNames(const FormulaToken* pToken, ScComplexRefData&
|
||||
if (eOp1 != ocColRowName && eOp1 != ocIntersect && eOp2 != ocColRowName
|
||||
&& eOp2 != ocIntersect)
|
||||
{
|
||||
if ((SC_OPCODE_START_BIN_OP <= eOp1 && eOp1 < SC_OPCODE_STOP_BIN_OP)
|
||||
|| (SC_OPCODE_START_BIN_OP <= eOp2 && eOp2 < SC_OPCODE_STOP_BIN_OP))
|
||||
if ((ocStartBinOp <= eOp1 && eOp1 < ocStopBinOp)
|
||||
|| (ocStartBinOp <= eOp2 && eOp2 < ocStopBinOp))
|
||||
bSingle = true;
|
||||
}
|
||||
if (bSingle)
|
||||
@@ -6524,7 +6524,7 @@ bool ScCompiler::HandleIIOpCodeInternal(FormulaToken* token, FormulaToken*** ppp
|
||||
mPendingImplicitIntersectionOptimizations.emplace_back( pppToken[0], token );
|
||||
return true;
|
||||
}
|
||||
else if ((nOpCode >= SC_OPCODE_START_BIN_OP && nOpCode < SC_OPCODE_STOP_BIN_OP
|
||||
else if ((nOpCode >= ocStartBinOp && nOpCode < ocStopBinOp
|
||||
&& nOpCode != ocAnd && nOpCode != ocOr)
|
||||
|| nOpCode == ocRound || nOpCode == ocRoundUp || nOpCode == ocRoundDown)
|
||||
{
|
||||
@@ -6543,7 +6543,7 @@ bool ScCompiler::HandleIIOpCodeInternal(FormulaToken* token, FormulaToken*** ppp
|
||||
mPendingImplicitIntersectionOptimizations.emplace_back( pppToken[1], token );
|
||||
return true;
|
||||
}
|
||||
else if ((nOpCode >= SC_OPCODE_START_UN_OP && nOpCode < SC_OPCODE_STOP_UN_OP)
|
||||
else if ((nOpCode >= ocStartUnaryOp && nOpCode < ocStopUnaryOp)
|
||||
|| nOpCode == ocPercentSign)
|
||||
{
|
||||
if (nNumParams != 1)
|
||||
|
||||
@@ -604,7 +604,7 @@ void ScParameterClassification::GenerateDocumentation()
|
||||
bAddParentheses = false;
|
||||
aToken.SetByte(0);
|
||||
}
|
||||
else if ( eOp < SC_OPCODE_STOP_BIN_OP )
|
||||
else if ( eOp < ocStopBinOp )
|
||||
{
|
||||
switch ( eOp )
|
||||
{
|
||||
@@ -616,7 +616,7 @@ void ScParameterClassification::GenerateDocumentation()
|
||||
aToken.SetByte(2);
|
||||
}
|
||||
}
|
||||
else if ( eOp < SC_OPCODE_STOP_UN_OP )
|
||||
else if ( eOp < ocStopUnaryOp )
|
||||
aToken.SetByte(1);
|
||||
else if ( eOp < SC_OPCODE_STOP_NO_PAR )
|
||||
aToken.SetByte(0);
|
||||
|
||||
@@ -1655,7 +1655,7 @@ void ScTokenArray::CheckToken( const FormulaToken& r )
|
||||
;
|
||||
}
|
||||
}
|
||||
else if (SC_OPCODE_START_BIN_OP <= eOp && eOp < SC_OPCODE_STOP_UN_OP)
|
||||
else if (ocStartBinOp <= eOp && eOp < ocStopUnaryOp)
|
||||
{
|
||||
if (ScInterpreter::GetGlobalConfig().mbOpenCLSubsetOnly &&
|
||||
ScInterpreter::GetGlobalConfig().mpOpenCLSubsetOpCodes->find(eOp) == ScInterpreter::GetGlobalConfig().mpOpenCLSubsetOpCodes->end())
|
||||
|
||||
Reference in New Issue
Block a user