Weevil-Defined Functions

The following macro functions are defined in Weevil for users to ease their workload scenario configuration.
Besides, users could still define their own macros to help with workload scenario configuration.
WVL_SYS_Range(name, int lowerbound, int upperbound)
  Function
  A name list, the resulting list is $1$2, $1($2+1), ...$1$3
  Example
  WVL_SYS_Range(`br', 1, 5)
  => br1,br2,br3,br4,br5

WVL_SYS_Echo(name)
  Function
  Display the value of the argument
  Example
  Assumed that "WVL_Component_ID = S0"
  WVL_SYS_Component(`S0', `SienaServer')
  WVL_SYS_Echo(`WVL_Component_'WVL_Component_ID`_type')
  => SienaServer

WVL_SYS_Head(name [, name])
  Function
  Returns the "head" of its argument list
  Example
  WVL_SYS_Head(`S0', `S1', `S2')
  => S0

WVL_SYS_Tail(name [, name])
  Function
  Returns the "rest" of its argument list
  Example
  WVL_SYS_Tail(`S0', `S1', `S2')
  => S1,S2

WVL_SYS_Add(name, expansion)
  Function
  Defines or redefines $1 to be its previous contents with $2 appended
  Example
  define(`Group1', `S1,S2')
  define(`Group2', `S3,S4')
  WVL_SYS_Add(`Group2', Group1)
  Group2
  => S3,S4,S1,S2

WVL_SYS_Contains(name, expansion [, expansion])
  Function
  Checks if $1 is contained by the list represented by the rest of the arguments
  Example
  define(`Group1', `S1,S2')
  define(`Group2', `S3,S4')
  WVL_SYS_Contains(`S3', Group1)
  => false
  WVL_SYS_Contains(`S3', Group1, Group2)
  => true

WVL_SYS_Insert(expansion, name)
  Function
  Adds $2 to $1 if it doesn't already exist there
  Example
  define(`Group1', `S1,S2')
  WVL_SYS_Insert(`Group1', `S1')
  Group1
  => S1,S2
  WVL_SYS_Insert(`Group1', `S3')
  Group1
  => S1,S2,S3

WVL_SYS_Callforeach(function, name [, name])
  Function
  Applies $1 to $2 and then processes the rest one by one, $1 can only accept one argument
  Example
  define(`serverdef', `WVL_SYS_Component($1, `SienaServer')')
  WVL_SYS_Callforeach(`serverdef', S0, S1, S2)
  => WVL_SYS_Component(`S0', `SienaServer')dnl
  WVL_SYS_Component(`S1', `SienaServer')dnl
  WVL_SYS_Component(`S2', `SienaServer')dnl

WVL_SYS_Foreach(name, function, list)
  Function
  Iterates over $3 defining $1 to the current value in $3 and executing $2
  Example
  WVL_SYS_Foreach(`i', `WVL_SYS_Component(i, `SienaServer')', `S0, S1, S2')
  => WVL_SYS_Component(`S0', `SienaServer')dnl
  WVL_SYS_Component(`S1', `SienaServer')dnl
  WVL_SYS_Component(`S2', `SienaServer')dnl

WVL_SYS_Subst_Commas(string, name [, name])
  Function
  Iterates over arguments replacing commas with $1
  Example
  WVL_SYS_Subst_Commas(`;', S0, S1, S2)
  => S0;S1;S2;

WVL_SYS_Strip_Commas(name [, name])
  Function
  Iterates over arguments expanding without commas
  equals to WVL_SYS_Subst_Commas(` ', name [, name])
  Example
  WVL_SYS_Strip_Commas(S0, S1, S2)
  => S0 S1 S2