| /************************************************************************ | |
| * * | |
| * Name: D2ARRAY.T (Version 1.0) * | |
| * * | |
| * Function: Simulates a two dimensional array using a list. * | |
| * * | |
| * Author: John Baker (baker-j@ix.netcom.com) * | |
| * (if address becomes invalid in the future, * | |
| * post to rec.arts.int-fiction) * | |
| * * | |
| * Notes: This code is public domain. Do with it as you see * | |
| * fit. No warranties whatsoever apply. * | |
| * * | |
| * This wasn't especially hard to write, nor did it take * | |
| * very long, but hey if it's already done you may as well * | |
| * save yourself some time and use it. :) * | |
| * * | |
| ************************************************************************/ | |
| d2Array: object | |
| myContents = [] | |
| maxX = 0 | |
| maxY = 0 | |
| dimension (x, y) = | |
| { | |
| local scratch, i, j; | |
| /* Array must have positive size */ | |
| if ((x <= 0) or (y <= 0)) | |
| return (nil); | |
| /* If this is an existing array, all previous information is lost */ | |
| while (car (self.myContents)) | |
| self.myContents := cdr (self.myContents); | |
| /* Set dimensions */ | |
| self.maxX := x; | |
| self.maxY := y; | |
| /* Initialize all array postions to nil */ | |
| for (i := 1; i <= x; i++) | |
| for (j := 1; j <= y; j++) | |
| self.myContents := self.myContents + nil; | |
| /* Let calling function know we completed happily */ | |
| return (true); | |
| } | |
| isDimensioned () = | |
| { | |
| if (self.maxX = 0) | |
| return (nil); | |
| return (true); | |
| } | |
| /* If we were being strict about OOP, we'd include GetMaxX and */ | |
| /* GetMaxY functions, but we'll let other routines just access the */ | |
| /* properties to get these values. */ | |
| get (x, y) = | |
| { | |
| /* Make sure we have happy params */ | |
| if ((x <= 0) or (x > self.maxX) or (y <= 0) or (y > self.maxY)) | |
| return (nil); | |
| return (self.myContents [((x - 1) * self.maxY) + y]); | |
| } | |
| put (x, y, source) = | |
| { | |
| /* Make sure we have happy params */ | |
| if ((x <= 0) or (x > self.maxX) or (y <= 0) or (y > self.maxY)) | |
| return (nil); | |
| self.myContents [((x - 1) * self.maxY) + y] := source; | |
| return (true); | |
| } | |
| ; | |
Xet Storage Details
- Size:
- 2.96 kB
- Xet hash:
- d69e8ddbe28ee9e74b22c6ed88f865f82cb387a75e9fe0abaeb46a2188fa6147
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.