swarm.defobj
Interface Customize

All Known Subinterfaces:
Action, ActionCache, ActionCall, ActionChanged, ActionConcurrent, ActionForEach, ActionForEachHomogeneous, ActionGroup, ActionTo, ActivationOrder, ActiveGraph, ActiveOutFile, ActivityControl, ArchivedGeometryWidget, Archiver, Arguments, Array, Averager, BasicRandomGenerator, BehaviorPhase, BernoulliDist, BinomialDist, BooleanDistribution, C2TAUS1gen, C2TAUS2gen, C2TAUS3gen, C2TAUSgen, Ca2d, Canvas, CanvasAbstractItem, CanvasItem, Collection, Colormap, CommonProbeDisplay, CompleteProbeDisplay, CompleteProbeMap, CompleteVarMap, CompositeItem, CompoundAction, ConcurrentGroup, ConcurrentSchedule, ControlPanel, ConwayLife2d, Create, CreatedClass, CustomProbeMap, DblBuffer2d, DefaultProbeMap, Diffuse2d, Discrete2d, DoubleDistribution, EmptyProbeMap, Entropy, Error, EventType, ExponentialDist, EZAverageSequence, EZBin, EZDistribution, EZGraph, EZSequence, FAction, FActionForEach, FActionForEachHeterogeneous, FActionForEachHomogeneous, FArguments, FCall, GammaDist, Graph, GraphElement, Grid2d, GUISwarm, HDF5, HDF5Archiver, Histogram, Int2dFiler, IntegerDistribution, KeyedCollection, LinkItem, LispArchiver, List, ListShuffler, LogNormalDist, Map, MessageProbe, MT19937gen, MultiVarProbeDisplay, NodeItem, Normal, NormalDist, NSelect, Object2dDisplay, OvalNodeItem, Permutation, PermutationItem, Pixmap, PMMLCG1gen, PMMLCGgen, PoissonDist, ProbabilityDistribution, Probe, ProbeDisplay, ProbeDisplayManager, ProbeLibrary, ProbeMap, PSWBgen, QSort, RandomBitDist, Raster, RectangleNodeItem, Schedule, SimpleProbeDisplay, SimpleRandomGenerator, SingleProbeDisplay, SplitRandomGenerator, String, Swarm, SwarmObject, SwarmProcess, Symbol, UName, UniformDoubleDist, UniformIntegerDist, UniformUnsignedDist, UnsignedDistribution, Value2dDisplay, VarProbe, Warning, Widget, Zone, ZoomRaster

public 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.