# ifndef SPECIES_H
# define SPECIES_H

/* OVERVIEW:
 * Immutable record type for representing a species name and a genome.
 */

# include "bool.h"
# include "Species.rh"

/* Allocate a new Species object, with specified name and genome */
extern /*@only@*/ Species Species_new (/*@only@*/ char *p_name,
				       /*@only@*/ char *p_genome);

extern void Species_markOwned (/*@owned@*/ Species p_s) /*@modifies p_s@*/ ;

extern void Species_free (/*@only@*/ Species p_s) /*@modifies p_s@*/ ;

extern /*@observer@*/ const char *Species_getName (Species p_s) /*@*/ ;
extern /*@observer@*/ const char *Species_getGenome (Species p_s) /*@*/ ;

extern /*@only@*/ char *Species_toString (Species p_s) /*@*/ ; 
#endif