#include <malloc.h>
#include <stdio.h>
#include <string.h>
#include "map.h"
#include "routing.h"

int main()
{
  char Map_File[255] = "sample_inputs/maps/map6.txt";
  char Query_File[255] = "sample_inputs/queries/query2.txt";
  FILE* Map_File_Ptr = NULL;
  FILE* Query_File_Ptr = NULL;

  Map_File_Ptr = fopen(Map_File, "r");
  Query_File_Ptr = fopen(Query_File, "r");

  Query_t* Query_Ptr = Load_Query(Query_File_Ptr);
  if (NULL == Query_Ptr)
    {
      fprintf(stderr,
	      "ERROR: Queries failed to load from %s!\n",
	      Query_File);
      /* FIXME: Cleanup code here */
      return 1;
    }
  Map_t* Map_Ptr = Load_Map(Map_File_Ptr);  
  if (NULL == Map_Ptr)
    {
      fprintf(stderr,
	      "ERROR: Map failed to load from %s!\n",
	      Map_File);
      Delete_Query(Query_Ptr);
      /* FIXME: Cleanup code here */
      return 2;
    }
  
  // Process the queries
  Index_t i;
  for (i = 0; i < Query_Ptr->Num_Paths; i++)
    {
      /*fprintf(stderr,"Processing query %lu (%lu-%lu)\n",
	      i,
	      Query_Ptr->Path_List_Ptr[i].From,
	      Query_Ptr->Path_List_Ptr[i].To);*/
      Dumb_Dijkstra(Map_Ptr, Query_Ptr->Path_List_Ptr[i]);
    }

  Delete_Map(Map_Ptr);
  Delete_Query(Query_Ptr);

  /* FIXME: Cleanup code here */
  return 0;
}
