]> git.donarmstrong.com Git - bamtools.git/commitdiff
Fixed fread() related compiler warnings. Fixed std types [u]intX_t errors (used,...
authorbarnett <barnett@9efb377e-2e27-44b9-b91a-ec4abb80ed8b>
Mon, 11 Jan 2010 15:11:15 +0000 (15:11 +0000)
committerbarnett <barnett@9efb377e-2e27-44b9-b91a-ec4abb80ed8b>
Mon, 11 Jan 2010 15:11:15 +0000 (15:11 +0000)
git-svn-id: svn+ssh://gene.bc.edu/home/subversion/Derek/BamTools/trunk@38 9efb377e-2e27-44b9-b91a-ec4abb80ed8b

BGZF.cpp
BGZF.h
BamAux.h
BamReader.cpp

index ea2da8d1d3155849c4fb1f69e8a93e5dbd75ef8c..225ddf08cb367b546e12a171cd7025f42b37bac8 100644 (file)
--- a/BGZF.cpp
+++ b/BGZF.cpp
@@ -3,7 +3,7 @@
 // Marth Lab, Department of Biology, Boston College\r
 // All rights reserved.\r
 // ---------------------------------------------------------------------------\r
-// Last modified: 8 December 2009 (DB)\r
+// Last modified: 11 January 2010 (DB)\r
 // ---------------------------------------------------------------------------\r
 // BGZF routines were adapted from the bgzf.c code developed at the Broad\r
 // Institute.\r
@@ -40,8 +40,8 @@ BgzfData::BgzfData(void)
 \r
 // destructor\r
 BgzfData::~BgzfData(void) {\r
-    if(CompressedBlock)   delete [] CompressedBlock;\r
-    if(UncompressedBlock) delete [] UncompressedBlock;\r
+    if(CompressedBlock)   { delete[] CompressedBlock;   }\r
+    if(UncompressedBlock) { delete[] UncompressedBlock; }\r
 }\r
 \r
 // closes BGZF file\r
@@ -52,7 +52,7 @@ void BgzfData::Close(void) {
     IsOpen = false;\r
 \r
     // flush the current BGZF block\r
-    if ( IsWriteOnly ) { FlushBlock(); }\r
+    if (IsWriteOnly) { FlushBlock(); }\r
 \r
        // write an empty block (as EOF marker)\r
        int blockLength = DeflateBlock();\r
@@ -68,8 +68,6 @@ int BgzfData::DeflateBlock(void) {
 \r
     // initialize the gzip header\r
     char* buffer = CompressedBlock;\r
-    unsigned int bufferSize = CompressedBlockSize;\r
-\r
     memset(buffer, 0, 18);\r
     buffer[0]  = GZIP_ID1;\r
     buffer[1]  = (char)GZIP_ID2;\r
@@ -84,9 +82,11 @@ int BgzfData::DeflateBlock(void) {
     // loop to retry for blocks that do not compress enough\r
     int inputLength = BlockOffset;\r
     int compressedLength = 0;\r
+       unsigned int bufferSize = CompressedBlockSize;\r
 \r
     while(true) {\r
-\r
+               \r
+               // initialize zstream values\r
         z_stream zs;\r
         zs.zalloc    = NULL;\r
         zs.zfree     = NULL;\r
@@ -94,7 +94,7 @@ int BgzfData::DeflateBlock(void) {
         zs.avail_in  = inputLength;\r
         zs.next_out  = (Bytef*)&buffer[BLOCK_HEADER_LENGTH];\r
         zs.avail_out = bufferSize - BLOCK_HEADER_LENGTH - BLOCK_FOOTER_LENGTH;\r
-\r
+               \r
         // initialize the zlib compression algorithm\r
         if(deflateInit2(&zs, Z_DEFAULT_COMPRESSION, Z_DEFLATED, GZIP_WINDOW_BITS, Z_DEFAULT_MEM_LEVEL, Z_DEFAULT_STRATEGY) != Z_OK) {\r
             printf("ERROR: zlib deflate initialization failed.\n");\r
@@ -176,8 +176,8 @@ void BgzfData::FlushBlock(void) {
         if(numBytesWritten != blockLength) {\r
             printf("ERROR: Expected to write %u bytes during flushing, but wrote %u bytes.\n", blockLength, numBytesWritten);\r
             exit(1);\r
-        }\r
-\r
+               }\r
+               \r
         BlockAddress += blockLength;\r
     }\r
 }\r
@@ -218,6 +218,7 @@ int BgzfData::InflateBlock(const int& blockLength) {
 \r
 void BgzfData::Open(const string& filename, const char* mode) {\r
 \r
+       // determine open mode\r
     if ( strcmp(mode, "rb") == 0 ) {\r
         IsWriteOnly = false;\r
     } else if ( strcmp(mode, "wb") == 0) {\r
@@ -227,7 +228,21 @@ void BgzfData::Open(const string& filename, const char* mode) {
         exit(1);\r
     }\r
 \r
-    Stream = fopen(filename.c_str(), mode);\r
+       // open Stream to read to/write from file, stdin, or stdout\r
+       // stdin/stdout option contributed by Aaron Quinlan (2010-Jan-03)\r
+       if ( (filename != "stdin") && (filename != "stdout") ) {\r
+               // read/wrtie BGZF data to/from a file\r
+               Stream = fopen(filename.c_str(), mode);\r
+       }\r
+       else if ( (filename == "stdin") && (strcmp(mode, "rb") == 0 ) ) { \r
+               // read BGZF data from stdin\r
+               Stream = freopen(NULL, mode, stdin);\r
+       }\r
+       else if ( (filename == "stdout") && (strcmp(mode, "wb") == 0) ) { \r
+               // write BGZF data to stdout\r
+               Stream = freopen(NULL, mode, stdout);\r
+       }\r
+       \r
     if(!Stream) {\r
         printf("ERROR: Unable to open the BAM file %s\n", filename.c_str() );\r
         exit(1);\r
diff --git a/BGZF.h b/BGZF.h
index 289654279d91260aae08754cdfd7c15cb0f4d789..344b07038c7c9858b6236a0e538733415794852f 100644 (file)
--- a/BGZF.h
+++ b/BGZF.h
@@ -3,7 +3,7 @@
 // Marth Lab, Department of Biology, Boston College\r
 // All rights reserved.\r
 // ---------------------------------------------------------------------------\r
-// Last modified: 8 December 2009 (DB)\r
+// Last modified: 11 January 2010 (DB)\r
 // ---------------------------------------------------------------------------\r
 // BGZF routines were adapted from the bgzf.c code developed at the Broad\r
 // Institute.\r
 #include "zlib.h"\r
 \r
 // Platform-specific type definitions\r
-#ifdef _MSC_VER\r
-        typedef char                 int8_t;\r
-        typedef unsigned char       uint8_t;\r
-        typedef short               int16_t;\r
-        typedef unsigned short     uint16_t;\r
-        typedef int                 int32_t;\r
-        typedef unsigned int       uint32_t;\r
-        typedef long long           int64_t;\r
-        typedef unsigned long long uint64_t;\r
-#else\r
-        #include <stdint.h>\r
-#endif\r
+#ifndef BAMTOOLS_TYPES\r
+#define BAMTOOLS_TYPES\r
+       #ifdef _MSC_VER\r
+                       typedef char                 int8_t;\r
+                       typedef unsigned char       uint8_t;\r
+                       typedef short               int16_t;\r
+                       typedef unsigned short     uint16_t;\r
+                       typedef int                 int32_t;\r
+                       typedef unsigned int       uint32_t;\r
+                       typedef long long           int64_t;\r
+                       typedef unsigned long long uint64_t;\r
+       #else\r
+                       #include <stdint.h>\r
+       #endif\r
+#endif // BAMTOOLS_TYPES\r
 \r
 namespace BamTools {\r
 \r
@@ -117,7 +120,6 @@ struct BgzfData {
 \r
 inline\r
 bool BgzfData::CheckBlockHeader(char* header) {\r
-\r
     return (header[0] == GZIP_ID1 &&\r
             header[1] == (char)GZIP_ID2 &&\r
             header[2] == Z_DEFLATED &&\r
@@ -171,7 +173,7 @@ unsigned int BgzfData::UnpackUnsignedInt(char* buffer) {
 // unpacks a buffer into an unsigned short\r
 inline\r
 unsigned short BgzfData::UnpackUnsignedShort(char* buffer) {\r
-    union { unsigned short value; unsigned char valueBuffer[sizeof(unsigned short)];} un;\r
+    union { unsigned short value; unsigned char valueBuffer[sizeof(unsigned short)]; } un;\r
     un.value = 0;\r
     un.valueBuffer[0] = buffer[0];\r
     un.valueBuffer[1] = buffer[1];\r
index eec5556b721ead182b81d9f7003bdebb924660b9..d20454cb745972d7d3a3700c6e8559edc7d8b915 100644 (file)
--- a/BamAux.h
+++ b/BamAux.h
@@ -3,7 +3,7 @@
 // Marth Lab, Department of Biology, Boston College\r
 // All rights reserved.\r
 // ---------------------------------------------------------------------------\r
-// Last modified: 8 December 2009 (DB)\r
+// Last modified: 11 December 2009 (DB)\r
 // ---------------------------------------------------------------------------\r
 // Provides the basic constants, data structures, etc. for using BAM files\r
 // ***************************************************************************\r
 #include <utility>\r
 #include <vector>\r
 \r
+// Platform-specific type definitions\r
+#ifndef BAMTOOLS_TYPES\r
+#define BAMTOOLS_TYPES\r
+       #ifdef _MSC_VER\r
+                       typedef char                 int8_t;\r
+                       typedef unsigned char       uint8_t;\r
+                       typedef short               int16_t;\r
+                       typedef unsigned short     uint16_t;\r
+                       typedef int                 int32_t;\r
+                       typedef unsigned int       uint32_t;\r
+                       typedef long long           int64_t;\r
+                       typedef unsigned long long uint64_t;\r
+       #else\r
+                       #include <stdint.h>\r
+       #endif\r
+#endif // BAMTOOLS_TYPES\r
+\r
 namespace BamTools {\r
 \r
 // BAM constants\r
index 560b56799077c4f978b2fedd1e51891c1c1528aa..5dd65f22d1d3e4e427b108405db1d73a23eb4e12 100644 (file)
@@ -3,7 +3,7 @@
 // Marth Lab, Department of Biology, Boston College\r
 // All rights reserved.\r
 // ---------------------------------------------------------------------------\r
-// Last modified: 8 December 2009 (DB)\r
+// Last modified: 11 January 2010(DB)\r
 // ---------------------------------------------------------------------------\r
 // Uses BGZF routines were adapted from the bgzf.c code developed at the Broad\r
 // Institute.\r
@@ -586,9 +586,11 @@ bool BamReader::BamReaderPrivate::LoadIndex(void) {
         return false;\r
     }\r
 \r
+       size_t elementsRead = 0;\r
+       \r
     // see if index is valid BAM index\r
     char magic[4];\r
-    fread(magic, 1, 4, indexStream);\r
+    elementsRead = fread(magic, 1, 4, indexStream);\r
     if (strncmp(magic, "BAI\1", 4)) {\r
         printf("Problem with index file - invalid format.\n");\r
         fclose(indexStream);\r
@@ -597,7 +599,7 @@ bool BamReader::BamReaderPrivate::LoadIndex(void) {
 \r
     // get number of reference sequences\r
     uint32_t numRefSeqs;\r
-    fread(&numRefSeqs, 4, 1, indexStream);\r
+    elementsRead = fread(&numRefSeqs, 4, 1, indexStream);\r
 \r
     // intialize space for BamIndex data structure\r
     Index.reserve(numRefSeqs);\r
@@ -607,7 +609,7 @@ bool BamReader::BamReaderPrivate::LoadIndex(void) {
 \r
         // get number of bins for this reference sequence\r
         int32_t numBins;\r
-        fread(&numBins, 4, 1, indexStream);\r
+        elementsRead = fread(&numBins, 4, 1, indexStream);\r
 \r
         if (numBins > 0) {\r
             RefData& refEntry = References[i];\r
@@ -622,11 +624,11 @@ bool BamReader::BamReaderPrivate::LoadIndex(void) {
 \r
             // get binID\r
             uint32_t binID;\r
-            fread(&binID, 4, 1, indexStream);\r
+            elementsRead = fread(&binID, 4, 1, indexStream);\r
 \r
             // get number of regionChunks in this bin\r
             uint32_t numChunks;\r
-            fread(&numChunks, 4, 1, indexStream);\r
+            elementsRead = fread(&numChunks, 4, 1, indexStream);\r
 \r
             // intialize ChunkVector\r
             ChunkVector regionChunks;\r
@@ -638,8 +640,8 @@ bool BamReader::BamReaderPrivate::LoadIndex(void) {
                 // get chunk boundaries (left, right)\r
                 uint64_t left;\r
                 uint64_t right;\r
-                fread(&left, 8, 1, indexStream);\r
-                fread(&right, 8, 1, indexStream);\r
+                elementsRead = fread(&left, 8, 1, indexStream);\r
+                elementsRead = fread(&right, 8, 1, indexStream);\r
 \r
                 // save ChunkPair\r
                 regionChunks.push_back( Chunk(left, right) );\r
@@ -656,7 +658,7 @@ bool BamReader::BamReaderPrivate::LoadIndex(void) {
 \r
         // get number of linear offsets\r
         int32_t numLinearOffsets;\r
-        fread(&numLinearOffsets, 4, 1, indexStream);\r
+        elementsRead = fread(&numLinearOffsets, 4, 1, indexStream);\r
 \r
         // intialize LinearOffsetVector\r
         LinearOffsetVector offsets;\r
@@ -666,7 +668,7 @@ bool BamReader::BamReaderPrivate::LoadIndex(void) {
         uint64_t linearOffset;\r
         for (int j = 0; j < numLinearOffsets; ++j) {\r
             // read a linear offset & store\r
-            fread(&linearOffset, 8, 1, indexStream);\r
+            elementsRead = fread(&linearOffset, 8, 1, indexStream);\r
             offsets.push_back(linearOffset);\r
         }\r
 \r