Imports System
Imports uCalcSoftware
Public Module Program
   
   Public Sub ItemCallback(ByVal cb As uCalc.Callback)
      Dim itm = cb.Item
      Console.WriteLine($"Name: {itm.Name}")
      Console.WriteLine($"Data type: {itm.DataType.Name}")
      Console.WriteLine($"Param count: {(itm.Count).ToString()}")
      Console.Write("Procedure type: ")
      If itm.IsProperty(ItemIs.Operator) Then
         Console.WriteLine("Operator")
         ElseIf itm.IsProperty(ItemIs.Function ) Then
            Console.WriteLine("Function")
         End If
         Console.WriteLine($"Definition: {itm.Text}")
         Console.WriteLine($"Description: {itm.Description}")
         Console.WriteLine("---")
      End Sub
      Public Sub Main()
         Dim uc As New uCalc()
         uc.DefineFunction("AAA() As Double", AddressOf ItemCallback).Description = "Does this and that"
         uc.DefineFunction("BBB(x, y, z) As String", AddressOf ItemCallback).Description = "Does something else"
         uc.DefineOperator("{x} CCC {y} As Int32", 55, Associativity.LeftToRight, AddressOf ItemCallback)
         
         uc.EvalStr("AAA()")
         uc.EvalStr("BBB(9, 8, 7)")
         uc.EvalStr("5 CCC 4")
      End Sub
   End Module