Squeak
  links to this page:    
View this PageEdit this PageUploads to this PageHistory of this PageTop of the SwikiRecent ChangesSearch the SwikiHelp Guide
Magma Supported Classes
Last updated at 12:09 pm UTC on 4 August 2006
Generically, Magma supports all four types of Squeak objects:

Fixed objects with named variables
Variable objects with indexed variables
Variable byte objects
Variable word objects

However, several kinds of objects require some additional handling which is provided by the hooks in Ma object serialization.

Unless otherwise noted, fixed objects with named and indexed variables probably don't work (I haven't tested them). They are rarely found and never required.

Supported classes

The objects supported by Magma is largely determined by the objects supported by its underlying serialization framework.

Unfortunately, this generic serialization and materialization is not sufficient for several kinds of Squeak objects. For example, CompiledMethods have a special nature and therefore require special processing. And globals such as Smalltalk are serialized and materialized "by name reference". These kinds of object make use of various serialization hooks such as pre and post-processing, transient variables, and storage objects.

Supported classes:




I discovered the following are not part of the test cases, yet I fully expect them to work:

Special note about Projects

There is a special test case written explicitly for projects. Currently, the following projects are tested:

(From MagmaTestCase class>>#projectsToTest)
^ #('Building with Squeak' 'Fun with Morphic' 'Fun With Music' 'SmalltalkIntroduction')

step 1: client2 expunges these projects
step 2: client1 commits these projects to the repository
step 3: client2 opens a workspace instructing you to enter each project and play around to see if they are working ok

It actually works! Well, almost.. Despite my efforts, there must be some further nuance to Etoys that I did not catch. While the projects tested do save and load and seem to work, I noticed something didn't get fully reconnected in the Building with Squeak project (driving a car). The car is drivable with the wheel, but only after nudging one of the script parameters up and then back down. I would be happy to work with someone who understands these nuances better than I to get ths fixed.

Special note about CompiledMethods, MethodContexts and BlockContexts

CompiledMethods, MethodContexts or BlockContexts are supported except if the block references "self" or any instance variable of the class. Calls to accessing methods should be used instead.

Also, you may not add a CompiledMethod, MethodContext or BlockContext to a Set or key of a Dictionary. However, you may reference them from other objects.


Special note about Morphs

The test cases do not explicitly test many different kinds of Morphs, just RectangleMorph, TextMorph, and a few others). However, the success of Projects requires the success of many other kinds of Morphs.

CAUTION: Unsupported


The following kinds of objects are not supported. They've never been tested and I don't expect them to work: