This is the mail archive of the gdb@sourceware.cygnus.com mailing list for the GDB project. See the GDB home page for more information.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: problem with chained if statements?


jtc> I'm trying to write some user-defined commands to traverse
jtc> and/or pretty-print some of the internal data structures used in
jtc> our SW.  In the absense of a `switch' statement, I am using a
jtc> chain of if .. else if ... else if ... else ... end statements.
jtc> Unfortunately it doesn't seem to work.

Stan> Try:
Stan> 	   if ($status == $TASK_READY)
Stan> 		   printf "READY    "
Stan> 	   else
Stan> 		if ($status == $TASK_DELAY)
Stan> 		   printf "DELAY    "
Stan> 	   else
Stan> 		if ($status == ($TASK_DELAY | $TASK_SUSPEND))
Stan> 		   printf "DELAY+S  "
Stan> I think the else and the if each need to be on their own lines.

It turns out to be something like:

	if ($status == $TASK_READY)
		printf "READY    "
 	else
		if ($status == $TASK_DELAY)
			printf "DELAY    "
		else
	 		if ($status == ($TASK_DELAY | $TASK_SUSPEND))
				printf "DELAY+S  "
			else
				....
			end
		end
	end

Pretty ugly (IMO).  It will suffice as a workaround, but I'll have to
look into how difficult adding "true" else-if support will be.  Would
an `elif' keyword be objectionable?  What are the current thoughts
wrt. adding a more capable extension language for gdb scripting?

	--jtc

-- 
J.T. Conklin
RedBack Networks