#ifndef PIINCLUDES_H #define PIINCLUDES_H #if __WIN32__ || __WIN64__ # define WINDOWS #endif #if __QNX__ # define QNX #endif #include #include #include #include #include #include #include #include #include #ifdef WINDOWS #include #include #include #endif #define FOREVER for (;;) #define FOREVER_WAIT FOREVER msleep(10); typedef long long llong; typedef unsigned char uchar; typedef unsigned short int ushort; typedef unsigned int uint; typedef unsigned long ulong; typedef unsigned long long ullong; typedef long double ldouble; using std::cout; using std::cin; using std::endl; using std::flush; using std::vector; using std::list; using std::deque; using std::string; template class Flags { private: int flags; public: inline Flags(): flags(0) {;} inline Flags(Enum e): flags(e) {;} inline Flags(const Flags & f): flags(f.flags) {;} inline Flags(const int i): flags(i) {;} inline void operator =(const Flags & f) {flags = f.flags;} inline void operator |=(const Flags & f) {flags = flags | f.flags;} inline void operator |=(const Enum & e) {flags = flags | e;} inline void operator |=(const int i) {flags = flags | i;} inline void operator &=(const Flags & f) {flags = flags & f.flags;} inline void operator &=(const Enum & e) {flags = flags & e;} inline void operator &=(const int i) {flags = flags & i;} inline Flags & operator |(Flags f) const {Flags tf(flags | f.flags); return tf;} inline Flags & operator |(Enum e) const {Flags tf(flags | e); return tf;} inline Flags & operator |(int i) const {Flags tf(flags | i); return tf;} inline Flags & operator &(Flags f) const {Flags tf(flags & f.flags); return tf;} inline Flags & operator &(Enum e) const {Flags tf(flags & e); return tf;} inline Flags & operator &(int i) const {Flags tf(flags & i); return tf;} inline bool operator [](Enum e) {return (flags & e) == e;} inline operator int() const {return flags;} }; inline bool atob(const string & str) { return str == "1" ? true : false;}; inline string btos(const bool num) { return num ? "0" : "1";}; inline string itos(const int num) { char ch[256]; sprintf(ch, "%d", num); return string(ch); }; inline string ltos(const long num) { char ch[256]; sprintf(ch, "%ld", num); return string(ch); }; inline string uitos(const uint num) { char ch[256]; sprintf(ch, "%ud", num); return string(ch); }; inline string ultos(const ulong num) { char ch[256]; sprintf(ch, "%lud", num); return string(ch); }; inline string ftos(const float num) { char ch[256]; sprintf(ch, "%g", num); return string(ch); }; inline string dtos(const double num) { char ch[256]; sprintf(ch, "%g", num); return string(ch); }; #endif // PIINCLUDES_H