aboutsummaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
authorPeter Keresztes Schmidt <carbenium@outlook.com>2020-08-20 00:46:52 +0200
committerGitHub <noreply@github.com>2020-08-20 00:46:52 +0200
commit4286e7aa02e777268b25d8a5bcc1ee87f7b16c4d (patch)
tree13c9a4c4be3ae749a0301f0e397051a98a10f339 /contrib
parent9c9e8c7d58cd0e939330089cfb555945ebbf73eb (diff)
Core/ChatCommands: Check whether a passed numeric enum value is valid (#25285)
Diffstat (limited to 'contrib')
-rw-r--r--contrib/enumutils_describe.py21
1 files changed, 14 insertions, 7 deletions
diff --git a/contrib/enumutils_describe.py b/contrib/enumutils_describe.py
index 630fe86c1f0..443b8ba430c 100644
--- a/contrib/enumutils_describe.py
+++ b/contrib/enumutils_describe.py
@@ -1,6 +1,5 @@
from re import compile, MULTILINE
from os import walk, getcwd
-from datetime import datetime
notice = ('''/*
* This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
@@ -109,9 +108,7 @@ def processFile(path, filename):
output.write('#include "SmartEnum.h"\n')
output.write('#include <stdexcept>\n')
output.write('\n')
- output.write('namespace Trinity\n')
- output.write('{\n')
- output.write('namespace Impl\n')
+ output.write('namespace Trinity::Impl\n')
output.write('{\n')
for name, values in enums:
tag = ('data for enum \'%s\' in \'%s.h\' auto-generated' % (name, filename))
@@ -130,10 +127,10 @@ def processFile(path, filename):
output.write(' }\n')
output.write('}\n')
output.write('\n')
- output.write('template <>\n');
+ output.write('template <>\n')
output.write('TC_API_EXPORT size_t EnumUtils<%s>::Count() { return %d; }\n' % (name, len(values)))
output.write('\n')
- output.write('template <>\n');
+ output.write('template <>\n')
output.write('TC_API_EXPORT %s EnumUtils<%s>::FromIndex(size_t index)\n' % (name, name))
output.write('{\n')
output.write(' switch (index)\n')
@@ -143,9 +140,19 @@ def processFile(path, filename):
output.write(' default: throw std::out_of_range("index");\n')
output.write(' }\n')
output.write('}\n')
+ output.write('\n')
+ output.write('template <>\n')
+ output.write('TC_API_EXPORT size_t EnumUtils<%s>::ToIndex(%s value)\n' % (name, name))
+ output.write('{\n')
+ output.write(' switch (value)\n')
+ output.write(' {\n')
+ for i in range(len(values)):
+ output.write(' case %s: return %d;\n' % (values[i][0], i))
+ output.write(' default: throw std::out_of_range("value");\n')
+ output.write(' }\n')
+ output.write('}\n')
output.write('}\n')
- output.write('}\n')
FilenamePattern = compile(r'^(.+).h$')
for root, dirs, files in walk('.'):