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

				
					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
				
					#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;
}
				
			
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
				
			
Parent has value: 100
Is parent uc1? True
Is parent uc2? False