00001
00002
00003
00004
00005
00006
00007
00008 #ifndef __COMMON_H__
00009 #define __COMMON_H__
00010
00011 #include <iostream>
00012 #include <cstdio>
00013 #include <iomanip>
00014 #include <map>
00015 #include <set>
00016 #include <vector>
00017
00018 #ifdef __WIN32__
00019 #define CLEAR_SCREEN_CMD "cls"
00020 #else
00021 #define CLEAR_SCREEN_CMD "clear"
00022 #endif
00023
00024 #ifndef ulonglong
00025 typedef unsigned long long ulonglong;
00026 #endif
00027
00028 typedef std::vector<size_t> IntVector;
00029
00032 template <class InputIterator, class T>
00033 T valueMerge(InputIterator first, InputIterator last, T delim)
00034 {
00035 T value;
00036
00037 while (first != last) {
00038 value += *first++;
00039 if (first != last) value += delim;
00040 }
00041
00042 return value;
00043 }
00044
00047 template <typename T>
00048 struct deletePtr : public std::unary_function<bool, T>
00049 {
00050 bool operator()(T *pT) const {
00051 delete pT;
00052 return true;
00053 }
00054 };
00055
00056 extern int debugLevel;
00057
00058 #define LOG(L, ...) if (L >= debugLevel) { \
00059 printf("[%s:%d] [%s] ", __FILE__, \
00060 __LINE__, __func__); \
00061 printf(__VA_ARGS__); \
00062 }
00063 #define LOG_CTOR() LOG(3, "ctor called\n")
00064 #define LOG_DTOR() LOG(3, "dtor called\n")
00065
00066 #endif