diff options
| author | Tobin Ehlis <tobin@lunarg.com> | 2015-04-15 17:04:03 -0600 |
|---|---|---|
| committer | Chia-I Wu <olv@lunarg.com> | 2015-04-16 17:48:21 +0800 |
| commit | b66fb1c1d2e9ffa198a6f6ff491f1b0e37309b83 (patch) | |
| tree | d7fa07f28591fd2caf7b959b33a1849402077b51 | |
| parent | 9d217fe18be21bdedf36e14237e717240daed1fb (diff) | |
| download | usermoji-b66fb1c1d2e9ffa198a6f6ff491f1b0e37309b83.tar.xz | |
layers: Improve validate helpers treatment of flag enums
| -rwxr-xr-x | vk_helper.py | 18 |
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): |
