#ifndef __SAM_HEADER_H__
#define __SAM_HEADER_H__

#ifdef __cplusplus
extern "C" {
#endif

void *sam_header_parse2 ( const char *headerText );
void *sam_header_merge ( int n, const void **dicts );
void sam_header_free ( void *header );
char *sam_header_write ( const void *headerDict );   // returns a newly allocated string

char **sam_header2list ( const void *_dict, char type[2], char key_tag[2], int *_n );

void *sam_header2tbl ( const void *dict, char type[2], char key_tag[2], char value_tag[2] );
const char *sam_tbl_get ( void *h, const char *key );
int sam_tbl_size ( void *h );
void sam_tbl_destroy ( void *h );

#ifdef __cplusplus
}
#endif

#endif
