swarm.defobj
Interface Customize

All Known Subinterfaces:
ActionGroup, ActivationOrder, ActiveGraph, ActiveOutFile, ActivityControl, Archiver, Array, Averager, BehaviorPhase, BernoulliDist, BooleanDistribution, C2TAUS1gen, C2TAUS2gen, C2TAUS3gen, C2TAUSgen, Ca2d, Collection, Colormap, CompoundAction, ConcurrentGroup, ConcurrentSchedule, ControlPanel, ConwayLife2d, Create, CreatedClass, DblBuffer2d, DefaultProbeMap, Diffuse2d, Discrete2d, DoubleDistribution, Entropy, Error, EventType, ExponentialDist, EZBin, EZDistribution, EZGraph, EZSequence, FArguments, FCall, FunctionGraph, GammaDist, Grid2d, GUISwarm, HDF5, HDF5Archiver, Int2dFiler, IntegerDistribution, KeyedCollection, LispArchiver, List, ListShuffler, LogNormalDist, Map, MessageProbe, MT19937gen, Normal, NormalDist, NSelect, Object2dDisplay, Permutation, PermutationItem, PMMLCG1gen, PMMLCGgen, ProbabilityDistribution, Probe, ProbeDisplayManager, ProbeLibrary, ProbeMap, PSWBgen, QSort, RandomBitDist, Schedule, SimpleRandomGenerator, String, Swarm, SwarmObject, SwarmProcess, Symbol, UName, UniformDoubleDist, UniformIntegerDist, UniformUnsignedDist, UnsignedDistribution, Value2dDisplay, VarProbe, Warning, Zone

public abstract interface Customize

Create-phase customization.. Some types accept create-time messages not only when creating a new instance, but to customize a new version of the type itself. Objects created from a customized type will have all options preset that create-time messages sent to the customized type object have already set. If many objects all need the same create-time options, it is often simpler (and can also be faster) to create a customized version of a type first, and then create further instances from that type. Customizing a type object does not modify the original type object, but instead creates a new type object that has the customizations built-in. A create: message on the new type object creates a new instance as if the same sequence of create-time messages had been sent to the original type object using createBegin: and createEnd. A type is customized by bracketing the sequence of create-time messages not with the createBegin: and createEnd messages used to create a new instance, but with customizeBegin: and customizeEnd messages instead. Whether a customized version of a type can be created depends on the implementation of the type itself. If a type does not support customization, a customizeBegin: message on the type raises an error. All types defined by an @protocol declaration may be relied on to support at least one cycle of customization to create a new type object. Whether an already customized type object (returned by customizeEnd) supports a further cycle of customization (by another sequence of customizeBegin:/customizeEnd) depends on the implementation of the original starting type. A type should not be relied on to support more than one cycle of customization unless it is specifically documented to do so.