#include "Talos.hxx"
using namespace Talos;

int main()
{
  ConfigStream file("file.cfg");

  cout << "Reading " << file.GetFileName() << "..." << endl;

  // Domain variables.
  int Nx, Ny;
  double x_min, y_min;
  float dx, dy;
  // Parses the configuration file.
  file.Find("[Domain]"); // Searches for section [Domain].
  file.GetValue("Nx", Nx);
  file.GetValue("Ny", Ny);
  file.GetValue("x_min", x_min);
  file.GetValue("y_min", y_min);
  file.GetValue("Delta_x", dx);
  file.GetValue("Delta_y", dy);

  cout << "Domain: (" << x_min << ", " << dx << ", " << Nx << ") x ("
       << y_min << ", " << dy << ", " << Ny << ")." << endl;

  // Data files.
  string data_dir, programs_dir; // Directories.
  string note;
  file.FindFromBeginning("[Domain]"); // Searches for section [Files].
  file.GetValue("Data", data_dir); // With nested markup substitutions.
  // Markup <version> is defined after "Programs", but it still works:
  file.GetValue("Programs", programs_dir);

  cout << "Data directory: " << data_dir << endl;
  cout << "Programs directory: " << programs_dir << endl;

  // First statement.
  file.Rewind();
  cout << file.GetLine() << endl;

  return 0;
}

