C comes to mind. Not sure what you mean by "this sort". But I'd not put much past JAWS script either way. <smile> -----Original Message----- From: jawsscripts-bounce@xxxxxxxxxxxxx [mailto:jawsscripts-bounce@xxxxxxxxxxxxx] On Behalf Of Soronel Haetir Sent: Thursday, January 05, 2012 2:35 PM To: jawsscripts@xxxxxxxxxxxxx Subject: [jawsscripts] Re: Resizing arrays Yes, jaws script objects are referenced counted, it's the same process that occurs if the variable were to simply go out of scope. I don't know that I've ever seen a language of this sort that requires manual memory cleanup. I suppose such might exist, but it would be very much the exception. On 1/5/12, Travis Roth <travis@xxxxxxxxxxxxxx> wrote: > Yes I thought the array copy was by reference as well. > > I have the same problem of not knowing array size in advance. > But it does look useful that you can just make a new array on the > existing variable, I hadn't realized that was possible. Does the old > array just stop existing when new is called again? We've lost access > to it but I am just wondering if JAWS does any garbage collection. I > am thinking in the case of the default scripts, where those global > variables are in existence until JAWS is unloaded, if garbage > collection does not automatically occur using new repeatedly would start to > be a memory leak. > > Like the ideas... Thanks everyone. > > -----Original Message----- > From: jawsscripts-bounce@xxxxxxxxxxxxx > [mailto:jawsscripts-bounce@xxxxxxxxxxxxx] On Behalf Of Doug Lee > Sent: Thursday, January 05, 2012 1:55 PM > To: jawsscripts@xxxxxxxxxxxxx > Subject: [jawsscripts] Re: Resizing arrays > > A couple clarifications: > > First, to me at least, a "deep copy" is a full duplication of > something with all subparts. My understanding of "s2 = s1" where they > are arrays is that, in JAWS, only the pointer is copied. It still > works for your usage though, so this is mostly just behind-the-scenes stuff > for this case. > > Second though, your code assumes array sizes, and most of my cases > don't have a clue in advance what size to use. As an example, consider > code that creates a structure of information for each entry in a chat > window. If the process of counting entries is as expensive as that for > actually retrieving them, there's no reasonable way to know in advance > how big to make the array. A collection becomes more efficient in this > case, because it is dynamic while still being amenable to random access. > > On Thu, Jan 05, 2012 at 03:59:00PM -0300, Andrew Hart wrote: > I don't understand your need for collections in order to use arrays > globally. You just create the array at the size you need. If you > need to add to it, you just fob it off to a local variable, assign a > new larger array to the global var and then copy the array elements in > the local var to the global one. Then, to finish, you erase the copy > of the array by assigning it an unassigned array var of the same type, > much as you would do with Object vars. > > For example: > > Var > StringArray s1, > StringArray S2, > StringArray NULLStringArray > s1 = New StringArray[5] > ; fill the array with stuff > ... > ;Copy the array (this is a deep copy, not a shallow copy that only > ;passes a reference pointer) > s2 = s1 > s1 = New StringArray[10] ; make the array bigger ; Now copy the > contents of > s2 to s1 For i = 1 To 5 > s1[i] = s2[i] > EndFor > ; erase the array. > ; Since JAWS performs deep array copies, it should reduce s2 to its > ;minimal memory footprint, allowing the space to be reclaimed by the > ;heap when appropriate conditions prevail > s2 = NULLStringArray > > > If you're serious about regularly resizing arrays, I'd recommend > making a few functions using the relevant bits of the above example > for resizing arrays of different types. You'd pass the array being > resized by reference (using ByRef in the function declaration). Also, > as this is a linear time operation, doing it a lot could slow things > down if you are dealing with big arrays. Tricks for dealing with that > are to always make the array bigger than what you need. For example, > you could always double the size of the array whenever you run out of > space and then resize it to conserve memory by removing unused > portions later if it is not likely to be added to for a while. > > Hth, > Andrew. > > On 5/01/2012 2:32 PM, Travis Roth wrote: >> Perhaps a combination of a collection and an array would work then? >> The documentation states that a collection can hold arrays. So when a >> new array is wanted, delete the old one in the collection and make a >> new > one. >> >> I am not sure what type of performance that'd give, but might be >> another workaround. >> >> The reason for not just creating new arrays is I need them to be >> global, and there'd be no way to keep track of the names, or at least >> not a practical way. >> Bbut a collection may solve that. >> >> -----Original Message----- >> From: jawsscripts-bounce@xxxxxxxxxxxxx >> [mailto:jawsscripts-bounce@xxxxxxxxxxxxx] On Behalf Of Doug Lee >> Sent: Thursday, January 05, 2012 11:26 AM >> To: jawsscripts@xxxxxxxxxxxxx >> Subject: [jawsscripts] Re: Resizing arrays >> >> JAWS 12 introduced a CollectionRemoveItem function for that. >> >> On Thu, Jan 05, 2012 at 11:23:32AM -0600, Travis Roth wrote: >> Kind of messy but I see your reasoning. >> How do you remove an item from a collection? >> >> >> -----Original Message----- >> From: jawsscripts-bounce@xxxxxxxxxxxxx >> [mailto:jawsscripts-bounce@xxxxxxxxxxxxx] On Behalf Of Doug Lee >> Sent: Thursday, January 05, 2012 10:21 AM >> To: jawsscripts@xxxxxxxxxxxxx >> Subject: [jawsscripts] Re: Resizing arrays >> >> In the absence of knowledge of a way to do that, I've been using >> collections as dynamic arrays, where the keys are things like >> intToString(i). You do need to stringify the keys though. When I do >> that, I also sometimes include a count key that I keep updated when >> adding or removing elements. This also allows for efficient sparse >> arrays but does complicate their management a bit and precludes >> things like inserts/deletes where elements slide in to fill the hole >> or make > room. >> >> On Thu, Jan 05, 2012 at 10:17:13AM -0600, Travis Roth wrote: >> Is it possible to resize arrays in JAWS script? >> It appears that the arrays are dynamically sized at runtime because >> the new keyword is used. >> But the documentation on the website does not seem to discuss >> destroying or resizing arrays? >> This may not be an issue for local variables, but I am thinking for a >> global array where at some point it may be desireable to store >> something larger than was originally set for. >> >> >> >> __________??? >> >> View the list's information and change your settings at >> //www.freelists.org/list/jawsscripts >> >> -- >> Doug Lee, Senior Accessibility Programmer SSB BART Group - >> Accessibility-on-Demand mailto:doug.lee@xxxxxxxxxxxxxxxx >> http://www.ssbbartgroup.com "While they were saying among themselves >> it cannot be done, it was done." --Helen Keller __________o?= >> >> View the list's information and change your settings at >> //www.freelists.org/list/jawsscripts >> >> >> __________??? >> >> View the list's information and change your settings at >> //www.freelists.org/list/jawsscripts >> >> -- >> Doug Lee, Senior Accessibility Programmer SSB BART Group - >> Accessibility-on-Demand mailto:doug.lee@xxxxxxxxxxxxxxxx >> http://www.ssbbartgroup.com "While they were saying among themselves >> it cannot be done, it was done." --Helen Keller __________o?= >> >> View the list's information and change your settings at >> //www.freelists.org/list/jawsscripts >> >> >> __________??? >> >> View the list's information and change your settings at >> //www.freelists.org/list/jawsscripts >> >> >> > > > __________??? > > View the list's information and change your settings at > //www.freelists.org/list/jawsscripts > > -- > Doug Lee, Senior Accessibility Programmer SSB BART Group - > Accessibility-on-Demand mailto:doug.lee@xxxxxxxxxxxxxxxx > http://www.ssbbartgroup.com "While they were saying among themselves > it cannot be done, it was done." --Helen Keller __________o?= > > View the list's information and change your settings at > //www.freelists.org/list/jawsscripts > > > __________ > > View the list's information and change your settings at > //www.freelists.org/list/jawsscripts > > -- Soronel Haetir soronel.haetir@xxxxxxxxx __________ View the list's information and change your settings at //www.freelists.org/list/jawsscripts __________� View the list's information and change your settings at //www.freelists.org/list/jawsscripts