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 parent uCalc instance that owns and manages this data type definition.
This method returns the parent uCalc instance to which the current DataType object belongs.
In uCalc, every component—including variables, functions, and data types—exists within the context of a specific uCalc engine instance. This architecture is fundamental to creating isolated, sandboxed environments. For example, the String data type in uc1 can have different properties or formatters than the String data type in uc2.
The DataType.uCalc() method provides the crucial link back to this parent environment. If you have a reference to a DataType object, you can use this method to access the full scope of its owner, allowing you to:
vs. Native .NET/C# Type Objects: In .NET, a Type object retrieved via typeof(int) or myVar.GetType() is global to the AppDomain. It has no concept of an "owner" instance. uCalc's model is different: its data types are instance-specific. This allows for powerful customization on a per-instance basis, and DataType.uCalc() is the mechanism to navigate from a type definition back to its specific execution environment.
vs. Other Expression Engines: Simpler evaluators often have a single, global type system. uCalc's instance-based approach provides superior encapsulation and is essential for applications that need to run multiple, independent calculation environments simultaneously (e.g., in a multi-threaded server or a plugin-based architecture).
ID: 560
using uCalcSoftware;
var uc = new uCalc();
uc.Description = "Main uCalc Instance";
// Get the DataType object for Int32
var intType = uc.DataTypeOf(BuiltInType.Integer_32);
// Use the .uCalc() method to get back to the parent instance and read its description.
Console.WriteLine(intType.uCalc.Description);
Main uCalc Instance using uCalcSoftware; var uc = new uCalc(); uc.Description = "Main uCalc Instance"; // Get the DataType object for Int32 var intType = uc.DataTypeOf(BuiltInType.Integer_32); // Use the .uCalc() method to get back to the parent instance and read its description. Console.WriteLine(intType.uCalc.Description);
#include
#include "uCalc.h"
using namespace std;
using namespace uCalcSoftware;
int main() {
uCalc uc;
uc.Description("Main uCalc Instance");
// Get the DataType object for Int32
auto intType = uc.DataTypeOf(BuiltInType::Integer_32);
// Use the .uCalc() method to get back to the parent instance and read its description.
cout << intType.uCalc().Description() << endl;
}
Main uCalc Instance #include <iostream> #include "uCalc.h" using namespace std; using namespace uCalcSoftware; int main() { uCalc uc; uc.Description("Main uCalc Instance"); // Get the DataType object for Int32 auto intType = uc.DataTypeOf(BuiltInType::Integer_32); // Use the .uCalc() method to get back to the parent instance and read its description. cout << intType.uCalc().Description() << endl; }
Imports System
Imports uCalcSoftware
Public Module Program
Public Sub Main()
Dim uc As New uCalc()
uc.Description = "Main uCalc Instance"
'// Get the DataType object for Int32
Dim intType = uc.DataTypeOf(BuiltInType.Integer_32)
'// Use the .uCalc() method to get back to the parent instance and read its description.
Console.WriteLine(intType.uCalc.Description)
End Sub
End Module
Main uCalc Instance Imports System Imports uCalcSoftware Public Module Program Public Sub Main() Dim uc As New uCalc() uc.Description = "Main uCalc Instance" '// Get the DataType object for Int32 Dim intType = uc.DataTypeOf(BuiltInType.Integer_32) '// Use the .uCalc() method to get back to the parent instance and read its description. Console.WriteLine(intType.uCalc.Description) End Sub End Module
ID: 562
using uCalcSoftware;
var uc = new uCalc();
// Create two completely separate uCalc instances.
var uc1 = new uCalc();
uc1.DefineVariable("x = 100");
var uc2 = new uCalc();
uc2.DefineVariable("x = 200");
// Get the DataType for 'Int' from the *first* instance.
var intType_from_uc1 = uc1.DataTypeOf("Int");
// Use the .uCalc() method to get the parent instance.
// This should be uc1, so evaluating 'x' should yield 100.
var parent = intType_from_uc1.uCalc;
Console.WriteLine($"Parent of intType_from_uc1 evaluates 'x' to: {parent.Eval("x")}");
// Get the DataType for 'Int' from the *second* instance.
var intType_from_uc2 = uc2.DataTypeOf("Int");
// This should be uc2, so evaluating 'x' should yield 200.
parent = intType_from_uc2.uCalc;
Console.WriteLine($"Parent of intType_from_uc2 evaluates 'x' to: {parent.Eval("x")}");
Parent of intType_from_uc1 evaluates 'x' to: 100
Parent of intType_from_uc2 evaluates 'x' to: 200 using uCalcSoftware; var uc = new uCalc(); // Create two completely separate uCalc instances. var uc1 = new uCalc(); uc1.DefineVariable("x = 100"); var uc2 = new uCalc(); uc2.DefineVariable("x = 200"); // Get the DataType for 'Int' from the *first* instance. var intType_from_uc1 = uc1.DataTypeOf("Int"); // Use the .uCalc() method to get the parent instance. // This should be uc1, so evaluating 'x' should yield 100. var parent = intType_from_uc1.uCalc; Console.WriteLine($"Parent of intType_from_uc1 evaluates 'x' to: {parent.Eval("x")}"); // Get the DataType for 'Int' from the *second* instance. var intType_from_uc2 = uc2.DataTypeOf("Int"); // This should be uc2, so evaluating 'x' should yield 200. parent = intType_from_uc2.uCalc; Console.WriteLine($"Parent of intType_from_uc2 evaluates 'x' to: {parent.Eval("x")}");
#include
#include "uCalc.h"
using namespace std;
using namespace uCalcSoftware;
int main() {
uCalc uc;
// Create two completely separate uCalc instances.
uCalc uc1;
uc1.DefineVariable("x = 100");
uCalc uc2;
uc2.DefineVariable("x = 200");
// Get the DataType for 'Int' from the *first* instance.
auto intType_from_uc1 = uc1.DataTypeOf("Int");
// Use the .uCalc() method to get the parent instance.
// This should be uc1, so evaluating 'x' should yield 100.
auto parent = intType_from_uc1.uCalc();
cout << "Parent of intType_from_uc1 evaluates 'x' to: " << parent.Eval("x") << endl;
// Get the DataType for 'Int' from the *second* instance.
auto intType_from_uc2 = uc2.DataTypeOf("Int");
// This should be uc2, so evaluating 'x' should yield 200.
parent = intType_from_uc2.uCalc();
cout << "Parent of intType_from_uc2 evaluates 'x' to: " << parent.Eval("x") << endl;
}
Parent of intType_from_uc1 evaluates 'x' to: 100
Parent of intType_from_uc2 evaluates 'x' to: 200 #include <iostream> #include "uCalc.h" using namespace std; using namespace uCalcSoftware; int main() { uCalc uc; // Create two completely separate uCalc instances. uCalc uc1; uc1.DefineVariable("x = 100"); uCalc uc2; uc2.DefineVariable("x = 200"); // Get the DataType for 'Int' from the *first* instance. auto intType_from_uc1 = uc1.DataTypeOf("Int"); // Use the .uCalc() method to get the parent instance. // This should be uc1, so evaluating 'x' should yield 100. auto parent = intType_from_uc1.uCalc(); cout << "Parent of intType_from_uc1 evaluates 'x' to: " << parent.Eval("x") << endl; // Get the DataType for 'Int' from the *second* instance. auto intType_from_uc2 = uc2.DataTypeOf("Int"); // This should be uc2, so evaluating 'x' should yield 200. parent = intType_from_uc2.uCalc(); cout << "Parent of intType_from_uc2 evaluates 'x' to: " << parent.Eval("x") << endl; }
Imports System
Imports uCalcSoftware
Public Module Program
Public Sub Main()
Dim uc As New uCalc()
'// Create two completely separate uCalc instances.
Dim uc1 As New uCalc()
uc1.DefineVariable("x = 100")
Dim uc2 As New uCalc()
uc2.DefineVariable("x = 200")
'// Get the DataType for 'Int' from the *first* instance.
Dim intType_from_uc1 = uc1.DataTypeOf("Int")
'// Use the .uCalc() method to get the parent instance.
'// This should be uc1, so evaluating 'x' should yield 100.
Dim parent = intType_from_uc1.uCalc
Console.WriteLine($"Parent of intType_from_uc1 evaluates 'x' to: {parent.Eval("x")}")
'// Get the DataType for 'Int' from the *second* instance.
Dim intType_from_uc2 = uc2.DataTypeOf("Int")
'// This should be uc2, so evaluating 'x' should yield 200.
parent = intType_from_uc2.uCalc
Console.WriteLine($"Parent of intType_from_uc2 evaluates 'x' to: {parent.Eval("x")}")
End Sub
End Module
Parent of intType_from_uc1 evaluates 'x' to: 100
Parent of intType_from_uc2 evaluates 'x' to: 200 Imports System Imports uCalcSoftware Public Module Program Public Sub Main() Dim uc As New uCalc() '// Create two completely separate uCalc instances. Dim uc1 As New uCalc() uc1.DefineVariable("x = 100") Dim uc2 As New uCalc() uc2.DefineVariable("x = 200") '// Get the DataType for 'Int' from the *first* instance. Dim intType_from_uc1 = uc1.DataTypeOf("Int") '// Use the .uCalc() method to get the parent instance. '// This should be uc1, so evaluating 'x' should yield 100. Dim parent = intType_from_uc1.uCalc Console.WriteLine($"Parent of intType_from_uc1 evaluates 'x' to: {parent.Eval("x")}") '// Get the DataType for 'Int' from the *second* instance. Dim intType_from_uc2 = uc2.DataTypeOf("Int") '// This should be uc2, so evaluating 'x' should yield 200. parent = intType_from_uc2.uCalc Console.WriteLine($"Parent of intType_from_uc2 evaluates 'x' to: {parent.Eval("x")}") End Sub End Module