mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 07:28:11 +02:00
glsl: Implement remaining as_foo functions with macros
The downcast functions for non-leaf classes were previously implemented "by hand." Now they are implemented using macros based on the is_foo functions added in the previous patch. v2: Remove redundant parenthesis. Suggested by Curro (on the next patch). Signed-off-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Francisco Jerez <currojerez@riseup.net>
This commit is contained in:
parent
a284c63006
commit
0c4ee62045
1 changed files with 9 additions and 31 deletions
|
|
@ -142,39 +142,17 @@ public:
|
|||
* Additional downcast functions will be added as needed.
|
||||
*/
|
||||
/*@{*/
|
||||
class ir_rvalue *as_rvalue()
|
||||
{
|
||||
assume(this != NULL);
|
||||
if (ir_type == ir_type_dereference_array ||
|
||||
ir_type == ir_type_dereference_record ||
|
||||
ir_type == ir_type_dereference_variable ||
|
||||
ir_type == ir_type_constant ||
|
||||
ir_type == ir_type_expression ||
|
||||
ir_type == ir_type_swizzle ||
|
||||
ir_type == ir_type_texture)
|
||||
return (class ir_rvalue *) this;
|
||||
return NULL;
|
||||
#define AS_BASE(TYPE) \
|
||||
class ir_##TYPE *as_##TYPE() \
|
||||
{ \
|
||||
assume(this != NULL); \
|
||||
return is_##TYPE() ? (ir_##TYPE *) this : NULL; \
|
||||
}
|
||||
|
||||
class ir_dereference *as_dereference()
|
||||
{
|
||||
assume(this != NULL);
|
||||
if (ir_type == ir_type_dereference_array ||
|
||||
ir_type == ir_type_dereference_record ||
|
||||
ir_type == ir_type_dereference_variable)
|
||||
return (class ir_dereference *) this;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
class ir_jump *as_jump()
|
||||
{
|
||||
assume(this != NULL);
|
||||
if (ir_type == ir_type_loop_jump ||
|
||||
ir_type == ir_type_return ||
|
||||
ir_type == ir_type_discard)
|
||||
return (class ir_jump *) this;
|
||||
return NULL;
|
||||
}
|
||||
AS_BASE(rvalue)
|
||||
AS_BASE(dereference)
|
||||
AS_BASE(jump)
|
||||
#undef AS_BASE
|
||||
|
||||
#define AS_CHILD(TYPE) \
|
||||
class ir_##TYPE * as_##TYPE() \
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue