Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 094e26c

Browse files
author
Xisco Fauli
committedFeb 4, 2025
tdf#150868: Add support for HSTACK function
Change-Id: I105ffabc8dd1fa58bf3acec4a81c3217061d3a26 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/181100 Reviewed-by: Xisco Fauli <[email protected]> Tested-by: Jenkins
1 parent eba3c7d commit 094e26c

File tree

18 files changed

+5148
-14
lines changed

18 files changed

+5148
-14
lines changed
 

‎formula/inc/core_resource.hrc

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -285,6 +285,7 @@ const std::pair<const char *, int> RID_STRLIST_FUNCTION_NAMES_ENGLISH_ODFF[] =
285285
{ "COM.MICROSOFT.CHOOSEROWS" , SC_OPCODE_CHOOSEROWS },
286286
{ "COM.MICROSOFT.DROP" , SC_OPCODE_DROP },
287287
{ "COM.MICROSOFT.EXPAND" , SC_OPCODE_EXPAND },
288+
{ "COM.MICROSOFT.HSTACK" , SC_OPCODE_HSTACK },
288289
{ "COM.MICROSOFT.TAKE" , SC_OPCODE_TAKE },
289290
{ "COM.MICROSOFT.TOCOL" , SC_OPCODE_TOCOL },
290291
{ "COM.MICROSOFT.TOROW" , SC_OPCODE_TOROW },
@@ -751,6 +752,7 @@ const std::pair<const char *, int> RID_STRLIST_FUNCTION_NAMES_ENGLISH_OOXML[] =
751752
{ "_xlfn.CHOOSEROWS" , SC_OPCODE_CHOOSEROWS },
752753
{ "_xlfn.DROP" , SC_OPCODE_DROP },
753754
{ "_xlfn.EXPAND" , SC_OPCODE_EXPAND },
755+
{ "_xlfn.HSTACK" , SC_OPCODE_HSTACK },
754756
{ "_xlfn.TAKE" , SC_OPCODE_TAKE },
755757
{ "_xlfn.TOCOL" , SC_OPCODE_TOCOL },
756758
{ "_xlfn.TOROW" , SC_OPCODE_TOROW },
@@ -1220,6 +1222,7 @@ const std::pair<const char *, int> RID_STRLIST_FUNCTION_NAMES_ENGLISH_PODF[] =
12201222
{ "CHOOSEROWS" , SC_OPCODE_CHOOSEROWS },
12211223
{ "DROP" , SC_OPCODE_DROP },
12221224
{ "EXPAND" , SC_OPCODE_EXPAND },
1225+
{ "HSTACK" , SC_OPCODE_HSTACK },
12231226
{ "TAKE" , SC_OPCODE_TAKE },
12241227
{ "TOCOL" , SC_OPCODE_TOCOL },
12251228
{ "TOROW" , SC_OPCODE_TOROW },
@@ -1689,6 +1692,7 @@ const std::pair<const char *, int> RID_STRLIST_FUNCTION_NAMES_ENGLISH_API[] =
16891692
{ "CHOOSEROWS" , SC_OPCODE_CHOOSEROWS },
16901693
{ "DROP" , SC_OPCODE_DROP },
16911694
{ "EXPAND" , SC_OPCODE_EXPAND },
1695+
{ "HSTACK" , SC_OPCODE_HSTACK },
16921696
{ "TAKE" , SC_OPCODE_TAKE },
16931697
{ "TOCOL" , SC_OPCODE_TOCOL },
16941698
{ "TOROW" , SC_OPCODE_TOROW },
@@ -2156,6 +2160,7 @@ const std::pair<const char *, int> RID_STRLIST_FUNCTION_NAMES_ENGLISH[] =
21562160
{ "CHOOSEROWS" , SC_OPCODE_CHOOSEROWS },
21572161
{ "DROP" , SC_OPCODE_DROP },
21582162
{ "EXPAND" , SC_OPCODE_EXPAND },
2163+
{ "HSTACK" , SC_OPCODE_HSTACK },
21592164
{ "TAKE" , SC_OPCODE_TAKE },
21602165
{ "TOCOL" , SC_OPCODE_TOCOL },
21612166
{ "TOROW" , SC_OPCODE_TOROW },
@@ -2604,6 +2609,7 @@ const std::pair<TranslateId, int> RID_STRLIST_FUNCTION_NAMES[] =
26042609
{ NC_("RID_STRLIST_FUNCTION_NAMES", "CHOOSEROWS") , SC_OPCODE_CHOOSEROWS },
26052610
{ NC_("RID_STRLIST_FUNCTION_NAMES", "DROP") , SC_OPCODE_DROP },
26062611
{ NC_("RID_STRLIST_FUNCTION_NAMES", "EXPAND") , SC_OPCODE_EXPAND },
2612+
{ NC_("RID_STRLIST_FUNCTION_NAMES", "HSTACK") , SC_OPCODE_HSTACK },
26072613
{ NC_("RID_STRLIST_FUNCTION_NAMES", "TAKE") , SC_OPCODE_TAKE },
26082614
{ NC_("RID_STRLIST_FUNCTION_NAMES", "TOCOL") , SC_OPCODE_TOCOL },
26092615
{ NC_("RID_STRLIST_FUNCTION_NAMES", "TOROW") , SC_OPCODE_TOROW },

