From: Moritz H. <mo...@gm...> - 2007-06-15 15:01:53
|
Hello, the current ooRexx version has a very nice feature, the mutable buffers. A while ago I started implementing an auxiliary class that represents a mutable buffer section. This has the use to work on a single mutable buffer and being able to pass parts of it to other methods without coying the content or passing the positions. The section class offers the same mehtods the mutable buffer class offers, only that these are modified to work only on the sequence. There are also methods that modify the length of a mutable buffer and would change the length of a section as well. When the length of a section is changed the underlying buffer is modified too. Let's assume there are more than one sections for a mutable buffer. If a section at the beginning deleted a part it will become shorter. The problem is that the buffer shortens as well, which causes the other sections later in the buffer to be invalid, pointing to different positions. To overcome this problem I though about a register of sections per buffer that is managed in the section class, not the instances. A section would tell the manager that there was a length change and the manager would update the other sections. So far, so good. What happens if the application doesn't need a section anymore? It will not be garbage collected as it is still known by the manager! Well, to solve this issue there could be weak references, references that do not increment the reference counter. Such objects can be garbage collected wihtout a problem. The manager would know this way which objects are invalid as the weak reference would return .nil instead of the object. I think the java approach for implementing them is quite well, is it possible to transfer it to rexx in some way? Well, it's just a thought, but I think it could be useful for the language! Best regards, Moritz PX: Once finished I will publish the section class. -- GMX FreeMail: 1 GB Postfach, 5 E-Mail-Adressen, 10 Free SMS. Alle Infos und kostenlose Anmeldung: http://www.gmx.net/de/go/freemail |