
/************         Data structures of Shakti Standard Format     *************/

/*--------feature structure---------*/
struct fs_struct {
	int key_count ; 
	GList *keys;	//keys are stored here in the order given in the input file
			///and these can be used in hash table to get the same 
			//order while printing the ssf
	GHashTable* hash ;		
};
typedef struct fs_struct fs_struct;

/*-------OR Node -------*/
struct or_node {
	int fs_count;	
	//fs_struct *fs[5]; 
	fs_struct *fs[18]; //[ESC] feature string have more than 8 alternative it fail due to
			   //*fs[5] . we increase it 18 from 5. now it works more then 8 alternative
};
typedef struct or_node or_node;


/*------Node--------*/

struct node {
	char node_tkn[100];		//node's name  ----- also called field one
	char node_tag[100];		//node's tag   ----- also called field two   
	GList *childs;			//a list containing node's children
	int child_count;		//number of children i.e size of the list childs
	struct node *parent;		//parent of this node
	or_node *OR;	
} ;
typedef struct node node;





struct list_of_nodes {			//list of nodes 
	int size;			//list size
	node **l;			//list of node pointers
};
typedef struct list_of_nodes list_of_nodes;


struct list_of_or_nodes {		//list of or nodes
	int size;			//list size
	or_node **l;			//list of or_node pointers
};
typedef struct list_of_or_nodes list_of_or_nodes;

struct list_of_fs_structs {		//list of fs structures
	int size;			//list size
	fs_struct **l;			//list of fs structure pointers
};
typedef struct list_of_fs_structs list_of_fs_structs;

