OSDN Git Service

Added helper function for parsing regular expressions.
[mutilities/MUtilities.git] / include / MUtils / Global.h
index 797604d..0d6822d 100644 (file)
@@ -50,17 +50,24 @@ class QProcess;
 
 //Check Debug Flags
 #if defined(_DEBUG) || defined(DEBUG) || (!defined(NDEBUG))
-#      define MUTILS_DEBUG 1
+#      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
+#      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
@@ -77,39 +84,45 @@ namespace MUtils
        MUTILS_API quint32 next_rand32(void);
        MUTILS_API quint64 next_rand64(void);
 
-       //Version
-       MUTILS_API const char* mutils_build_date(void);
-       MUTILS_API const char* mutils_build_time(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 date, const bool debug);
-               static const int g_selfTestRet = selfTest(__DATE__, MUTILS_DEBUG);
+               MUTILS_API int selfTest(const char *const buildKey, const bool debug);
+               static const int g_test = selfTest(__DATE__"@"__TIME__, MUTILS_DEBUG);
        }
 }
 
 ///////////////////////////////////////////////////////////////////////////////
 
-#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)
-
-#define MUTILS_QSTR2WCHAR(STR) (reinterpret_cast<const wchar_t*>((STR).utf16()))
-#define MUTILS_QSTR2QUTF8(STR) ((STR).toUtf8().constData())
-#define MUTILS_WCHAR2QSTR(STR) (QString::fromUtf16(reinterpret_cast<const unsigned short*>((STR))))
+//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")