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

using namespace std;
using namespace uCalcSoftware;

#define tf(IsTrue) ((IsTrue) ? "True" : "False")

int main() {
   uCalc uc;
   {
      uCalc::Transformer t;
      t.Owned(); // Causes t to be released when it goes out of scope
      auto myToken = t.Tokens().Add("###", TokenType::Generic);
      cout << "Initial Type: ";
      cout << tf(myToken.TypeOfToken() == TokenType::Generic) << endl;

      // Change the type
      myToken.TypeOfToken(TokenType::Reducible);
      cout << "New Type is Reducible: ";
      cout << tf(myToken.TypeOfToken() == TokenType::Reducible) << endl;
   }
}