initialize(graph g, library l)
{
  graph = g;
  library = l;
}

(** *******************************************************************************************************************************)
(** Deprecated ********************************************************************************************************************)
(** Currently nodes are implemented as strings in the backend *)
(*
(* Handling of graph stmt, where nodes are implicitly declared *)
(* Appends all nodes that are declared inside the graph statements within a function to the var_list *)
let look_ahead (var_list, sp) stmts =
	let get_new_vars (var_list, sp) (s1, e, s2) =
		(* print_string ("(" ^ s1 ^ "," ^ s2 ^ ")"); *) 
		let new_symbols = ( if (List.mem (s1, "node") var_list) then [] else [(s1, "node")] ) @
			( if (List.mem (s2, "node") var_list) then [] else [(s2, "node")] )
		in push_symbols var_list sp new_symbols   
	in 
	let extract_vars (var_list, sp) stmt = 
		match stmt with
		| Ast.Graph(edge_defs) -> List.fold_left get_new_vars (var_list, sp) edge_defs  
		| _ ->  (var_list, sp) 		
	in
	List.fold_left extract_vars (var_list, sp) stmts 

(* Returns, miraculously, a statement list of consisting of 1) a new node declaration and 2) a graph.addNode() call for each *)
(* new node that is introduced inside an Ast.graph statement *)
let look_ahead_kludge var_list stmts =
	let get_new_vars (stmt_list, var_list) (s1, e, s2) =
		let is_mem_s1 = List.mem (s1, "node") var_list 
		and is_mem_s2 = List.mem (s2, "node") var_list
		in 
			( stmt_list @ ( if is_mem_s1 then [] 
				else 
					[Jast.NewDecl("Node", default_prefix ^ s1, [Jast.StringLit(s1)]); 
					Jast.Expr(Jast.Call(Jast.Id(default_graph), "addNode", [Jast.Id(default_prefix ^ s1)]))] ) 
				@
			( if is_mem_s2 then [] 
				else 
					[Jast.NewDecl("Node", default_prefix ^ s2, [Jast.StringLit(s2)]); 
					Jast.Expr(Jast.Call(Jast.Id(default_graph), "addNode", [Jast.Id(default_prefix ^ s2)]))]),
			( if is_mem_s1 then var_list else (s1, "node") :: var_list) 
				@ 	
			(if is_mem_s2 then var_list else (s2, "node") :: var_list) ) 
	in 
	let extract_vars (stmt_list, var_list) stmt = 
		match stmt with
		| Ast.Graph(edge_defs) -> List.fold_left get_new_vars (stmt_list, var_list) edge_defs  
		| _ ->  (stmt_list, var_list) 		
	in
	fst(List.fold_left extract_vars ([], var_list) stmts) 
*)
(** End Deprecated ****************************************************************************************************************)