A few minor changes to the SVN code. The unused LinkedList classes are now in a separate “bonus” folder, along with the SimpleScreen/SimpleWindow classes and the newly-converted HashMap classes.
I’ve implemented a fix for the gadgets-on-the-stack problem. Rather than have a major rethink and rejig things, I’ve just made all gadget destructors protected. Classes with non-public destructors can’t be instantiated on the stack. Problem sorted. It would probably have been possible to work in a more cunning fix and actually allow gadgets on the stack, but as that’s not such a good idea (due to the 16KB stack limit) it seems a little foolish to waste time and effort on allowing it.
Lastly, I’ve started inlining constructors, destructors, getters and setters (where possible/appropriate), and I’ve been making the code more const-correct as I go.
All of this has shaved another 8KB off the ROM size.