#include <iostream>
#include "uCalc.h"

using namespace std;
using namespace uCalcSoftware;

int main() {
   uCalc uc;
   auto MyVar1 = uc.DefineVariable("MyVar1 = 123.456");
   auto MyVar2 = uc.DefineVariable("MyVar2 = 654.321");
   auto MyStr1 = uc.DefineVariable("MyStr1 = 'First string'");
   auto MyStr2 = uc.DefineVariable("MyStr2 = 'Second string'");

   cout << uc.EvalStr("MyVar1") << endl;
   cout << uc.EvalStr("MyVar2") << endl;
   cout << uc.EvalStr("MyStr1") << endl;
   cout << uc.EvalStr("MyStr2") << endl;
   cout << "---" << endl;

   uc.DataTypeOf("double").SwapScalarValues(MyVar1.ValueAddr(), MyVar2.ValueAddr());
   uc.DataTypeOf("string").SwapScalarValues(MyStr1.ValueAddr(), MyStr2.ValueAddr());

   cout << uc.EvalStr("MyVar1") << endl; // Values of MyVar1 and MyVar2 are now swapped
   cout << uc.EvalStr("MyVar2") << endl;
   cout << uc.EvalStr("MyStr1") << endl; // Values of MyStr1 and MyStr2 are now swapped
   cout << uc.EvalStr("MyStr2") << endl;
}