#include #include "uCalc.h" using namespace std; using namespace uCalcSoftware; int main() { uCalc uc; // Define a variable in the original default to distinguish it. // Note: This variable won't exist in the implicit 'uc' instance. uCalc::DefaultInstance().DefineVariable("id='Original'"); cout << "Initial default: " << uCalc::DefaultInstance().EvalStr("id") << endl; uCalc ucA; ucA.DefineVariable("id='A'"); ucA.IsDefault(true); // Default stack: [Original, A] cout << "Current default: " << uCalc::DefaultInstance().EvalStr("id") << endl; uCalc ucB; ucB.DefineVariable("id='B'"); ucB.IsDefault(true); // Default stack: [Original, A, B] cout << "Current default: " << uCalc::DefaultInstance().EvalStr("id") << endl; uCalc ucC; ucC.DefineVariable("id='C'"); ucC.IsDefault(true); // Default stack: [Original, A, B, C] cout << "Current default: " << uCalc::DefaultInstance().EvalStr("id") << endl; cout << "--- Unsetting instances ---" << endl; // Unset B. The default should remain C. ucB.IsDefault(false); cout << "After unsetting B, current default: " << uCalc::DefaultInstance().EvalStr("id") << endl; // Unset C. The default should revert to A. ucC.IsDefault(false); cout << "After unsetting C, current default: " << uCalc::DefaultInstance().EvalStr("id") << endl; // Unset A. Reverts to the original default. ucA.IsDefault(false); cout << "After unsetting A, current default: " << uCalc::DefaultInstance().EvalStr("id") << endl; }