Hi, I stumbled over an inconsistency in the use of opcodes in formula/source/core/api/FormulaCompiler.cxx: in two locations SC_OPCODE_xxx is used for functions, whereas in all other code (apart from the definitions, formula/inc/core_resource.hrc,
sc/inc/scfuncs.hrc and sc/source/core/data/funcdesc.cxx) ocXxx is used. (It took me hours with gdb to find out why ocIf was handled differenty than ocIfs_MS when the latter was changed to a fump function). I want to replace the use of SC_OPCODE_XXX in formula/source/core/api/FormulaCompiler.cxx with ocXxx. In sc/source/core/data/funcdesc.cxx the situation is the other way round, SC_OPCODE_XXX is consequently used for functions and ocXxx is use for oSep, ocOpen and similar. I want to change that too to get a consistent use of opcode names. So far, no real problems. But when looking into formula/source/core/api/FormulaCompiler.cxx I noticed that the term 'OpCode' seems to be used both for
type e.g. line 58:SvNumFormatType lcl_GetRetFormat( OpCode eOpCode ),
members e.g. line 127 aEntry.Token.OpCode = nOpCode; and variables e.g. line 184: xMap->putOpCode( aOpStr, OpCode(i), pCharClass); . And as type for opcodes both OpCode (e.g. line 58) and sal_UInt16 (e.g. line 173) are used. OpCode cannot be used in the case of SC_OPCODE_START_UN_OP and the like, but changing static const sal_UInt16 aOpCodes[] = { SC_OPCODE_OPEN, SC_OPCODE_CLOSE, SC_OPCODE_SEP, }; to static const OpCode aOpCodes[] = { SC_OPCODE_OPEN, SC_OPCODE_CLOSE, SC_OPCODE_SEP, }; produces compiler errors ('invalid conversion from int to OpCode' and 'invalid conversion from const OpCode to sal_UInt16'). I am confused by this (non) use of 'OpCode'. Anyone who knows the why and how of this? Winfried |
_______________________________________________ LibreOffice mailing list LibreOffice@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/libreoffice