me@anywhere.EBay.Sun.COM (Wayne Thompson - IR Workstation Support SE) (03/07/91)
This is an extension of a couple of subroutines posted by Brandon a couple of weeks ago. Enjoy Wayne # This package implements lists of lists functions. # Brandon S. Allbery (allbery@NCoast.ORG) developed the first two and # I filled in the rest. Wayne Thompson (me@Sun.COM) package listolists; $gensym = 'gensym00000000000'; sub main'pushlist # pushlist(ARRAY,LIST) { local(*l1, @l2) = @_; local(*sym) = $gensym++; @sym = @l2; push(@l1, *sym); } sub main'poplist # poplist(ARRAY) { local(*l1) = @_; local(*sym) = pop(@l1); @sym; } sub main'shiftlist { # shiftlist(ARRAY) local(*l1) = @_; local(*sym) = shift(@l1); @sym; } sub main'unshiftlist { # unshiftlist(ARRAY,LIST) local(*l1, @l2) = @_; local(*sym) = $gensym++; @sym = @l2; unshift(@l1, *sym); } sub main'setlist # setlist(ARRAY,INDEX,LIST) { local(*l1, $index, @l2) = @_; local(*sym) = @l1[$index] || $gensym++; @sym = @l2; @l1[$index] = *sym; } sub main'getlist # getlist(ARRAY,INDEX) { local(*l1, $index) = @_; local(*sym) = $l1[$index]; @sym; } sub main'splicelist # splicelist(ARRAY,INDEX,OFFSET,LENGTH,LIST) { local(*l1, $index, $offset, $length, @l2) = @_; local(*sym) = @l1[$index] || $gensym++; @sym = @l2; splice (@l1, $offset, $length, *sym); } 1;
me@anywhere.EBay.Sun.COM (Wayne Thompson - IR Workstation Support SE) (03/23/91)
I've sent this out before but it never showed up. If you've seen this before, send a note. If you're seeing this now, an ack would also be appreciated. Having trouble posting Wayne # This package implements list of lists functions. # Brandon S. Allbery (allbery@NCoast.ORG) developed the first two and # I filled in the rest. Wayne Thompson (me@Sun.COM) package listolists; $gensym = 'gensym00000000000'; sub main'pushlist # pushlist(*ARRAY,LIST) { local(*l1, @l2) = @_; local(*sym) = $gensym++; @sym = @l2; push(@l1, *sym); } sub main'poplist # poplist(*ARRAY) { local(*l1) = @_; local(*sym) = pop(@l1); @sym; } sub main'shiftlist { # shiftlist(*ARRAY) local(*l1) = @_; local(*sym) = shift(@l1); @sym; } sub main'unshiftlist { # unshiftlist(*ARRAY,LIST) local(*l1, @l2) = @_; local(*sym) = $gensym++; @sym = @l2; unshift(@l1, *sym); } sub main'setlist # setlist(*ARRAY,INDEX,LIST) { local(*l1, $index, @l2) = @_; local(*sym) = @l1[$index] || $gensym++; @sym = @l2; @l1[$index] = *sym; } sub main'getlist # getlist(*ARRAY,INDEX) { local(*l1, $index) = @_; local(*sym) = $l1[$index]; @sym; } sub main'splicelist # splicelist(*ARRAY,INDEX,OFFSET,LENGTH,LIST) { local(*l1, $index, $offset, $length, @l2) = @_; local(*sym) = @l1[$index] || $gensym++; @sym = @l2; splice (@l1, $offset, $length, *sym); } 1;