/* Definitions for nucleotides */

#ifndef _BASES_H_
#define _BASES_H_ 

#ifdef CPLUSPLUS
extern "C" { 
#endif

/* Definition of the padding-character in CAF */

#define padding_char '-'

enum base_types /* just defines a, c, g, t as 0-3, for indexing purposes. */
{
  base_a, base_c, base_g, base_t, base_n, base_i, base_o, nucleotides, anybase
};

#define for_each_base(n) for(n=base_a;n<=base_t;n++)     /* iterate over a c g t */
#define for_any_base(n)  for(n=base_a;n<nucleotides;n++) /* iterate over a c g t n i o */
#define proper_base(n)  ( (n) >= base_a && (n) <= base_t ) /* test if base is a c g t */


/* interconvert between char and int representations of nucleotides */

char CBase( int base ); /* int to char */
int IBase( char base ); /* char to int */


#ifdef CPLUSPLUS
}
#endif

#endif
