#ifndef GLOBALS_C
#define GLOBALS

#define VERSION_NUMBER			0x00010101			// version number

#define COLLECT_AND_RENUMBER_EXTERNAL_TYPE_REFERENCES	// collects all external types AND numbers them 

#define GDI
#ifdef GDI
	// eax	= graph_i (Int)
	// edx  = descP (String)
	// ecx	= gdi
	
/*
**	:: GlobalDynamicInfo = {
**		,	graph			:: !String
**			file_name		:: !String
**		}
*/	
//#define GDI_FILE_NAME		4
#define GDI_GRAPH			4 //8	
	
#define gdi					%ecx			// GDI ptr

#endif // GDI

 
#define STACK_CHECKS



#define COLOUR_GRAPH
#define EXTEND_DESCRIPTOR_USAGE_TABLE	// use only with colour graph


// REMOVE

//#define TEST_COLOUR_GRAPH

//#define ARRAY_DESCP

/*
	
	Changes:
	
	1) gts_delete.c; restore indirection and entry nodeP is stored in the EN-table.
	2) intermediate descriptor table has a pointer for each descriptor to its usage
*/
#ifdef COLOUR_GRAPH
#ifdef DYNAMIC_BLOCK
#error "DYNAMIC_BLOCK and COLOUR_GRAPH cannot be used together"
#endif
#endif // 

/*
	doel:
	to_string:
	- block en hun entry knopen vastleggen
	- indirecties herstellen
	- extend descriptor prefix table
	
	from_string:
	- decoding it
	
	1. nested dynamics
		- copying dynamics (doen; heeft ook te maken met versie management)
		<- garbage collection and dynamics>
	
	< 2. data dynamics
		- hyper strict evaluation of graph
		- new syntax plus checks for frontend>
	
	3. type correctness of dynamics
		- external type is specification
		
	4. version management 
	
	// compile time
	5. frontend problems
		- overloading (small)
		- polymorphy (representatie van types) (small)
		- uniquness (huge project) (run-time interessant)
		
	6. Bugs

	Doel: type correct dynamics and nested dynamics

	7. Optimizations
		- Clean compiler frontend; sharing of type information
		- graph_to_string: sharing in SN-nodes
		- 
		
	8. Network dynamics
		- ABC libraries
		- MAC port
		
	The copy_graph_to_string algorithm:
	
	pass 1: colouring the graph
	
	pass 2: copying graph & creating descriptor usage sets
	
	pass 3: delete indirections and SN/EN-nodes & copying label/module names
	
	pass 4: adjusting encoded descriptors

*/


#endif