35# if defined(KLF_SRC_BUILD)
36# define KLF_EXPORT __declspec(dllexport)
38# define KLF_EXPORT __declspec(dllimport)
41# define KLF_EXPORT __attribute__((visibility("default")))
56#if defined(Q_CC_GNU) && !defined(__INSURE__)
57 __attribute__ ((
format (printf, 1, 2)))
61#define klfFmtCC (const char*)klfFmt
67#define klfFmtDoubleCC (const char*)klfFmtDouble
70#define KLF_FUNC_SINGLE_RUN \
71 { static bool first_run = true; if ( ! first_run ) return; first_run = false; }
74#define KLF_DECLARE_PRIVATE(ClassName) \
76 ClassName##Private *d; \
77 friend struct ClassName##Private; \
78 inline ClassName##Private * d_func() { return d; } \
79 inline const ClassName##Private * d_func() const { return d; }
81#define KLF_PRIVATE_HEAD(ClassName) \
82 private: ClassName *K; \
83 public: ClassName * parentClass() const { return K; } \
84 public: ClassName##Private (ClassName * ptr) : K(ptr)
85#define KLF_PRIVATE_INHERIT_HEAD(ClassName, BaseInit) \
86 private: ClassName *K; \
87 public: ClassName * parentClass() const { return K; } \
88 public: ClassName##Private (ClassName * ptr) BaseInit, K(ptr)
89#define KLF_PRIVATE_QOBJ_HEAD(ClassName, QObj) \
90 private: ClassName *K; \
91 public: ClassName * parentClass() const { return K; } \
92 public: ClassName##Private (ClassName * ptr) : QObj(ptr), K(ptr)
94#define KLF_INIT_PRIVATE(ClassName) \
95 do { d = new ClassName##Private(this); } while (0)
96#define KLF_DELETE_PRIVATE \
97 do { if (d != NULL) { delete d; } } while (0)
101 for (bool _klf_block_first = true; _klf_block_first; _klf_block_first = false)
103#define KLF_TRY(expr, msg, failaction) \
113#define KLF_DEFINE_PROPERTY_GET(ClassName, type, prop) \
114 type ClassName::prop() const { return d_func()->prop; }
116#define KLF_DEFINE_PROPERTY_GETSET(ClassName, type, prop, Prop) \
117 KLF_DEFINE_PROPERTY_GET(ClassName, type, prop) \
118 void ClassName::set##Prop(type value) { d_func()->prop = value; }
120#define KLF_DEFINE_PROPERTY_GETSET_C(ClassName, type, prop, Prop) \
121 KLF_DEFINE_PROPERTY_GET(ClassName, type, prop) \
122 void ClassName::set##Prop(const type& value) { d_func()->prop = value; }
KLF_EXPORT QByteArray klfFmt(const char *fmt,...)
KLF_EXPORT int klfVersionCompare(const QString &v1, const QString &v2)
Compares two version strings.
KLF_EXPORT bool klfVersionCompareLessThan(const QString &v1, const QString &v2)
Same as klfVersionCompare(v1,v2) < 0
KLF_EXPORT const char * klfVersion()
KLF_EXPORT int klfVersionMin()
KLF_EXPORT QByteArray klfFmtDouble(double num, char fmt='g', int precision=6)
KLF_EXPORT int klfVersionMaj()
KLF_EXPORT int klfVersionRelease()
KLF_EXPORT bool klfIsValidVersion(const QString &v)