At present the user is required to write marshallers for all non-built in types (see Section 2.5). In due course default version should be automatically generated. These would assume a memberwise marshalling strategy, with pointers causing deep copy (and char*'s assumed to be strings). But the user could write their own marshaller if they want any special behaviour.
This would have to be implemented by having the database keeping track of all objects that are passed in to active objects and then having a second pass outputting marshallers for these classes. We wouldn't want to try to write marshallers for all classes as such things as ostream etc. are likely to fail.
One way to implement it would be in terms of class_info and member_info classes that would give a natural migration path to EUROPA level 0. This is probably not the easiest eay to implement it though.
Automatic marshallers would probably have to be made friends of the classes they marshal: we could use this friendship declaration to pick up classes for which automatic marshallers are to generated.
Click here for more information on UCL-CS.