‎formula/source/core/api/FormulaCompiler.cxx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1283,6 +1283,7 @@ bool FormulaCompiler::IsMatrixFunction( OpCode eOpCode )
12831283
case ocChooseRows :
12841284
case ocDrop :
12851285
case ocExpand :
1286+
case ocHStack :
12861287
case ocTake :
12871288
case ocToCol :
12881289
case ocToRow :

‎include/formula/compiler.hxx

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -521,13 +521,14 @@
521521
#define SC_OPCODE_CHOOSEROWS 506
522522
#define SC_OPCODE_DROP 507
523523
#define SC_OPCODE_EXPAND 508
524-
#define SC_OPCODE_TAKE 509
525-
#define SC_OPCODE_TOCOL 510
526-
#define SC_OPCODE_TOROW 511
527-
#define SC_OPCODE_UNIQUE 512
528-
#define SC_OPCODE_WRAPCOLS 513
529-
#define SC_OPCODE_WRAPROWS 514
530-
#define SC_OPCODE_STOP_2_PAR 515 /* last function with two or more parameters' OpCode + 1 */
524+
#define SC_OPCODE_HSTACK 509
525+
#define SC_OPCODE_TAKE 510
526+
#define SC_OPCODE_TOCOL 511
527+
#define SC_OPCODE_TOROW 512
528+
#define SC_OPCODE_UNIQUE 513
529+
#define SC_OPCODE_WRAPCOLS 514
530+
#define SC_OPCODE_WRAPROWS 515
531+
#define SC_OPCODE_STOP_2_PAR 516 /* last function with two or more parameters' OpCode + 1 */
531532

532533
#define SC_OPCODE_STOP_FUNCTION SC_OPCODE_STOP_2_PAR /* last function's OpCode + 1 */
533534
#define SC_OPCODE_LAST_OPCODE_ID (SC_OPCODE_STOP_FUNCTION - 1) /* last OpCode */

‎include/formula/opcode.hxx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -517,6 +517,7 @@ enum OpCode : sal_uInt16
517517
ocChooseRows = SC_OPCODE_CHOOSEROWS,
518518
ocDrop = SC_OPCODE_DROP,
519519
ocExpand = SC_OPCODE_EXPAND,
520+
ocHStack = SC_OPCODE_HSTACK,
520521
ocTake = SC_OPCODE_TAKE,
521522
ocToCol = SC_OPCODE_TOCOL,
522523
ocToRow = SC_OPCODE_TOROW,
@@ -1011,6 +1012,7 @@ inline std::string OpCodeEnumToString(OpCode eCode)
10111012
case ocChooseRows: return "ChooseRows";
10121013
case ocDrop: return "Drop";
10131014
case ocExpand: return "Expand";
1015+
case ocHStack: return "HStack";
10141016
case ocTake: return "Take";
10151017
case ocToCol: return "ToCol";
10161018
case ocToRow: return "ToRow";

