tdf#50950 sort out Calc (ISO)WEEKNUM functions
Eike Rathke
erack at redhat.com
Thu Sep 17 06:00:06 PDT 2015
Hi Winfried,
On Thursday, 2015-09-17 12:07:59 +0200, Winfried Donkers wrote:
> I want to change the opcode from ocIsoWeeknum to ocWeek when it is an ODF-document and when the number of arguments is 2.
> I currently tried formula/source/core/api/token.cxx because there I can get type (ODF), opcode and argument count. But I can't change the opcode. I tried the dirty FormulaToken;;NewOpCode(), but encounter problems with the const PrivateAccess& argument.
As the comment says "only the compiler should use it" and that's why the
PrivateAccess parameter is there ;-) Modifying the OpCode within the
token array could have nasty side effects. It *might* be ok in this
case, but..
The proper place to use that if the formula string is already compiled
is in the RPN code generation
formula/source/core/api/FormulaCompiler.cxx FormulaCompiler::Factor()
where in line 1177 there's also an example of the NewOpCode() usage
pFacToken->NewOpCode( ocUnion, FormulaToken::PrivateAccess());
In the long else{} branch there's
else if ((SC_OPCODE_START_2_PAR <= eOp && eOp < SC_OPCODE_STOP_2_PAR)
...
and there at the end a pFacToken->SetByte( nSepCount ); followed by a
PutCode( pFacToken );
Before the PutCode(), when compiling ODFF and the pFacToken's OpCode is
ocIsoWeeknum and nSepCount==2 (actually nSepCount is the argument count)
you could do
pFacToken->NewOpCode( ocWeek, FormulaToken::PrivateAccess());
All untried..
Hope that helps
Eike
--
LibreOffice Calc developer. Number formatter stricken i18n transpositionizer.
GPG key "ID" 0x65632D3A - 2265 D7F3 A7B0 95CC 3918 630B 6A6C D5B7 6563 2D3A
Better use 64-bit 0x6A6CD5B765632D3A here is why: https://evil32.com/
Care about Free Software, support the FSFE https://fsfe.org/support/?erack
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/libreoffice/attachments/20150917/acea3e31/attachment.sig>
More information about the LibreOffice
mailing list