generalized switch

kos at ernie.Berkeley.EDU.UUCP kos at ernie.Berkeley.EDU.UUCP
Sat Aug 2 08:19:22 AEST 1986


One of my only memories from a brief stint as a PL/I programmer years ago
was the pleasure of using a more general switch structure than C allows.
In addition to the standard
	switch (var) {
		case value:
		case value:
			etc...
		}		(translated to C because I don't remember
					any PL/I )

you also had the option of 
	switch() {
		case <boolean-expr>:
		    etc.
		}
if you wanted to test something other than the value of a particular variable.

I'm wondering whether any netland gurus have elegant suggestions for ways
of dummying up such a construct. The particular case at hand involves some
macros that look like:

#define IS_TYPE_A(c)	(c==this||c==that)
#define	IS_TYPE_B(c)	((c==the_other||c==your_mother) && c != rambo)
and so on. Now what I need is
	switch () {
		IS_TYPE_A(c):
			do_type_a(c);
			break;
		IS_TYPE_B(c):
			do_type_b(c);
			break;
		}

But it's something I've wanted in the past in other contexts as well.
Any ideas?


	Joshua Kosman
	kos at ernie.berkeley.EDU

	"When I was young people used to tell me, 'When you're 50 you'll
	understand.' Well, now I'm 50. I don't understand a thing."
				-- Erik Satie



More information about the Comp.lang.c mailing list