aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobin Ehlis <tobin@lunarg.com>2015-04-15 17:04:03 -0600
committerChia-I Wu <olv@lunarg.com>2015-04-16 17:48:21 +0800
commitb66fb1c1d2e9ffa198a6f6ff491f1b0e37309b83 (patch)
treed7fa07f28591fd2caf7b959b33a1849402077b51
parent9d217fe18be21bdedf36e14237e717240daed1fb (diff)
downloadusermoji-b66fb1c1d2e9ffa198a6f6ff491f1b0e37309b83.tar.xz
layers: Improve validate helpers treatment of flag enums
-rwxr-xr-xvk_helper.py18
1 files changed, 13 insertions, 5 deletions
diff --git a/vk_helper.py b/vk_helper.py
index 93a915d9..80bfc6b4 100755
--- a/vk_helper.py
+++ b/vk_helper.py
@@ -1286,11 +1286,19 @@ class EnumCodeGen:
body = []
for bet in sorted(self.et_dict):
fet = self.tf_dict[bet]
- body.append("static inline uint32_t validate_%s(%s input_value)\n{\n switch ((%s)input_value)\n {" % (fet, fet, fet))
- for e in sorted(self.et_dict[bet]):
- if (self.ev_dict[e]['unique']):
- body.append(' case %s:' % (e))
- body.append(' return 1;\n default:\n return 0;\n }\n}\n\n')
+ body.append("static inline uint32_t validate_%s(%s input_value)\n{" % (fet, fet))
+ # TODO : This is not ideal, but allows for flag combinations. Need more rigorous validation of realistic flag combinations
+ if 'flags' in bet.lower():
+ body.append(' if (input_value > (%s))' % (' | '.join(self.et_dict[bet])))
+ body.append(' return 0;')
+ body.append(' return 1;')
+ body.append('}\n\n')
+ else:
+ body.append(' switch ((%s)input_value)\n {' % (fet))
+ for e in sorted(self.et_dict[bet]):
+ if (self.ev_dict[e]['unique']):
+ body.append(' case %s:' % (e))
+ body.append(' return 1;\n default:\n return 0;\n }\n}\n\n')
return "\n".join(body)
def _generateSHBody(self):