#ifndef MAZE_H
#define MAZE_H

#include <stl.h>
#include <queue>
#include <slist>
#include "parser.h"
#include "grid.h"

struct wire_segment
{
	short x1,y1,z1;
	short x2,y2,z2;
};

/* cell

 short x,y;
 unsigned char l;
*/

struct active_cell
{
	float pathcost;
	float total_cost;
	cell pos;
	char dir;
};

struct cube
{
	int x1,y1;
	int x2,y2;
	int z1,z2;
};


//list<cell> maze_route(grid &g, list<cell> &source, int net_dest,
//		      list<pin> &remaining, ActiveCellHeap &ach);
list<cell> net_maze_route(grid &g, int net, list<pin> &pins, int &partial);
list<wire_segment> path_to_segment(list<cell> &path);
void segment_to_path(list<wire_segment> &path, list<cell> &ret);
int get_seg_dir(wire_segment ws);

#endif