Re: [sc-dev] Add a new Calc spreadsheet function
Hi Marina, On Thursday, 2010-08-12 15:13:24 +0200, Marina Plakalovic wrote: > Working with ranges inside the functions is not the issue, but registering > function is. I'm not sure I understand what you mean with registering. Are you referring to parclass.cxx? > I followed steps described in > http://wiki.services.openoffice.org/wiki/Calc/Implementation/Spreadsheet_Functions, > and it seems that some additional changes must be made for functions that > take range as a parameter. I just added some details to http://wiki.services.openoffice.org/wiki/Calc/Implementation/Spreadsheet_Functions#The_not_so_easy_case_of_non-scalar_arguments and hope that helps. If not, please ask your questions ;-) Eike -- OOo Calc core developer. Number formatter stricken i18n transpositionizer. Signature key 0x87F8D412 : 2F58 5236 DB02 F335 8304 7D6C 65C9 F9B5 87F8 D412 OpenOffice.org Engineering at Oracle: http://blogs.sun.com/GullFOSS -- Please don't send mail to the old e...@sun.com account that I used for mailing lists, it phased out. Use eike.rat...@oracle.com instead. Thanks. pgpK3g0Ufjxfh.pgp Description: PGP signature
Re: [sc-dev] Add a new Calc spreadsheet function
Hi Eike, Working with ranges inside the functions is not the issue, but registering function is. I followed steps described in http://wiki.services.openoffice.org/wiki/Calc/Implementation/Spreadsheet_Functions, and it seems that some additional changes must be made for functions that take range as a parameter. Thanks, Marina 2010/8/12 Eike Rathke > Hi Marina, > > On Monday, 2010-08-09 15:21:39 +0200, Marina Plakalovic wrote: > > > I have added new function by following the tutorial: > > > http://wiki.services.openoffice.org/wiki/Calc/Implementation/Spreadsheet_Functions > > > > This works fine when the arguments of the function are scalar, but if I > want > > to pass the range of values to the function, additional steps are needed. > > You need to differentiate according to the data type that is on the > stack, e.g. svDoubleRef for a range reference. See for example > ScInterpreter::ScMax() how that is handled in a simple case. For your > implementation also ScInterpreter::ScCountIf() and > ScInterpreter::ScSumIf() may be of interest. > > Eike > > -- > OOo Calc core developer. Number formatter stricken i18n transpositionizer. > Signature key 0x87F8D412 : 2F58 5236 DB02 F335 8304 7D6C 65C9 F9B5 87F8 > D412 > OpenOffice.org Engineering at Oracle: http://blogs.sun.com/GullFOSS > -- > Please don't send mail to the old e...@sun.com account that I used for > mailing > lists, it phased out. Use eike.rat...@oracle.com instead. Thanks. >
Re: [sc-dev] Add a new Calc spreadsheet function
Hi Marina, On Monday, 2010-08-09 15:21:39 +0200, Marina Plakalovic wrote: > I have added new function by following the tutorial: > http://wiki.services.openoffice.org/wiki/Calc/Implementation/Spreadsheet_Functions > > This works fine when the arguments of the function are scalar, but if I want > to pass the range of values to the function, additional steps are needed. You need to differentiate according to the data type that is on the stack, e.g. svDoubleRef for a range reference. See for example ScInterpreter::ScMax() how that is handled in a simple case. For your implementation also ScInterpreter::ScCountIf() and ScInterpreter::ScSumIf() may be of interest. Eike -- OOo Calc core developer. Number formatter stricken i18n transpositionizer. Signature key 0x87F8D412 : 2F58 5236 DB02 F335 8304 7D6C 65C9 F9B5 87F8 D412 OpenOffice.org Engineering at Oracle: http://blogs.sun.com/GullFOSS -- Please don't send mail to the old e...@sun.com account that I used for mailing lists, it phased out. Use eike.rat...@oracle.com instead. Thanks. pgpFNaaUSjveN.pgp Description: PGP signature
[sc-dev] Add a new Calc spreadsheet function
Hi all, I have started working on adding new Calc functions and I am still new in these things. I have added new function by following the tutorial: http://wiki.services.openoffice.org/wiki/Calc/Implementation/Spreadsheet_Functions This works fine when the arguments of the function are scalar, but if I want to pass the range of values to the function, additional steps are needed. Can anyone give me some tips about this case? Thanks in advance, Marina