// *************************************************************************** // bamtools_utilities.h (c) 2010 Derek Barnett, Erik Garrison // Marth Lab, Department of Biology, Boston College // --------------------------------------------------------------------------- // Last modified: 7 October 2011 // --------------------------------------------------------------------------- // Provides general utilities used by BamTools sub-tools. // *************************************************************************** #ifndef BAMTOOLS_UTILITIES_H #define BAMTOOLS_UTILITIES_H #include #include #include #include #define BAMTOOLS_ASSERT_UNREACHABLE BT_ASSERT_UNREACHABLE #define BAMTOOLS_ASSERT_MESSAGE( condition, message ) BT_ASSERT_X( condition, message ) namespace BamTools { class BamReader; class BamMultiReader; class UTILS_EXPORT Utilities { public: // returns true if 'source' contains 'pattern' or 'c' static bool Contains(const std::string& source, const std::string& pattern); static bool Contains(const std::string& source, const char c); // returns true if 'source' ends with 'pattern' or 'c' static bool EndsWith(const std::string& source, const std::string& pattern); static bool EndsWith(const std::string& source, const char c); // check if a file exists static bool FileExists(const std::string& fname); // Parses a region string, uses reader to do validation (valid ID's, positions), stores in Region struct // Returns success (true/false) static bool ParseRegionString(const std::string& regionString, const BamReader& reader, BamRegion& region); // Same as above, but accepts a BamMultiReader static bool ParseRegionString(const std::string& regionString, const BamMultiReader& reader, BamRegion& region); // sequence utilities static void Reverse(std::string& sequence); static void ReverseComplement(std::string& sequence); // split string on delimiter character (or string of allowed delimiters) static std::vector Split(const std::string& source, const char delim); static std::vector Split(const std::string& source, const std::string& delims); // returns true if 'source' starts with 'pattern' or 'c' static bool StartsWith(const std::string& source, const std::string& pattern); static bool StartsWith(const std::string &source, const char c); }; } // namespace BamTools #endif // BAMTOOLS_UTILITIES_H