‎sc/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ https://docs.oasis-open.org/office/OpenDocument/v1.3/os/part4-formula/OpenDocume
5959
* CHOOSEROWS
6060
* DROP
6161
* EXPAND
62+
* HSTACK
6263
* TAKE
6364
* TOCOL
6465
* TOROW

‎sc/inc/helpids.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -604,6 +604,7 @@ inline constexpr OUString HID_FUNC_CHOOSECOLS_MS = u"SC_HID_FUNC_CHOOSECOLS_MS"_
604604
inline constexpr OUString HID_FUNC_CHOOSEROWS_MS = u"SC_HID_FUNC_CHOOSEROWS_MS"_ustr;
605605
inline constexpr OUString HID_FUNC_DROP_MS = u"SC_HID_FUNC_DROP_MS"_ustr;
606606
inline constexpr OUString HID_FUNC_EXPAND_MS = u"SC_HID_FUNC_EXPAND_MS"_ustr;
607+
inline constexpr OUString HID_FUNC_HSTACK_MS = u"SC_HID_FUNC_HSTACK_MS"_ustr;
607608
inline constexpr OUString HID_FUNC_TAKE_MS = u"SC_HID_FUNC_TAKE_MS"_ustr;
608609
inline constexpr OUString HID_FUNC_TOCOL_MS = u"SC_HID_FUNC_TOCOL_MS"_ustr;
609610
inline constexpr OUString HID_FUNC_TOROW_MS = u"SC_HID_FUNC_TOROW_MS"_ustr;

‎sc/inc/scfuncs.hrc

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4301,6 +4301,16 @@ const TranslateId SC_OPCODE_EXPAND_ARY[] =
43014301
NC_("SC_OPCODE_EXPAND", "The value with which to pad. The default is #N/A.")
43024302
};
43034303

4304+
// -=*# Resource for function HSTACK #*=-
4305+
const TranslateId SC_OPCODE_HSTACK_ARY[] =
4306+
{
4307+
NC_("SC_OPCODE_HSTACK", "Appends arrays horizontally to create a larger array"),
4308+
NC_("SC_OPCODE_HSTACK", "Array"),
4309+
NC_("SC_OPCODE_HSTACK", "The first array to append."),
4310+
NC_("SC_OPCODE_HSTACK", "Array 2"),
4311+
NC_("SC_OPCODE_HSTACK", "Array 2, Array 3,... The following arrays to append. if an array has fewer rows, #N/A error will be returned in the additional rows."),
4312+
};
4313+
43044314
// -=*# Resource for function TAKE #*=-
43054315
const TranslateId SC_OPCODE_TAKE_ARY[] =
43064316
{

‎sc/qa/extras/scfunctionlistobj.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ class ScFunctionListObj : public UnoApiTest,
7777
ScFunctionListObj::ScFunctionListObj()
7878
: UnoApiTest(u"/sc/qa/extras/testdocuments"_ustr)
7979
, XElementAccess(cppu::UnoType<uno::Sequence<beans::PropertyValue>>::get())
80-
, XIndexAccess(413)
80+
, XIndexAccess(414)
8181
, XNameAccess(u"IF"_ustr)
8282
, XServiceInfo(u"stardiv.StarCalc.ScFunctionListObj"_ustr,
8383
u"com.sun.star.sheet.FunctionDescriptions"_ustr)

0 commit comments

Comments
 (0)
Please sign in to comment.