
typedef unsigned long int NOIDEA_id;

typedef struct NOIDEA_fs
{
	NOIDEA_id id;
	NOIDEA_id nfo;
	NOIDEA_id undo;
	NOIDEA_id redo;
	NOIDEA_id back;
	NOIDEA_id fore;
	NOIDEA_id last;
	NOIDEA_id next;
} NOIDEA_fs;

NOIDEA_fs * NOIDEA_build (int , int , void * );
void * NOIDEA_read (NOIDEA_fs * , NOIDEA_id , NOIDEA_id , void * );
void * NOIDEA_write (NOIDEA_fs * , NOIDEA_id , NOIDEA_id , void * );

NOIDEA_id NOIDEA_push (NOIDEA_fs * ,NOIDEA_id ,NOIDEA_id );
NOIDEA_id NOIDEA_pop (NOIDEA_fs * ,NOIDEA_id );
NOIDEA_id NOIDEA_undo (NOIDEA_fs * ,NOIDEA_id );
NOIDEA_id NOIDEA_redo (NOIDEA_fs * ,NOIDEA_id );

NOIDEA_id NOIDEA_mk (NOIDEA_fs * ,NOIDEA_id);
NOIDEA_id NOIDEA_rm (NOIDEA_fs * ,NOIDEA_id );
NOIDEA_id NOIDEA_add (NOIDEA_fs * ,NOIDEA_id ,NOIDEA_id);
NOIDEA_id NOIDEA_sub (NOIDEA_fs * ,NOIDEA_id );

NOIDEA_id NOIDEA_fore (NOIDEA_fs * ,NOIDEA_id );
NOIDEA_id NOIDEA_back (NOIDEA_fs * ,NOIDEA_id );
NOIDEA_id NOIDEA_next (NOIDEA_fs * ,NOIDEA_id );
NOIDEA_id NOIDEA_last (NOIDEA_fs * ,NOIDEA_id );
