]> git.donarmstrong.com Git - mothur.git/blobdiff - sffinfocommand.h
working on sffinfo
[mothur.git] / sffinfocommand.h
index 2385d588fce9c4b03ac77d28203954cb3c19b028..e33bd59b8559bfda513c07d29f2356831e5cd4c8 100644 (file)
 
 /**********************************************************/
 struct CommonHeader {
-       uint32_t magicNumber;
+       unsigned int magicNumber;
        char* version;
-       uint64_t indexOffset;
-       uint32_t indexLength;
-       uint32_t numReads;
-       uint16_t headerLength;
-       uint16_t keyLength;
-       uint16_t numFlowsPerRead;
-       uint8_t flogramFormatCode;
+       unsigned long int indexOffset;
+       unsigned int indexLength;
+       unsigned int numReads;
+       unsigned short headerLength;
+       unsigned short keyLength;
+       unsigned short numFlowsPerRead;
+       char flogramFormatCode;
        char* flowChars; //length depends on number flow reads
        char* keySequence; //length depends on key length
        
-       CommonHeader() { magicNumber=0; indexOffset=0; indexLength=0; numReads=0; headerLength=0; keyLength=0; numFlowsPerRead=0; flogramFormatCode='s'; }
+       CommonHeader(){ magicNumber=0; version=NULL; indexOffset=0; indexLength=0; numReads=0; headerLength=0; keyLength=0; numFlowsPerRead=0; flogramFormatCode='s'; flowChars=NULL; keySequence=NULL; }
+       ~CommonHeader() { if (version != NULL) { delete [] version; } if (flowChars != NULL) { delete [] flowChars; } if (keySequence != NULL) { delete [] keySequence; } }
 };
 /**********************************************************/
 struct Header {
@@ -41,8 +42,9 @@ struct Header {
        unsigned short clipAdapterLeft;
        unsigned short clipAdapterRight;
        char* name; //length depends on nameLength
-
-       Header() { headerLength=0; nameLength=0; numBases=0; clipQualLeft=0; clipQualRight=0; clipAdapterLeft=0; clipAdapterRight=0; }
+       
+       Header() { headerLength=0; nameLength=0; numBases=0; clipQualLeft=0; clipQualRight=0; clipAdapterLeft=0; clipAdapterRight=0; name=NULL; }
+       ~Header() { if (name != NULL) { delete [] name; } }
 };
 /**********************************************************/
 struct seqRead {
@@ -50,6 +52,9 @@ struct seqRead {
        vector<unsigned int> flowIndex;
        char* bases;
        vector<unsigned int> qualScores;
+       
+       seqRead() { bases=NULL; }
+       ~seqRead() { if (bases != NULL) { delete [] bases; } }
 };
 /**********************************************************/
 
@@ -67,9 +72,9 @@ private:
        bool abort;
        
        int extractSffInfo(string, string);
-       CommonHeader* readCommonHeader(ifstream&);
-       Header* readHeader(ifstream&);
-       seqRead* readSeqData(ifstream&, int, int);
+       int readCommonHeader(ifstream&, CommonHeader*);
+       int readHeader(ifstream&, Header*);
+       int readSeqData(ifstream&, seqRead*, int, int);
        
        int printCommonHeader(ofstream&, CommonHeader*, bool); //bool is debug mode
        int printHeader(ofstream&, Header*, bool);