#ifndef _UTIL_H



#define _UTIL_H
#include "CifFileObj.h"
#include "TblFileObj.h"

void token_str(char *str, const char *token, long *nstr,
               char **line);
char ** string_token(char *str, const char *token, int *nstr);

long upperstr(char *a);
long lowerstr(char *a);
long num_of_line(const char *inpfile);
void get_data_set_id(const char *str, const char *start, const char *end,
                      char *substr);
void char2space(char *str, char charact);
void rid_of_space(char *str);

void rid_of_char(char *str, char ch);

void rid_of_front_end_space(char *str);

void rid_of_front_space(char *str);

void rid_of_end_space(char *str);
void replace_char(char *str, char find, char replace);
int strstr_space( const char *str, const char *str1);
int pattern5(const char *str,const char *str1,const char *str2,
             const char *str3, const char *str4,const char *str5);
int strcmp_case (const char *s1, const char *s2);
int strncmp_case (const char *s1, const char *s2, int n);
char* strstr_case(const char *s1, const char *s2); 
void replace_first_str(const char *str_old, const char *str1, const char *str2,
                       char *str_new);
int is_space_line(const char *str);
void change_file_name(const char *inpfile, char *outfile);

void delete_return(char *line);
void get_string(const char *str_in, int start, int end, char *str_out);
void get_last_string(const char *str_in, int length,  char *str_out);
char *get_substr(const char *str,  const char *start,  const char *end);
char *get_string_by_length(const char *str,  int start,   int end);
char *get_string_after_id_number(const char *str,  const char *start,  int num);
char *get_string_after_id_length(const char *str,  const char *start,  int len);

float get_float(const char *str, const char *start,  const char *end);
int get_int(const char *str,  const char *start,   const char *end);
float get_float_by_length(const char *str,  int start,   int end); 
int get_int_by_length(const char *str,  int start,   int end); 
void delete_file(const char *file);
char *make_string(const char *str1, const char *str2, const char *str3);
char **get_lines_from_file(char *inpfile, int *nline); //space line deleted



char *get_attribute_value(CifFileObj *fobj, const char *blockId,
                          const char *category, const char *attribute);
char **get_attribute_values(CifFileObj *fobj, const char *blockId,
                            const char *category,const char *attribute,
                            long *nrow);
int is_cif(const char *inpfile);
int is_pdb(const char *inpfile);
int  check_category(const char *str, char *category, char *item);
void write_cif(FILE *fout,  const char *inpfile,const  char *method);
int  write_mmcif_sf(FILE *fout, char *iFile, int write);
void array_sort(char ** str, int max);
void print_mmcif_head(FILE *fout, const char *category,
                      const char **items, int nitems);

void open_file_error(const char *inpfile, const char *message);

void write_data_message(const char *program, const char *filename);

char **set_memory_2d( int nptr, int length);
void free_memory_2d(char **var, int nptr);

char **set_2d_memory( int nrh, int nch);
void free_2d_memory(char **m, int nrh);
void file_handle(char *inpfile,char *outfile);
void  get_one_string_after_id(const char *str,  const char *id,  char *str_out);
int get_int_after_id(const char *str,  const char *id);
float get_float_after_id(const char *str,  const char *id);



#endif                                /* _UTIL_H */
