1 // ***************************************************************************
2 // bamtools_utilities.h (c) 2010 Derek Barnett, Erik Garrison
3 // Marth Lab, Department of Biology, Boston College
4 // All rights reserved.
5 // ---------------------------------------------------------------------------
6 // Last modified: 9 June 2011
7 // ---------------------------------------------------------------------------
8 // Provides general utilities used by BamTools sub-tools.
9 // ***************************************************************************
11 #ifndef BAMTOOLS_UTILITIES_H
12 #define BAMTOOLS_UTILITIES_H
14 #include <api/BamAux.h>
15 #include <utils/utils_global.h>
21 #define BAMTOOLS_ASSERT_UNREACHABLE assert( false )
22 #define BAMTOOLS_ASSERT_MESSAGE( condition, message ) if (!( condition )) throw std::runtime_error( message );
29 class UTILS_EXPORT Utilities {
32 // returns true if 'source' contains 'pattern' or 'c'
33 static bool Contains(const std::string& source, const std::string& pattern);
34 static bool Contains(const std::string& source, const char c);
36 // returns true if 'source' ends with 'pattern' or 'c'
37 static bool EndsWith(const std::string& source, const std::string& pattern);
38 static bool EndsWith(const std::string& source, const char c);
40 // check if a file exists
41 static bool FileExists(const std::string& fname);
43 // Parses a region string, uses reader to do validation (valid ID's, positions), stores in Region struct
44 // Returns success (true/false)
45 static bool ParseRegionString(const std::string& regionString,
46 const BamReader& reader,
48 // Same as above, but accepts a BamMultiReader
49 static bool ParseRegionString(const std::string& regionString,
50 const BamMultiReader& reader,
54 static void Reverse(std::string& sequence);
55 static void ReverseComplement(std::string& sequence);
57 // split string on delimiter character (or string of allowed delimiters)
58 static std::vector<std::string> Split(const std::string& source, const char delim);
59 static std::vector<std::string> Split(const std::string& source, const std::string& delims);
61 // returns true if 'source' starts with 'pattern' or 'c'
62 static bool StartsWith(const std::string& source, const std::string& pattern);
63 static bool StartsWith(const std::string &source, const char c);
66 } // namespace BamTools
68 #endif // BAMTOOLS_UTILITIES_H