OSDN Git Service

Added helper function for parsing regular expressions.
[mutilities/MUtilities.git] / include / MUtils / Global.h
index a7b0dc8..0d6822d 100644 (file)
 
 #include <QString>
 
+//Forward Declarations
+class QProcess;
+
+///////////////////////////////////////////////////////////////////////////////
+
+//MUtils API
+#ifdef _MSC_VER
+#      ifdef MUTILS_DLL_EXPORT
+#              define MUTILS_API __declspec(dllexport)
+#      else
+#              ifndef MUTILS_STATIC_LIB
+#                      define MUTILS_API __declspec(dllimport)
+#              else
+#                      define MUTILS_API /*static lib*/
+#              endif
+#      endif
+#else
+#      define MUTILS_API
+#endif
+
+//Helper Macros
+#define MUTILS_MAKE_STRING_HELPER(X) #X
+#define MUTILS_MAKE_STRING(X) MUTILS_MAKE_STRING_HELPER(X)
+#define MUTILS_COMPILER_WARNING(TXT) __pragma(message(__FILE__ "(" MUTILS_MAKE_STRING(__LINE__) ") : warning: " TXT))
+
+//Check Debug Flags
+#if defined(_DEBUG) || defined(DEBUG) || (!defined(NDEBUG))
+#      define MUTILS_DEBUG (1)
+#      if defined(NDEBUG) || defined(QT_NO_DEBUG) || (!defined(QT_DEBUG))
+#              error Inconsistent DEBUG flags have been detected!
+#      endif
+#else
+#      define MUTILS_DEBUG (0)
+#      if (!defined(NDEBUG)) || (!defined(QT_NO_DEBUG)) || defined(QT_DEBUG)
+#              error Inconsistent DEBUG flags have been detected!
+#      endif
+#endif
+
+//Check CPU options
+#if defined(_MSC_VER) && (!defined(_M_X64)) && defined(_M_IX86_FP)
+       #if (_M_IX86_FP != 0)
+               #error We should not enabled SSE or SSE2 in release builds!
+       #endif
+#endif
+
 ///////////////////////////////////////////////////////////////////////////////
 
 namespace MUtils
 {
+       //Temp Folder
+       MUTILS_API const QString& temp_folder(void);
+
+       //Process Utils
+       MUTILS_API void init_process(QProcess &process, const QString &wokringDir, const bool bReplaceTempDir = true);
+
        //Random
-       void seed_rand(void);
-       QString rand_str(const bool &bLong = false);
-       quint32 next_rand32(void);
-       quint64 next_rand64(void);
+       MUTILS_API void seed_rand(void);
+       MUTILS_API QString rand_str(const bool &bLong = false);
+       MUTILS_API quint32 next_rand32(void);
+       MUTILS_API quint64 next_rand64(void);
+
+       //Remove File/Dir
+       MUTILS_API bool remove_file(const QString &fileName);
+       MUTILS_API bool remove_directory(const QString &folderPath);
+
+       //String sorting
+       MUTILS_API void natural_string_sort(QStringList &list, const bool bIgnoreCase);
+
+       //Clean file path
+       MUTILS_API QString clean_file_name(const QString &name);
+       MUTILS_API QString clean_file_path(const QString &path);
+
+       //Regular expressions
+       MUTILS_API bool regexp_parse_uint32(const QRegExp &regexp, quint32 &value);
+       MUTILS_API bool regexp_parse_uint32(const QRegExp &regexp, quint32 *values, const size_t &count);
+
+       //Internationalization
+       MUTILS_API QStringList available_codepages(const bool &noAliases = true);
+
+       //Internal
+       namespace Internal
+       {
+               MUTILS_API int selfTest(const char *const buildKey, const bool debug);
+               static const int g_test = selfTest(__DATE__"@"__TIME__, MUTILS_DEBUG);
+       }
 }
+
+///////////////////////////////////////////////////////////////////////////////
+
+//Delete helper
+#define MUTILS_DELETE(PTR) do { if((PTR)) { delete (PTR); (PTR) = NULL; } } while(0)
+#define MUTILS_DELETE_ARRAY(PTR) do { if((PTR)) { delete [] (PTR); (PTR) = NULL; } } while(0)
+
+//Zero memory
+#define MUTILS_ZERO_MEMORY(PTR) memset(&(PTR), 0, sizeof((PTR)))
+
+//String conversion macros
+#define MUTILS_WCHR(STR) (reinterpret_cast<const wchar_t*>((STR).utf16()))
+#define MUTILS_UTF8(STR) ((STR).toUtf8().constData())
+#define MUTILS_QSTR(STR) (QString::fromUtf16(reinterpret_cast<const unsigned short*>((STR))))
+
+//Boolean helper
+#define MUTILS_BOOL2STR(X) ((X) ? "1" : "0")