Practical: Inspects various properties of an item from within a callback, including its definition text.
ID: 674
See: Text = [string]
using uCalcSoftware;
var uc = new uCalc();
static void ItemCallback(uCalc.Callback cb) {
var 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)) {
Console.WriteLine("Operator");
} else if (itm.IsProperty(ItemIs.Function)) {
Console.WriteLine("Function");
}
Console.WriteLine($"Definition: {itm.Text}");
Console.WriteLine($"Description: {itm.Description}");
Console.WriteLine("---");
}
uc.DefineFunction("AAA() As Double", ItemCallback).Description = "Does this and that";
uc.DefineFunction("BBB(x, y, z) As String", ItemCallback).Description = "Does something else";
uc.DefineOperator("{x} CCC {y} As Int32", 55, Associativity.LeftToRight, ItemCallback);
uc.EvalStr("AAA()");
uc.EvalStr("BBB(9, 8, 7)");
uc.EvalStr("5 CCC 4");
Name: aaa
Data type: double
Param count: 0
Procedure type: Function
Definition: Function: AAA() As Double
Description: Does this and that
---
Name: bbb
Data type: string
Param count: 3
Procedure type: Function
Definition: Function: BBB(x, y, z) As String
Description: Does something else
---
Name: ccc
Data type: int
Param count: 2
Procedure type: Operator
Definition: Operator: {x} CCC {y} As Int32
Description:
--- using uCalcSoftware; var uc = new uCalc(); static void ItemCallback(uCalc.Callback cb) { var 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)) { Console.WriteLine("Operator"); } else if (itm.IsProperty(ItemIs.Function)) { Console.WriteLine("Function"); } Console.WriteLine($"Definition: {itm.Text}"); Console.WriteLine($"Description: {itm.Description}"); Console.WriteLine("---"); } uc.DefineFunction("AAA() As Double", ItemCallback).Description = "Does this and that"; uc.DefineFunction("BBB(x, y, z) As String", ItemCallback).Description = "Does something else"; uc.DefineOperator("{x} CCC {y} As Int32", 55, Associativity.LeftToRight, ItemCallback); uc.EvalStr("AAA()"); uc.EvalStr("BBB(9, 8, 7)"); uc.EvalStr("5 CCC 4");
#include
#include "uCalc.h"
using namespace std;
using namespace uCalcSoftware;
void ucalc_call ItemCallback(uCalcBase::Callback cb) {
auto itm = cb.Item();
cout << "Name: " << itm.Name() << endl;
cout << "Data type: " << itm.DataType().Name() << endl;
cout << "Param count: " << to_string(itm.Count()) << endl;
cout << "Procedure type: ";
if (itm.IsProperty(ItemIs::Operator)) {
cout << "Operator" << endl;
} else if (itm.IsProperty(ItemIs::Function)) {
cout << "Function" << endl;
}
cout << "Definition: " << itm.Text() << endl;
cout << "Description: " << itm.Description() << endl;
cout << "---" << endl;
}
int main() {
uCalc uc;
uc.DefineFunction("AAA() As Double", ItemCallback).Description("Does this and that");
uc.DefineFunction("BBB(x, y, z) As String", ItemCallback).Description("Does something else");
uc.DefineOperator("{x} CCC {y} As Int32", 55, Associativity::LeftToRight, ItemCallback);
uc.EvalStr("AAA()");
uc.EvalStr("BBB(9, 8, 7)");
uc.EvalStr("5 CCC 4");
}
Name: aaa
Data type: double
Param count: 0
Procedure type: Function
Definition: Function: AAA() As Double
Description: Does this and that
---
Name: bbb
Data type: string
Param count: 3
Procedure type: Function
Definition: Function: BBB(x, y, z) As String
Description: Does something else
---
Name: ccc
Data type: int
Param count: 2
Procedure type: Operator
Definition: Operator: {x} CCC {y} As Int32
Description:
--- #include <iostream> #include "uCalc.h" using namespace std; using namespace uCalcSoftware; void ucalc_call ItemCallback(uCalcBase::Callback cb) { auto itm = cb.Item(); cout << "Name: " << itm.Name() << endl; cout << "Data type: " << itm.DataType().Name() << endl; cout << "Param count: " << to_string(itm.Count()) << endl; cout << "Procedure type: "; if (itm.IsProperty(ItemIs::Operator)) { cout << "Operator" << endl; } else if (itm.IsProperty(ItemIs::Function)) { cout << "Function" << endl; } cout << "Definition: " << itm.Text() << endl; cout << "Description: " << itm.Description() << endl; cout << "---" << endl; } int main() { uCalc uc; uc.DefineFunction("AAA() As Double", ItemCallback).Description("Does this and that"); uc.DefineFunction("BBB(x, y, z) As String", ItemCallback).Description("Does something else"); uc.DefineOperator("{x} CCC {y} As Int32", 55, Associativity::LeftToRight, ItemCallback); uc.EvalStr("AAA()"); uc.EvalStr("BBB(9, 8, 7)"); uc.EvalStr("5 CCC 4"); }
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
Name: aaa
Data type: double
Param count: 0
Procedure type: Function
Definition: Function: AAA() As Double
Description: Does this and that
---
Name: bbb
Data type: string
Param count: 3
Procedure type: Function
Definition: Function: BBB(x, y, z) As String
Description: Does something else
---
Name: ccc
Data type: int
Param count: 2
Procedure type: Operator
Definition: Operator: {x} CCC {y} As Int32
Description:
--- 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