summaryrefslogtreecommitdiff
path: root/src/enums
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2015-05-29 14:30:20 +0300
committerAndrei Karas <akaras@inbox.ru>2015-05-29 14:30:20 +0300
commit0f9ec2061c4ad6157c3186f1cab9c4d8558980b5 (patch)
tree6259593b8436178ad8d981a96a8fd71eab9e04cc /src/enums
parent01773c71a4698c6f01fe70d864f922bda65506cb (diff)
downloadmv-0f9ec2061c4ad6157c3186f1cab9c4d8558980b5.tar.gz
mv-0f9ec2061c4ad6157c3186f1cab9c4d8558980b5.tar.bz2
mv-0f9ec2061c4ad6157c3186f1cab9c4d8558980b5.tar.xz
mv-0f9ec2061c4ad6157c3186f1cab9c4d8558980b5.zip
Add strong typed int type BeingId.
Diffstat (limited to 'src/enums')
-rw-r--r--src/enums/simpletypes/beingid.h34
-rw-r--r--src/enums/simpletypes/intdefines.h7
2 files changed, 40 insertions, 1 deletions
diff --git a/src/enums/simpletypes/beingid.h b/src/enums/simpletypes/beingid.h
new file mode 100644
index 000000000..dddd83932
--- /dev/null
+++ b/src/enums/simpletypes/beingid.h
@@ -0,0 +1,34 @@
+/*
+ * The ManaPlus Client
+ * Copyright (C) 2015 The ManaPlus Developers
+ *
+ * This file is part of The ManaPlus Client.
+ *
+ * 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 2 of the License, or
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef ENUMS_SIMPLETYPES_BEINGID_H
+#define ENUMS_SIMPLETYPES_BEINGID_H
+
+#include "enums/simpletypes/intdefines.h"
+
+defIntEnum(BeingId, int);
+
+#ifdef ADVGCC
+const BeingId BeingId_negOne = static_cast<BeingId>(-1);
+#else
+const BeingId BeingId_negOne = -1;
+#endif
+
+#endif // ENUMS_SIMPLETYPES_BEINGID_H
diff --git a/src/enums/simpletypes/intdefines.h b/src/enums/simpletypes/intdefines.h
index 56e052ce3..765318cdc 100644
--- a/src/enums/simpletypes/intdefines.h
+++ b/src/enums/simpletypes/intdefines.h
@@ -29,13 +29,18 @@
enum class name : type \
{ \
}; \
+ const name name##_zero = static_cast<name>(0)
+
#define fromInt(val, name) static_cast<name>(val)
+#define toInt(val, name) static_cast<name>(val)
#else // ADVGCC
#define defIntEnum(name, type) \
- typedef type name
+ typedef type name; \
+ const name name##_zero = 0
#define fromInt(val, name) (val)
+#define toInt(val, name) (val)
#endif // ADVGCC