Cva_Start

Macro to initialize variadic argument list object variable

Syntax
   Cva_Start( argument_list, last_param )

Parameters
   argument_list
      Cva_List data type variable to initialize
   last_param
      The last parameter in the procedures parameter list before the 
      Ellipsis ...

Description
   In a variadic procedure definition, argument_list is a variable having 
   the Cva_List type and must be initialized with Cva_Start to work with 
   the variable length argument list passed to the procedure.

   last_param is the last parameter before the Ellipsis ... in the variadic 
   procedure definition.

   Cva_Start can only be used in variadic procedures.  A variadic procedure 
   is declared or defined by specifying the Ellipsis ... as the last 
   parameter, and will accept a variable number of arguments when calling 
   the procedure.

   Cva_Start is like a constructor for the variadic argument_list object 
   and must eventually have a matching call to Cva_End, which is like a 
   destructor.  After Cva_End for argument_list has been called, 
   argument_list can be reused and reinitialized with another call to 
   Cva_Start.  The Cva_Start and Cva_End calls must both be called in pairs 
   in the same procedure (for cross platform compatibility).

   Cva_Copy is similar to Cva_Start except it initializes a variadic 
   argument_list object from an already initialized variadic argument_list 
   object, like a copy constructor.

Example
   '' typical usage of iterating through all arguments

   Sub proc cdecl(count As Integer, ... )
      Dim args As Cva_List
      Cva_Start( args, count )
      For i As Integer = 1 To count
         Print Cva_Arg( args, Integer )
      Next
      Cva_End( args )
   End Sub

   proc( 4, 4000, 300, 20, 1 )

   '' example of using cva_start to get the first argument
   '' then restarting to get all the arguments

   Sub proc cdecl(count As Integer, ... )
      Dim args As Cva_List

      '' get the first argument only
      Cva_Start( args, count )
      Print Cva_Arg( args, Integer )
      Cva_End( args )

      '' restart and get all the arguments
      Cva_Start( args, count )
      For i As Integer = 1 To count
         Print Cva_Arg( args, Integer )
      Next
      Cva_End( args )

   End Sub

   proc( 4, 4000, 300, 20, 1 )

Version
   * Since fbc 1.07.0

Dialect Differences
   * Not available in the -lang qb dialect unless referenced with the 
     alias __cva_start.

Differences from QB
   * New to FreeBASIC

See also
   * ... (Ellipsis)
   * Cva_Arg
   * Cva_Copy
   * Cva_End
   * Cva_List

