The D_EXPR(a,b,c) macro expands to a comma expression that will evaluate SpaceDim of its arguments, counting from the left; i.e. CH_SPACEDIM==1 implies only `a' is evaluated, CH_SPACEDIM==2 implies both `a' and `b', and CH_SPACEDIM==3 implies all three arguments are evaluated. This macro can be used to enhance the portability of code that works with structures whose size depends on CH_SPACEDIM.For example:
D_EXPR(vect[0] *= s, vect[1] *= s, vect[2] *= s);
More explicitly, this macro evaluates to one of
((void)((a),0))
((void)((a),(b),0))
((void)((a),(b),(c),0))
corresponding to CH_SPACEDIM values of 1, 2, or 3.
This software is copyright (C) by the Lawrence Berkeley National Laboratory. Permission is granted to reproduce this software for non-commercial purposes provided that this notice is left intact.
It is acknowledged that the U.S. Government has rights to this software under Contract DE-AC03-765F00098 between the U.S. Department of Energy and the University of California.
This software is provided as a professional and academic contribution for joint exchange. Thus it is experimental, is provided ``as is'', with no warranties of any kind whatsoever, no support, no promise of updates, or printed documentation. By using this software, you acknowledge that the Lawrence Berkeley National Laboratory and Regents of the University of California shall have no liability with respect to the infringement of other copyrights by any part of this software.