home *** CD-ROM | disk | FTP | other *** search
- /*
- Listing 26.4 Stack-Based Functions to Save/Restore GETs
- Author: Greg Lief
- Excerpted from Grumpfish Library
- Copyright (c) 1988-91 Greg Lief
- */
-
- //───── NOTE: must compile with the /N option!
-
- static getstack_ := {}
-
- memvar getlist
-
- // GFSaveGets(): save current gets
- function GFSaveGets()
- aadd(getstack_, getlist)
- getlist := {} // clear out current gets
- return len(getstack_)
-
-
- // GFRestGets(): restore last-saved gets
- function GFRestGets(ele)
- //───── use LIFO (last item in array) if no parameter was passed
- ele := if(ele == NIL, len(getstack_), ele)
- //───── preclude empty array */
- if len(getstack_) > 0
- //───── pull GETs from last element in array
- getlist := getstack_[ele]
- //───── truncate length of array only if using LIFO
- if ele == len(getstack_) .and. pcount() = 0
- asize(getstack_, len(getstack_) - 1)
- endif
- endif
- return nil
-
- // end of file CHP2604.PRG
-