The pending topics mechanism is very important concept in CS. I have reviewed the documentation and there really isn’t a lot of information about how the pending stack is manipulated. I have had times when I had to force a topic into pending and more times that I have been unable to get a topic out of pending.
Bruce would you tell us:
1) All of the circumstances that cause a topic to be added to the top of the pending stack.
2) All of the circumstances that cause a topic to be removed from any place in the pending stack
3) Any circumstances where ^poptopic() will not remove a topic from the pending stack.
By circumstances, I mean not only system functions like ^pending() ^end() and ^poptopic() but also things like ^respond() ^gambit() ^reuse() and rejoinders from the control script. Finally, are there special concerns if these things are called from a topic that is already in the pending stack?
I know this is a bit generalized. But I may not be the only person who is confused by this. I feel that I am writing a lot of code to organize my active topics that could be eliminated if I had a correct and complete understanding of the pending topics stack.
Thanks,
Stephen G.