Imports System
Imports uCalcSoftware
Public Module Program
   
   Public Sub MyAverage(ByVal cb As uCalc.Callback)
      Dim Total As Double = 0
      For x  As Integer = 1 To cb.ArgCount()
         Total = Total + cb.Arg(x)
      Next
      cb.Return(Total / cb.ArgCount())
   End Sub
   Public Sub Main()
      Dim uc As New uCalc()
      Dim MyArrayA = uc.DefineVariable("MyArrayA[] = {10, 20, 30, 40, 50}")
      Dim MyArrayB = uc.DefineVariable("MyArrayB[15]")
      Dim FunctionA = uc.DefineFunction("FuncA(x, y, z) = x + y + z")
      Dim FunctionB = uc.DefineFunction("FuncB(x, y, a = 12, b = 34) = x+y+a+b")
      Dim FunctionC = uc.DefineFunction("FuncC(x, y ...)", AddressOf MyAverage)
      Dim FunctionD = uc.DefineFunction("FuncD() = 1+1")
      
      Console.WriteLine($"Elements in MyArrayA: {MyArrayA.Count}")
      Console.WriteLine($"Elements in MyArrayB: {MyArrayB.Count}")
      Console.WriteLine($"Params in FuncA(): {FunctionA.Count}")
      Console.WriteLine($"Params in FuncB(): {FunctionB.Count}")
      Console.WriteLine($"Params in FuncC(): {FunctionC.Count}") '// -1 or 2^n-1 (n=32 or 64)
      Console.WriteLine($"Params in FuncD(): {FunctionD.Count}")
      Console.WriteLine($"Operands in ! operator: {uc.ItemOf("!").Count}")
      Console.WriteLine($"Operands in > operator: {uc.ItemOf(">").Count}")
   End Sub
End Module