#ifndef ELEMENT_H
#define	ELEMENT_H

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "matrix_data.h"
#include "matrix.h"
#include "element_data.h"
#include "cell_data.h"
#include "list_data.h"
#include "cell.h"
#include "list.h"

#define ELEMENT_DEBUGING


// Funkce
element * element_alloc (void);
element * element_alloc_long_int (long int * li);
element * element_create_long_int (long int li);
element * element_alloc_double (double * d);
element * element_alloc_string (char * string);
element * element_alloc_const_string (const char * string);
element * element_alloc_matrix (matrix * mat);
element * element_alloc_cell (cell * pc);
element * element_alloc_list (list * pl);
element * element_clone (element * el);
element * element_duplicate (element * el);
long int * element_get_long_int (element * el);
char * element_get_string (element * el);
double * element_get_double (element * el);
matrix * element_get_matrix (element * el);
cell * element_get_cell (element * el);
list * element_get_list (element * el);
void element_throw_away (element * el);
void element_free (element * el);
void element_print (element * el);
void element_print_indent (element * el, unsigned int indent);
void element_print_info (element * el);
void element_print_info_indent (element * el, unsigned int indent);
int element_equal (element * A, element * B);

#endif	/* ELEMENT_H */

