I painted myself into a corner with the file size feature in the File object. I can't remember why I only used a uint32 to store the file size, but it was certainly a DUH! move. Now I have a file larger than 2 gigabytes that I have to have in a disk list and need to decide how to make that work.

So now I see four possible ways to proceed:

  1. Just change the code so it will allow up to a 4 gigabyte file.
  2. Use the most significant bit to signal it is a larger size.
  3. Modify the class and all of the objects to a larger size.
  4. Make a new revision of the Class Definition class.

Option one has the advantage of being the most minimal change at this time. However, it just postpones the problem until there is a file larger than 4 gigabytes. Then we have the same problem again, only option two is no longer available.

Option two seems like the biggest kludge. The file object would have to be changed to be a variable sized object which could get messy.

Option three would be pretty clean, but would require modifying all existing objects. Would need to change the version string to identify that something incompatible had changed. Also it would be very time consuming. And finally it would be a pain, in the unlikely case, that someone else was actually using this system.

Option four was the method I had originally envisioned for making changes to classes. However I don't know at this time how difficult it will be. Theoretically, it should handle the case of old objects without converting them.

I think I am going to try option four. It should be the minimal trouble for other users, if any. And it will be a good test of the class modification concept.

Copyright © 2007 – J. Scott Edwards