//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
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 ®exp, quint32 &value);
+ MUTILS_API bool regexp_parse_uint32(const QRegExp ®exp, 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")