BgzfFileType.cpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include <iostream>
00019 #include <string.h>
00020
00021 #include "BgzfFileType.h"
00022
00023
00024 bool BgzfFileType::ourRequireEofBlock = true;
00025
00026 BgzfFileType::BgzfFileType(const char * filename, const char * mode)
00027 {
00028
00029 if(((mode[0] == 'w') || (mode[0] == 'W')) &&
00030 (strcmp(filename, "-") == 0))
00031 {
00032
00033 bgzfHandle = bgzf_fdopen(fileno(stdout), mode);
00034 }
00035 else if(((mode[0] == 'r') || (mode[0] == 'R')) &&
00036 (strcmp(filename, "-") == 0))
00037 {
00038
00039 bgzfHandle = bgzf_fdopen(fileno(stdin), mode);
00040 }
00041 else
00042 {
00043 bgzfHandle = bgzf_open(filename, mode);
00044 }
00045
00046 myStartPos = 0;
00047 if (bgzfHandle != NULL)
00048 {
00049
00050
00051 if ((mode[0] == 'r' || mode[0] == 'R') && ourRequireEofBlock &&
00052 (bgzf_check_EOF(bgzfHandle) == 0))
00053 {
00054 std::cerr << "BGZF EOF marker is missing in " << filename << std::endl;
00055
00056 close();
00057 }
00058 else
00059 {
00060
00061
00062 myStartPos = bgzf_tell(bgzfHandle);
00063 }
00064 }
00065
00066 myEOF = false;
00067 }
00068
00069
00070
00071
00072 void BgzfFileType::setRequireEofBlock(bool requireEofBlock)
00073 {
00074 ourRequireEofBlock = requireEofBlock;
00075 }
00076