Demonstrates context isolation by retrieving the parent uCalc instance from a Matches object and evaluating an expression that only exists in that parent's context.
ID: 860
See: uCalc = [uCalc]
using uCalcSoftware;
var uc = new uCalc();
var uc1 = new uCalc();
uc1.DefineVariable("val = 100");
var uc2 = new uCalc();
uc2.DefineVariable("val = 200");
// Create the transformer in uc1's context
var t = uc1.NewTransformer();
t.Text = "data";
t.Pattern("data");
t.Find();
var m = t.Matches;
var parent_uc = m.uCalc;
Console.WriteLine($"Parent has value: {parent_uc.Eval("val")}");
Console.WriteLine($"Is parent uc1? {parent_uc.MemoryIndex == uc1.MemoryIndex}");
Console.WriteLine($"Is parent uc2? {parent_uc.MemoryIndex == uc2.MemoryIndex}");
Parent has value: 100
Is parent uc1? True
Is parent uc2? False using uCalcSoftware; var uc = new uCalc(); var uc1 = new uCalc(); uc1.DefineVariable("val = 100"); var uc2 = new uCalc(); uc2.DefineVariable("val = 200"); // Create the transformer in uc1's context var t = uc1.NewTransformer(); t.Text = "data"; t.Pattern("data"); t.Find(); var m = t.Matches; var parent_uc = m.uCalc; Console.WriteLine($"Parent has value: {parent_uc.Eval("val")}"); Console.WriteLine($"Is parent uc1? {parent_uc.MemoryIndex == uc1.MemoryIndex}"); Console.WriteLine($"Is parent uc2? {parent_uc.MemoryIndex == uc2.MemoryIndex}");
#include
#include "uCalc.h"
using namespace std;
using namespace uCalcSoftware;
#define tf(IsTrue) ((IsTrue) ? "True" : "False")
int main() {
uCalc uc;
uCalc uc1;
uc1.DefineVariable("val = 100");
uCalc uc2;
uc2.DefineVariable("val = 200");
// Create the transformer in uc1's context
auto t = uc1.NewTransformer();
t.Text("data");
t.Pattern("data");
t.Find();
auto m = t.Matches();
auto parent_uc = m.uCalc();
cout << "Parent has value: " << parent_uc.Eval("val") << endl;
cout << "Is parent uc1? " << tf(parent_uc.MemoryIndex() == uc1.MemoryIndex()) << endl;
cout << "Is parent uc2? " << tf(parent_uc.MemoryIndex() == uc2.MemoryIndex()) << endl;
}
Parent has value: 100
Is parent uc1? True
Is parent uc2? False #include <iostream> #include "uCalc.h" using namespace std; using namespace uCalcSoftware; #define tf(IsTrue) ((IsTrue) ? "True" : "False") int main() { uCalc uc; uCalc uc1; uc1.DefineVariable("val = 100"); uCalc uc2; uc2.DefineVariable("val = 200"); // Create the transformer in uc1's context auto t = uc1.NewTransformer(); t.Text("data"); t.Pattern("data"); t.Find(); auto m = t.Matches(); auto parent_uc = m.uCalc(); cout << "Parent has value: " << parent_uc.Eval("val") << endl; cout << "Is parent uc1? " << tf(parent_uc.MemoryIndex() == uc1.MemoryIndex()) << endl; cout << "Is parent uc2? " << tf(parent_uc.MemoryIndex() == uc2.MemoryIndex()) << endl; }
Imports System
Imports uCalcSoftware
Public Module Program
Public Sub Main()
Dim uc As New uCalc()
Dim uc1 As New uCalc()
uc1.DefineVariable("val = 100")
Dim uc2 As New uCalc()
uc2.DefineVariable("val = 200")
'// Create the transformer in uc1's context
Dim t = uc1.NewTransformer()
t.Text = "data"
t.Pattern("data")
t.Find()
Dim m = t.Matches
Dim parent_uc = m.uCalc
Console.WriteLine($"Parent has value: {parent_uc.Eval("val")}")
Console.WriteLine($"Is parent uc1? {parent_uc.MemoryIndex = uc1.MemoryIndex}")
Console.WriteLine($"Is parent uc2? {parent_uc.MemoryIndex = uc2.MemoryIndex}")
End Sub
End Module
Parent has value: 100
Is parent uc1? True
Is parent uc2? False Imports System Imports uCalcSoftware Public Module Program Public Sub Main() Dim uc As New uCalc() Dim uc1 As New uCalc() uc1.DefineVariable("val = 100") Dim uc2 As New uCalc() uc2.DefineVariable("val = 200") '// Create the transformer in uc1's context Dim t = uc1.NewTransformer() t.Text = "data" t.Pattern("data") t.Find() Dim m = t.Matches Dim parent_uc = m.uCalc Console.WriteLine($"Parent has value: {parent_uc.Eval("val")}") Console.WriteLine($"Is parent uc1? {parent_uc.MemoryIndex = uc1.MemoryIndex}") Console.WriteLine($"Is parent uc2? {parent_uc.MemoryIndex = uc2.MemoryIndex}") End Sub End Module