00001 ///////////////////////////////////////////////////////////////////////////// 00002 // File: gnBaseHeader.h 00003 // Purpose: abstract Header class 00004 // Description: Provides an interface for Headers in memory and on disk. 00005 // Changes: 00006 // Version: libGenome 0.5.1 00007 // Author: Aaron Darling 00008 // Modified by: 00009 // Copyright: (c) Aaron Darling 00010 // Licenses: See COPYING file for details 00011 ///////////////////////////////////////////////////////////////////////////// 00012 #ifndef _gnBaseHeader_h_ 00013 #define _gnBaseHeader_h_ 00014 00015 #include "gn/gnDefs.h" 00016 00017 #include <string> 00018 #include "gn/gnClone.h" 00019 #include "gn/gnLocation.h" 00020 00021 /** 00022 * This class provides a general interface to sequence related headers. 00023 * Headers commonly precede sequence data in several file formats. In 00024 * FastA files, the header is on the > line before a contig. 00025 * In GenBank files, each contig has headers describing authors and other 00026 * information. In GenBank files, the header name corresponds to the 00027 * name of the header field. A few genBank header names are: DEFINITION 00028 * ACCESSION, VERSION, KEYWORDS, SEGMENT, SOURCE, REFERENCE, and COMMENT. 00029 * Eventually, individual classes may be implemented for each header type. 00030 */ 00031 class GNDLLEXPORT gnBaseHeader : public gnClone 00032 { 00033 public: 00034 gnBaseHeader(){} 00035 virtual ~gnBaseHeader(){} 00036 virtual gnBaseHeader* Clone() const = 0; 00037 /** 00038 * Get the header. 00039 * @return The header as a string. 00040 */ 00041 virtual string GetHeader() const = 0; 00042 /** 00043 * Get the header's name, if any. 00044 * @return The header name as a string. 00045 */ 00046 virtual string GetHeaderName() const = 0; 00047 /** 00048 * Get the header's length in bytes. 00049 * @return The length of the header. 00050 */ 00051 virtual uint32 GetLength() const = 0; 00052 private: 00053 }; //class gnBaseHeader 00054 00055 #endif 00056 // _gnBaseHeader_h_ 00057