uCalc API Version: 5.7.0-preview.1 Released: 7/30/2026
Warning
uCalc API Preview Release Notice:This preview documentation describes the intended behavior of the API. It is not fully accurate or complete.The current preview build contains incomplete features, unoptimized performance, and is subject to breaking changes.Use of the preview version in your production code is not recommended.
Product:
Class:
Retrieves the DataType object associated with a specific item name, type name, or expression.
The DataType object corresponding to the input. Returns DataType::Empty if the input is invalid or cannot be resolved.
The DataTypeOf method is a runtime introspection tool that resolves a string input into a DataType object.
It handles three categories of input strings:
"5 + 2.5" returns the Double type)."Int", "String", "Double"), it returns the corresponding type definition.Unlike C#'s typeof(T) which is resolved at compile-time, or Object.GetType() which requires an instantiated object, uCalc.DataTypeOf() operates on dynamic string definitions at runtime. This allows you to check the semantic type of a user's input string before attempting to evaluate it.
For convenience, the string "Int" and "Integer" are treated as synonyms for "Int32".
If the input cannot be resolved to a valid type, the method returns DataType::Empty.
ID: 3
using uCalcSoftware;
var uc = new uCalc();
Console.WriteLine(uc.DataTypeOf("10 + 20 - 3").Name);
Console.WriteLine(uc.DataTypeOf(" 'What type ' + 'is this?' ").Name);
Console.WriteLine(uc.DataTypeOf("3 < 10").Name);
Console.WriteLine(uc.DataTypeOf("5 + 7 * #i").Name);
Console.WriteLine("---");
uc.DefineFunction("func(x) as string = 'Hello' * 3");
Console.WriteLine(uc.DataTypeOf("func").Name);
Console.WriteLine(uc.DataTypeOf("Int").Name);
Console.WriteLine(uc.DataTypeOf("NonExistantType").Name); // Empty string
Console.WriteLine(uc.DataTypeOf("&&").Name);
double
string
bool
complex
---
string
int
bool using uCalcSoftware; var uc = new uCalc(); Console.WriteLine(uc.DataTypeOf("10 + 20 - 3").Name); Console.WriteLine(uc.DataTypeOf(" 'What type ' + 'is this?' ").Name); Console.WriteLine(uc.DataTypeOf("3 < 10").Name); Console.WriteLine(uc.DataTypeOf("5 + 7 * #i").Name); Console.WriteLine("---"); uc.DefineFunction("func(x) as string = 'Hello' * 3"); Console.WriteLine(uc.DataTypeOf("func").Name); Console.WriteLine(uc.DataTypeOf("Int").Name); Console.WriteLine(uc.DataTypeOf("NonExistantType").Name); // Empty string Console.WriteLine(uc.DataTypeOf("&&").Name);
#include
#include "uCalc.h"
using namespace std;
using namespace uCalcSoftware;
int main() {
uCalc uc;
cout << uc.DataTypeOf("10 + 20 - 3").Name() << endl;
cout << uc.DataTypeOf(" 'What type ' + 'is this?' ").Name() << endl;
cout << uc.DataTypeOf("3 < 10").Name() << endl;
cout << uc.DataTypeOf("5 + 7 * #i").Name() << endl;
cout << "---" << endl;
uc.DefineFunction("func(x) as string = 'Hello' * 3");
cout << uc.DataTypeOf("func").Name() << endl;
cout << uc.DataTypeOf("Int").Name() << endl;
cout << uc.DataTypeOf("NonExistantType").Name() << endl; // Empty string
cout << uc.DataTypeOf("&&").Name() << endl;
}
double
string
bool
complex
---
string
int
bool #include <iostream> #include "uCalc.h" using namespace std; using namespace uCalcSoftware; int main() { uCalc uc; cout << uc.DataTypeOf("10 + 20 - 3").Name() << endl; cout << uc.DataTypeOf(" 'What type ' + 'is this?' ").Name() << endl; cout << uc.DataTypeOf("3 < 10").Name() << endl; cout << uc.DataTypeOf("5 + 7 * #i").Name() << endl; cout << "---" << endl; uc.DefineFunction("func(x) as string = 'Hello' * 3"); cout << uc.DataTypeOf("func").Name() << endl; cout << uc.DataTypeOf("Int").Name() << endl; cout << uc.DataTypeOf("NonExistantType").Name() << endl; // Empty string cout << uc.DataTypeOf("&&").Name() << endl; }
Imports System
Imports uCalcSoftware
Public Module Program
Public Sub Main()
Dim uc As New uCalc()
Console.WriteLine(uc.DataTypeOf("10 + 20 - 3").Name)
Console.WriteLine(uc.DataTypeOf(" 'What type ' + 'is this?' ").Name)
Console.WriteLine(uc.DataTypeOf("3 < 10").Name)
Console.WriteLine(uc.DataTypeOf("5 + 7 * #i").Name)
Console.WriteLine("---")
uc.DefineFunction("func(x) as string = 'Hello' * 3")
Console.WriteLine(uc.DataTypeOf("func").Name)
Console.WriteLine(uc.DataTypeOf("Int").Name)
Console.WriteLine(uc.DataTypeOf("NonExistantType").Name) '// Empty string
Console.WriteLine(uc.DataTypeOf("&&").Name)
End Sub
End Module
double
string
bool
complex
---
string
int
bool Imports System Imports uCalcSoftware Public Module Program Public Sub Main() Dim uc As New uCalc() Console.WriteLine(uc.DataTypeOf("10 + 20 - 3").Name) Console.WriteLine(uc.DataTypeOf(" 'What type ' + 'is this?' ").Name) Console.WriteLine(uc.DataTypeOf("3 < 10").Name) Console.WriteLine(uc.DataTypeOf("5 + 7 * #i").Name) Console.WriteLine("---") uc.DefineFunction("func(x) as string = 'Hello' * 3") Console.WriteLine(uc.DataTypeOf("func").Name) Console.WriteLine(uc.DataTypeOf("Int").Name) Console.WriteLine(uc.DataTypeOf("NonExistantType").Name) '// Empty string Console.WriteLine(uc.DataTypeOf("&&").Name) End Sub End Module
ID: 284
using uCalcSoftware;
var uc = new uCalc();
// Define a variable and a function
uc.DefineVariable("myVar As Int16 = 55");
uc.DefineFunction("myFunc(x) = x * 10.5"); // Implicitly returns Double
// Inspect their types dynamically
var typeVar = uc.DataTypeOf("myVar");
var typeFunc = uc.DataTypeOf("myFunc");
Console.WriteLine($"Variable Type: {typeVar.Name}");
Console.WriteLine($"Function Return: {typeFunc.Name}");
// Check specific properties
if (typeVar.BuiltInTypeEnum == BuiltInType.Integer_16) {
Console.WriteLine("Variable is strictly a 16-bit integer.");
}
Variable Type: int16
Function Return: double
Variable is strictly a 16-bit integer. using uCalcSoftware; var uc = new uCalc(); // Define a variable and a function uc.DefineVariable("myVar As Int16 = 55"); uc.DefineFunction("myFunc(x) = x * 10.5"); // Implicitly returns Double // Inspect their types dynamically var typeVar = uc.DataTypeOf("myVar"); var typeFunc = uc.DataTypeOf("myFunc"); Console.WriteLine($"Variable Type: {typeVar.Name}"); Console.WriteLine($"Function Return: {typeFunc.Name}"); // Check specific properties if (typeVar.BuiltInTypeEnum == BuiltInType.Integer_16) { Console.WriteLine("Variable is strictly a 16-bit integer."); }
#include
#include "uCalc.h"
using namespace std;
using namespace uCalcSoftware;
#define tf(IsTrue) ((IsTrue) ? "True" : "False")
int main() {
uCalc uc;
// Define a variable and a function
uc.DefineVariable("myVar As Int16 = 55");
uc.DefineFunction("myFunc(x) = x * 10.5"); // Implicitly returns Double
// Inspect their types dynamically
auto typeVar = uc.DataTypeOf("myVar");
auto typeFunc = uc.DataTypeOf("myFunc");
cout << "Variable Type: " << typeVar.Name() << endl;
cout << "Function Return: " << typeFunc.Name() << endl;
// Check specific properties
if (tf(typeVar.BuiltInTypeEnum() == BuiltInType::Integer_16)) {
cout << "Variable is strictly a 16-bit integer." << endl;
}
}
Variable Type: int16
Function Return: double
Variable is strictly a 16-bit integer. #include <iostream> #include "uCalc.h" using namespace std; using namespace uCalcSoftware; #define tf(IsTrue) ((IsTrue) ? "True" : "False") int main() { uCalc uc; // Define a variable and a function uc.DefineVariable("myVar As Int16 = 55"); uc.DefineFunction("myFunc(x) = x * 10.5"); // Implicitly returns Double // Inspect their types dynamically auto typeVar = uc.DataTypeOf("myVar"); auto typeFunc = uc.DataTypeOf("myFunc"); cout << "Variable Type: " << typeVar.Name() << endl; cout << "Function Return: " << typeFunc.Name() << endl; // Check specific properties if (tf(typeVar.BuiltInTypeEnum() == BuiltInType::Integer_16)) { cout << "Variable is strictly a 16-bit integer." << endl; } }
Imports System
Imports uCalcSoftware
Public Module Program
Public Sub Main()
Dim uc As New uCalc()
'// Define a variable and a function
uc.DefineVariable("myVar As Int16 = 55")
uc.DefineFunction("myFunc(x) = x * 10.5") '// Implicitly returns Double
'// Inspect their types dynamically
Dim typeVar = uc.DataTypeOf("myVar")
Dim typeFunc = uc.DataTypeOf("myFunc")
Console.WriteLine($"Variable Type: {typeVar.Name}")
Console.WriteLine($"Function Return: {typeFunc.Name}")
'// Check specific properties
If typeVar.BuiltInTypeEnum = BuiltInType.Integer_16 Then
Console.WriteLine("Variable is strictly a 16-bit integer.")
End If
End Sub
End Module
Variable Type: int16
Function Return: double
Variable is strictly a 16-bit integer. Imports System Imports uCalcSoftware Public Module Program Public Sub Main() Dim uc As New uCalc() '// Define a variable and a function uc.DefineVariable("myVar As Int16 = 55") uc.DefineFunction("myFunc(x) = x * 10.5") '// Implicitly returns Double '// Inspect their types dynamically Dim typeVar = uc.DataTypeOf("myVar") Dim typeFunc = uc.DataTypeOf("myFunc") Console.WriteLine($"Variable Type: {typeVar.Name}") Console.WriteLine($"Function Return: {typeFunc.Name}") '// Check specific properties If typeVar.BuiltInTypeEnum = BuiltInType.Integer_16 Then Console.WriteLine("Variable is strictly a 16-bit integer.") End If End Sub End Module
ID: 285
using uCalcSoftware;
var uc = new uCalc();
// "Int" is a synonym for Int32
Console.WriteLine(uc.DataTypeOf("Int").Name);
// Boolean logic expression returns bool type
Console.WriteLine(uc.DataTypeOf("3 < 10").Name);
// String concatenation returns string
Console.WriteLine(uc.DataTypeOf(" 'A' + 'B' ").Name);
// Complex number syntax
Console.WriteLine(uc.DataTypeOf("5 + 7 * #i").Name);
int
bool
string
complex using uCalcSoftware; var uc = new uCalc(); // "Int" is a synonym for Int32 Console.WriteLine(uc.DataTypeOf("Int").Name); // Boolean logic expression returns bool type Console.WriteLine(uc.DataTypeOf("3 < 10").Name); // String concatenation returns string Console.WriteLine(uc.DataTypeOf(" 'A' + 'B' ").Name); // Complex number syntax Console.WriteLine(uc.DataTypeOf("5 + 7 * #i").Name);
#include
#include "uCalc.h"
using namespace std;
using namespace uCalcSoftware;
int main() {
uCalc uc;
// "Int" is a synonym for Int32
cout << uc.DataTypeOf("Int").Name() << endl;
// Boolean logic expression returns bool type
cout << uc.DataTypeOf("3 < 10").Name() << endl;
// String concatenation returns string
cout << uc.DataTypeOf(" 'A' + 'B' ").Name() << endl;
// Complex number syntax
cout << uc.DataTypeOf("5 + 7 * #i").Name() << endl;
}
int
bool
string
complex #include <iostream> #include "uCalc.h" using namespace std; using namespace uCalcSoftware; int main() { uCalc uc; // "Int" is a synonym for Int32 cout << uc.DataTypeOf("Int").Name() << endl; // Boolean logic expression returns bool type cout << uc.DataTypeOf("3 < 10").Name() << endl; // String concatenation returns string cout << uc.DataTypeOf(" 'A' + 'B' ").Name() << endl; // Complex number syntax cout << uc.DataTypeOf("5 + 7 * #i").Name() << endl; }
Imports System
Imports uCalcSoftware
Public Module Program
Public Sub Main()
Dim uc As New uCalc()
'// "Int" is a synonym for Int32
Console.WriteLine(uc.DataTypeOf("Int").Name)
'// Boolean logic expression returns bool type
Console.WriteLine(uc.DataTypeOf("3 < 10").Name)
'// String concatenation returns string
Console.WriteLine(uc.DataTypeOf(" 'A' + 'B' ").Name)
'// Complex number syntax
Console.WriteLine(uc.DataTypeOf("5 + 7 * #i").Name)
End Sub
End Module
int
bool
string
complex Imports System Imports uCalcSoftware Public Module Program Public Sub Main() Dim uc As New uCalc() '// "Int" is a synonym for Int32 Console.WriteLine(uc.DataTypeOf("Int").Name) '// Boolean logic expression returns bool type Console.WriteLine(uc.DataTypeOf("3 < 10").Name) '// String concatenation returns string Console.WriteLine(uc.DataTypeOf(" 'A' + 'B' ").Name) '// Complex number syntax Console.WriteLine(uc.DataTypeOf("5 + 7 * #i").Name) End Sub End Module