diff -r 397870c6ed38 -r 9e9c52ca955e src/Macros.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/Macros.h Sun Mar 09 14:59:46 2014 +0200
@@ -0,0 +1,104 @@
+/*
+ * LDForge: LDraw parts authoring CAD
+ * Copyright (C) 2013, 2014 Santeri Piippo
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+#ifndef __GNUC__
+# define __attribute__(X)
+#endif
+
+// =============================================================================
+//
+#define PROPERTY(ACCESS, TYPE, READ, WRITE, WRITETYPE) \
+private: \
+ TYPE m_##READ; \
+ \
+public: \
+ inline TYPE const& READ() const \
+ { \
+ return m_##READ; \
+ } \
+ \
+ACCESS: \
+ void WRITE (TYPE const& a) PROPERTY_##WRITETYPE (READ) \
+
+#define PROPERTY_STOCK_WRITE(READ) \
+ { \
+ m_##READ = a; \
+ }
+
+#define PROPERTY_CUSTOM_WRITE(READ) \
+ ;
+
+// =============================================================================
+//
+#define elif(A) else if (A)
+
+// =============================================================================
+//
+#ifdef WIN32
+# define DIRSLASH "\\"
+# define DIRSLASH_CHAR '\\'
+#else // WIN32
+# define DIRSLASH "/"
+# define DIRSLASH_CHAR '/'
+#endif // WIN32
+
+// =============================================================================
+//
+#ifdef __GNUC__
+#define FUNCNAME __PRETTY_FUNCTION__
+#else
+#define FUNCNAME __func__
+#endif // __GNUC__
+
+// =============================================================================
+//
+#define dvalof(A) dprint ("value of '%1' = %2\n", #A, A)
+
+// =============================================================================
+//
+// Replace assert with a version that shows a GUI dialog if possible.
+// On Windows I just can't get the actual error messages otherwise.
+//
+#undef assert
+
+#ifdef DEBUG
+# define assert(N) { ((N) ? (void) 0 : assertionFailure (__FILE__, __LINE__, FUNCNAME, #N)); }
+#else
+# define assert(N) {}
+#endif // DEBUG
+
+#define for_axes(AX) for (const Axis AX : std::initializer_list ({X, Y, Z}))
+
+// =============================================================================
+#ifdef IN_IDE_PARSER // KDevelop workarounds:
+# error IN_IDE_PARSER is defined (this code is only for KDevelop workarounds)
+# define COMPILE_DATE "14-01-10 10:31:09"
+
+# ifndef va_start
+# define va_start(va, arg)
+# endif // va_start
+
+# ifndef va_end
+# define va_end(va)
+# endif // va_end
+
+static const char* __func__ = ""; // Current function name
+typedef void FILE; // :|
+#endif // IN_IDE_PARSER
\ No newline at end of file