/*
 Find placement for group of atom blocks in complex block
 Author: Jason Luu
 */

#ifndef CLUSTER_PLACEMENT_H
#define CLUSTER_PLACEMENT_H
#include "arch_types.h"

t_cluster_placement_stats *alloc_and_load_cluster_placement_stats();
bool get_next_primitive_list(
		t_cluster_placement_stats *cluster_placement_stats,
		const t_pack_molecule *molecule,
		t_pb_graph_node **primitives_list);
void commit_primitive(t_cluster_placement_stats *cluster_placement_stats,
		const t_pb_graph_node *primitive);
void set_mode_cluster_placement_stats(const t_pb_graph_node *complex_block,
		int mode);
void reset_cluster_placement_stats(
		t_cluster_placement_stats *cluster_placement_stats);
void free_cluster_placement_stats(
		t_cluster_placement_stats *cluster_placement_stats);

int get_array_size_of_molecule(const t_pack_molecule *molecule);
bool exists_free_primitive_for_atom_block(
		t_cluster_placement_stats *cluster_placement_stats,
		const AtomBlockId blk_id);

void reset_tried_but_unused_cluster_placements(
		t_cluster_placement_stats *cluster_placement_stats);


#endif
