Ian Romanick <[email protected]> writes: > From: Ian Romanick <[email protected]> > > 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. > > Signed-off-by: Ian Romanick <[email protected]> > Cc: Francisco Jerez <[email protected]>
Reviewed-by: Francisco Jerez <[email protected]> > --- > src/glsl/ir.h | 40 +++++++++------------------------------- > 1 file changed, 9 insertions(+), 31 deletions(-) > > diff --git a/src/glsl/ir.h b/src/glsl/ir.h > index b2b4822..ff30263 100644 > --- a/src/glsl/ir.h > +++ b/src/glsl/ir.h > @@ -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; > - } > - > - 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; > + #define AS_BASE(TYPE) \ > + class ir_##TYPE *as_##TYPE() \ > + { \ > + assume(this != NULL); \ > + return (is_##TYPE()) ? (ir_##TYPE *) this : 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() \ > -- > 2.1.0
signature.asc
Description: PGP signature
_______________________________________________ mesa-dev mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-dev
