÷ƒ’À;è TeX output 1998.01.28:1947‹ÿÿÿÿ “ºâ ýxºâïcolor push Blackïhtml:ï html:ŸüfdŽŽŽ’Ôï color popŽŽ ^ºâ ýÆïhtml:ï html:ŸIyóÓߌ˜¼j ptmb7t½Pr |obing–/and“Displaying“the“Contents“of“aŽŸâ SwarmObjectŽŸ?Z‘ó3{Ù ptmr7t¼Contents:ŽŸ Ûïhtml:ï html:¤ïhtml:ï html:Ÿ2ʶ‘0ïcolor push Blackóßêï html:Probe‘?ýOverviewïhtml:ï html:Ž¡ïhtml:ï html:©2éj‘0ïcolor push Black2.ï color popŽŽ‘<ïhtml:ï html:The‘?ýFrameworkïhtml:ï html:Ž¡ïhtml:ï html:¦‘0ïcolor push Black3.ï color popŽŽ‘<ïhtml:ï html:Precision–?ýsetting“for“floats“with“Probesïhtml:ï html:ޤ8äïhtml:ï html:©0°†‘0ïcolor push Black4.ï color popŽŽ‘<ïhtml:ï html:SwarmObject–?ýSupport“for“Probingïhtml:ï html:Ž¡ïhtml:ï html:¦‘0ïcolor push Black5.ï color popŽŽ‘<ïhtml:ï html:ProbeDisplayïhtml:ï html:Ž¡ïhtml:ï html:¦‘0ïcolor push Black6.ï color popŽŽ‘<ïhtml:ï html:ProbeDisplayManagerïhtml:ï html:ŽŸ‘0„¤ŽŽŸ ïhtml:ï html:ŸG®ïhtml:ï html:Ÿ;¥Ô’Æ©ªóÓߌ˜G® ptmb7t¿Ov•ÓÅer“viewŽŸ ¢Âïhtml:ï html:ŽŸ*ºâïcolor push Black’Ôï color popŽŽŒ‹* “ºâ ýxºâïcolor push Blackïhtml:ï html:ŸüfdŽŽŽ’Ôï color popŽŽ ^Ÿ³ØR‘:“]ïCPSfile="eps/complete.eps" llx=131 lly=135 urx=480 ury=627 rwi=3490 ŽŽºâŸïhtml:ï html:Ÿ‘0„¤ŽŽŸG®ïhtml:ï html:ŽŸ*ºâïcolor push Black’Ôï color popŽŽŒ‹_ “ºâ ýxºâïcolor push Blackïhtml:ï html:ŸüfdŽŽŽ’Ôï color popŽŽ ^ ýÑžâºâ¿The‘QëFramewÓÅorkŽŸ!áºâ¼Probes,‘ˆ)ProbeMaps–†ˆand“ProbeDisplays“alloÀw“the“user“to“dynamically“interact“with“the“objects“in“their“simulation.‘-/Byޤ ºâïhtml:ï html:óßêï html:Ÿ ™t‘0¾The–?ýkey“to“this“capability“is“the“Probe:‘ úin“general“a“probe“takes“an“object“and“eitherŽ¡‘0extracts–?ýthe“value“of“a“specific“variable,“or“calls“a“specific“method.‘ úFor“this“purposeŽ¡‘0we–?ýprovide“two“subclasses:‘ úïhtml:ï html:VarProbe“and“ïhtml:ï html:MessageProbe.Ž©8äïhtml:ï html:Ÿ ŠÈ‘0There–?ýare“two“main“uses“for“probes:‘ úthey“can“be“fed“into“data-collection“objectsŽ¡‘0and–?ýserve“as“interfaces“to“the“objects“about“which“data“is“being“collected“(thus“keepingŽ¡‘0the–?ýdata-collection“objects“as“general“as“possible)“-“the“Averager“class,“for“example,Ž¡‘0directly–?ýsubclasses“MessageProbe.‘ úOr,“they“can“be“used“in“order“to“generate“a“GUIŽ¡‘0to–?ýthe“individual“objects“in“the“simulation“(the“more“common“usage).ަïhtml:ï html:Ÿ ŠÈ‘0In–?ýorder“to“generate“a“graphical“version“of“a“given“probe,“the“programmer“must“placeŽ¡‘0it–?ýinside“a“ïhtml:ï html:ProbeDisplay,“which“will“automagically“generate“a“window“with“the“appropriateŽ¡‘0interface.‘ úSince,–?ýmore“often“than“not,“the“programmer“will“want“to“generate“windowsŽ¡‘0with–?ýmore“than“one“variable,“we“have“designed“the“ProbeDisplay“to“deal“with“ïhtml:ï html:ProbeMapsŽ¡‘0rather–?ýthan“individual“probes.‘ úThus,“by“generating“a“ProbeMap“containing“exactlyŽ¡‘0the–?ýright“probes,“a“user“is“able“to“customise“the“window“generated“by“the“ProbeDisplay.ަïhtml:ï html:© ŠÈ‘0In–?ýorder“to“facilitate“the“creation“of“all“these“different“objects,“the“Swarm“kernelŽ¡‘0provides–?ýsome“alternative“methods“for“Probe/Map/Display“generation:ŽŸ 8äïhtml:ï html:Ÿïhtml:ï html:¦‘0ïcolor push Blackó\ùð pzdrÁlï color popŽŽ‘:¾Direct–?ýGeneration“-“which“leaves“the“user“in“charge“of“all“the“details.ŽŸ8äïhtml:ï html:¦‘0ïcolor push BlackÁlï color popŽŽ‘:¾Object–?ýGeneration“(ïhtml:ï html:Probes/ProbeMaps)“-“where“we“use“method“calls“(defined“in“SwarmObject)Ž¡‘:on–?ýa“given“target“object“to“generate“the“Probe/ProbeMap“for“that“object.‘ úThis“allowsŽ¡‘:the–?ýobject“to“be“aware“that“it“is“being“probed“and“to“control“directly“the“contentsŽ¡‘:of–?ýthe“Probe/ProbeMap“being“requested...ŽŸ8äïhtml:ï html:¦‘0ïcolor push BlackÁlï color popŽŽ‘:¾Library–?ýGeneration“(ïhtml:ï html:Probes/ProbeMaps)“-“where“the“programmer“"checks“out"“a“unique,Ž¡‘:shared–?ýcopy“of“a“Probe/ProbeMap“from“the“ïhtml:ï html:probeLibrary“object“(of“class“ïhtml:ï html:ProbeLibrary)Ž¡‘:provided–?ýby“the“kernel.‘ úBy“shared“we“mean“that“a“similar“request“made“at“a“differentŽ¡‘:point–?ýin“the“code,“will“return“a“reference“to“the“very“same“probe“instance.ŽŸ8äïhtml:ï html:ïhtml:ï html:¦‘:ÀNote–?ýthat,“by“default,“Object“Generation“is“equivalent“to“Library“Generation“sinceŽ¡‘Hthe–?ýdefault“behaviour“of“SwarmObjects,“when“requested“to“create“a“ProbeMap,“isŽ¡‘Hto–?ýreturn“a“reference“to“the“probeLibrary's“unique“copy!!!ŽŸ8äïhtml:ï html:Ÿïhtml:ï html:¦‘0ïcolor push BlackÁlï color popŽŽ‘:¾ProbeDisplayManager–?ýGeneration“(ïhtml:ï html:ProbeDisplays)“-“where“the“programmer“generatesŽ¡‘:a–?ýProbeDisplay“directly,“by“requesting“it“from“the“ïhtml:ï html:probeDisplayManager“object“(ofŽ¡‘:class–?ýïhtml:ï html:ProbeDisplay)“provided“by“the“kernel“(in“graphics“mode).‘ úThe“probeDisplayManagerŽ¡‘:will–?ýcreate“the“ProbeDisplay“based“on“a“ProbeMap“given“to“it“by“the“probed“object.Ž¡‘:Note:‘ úsince–?ýthe“probeDisplayManager“is“only“created“in“graphics“mode,“it“is“documentedŽ¡‘:in–?ýthe“simtools“area“of“the“documentation.‘ úHere“we“emphasise“simply“that“in“orderŽ¡‘:to–?ýgenerate“a“ProbeDisplay“onto“an“object“the“programmer“need“only“write“the“followingŽ¡‘:line–?ýof“code:ŽŸïhtml:ï html:ŽŸ*ºâïcolor push Black’Ôï color popŽŽŒ‹Ò “ºâ ýxºâïcolor push Blackïhtml:ï html:ŸüfdŽŽŽ’Ôï color popŽŽ ^ ýБ%ºâó0ˆÛ pcrr7tÂ[probeDisplayManager–ffcreateProbeDisplayFor:“anObject]“;ޤ ¯‘/ºâ¾And–?ýthat“the“contents“of“the“returned“ProbeDisplay“will“be“based“on“a“ProbeMap“obtainedŽ© ‘9ºâfrom–?ýthe“probed“object“itself.ŽŸ‘/ºâ„¤ŽŽºâŸ ïhtml:ï html:ïhtml:ï html:¡‘0Probe–?ýsupport“resident“in“the“ïhtml:ï html:ïhtml:ï html:objectbaseïhtml:ï html:Ž¡‘0À(objectbase.html)Ž¡‘0¾library–?ýis“documented“with“that“library.‘ úExtra“description,“above“and“beyond“theަ‘0bare–?ýinterface“description“for“precision“probing“and“SwarmObject“is“below:ŽŸ‘0„¤ŽŽŸG®ïhtml:ï html:ŸL¿Prš°gecision–Qësetting“f‘hor“ oating-point“numbers“with“pr˜obesŽŸê”ïhtml:ï html:ŸS/óÓߌ˜ff ptmb7tÃGlobal–™™setting“of“pr½«ecisionŽŸ ‘ýïhtml:ï html:Ÿ ¡‰‘0¾There–?ýare“two“types“of“global“precision“setting“via“ïhtml:ï html:ProbeLibraryïhtml:ï html:Ž¡‘0(objectbase/ProbeLibrary.html)Ž¡‘0:ŽŸ ïhtml:ï html:Ÿïhtml:ï html:ïhtml:ï html:¡‘:-setDisplayPrecision:‘ ú(int)‘?ýnSigFigsSavedŽŸ8äïhtml:ï html:¤ VË‘XSets–?ýthe“number“of“significant“figures“for“floating“point“(and“double-floating)ަ‘Xnumbers–?ýdiplayed“on“a“GUI“widget.‘ úCurrently“this“is“only“implemented“forަ‘XVarProbes.‘ úThe–?ýdisplay“uses“the“%*g“sprintf-style“formatting,“which“can“varyަ‘Xslightly–?ýfrom“implementation“to“implementation.‘ úIf“you“set“the“number“ofަ‘Xsignificant–?ýfigures“to“3,“then“a“float“of“value“of“0.6344346“is“displayedަ‘Xas–?ý0.634“on“the“GUI“widget.‘ úNote“that“this“in“no“way“affects“the“underlyingަ‘Xstored–?ývalue“of“the“floating“point“number.ŽŸ8äïhtml:ï html:ïhtml:ï html:¡‘:-setSavedPrecision:‘ ú(int)‘?ýnSigFigsSavedŽŸ8äïhtml:ï html:¡‘XSets–?ýthe“global“default“for“the“saving“of“floats“through“ObjectSaver.‘ úAllަ‘Xobjects–?ýwith“floats“and“doubles“as“instance“variables“are“saved“with“the“precisionަ‘Xspecified–?ýby“this“method.‘ úThis“is“ïhtml:ï html:independent“of“the“displayed“precisionަ‘Xof–?ýthe“same“instance“variable“on“a“GUI“widget.ŽŸ¯¼T‘ÿ37o–ó¡actually“initialise“these“defšægaults:‘Óhin“the“top“leÀvÙ el“sw˜arm,‘´you“should“add“the“calls“to“the“global“ProbeLibrary“instanceަ(which–äÜis“actually“created“by“the“initSwægarm“call“in“main)“during“the“-“createBeÙ gin“method“(this“sets“the“precision“inަthe–·®global“instance,‘Å™ïhtml:ï html:¾before“¼anÙ y“probes“are“checkæged“out“of“the“instance.‘À¡If“neither“method“is“called“on“probeLibrary‘ÿY ,ަthen–€the“precision“defægaults“to“six“signi cant“ gures“in“both“cases.ŽŸ *8ïhtml:ï html:ïhtml:ï html:Ÿ ew‘0¾Example:‘ úHere's–?ýhow“it's“done“in“ïhtml:ï html:ÂHeatbugObserverSwarm.m¾:ŽŸ8äïhtml:ï html:¡‘0Â+–ffcreateBegin:“aZoneޤ ¯‘0ó©±Ê cmsy9ÄfŽ¡‘:ÌÌÂHeatbugObserverSwarm–ff*“obj;Ž¡‘:ÌÌid–ff“probeMap;ŽŽŸ*ºâïcolor push Black’Ôï color popŽŽŒ‹û “ºâ ýxºâïcolor push Blackïhtml:ï html:ŸüfdŽŽŽ’Ôï color popŽŽ ^ ýФ @R‘:‡®Â[...]Ž¡¡‘:‡®probeMap–ff=“[EmptyProbeMap“createBegin:“aZone];Ž¡‘:‡®[probeMap–ffsetProbedClass:“[self“class]];Ž¡‘:‡®probeMap–ff=“[probeMap“createEnd];Ž¡‘:‡®ïhtml:ï html:ó0ˆÛ pcrb7tÆ//–ffset“the“display“defaultsŽ¡‘:‡®Â[probeLibrary–ffsetDisplayPrecision:“3];Ž¡‘:‡®ïhtml:ï html:Æ//–fftypically“saved“precision“would“be“higher“than“displayed“precisionŽ¡‘:‡®//–fffor“statistical“and“data“analysis“purposesŽ¡‘:‡®Â[probeLibrary–ffsetSavedPrecision:“10];Ž¡¡‘:‡®//–ffAdd“in“a“bunch“of“variables,“one“per“simulation“parametersŽ¡‘:‡®[probeMap–ffaddProbe:“[probeLibrary“getProbeForVariable:“"displayFrequency"Ž¡‘ETzinClass:–ff[self“class]]];Ž¡‘:‡®[...]Ž¡¡‘:‡®//–ffNow“install“our“custom“probeMap“into“the“probeLibrary.Ž¡‘:‡®[probeLibrary–ffsetProbeMap:“probeMap“For:“[self“class]];Ž¡‘:‡®return‘ffobj;Ž¡‘/ºâÄgŽºâŸ¦fïhtml:ï html:ŸHÃSetting–™™prš½«ecision“f£×or“indiÛ$vidual“pr˜obesŽ©ä)¼The–w‚formatting“for“an“indiÀvidual“probe“can“be“set“directly›ÿY ,‘y5using“a“sprintf-style“formatting“string.‘ÃT‘ÿ37ypically˜,‘y5ïhtml:ï html:Âcustom-ޤ ProbeMaps–Hk¼are“created“in“the“ïhtml:ï html:Â+‘ffcreateBegin“¼fšægactory“method“for“a“Sw˜arm“or“a“Sw˜armObject.‘T‘ÿ37o“set“the“formattingŽ¡for–€a“ oating“point“probe,“the“method“from“ïhtml:ï html:ïhtml:ï html:ÂVarProbeïhtml:ï html:ަ(objectbase/VarProbe.html)ŽŸ @R¼is‘€used:ŽŸ ´ïhtml:ï html:Ÿïhtml:ï html:ïhtml:ï html:Ÿ !ž‘:¾-setFormatFloat:‘ ú(const–?ýchar“*)floatFormatŽŸÕSïhtml:ï html:Ÿ jÿ‘Xis–?ýapplied“to“the“instance“of“the“VarProbe“"checked-out"“of“the“global“probeŽ¡‘Xlibrary–?ýinstance.‘ úThe“sprintf-formatting“string“can“"over-ride"“the“"%g"Ž¡‘Xformat–?ýset“by“the“global“precision“(as“above)“(Typically“"%g"“chooses“betweenŽ¡‘Xthe–?ý"%f"“and“"%e",“depending“on“the“size“of“the“exponent“-“which“is“implementation-dependentŽ¡‘X-–?ýthis“method“allows“you“to“explicitly“set“the“type“of“display).ŽŸ 8äïhtml:ï html:© n‘0In–?ýthe“following“example,“it“is“desired“that“the“number“of“significant“figures“forŽ¡‘0the–?ýfloating“point“variable“ïhtml:ï html:ÂrandomMoveProbability“¾is“three“(3).‘ úCurrently“(SwarmŽ¡‘01.0.5)–?ýthis“is“only“works“for“ïhtml:ï html:ÂVarProbes“¾and“not“ïhtml:ï html:ÂMessageProbes¾,“as“yet.ޤ8äïhtml:ï html:ïhtml:ï html:¦‘0Example–?ýHere's“how“it's“done“in“ïhtml:ï html:ÂHeatbugModelSwarm.m¾:Ž¡ïhtml:ï html:¦‘0Â+–ffcreateBegin:“aZoneޤ @R‘0ÄfŽ¡‘:ÌÌÂHeatbugModelSwarm–ff*“obj;Ž¡‘:ÌÌid–ff“probeMap;ŽŽŸ*ºâïcolor push Black’Ôï color popŽŽŒ‹(v “ºâ ýxºâïcolor push Blackïhtml:ï html:ŸüfdŽŽŽ’Ôï color popŽŽ ^ ýБ:‡®Âid‘fffloatProbe;ޤ \¡¡‘:‡®[...]Ž¡‘:‡®ïhtml:ï html:Æ//–ffthe“-setFloatFormat“is“applied“to“the“probe“which“isŽ¡‘:‡®//–ff"returned"“from“the“call“to“probeLibraryŽ¡‘:‡®ÂfloatProbe–ff=“[[probeLibrary“getProbeForVariable:“"randomMoveProbability"Ž¡‘ETzinClass:–ff[self“class]]Ž¡’ò!:setFloatFormat:‘ff".3f"];Ž¡¡‘:‡®//–ffnow“we“have“the“probe“-“put“it“back“into“the“customMapŽ¡‘:‡®[probeMap–ffaddProbe:“floatProbe];Ž¡¡‘:‡®[...]Ž¡‘:‡®return‘ffobj;Ž¡‘/ºâÄgŽ¡ºâ¼Or™Ÿ,–€more“compactly:ŽºâŸ*8ïhtml:ï html:Ÿ 2i‘0Â+–ffcreateBegin:“aZoneŽ¡‘0ÄfŽ¡‘:ÌÌÂHeatbugModelSwarm‘ff*obj;Ž¡‘:ÌÌid–ff“probeMap;Ž¡¡‘:ÌÌ[...]Ž¡¡‘:ÌÌ[probeMap–ffaddProbe:“[[probeLibrary“getProbeForVari-Ž© ‘0able:‘ff"randomMoveProbability"Ž¡‘E™˜inClass:–ff[self“class]]Ž¡’Ì™ŽsetFloatFormat:‘ff"%.3f"]];Ž¡‘:ÌÌ[...]Ž¡‘:ÌÌreturn‘ffobj;Ž¡‘0ÄgŽŸ‘0„¤ŽŽŸG®ïhtml:ï html:Ÿ ¿SwarmObject–QëSupport“f‘hor“Pr°gobingŽŸºÖ¼As–«¬mentioned“earlier™Ÿ,‘¶—all“SwšægarmObjects“can“generate“Probes/ProbeMaps.‘œœBy“def˜ault,‘¶—thešÙ y“achieÀv˜e“this“by“"checkingަout"–€the“appropriate“references“from“the“probeLibrary‘ÿY .ŽŸ ˆmïhtml:ï html:ïhtml:ï html:Ÿ 2i‘0¾Interface‘?ýdefinitionïhtml:ï html:Ž¡‘0(objectbase/SwarmObject.html)Ž¡‘0from‘?ýïhtml:ï html:objectbaseïhtml:ï html:Ž¡‘0(objectbase.html)Ž¡‘0library.ŽŸ 8äïhtml:ï html:Ÿïhtml:ï html:ïhtml:ï html:Ÿ #½‘:-–?ý(const“char*)getInstanceNameŽŸ8äïhtml:ï html:ŽŸ*ºâïcolor push Black’Ôï color popŽŽŒ‹4p “ºâ ýxºâïcolor push Blackïhtml:ï html:ŸüfdŽŽŽ’Ôï color popŽŽ ^ ýБWºâ¾If–?ýyou“want“to“put“a“specific“title“on“the“ProbeDisplay“window“associatedޤ ‘Wºâwith–?ýyour“object,“simply“override“this“method.‘ úBy“default“it“returns“theŽ¡‘Wºâclass–?ýname“of“the“object.‘ úThis“is“why“the“default“ProbeDisplay“window“titleŽ¡‘Wºâis–?ýalways“the“class“name“of“the“probed“object.Žºâ©8äïhtml:ï html:ïhtml:ï html:Ÿ,!‘0Note:‘ úSwarmObjects–?ýdo“not“actually“have“an“instance“variable“called“"instanceName"Ž¡‘0-–?ýso“if“you“want“to“store“a“name“for“your“object,“you“will“need“to“provide“your“ownŽ¡‘0storage–?ýat“the“subclass“level“and“rewrite“ïhtml:ï html:getInstanceName“to“refer“to“this“variable.ަïhtml:ï html:ïhtml:ï html:¤,!‘:-–?ýgetProbeForVariable:‘ ú(const“char“*)aVariableަïhtml:ï html:ïhtml:ï html:¡‘:-–?ýgetProbeForMessage:‘ ú(const“char“*)aMessageަïhtml:ï html:ïhtml:ï html:¡‘:-‘?ýgetProbeMapަïhtml:ï html:ïhtml:ï html:¡‘:-‘?ýgetCompleteProbeMapŽŸ‘0„¤ŽŽŸ¼jïhtml:ï html:Ÿ;/½Prš |obe–/support“r˜esident“in“the“ïhtml:ï html:óÚ¶Û%¼j ptmbi7tÇsimtools“½library:ŽŸåïhtml:ï html:Ÿ2Ñ8¿Pr°gobeDisplayŽŸ8«:¼The–€ïhtml:ï html:¾ProbeDisplay“¼class“is“meant“to“servšÙ e“a“dual“role,“represented“by“the“twægo“e˜xample“windoÀws“on“this“page:ŽŸ —ïhtml:ï html:ŽŸ*ºâïcolor push Black’Ôï color popŽŽŒ‹;Õ “ºâ ýxºâïcolor push Blackïhtml:ï html:ŸüfdŽŽŽ’Ôï color popŽŽ ^ þØ‘wMqïEPSfile="eps/customized.eps" llx=192 lly=244 urx=420 ury=517 rwi=2280 ŽŽºâŸïhtml:ï html:Ÿ ·O‘0¾On–?ýthe“one“hand“if“an“object“to“be“probed“is“specified“ïhtml:ï html:Àwithout‘üo¾any“particular“ïhtml:ï html:ProbeMapޤ ‘0being–?ýspecified,“then“the“ProbeDisplay“generated“will“provide“a“window“of“class“DefaultProbeDisplay,Ž¡‘0which–?ýdisplays“all“the“variables“resident“in“that“class“structure.ŽŸ8äïhtml:ï html:© ~k‘0On–?ýthe“other“hand,“if“a“ïhtml:ï html:ProbeMap“ïhtml:ï html:Àis‘üo¾specified“then“the“ïhtml:ï html:ProbeDisplay“follows“exactlyŽ¡‘0the–?ýspecification“as“represented“by“the“contents“of“the“ProbeMap“(above).‘ úWhen“usedŽ¡‘0in–?ýthis“manner,“ProbeDisplays“can“generate“tailored“interfaces“to“objects“(so“forŽ¡‘0example,–?ýwe“have“purposefully“hidden“certain“instance“variables“in“the“HeatbugModelSwarmŽ¡‘0class,–?ýand“have“shown“only“one“of“the“methods“which“the“class“understands).ŽŸŸJïhtml:ï html:ŸÆÃGraphical–™™Interface“UsageŽŸ î&ïhtml:ï html:¤ïhtml:ï html:Ÿ É)‘:¾Common–?ýto“both“the“standard“ProbeDisplay“and“the“CompleteProbeDisplay:ŽŸ8äïhtml:ï html:¡ïhtml:ï html:¡ïhtml:ï html:¦‘Xïcolor push BlackÁlï color popŽŽ‘b¾The–?ýdifferent“fields“in“the“ProbeDisplay“can“be“updated“by“typing“in“newޤ ‘bvalues–?ýand“pressing“ïhtml:ï html:Return.‘ úHowever,“certain“fields“(containing“pointersŽ¡‘bor–?ýids,“for“example)“cannot“be“modified“and“will“generate“a“beep“if“suchŽ¡‘ba–?ýmodification“is“attempted.ŽŸ8äïhtml:ï html:¦‘Xïcolor push BlackÁlï color popŽŽ‘b¾If–?ýan“instance“variable/argument“slot“is“defined“to“hold“an“object,“thenŽ¡‘bthat–?ýobject“can“be“drag&dropped“into“another“variable/argument“slot“by“clickingŽ¡‘bon–?ýit“with“the“ïhtml:ï html:first“mouse“button“(a“small“rectangle“with“the“name“of“theŽ¡‘bobject–?ýwill“appear“-“simply“drag“it“to“another“object-typed“variable/argumentŽŽŸ*ºâïcolor push Black’Ôï color popŽŽŒ‹ B» “ºâ ýxºâïcolor push Blackïhtml:ï html:ŸüfdŽŽŽ’Ôï color popŽŽ ^ ýБaºâ¾slot–?ýand“release“the“mouse“button).ŽºâŸÕSïhtml:ï html:Ÿ Vp‘Xïcolor push BlackÁlï color popŽŽ‘b¾Also,–?ýif“an“instance“variable/argument“slot“is“defined“to“hold“an“object,ޤ ‘bthen–?ýthat“object“can“be“inspected“by“clicking“the“entry“for“that“variable/argumentŽ¡‘bslot–?ýwith“the“ïhtml:ï html:third“mouse“button(a“ProbeDisplay“for“that“object“will“beŽ¡‘bgenerated).ŽŸ8äïhtml:ï html:¤ïhtml:ï html:© òß‘:Available–?ýonly“on“the“standard“ProbeDisplay:ŽŸ8äïhtml:ï html:¡ïhtml:ï html:¡ïhtml:ï html:¦‘Xïcolor push BlackÁlï color popŽŽ‘b¾Note–?ýthat“the“sunken“label“at“the“top“of“the“ProbeDisplay“is“also“active.ޤ ‘bBy–?ýclicking“on“it“with“the“ïhtml:ï html:first“mouse“button“you“get“a“drag&drop'able“representationŽ¡‘bof–?ýïhtml:ï html:Àself‘¼r¾.‘ úBy“clicking“on“it“with“the“ïhtml:ï html:third“mouse“button“you“get“a“CompleteProbeDisplayŽ¡‘bto‘?ýïhtml:ï html:Àself‘¼r¾.ŽŸ 8äïhtml:ï html:¦‘:Available–?ýonly“on“the“ProbeDisplay:ŽŸ8äïhtml:ï html:¤ïhtml:ï html:¡ïhtml:ï html:¦‘Xïcolor push BlackÁlï color popŽŽ‘b¾The–?ýgreen“"superclass"“button“can“be“used“to“display“the“succesive“superclassesޤ ‘bof–?ýthe“object“being“probed.ŽŸ8äïhtml:ï html:¦‘Xïcolor push BlackÁlï color popŽŽ‘b¾The–?ýred“"hide"“button“can“be“used“to“hide“classes“which“are“irrelevant“thusŽ¡‘breducing‘?ýclutter.ŽŸ8äïhtml:ï html:¦‘Xïcolor push BlackÁlï color popŽŽ‘b¾The–?ýhide“button“on“the“lowest“class“in“the“hierarchy“has“a“special“meaningŽ¡‘bsince–?ýclicking“on“it“dismisses“the“entire“ProbeDisplay.ŽŸ8äïhtml:ï html:¦Interface‘?ýdefinitionïhtml:ï html:ŽŸ+Ã(simtools/ProbeDisplay.html)ޤ +üfrom‘€ïhtml:ï html:¾simtoolsïhtml:ï html:Ž¡(simtools.html)Ž¡¼library‘ÿY .ŽŸ‘0„¤ŽŽŸG®ïhtml:ï html:Ÿè-¿Pr°gobeDisplayManagerŽŸ‰ø¼The–ù²normal“Swægarm“simulation“will“probably“only“eÀvÙ er“contain“one“instance“of“this“class,‘namely“the“probeDisplay-ޤ Manager‘ÿs8.‘eÚThis–™kobject“is“used“for“automatic“generation“of“ProbeDisplays:‘LngiÀvÙ en“an“object“it“will“attempt“to“get“aŽ¡ProbeMap–ºefrom“the“object.›ÈÈIf“the“object“does“not“respond“to“the“method“-“getProbeMap“(i.e.˜it“does“not“inherit“fromŽ¡SwægarmObject),‘Tthe–)±probeDisplayManager“will“query“the“probeLibrary“for“a“ProbeMap.‘«If“there“is“not“a“ïhtml:ï html:ÀProbeMapŽ¡¼installed–ùin“the“ïhtml:ï html:ÂprobeLibrary“¼for“the“class“of“that“object,‘;wit“will“creat“a“ïhtml:ï html:ÀDefaultProbeMap‘¼r¼.‘Û„It“will“then“create“aŽ¡ProbeDisplay–¿to“the“tarÑðget“object,›)fand“from“then“on,˜until“the“Probe“Display“is“remo•Ù v“ed–¿it“will“update“the“ProbeDisplayŽ¡when–€receiÀving“an“update“message.ŽŸ ˆmïhtml:ï html:ïhtml:ï html:Ÿ ‹‘0¾Interface‘?ýdefinitionïhtml:ï html:ޤ +Ñ0(simtools/ProbeDisplayManager.html)Ž¡‘0from‘?ýïhtml:ï html:simtoolsïhtml:ï html:Ž¡‘0(simtools.html)Ž¡‘0library.ŽŽŸ*ºâïcolor push Black’Ôï color popŽŽŒ‹ L1 “ºâ ýxºâïcolor push Blackïhtml:ï html:ŸüfdŽŽŽ’Ôï color popŽŽ ^ ýБ/ºâ„¤ŽŽºâŸ ïhtml:ï html:¤ ‘0ÀMarcus–?ýG.“Daniels“ïhtml:ï html:‘¼rïhtml:ï html:Ž¡‘0(mailto:mgd@santafe.edu)ŽŸ8äïhtml:ï html:Ÿ Ç‘0¾Last‘?ýmodified:‘ ú1998-01-08ŽŽŸ*ºâïcolor push Black’Ôï color popŽŽŒøZ˜ƒ’À;è—T~Óºâ óÚ¶Û%¼j ptmbi7tó0ˆÛ pcrb7tó©±Ê cmsy9óÓߌ˜ff ptmb7tó0ˆÛ pcrr7tó\ùð pzdróßê