44 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			44 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
|  | #ifndef NEW_YORK_TRANSIT_LINE_ALOTALOT_H
 | ||
|  | #define NEW_YORK_TRANSIT_LINE_ALOTALOT_H
 | ||
|  | 
 | ||
|  | /* A little of this, a little of that
 | ||
|  |  * DO NOT EXPORT THIS FILE */ | ||
|  | 
 | ||
|  | #include <stdexcept>
 | ||
|  | #include <memory>
 | ||
|  | 
 | ||
|  | namespace nytl { | ||
|  |     template<typename T> | ||
|  |     using uptr = std::unique_ptr<T>; | ||
|  | 
 | ||
|  |     class FUp : public std::exception{ | ||
|  |         std::string WHAT; | ||
|  |     public: | ||
|  |         FUp(const std::string &err, const std::string &file, const std::string &func, int line); | ||
|  | 
 | ||
|  |         const char *what() const noexcept override; | ||
|  |     }; | ||
|  | 
 | ||
|  |     std::string prettyprint_errno(const std::string& pref); | ||
|  | #define THROW(err) throw FUp(err, __FILE__, __func__, __LINE__)
 | ||
|  | #define THROW_on_errno(err) THROW(prettyprint_errno(err))
 | ||
|  | #define THROW_on_errno_pl() THROW(prettyprint_errno(""))
 | ||
|  | #define ASSERT(cond, err) do { if (!(cond)) { THROW(err); } } while (0);
 | ||
|  | #define ASSERT_pl(cond) ASSERT(cond, "Failed assertion `" #cond "`")
 | ||
|  | #define ASSERT_on_iret(iret, err) ASSERT((iret) >= 0, prettyprint_errno(err));
 | ||
|  | #define ASSERT_on_iret_pl(iret) ASSERT(iret >= 0, prettyprint_errno(""));
 | ||
|  | 
 | ||
|  |     bool endsIn(const std::string& a, const std::string& b); | ||
|  | 
 | ||
|  |     std::string throwout_postfix(const std::string& a, size_t bsz); | ||
|  | 
 | ||
|  |     bool isALPHA(char ch); | ||
|  |     bool isNUM(char ch); | ||
|  |     bool isUNCHAR(char ch); | ||
|  |     bool isSPACE(char ch); | ||
|  | 
 | ||
|  |     bool isUname(const std::string& str) noexcept; | ||
|  | } | ||
|  | 
 | ||
|  | #endif
 |