From a662b176bb035359c590792d692beb782ca8232f Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Sat, 17 Oct 2009 02:15:28 +0200 Subject: [PATCH] WIP test-driven brainstorming: what is a Scope? --- doc/devel/uml/fig136325.png | Bin 23017 -> 23252 bytes doc/devel/uml/index.html | 2 +- .../proc/mobject/placement-scope-test.cpp | 71 ++++++++++++++++-- uml/lumiera/136325.diagram | 2 + 4 files changed, 69 insertions(+), 6 deletions(-) diff --git a/doc/devel/uml/fig136325.png b/doc/devel/uml/fig136325.png index 7aa5b52890c63f554d7a00ddc8078b462693409a..4df084bb6b83584293637c283b1dd680203ab1d1 100644 GIT binary patch literal 23252 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 literal 23017 zcmb@ubzD{Jw?4W63CTq$2#YR}l5T-TDkTC^(jeX4C`hLuNOzZXm&Bq31f)Ys8l*$w zzPQi#obNg3-p}X$?&q#QHhVAjob#P?j(3b_JkK)-d8sIagGq`Bfk1Gc%Syh2K#&b(AT^7+n2B%j3Fd zOj0||d2~ZTnQr%Mb(Jo$FWK>9iaviNEx5MWp{lVC68M*XWH>JP!SpT~1$_I0Y8CuP zGy#SH_>pt(|G!_UX{tjW<6?Ij>!6zZ)sZ5PSVJBB_?O&5N{Xp8NqXX)A3!oVHZ;H* zsOX^%;Nr6Pol1~Kcw%B=y1MEXeVAvHAYwuz{YZzoN5pb71Bubm%w_!$NEa3yH=2Ea zF@4+MJ~efSVc~s<*bcaf5YMAu`#Cwji;XA5JoNNyIiG$w2sNp_eJhuh9Yqu1apoe9 zVL&3p!t!H$T=eNvTxzH5OA)f<2eq}ut(O*fzAJfoc?O58`r5NRzaC&z#ICHxz1pptmGpUMcy!42;Nfe#2H{FE3rvVuI9S2`qEc@t!AE}E zg@-s1J{}&l1x%TlOq!Zx1N{U81F>$+x9$twv$GA&!W^un5bD+SvuoEyRwj0(6b>T- z-!wnJ4H3`QC+tdtLpL6qqa*<@eSC=EvT~MR+HUcLTv&<=WEX0!`##cthle@aJuNLN za(2L+u3;7iKp=(z9gfywZ=PbW__8tb@|xb>q~pQPXXfTITH>lqneixuC&!N! z6%>9T5Y7`U+So=bZubK#+?&Hl0`Yx06BT`Lz2o~-t-B|Hx8 zcxi6gB$l({7E)BS^5<+lSo88Ub!J9O-m6QGg~Q0wa`t<6_tKI%D(Y-$i3VKdd?KdB zWZQChC&MMgvyrpq+3ViU;N7QAf7ZIgL^zij>-!4OQy~gAG*jRUS zCd7zc+=wAQ+}RmVMMY_$UYU}x%J9lfCzA;Ru?G=OC#B-3FBzbu@!8bIrZ5QctG@nI zUS1%8h2ZnCMomwrV2pD|jS644iNx_<}qil8ODmLZW_4$-xgyWay_Zl~vU@NmZ z_5h8V+qtMFeG$)fpO=)xEI0QxiFpi4_jM9dR`Up z+>mB!EL~Yy;yDr((a;t|Z@o~dRaM6P40axI@t$t;@i1*JVq~rlC(q4&9Usrz*!Fxt zd`s)SxquT-QrWFSy=lN@8 zbdWrPmpXa4IKNg_4U;}%otQ{-UF&BJc&V>nlAk~Jqqy*FPejn`To~RvdFH7y#xYsG ze|DI(yxDNl8T8uF#ng0QcQzp~Fz@Qx)zR2^B9@VTdpqh|+V0QIhEHCMWTF-V<0h%k zbnq!!f1mF9C-bt-RGNswAM?2~!wX7SDq1X>eXeZ|4Al#*oQEe7v_7ebY^z!itMV736!Os|tz)Z%$`*xwu-+_C=33 zSG2S}b82e7jo5t;!dth8oouano$VRuEt0RT@%3unTr#g;|G`6^bSPLOA#uZEVP-A; zd4BNmnfJIoOw{|5GcqB1GGL}y+R~EacH14=-0X)JXkf=06ghS4NiEYq>74N?+v#b@ zlHLn#GS|yvoJDWfpJ$8v+`P}oIVDl3bBcwoelOAB<_~ps+3qi>U}V~_IJxZhmlm1_ zM?Mp@(_h4=NnLsV z{`sf|wpBS%GQG07Nkm3wY|Ne1Ry3T}VpC3ve1Hb&rd_MW4S?nP%VFQXLc`uj{!~NF zyd7S;TSUm{)7Oh3gOQt4BH~gq)o;;Iwr8iL#2E1M^+aG%k(QCsqD0UTrO>H$xvoXm zj_I&&M6m2)jivMc!q#jZ`cM964y$uNe~JVKX7{Sk$fv>Nul}61`DVsT=)4wdKYqZx z4C2mRm;zqVdJ_{rp>MsLdGyQLyqpyB7{y$gd_zNp=A(^xm=CiVW5_m|+5LBsJOoZ9 z--()1SNxnjrZPVLt+m$VZbU@A#1G}PZIbyRkNpT@GNneX$?s}!#v94w;7ah9L*n1rOxso-!i!FlXA_|pi%CUNu|S^g>{fyzL3InEqPvM zcY)+uf-l%?6miXglKinMw?VU1oxN|OoYuIsQ8|%fBE3;uGKVk(o-m~=priGehwRM& zQg!BU^&5_G*6k-F5&=y@@C|dL6@6B)8|FeE@G(E>QTY6YjTMJ_b+pM<*5OboF;U+6 zb4&DpBUKoxlNt4@OC{!E5o8etT0M12b{LCwqI0%+I-U+x#ifh_6D5%IX38lOM~jux z$BWgS!^4w6^{Fr&{)$5u+z_v+aj&QAvyfm~U;iixCmpM>mzq~|cO28F^`YD{z4VSH zXqBlQe|jW^h;=)pQtT!UAcpN%Dl%kbq9w&)Z@y5KR=NH!lkFXo$>s^^kh(yKY$ zQqnmdZ}moXAP7^`t+VO>`T_0XLj`u-!K>9+0+^|h#$Y1X>$0*nRMbDMH-g(eI1XHx zI$7<3xok7TUB(w@i?j0SJ{S4vyz=R|r7(!!s}T-Pf(_T}y{?c>A(v)Li&ttYjwc7y zW0nFi6;IEA5mi0CfRRZq)5zN^$AIWZ$=8#m+QzjU3=GJqhxw{{4a=s6aQWh=B;$st zbLC}wtFHu0M4i9yu5s7YiBb?x`i@Yc#Xe{7`Lz)Yt#omo7dBNijqhzUC=6@W)3M%M zeh;m*b0BDZIEsE3srKV2uI}O;m&Z;ux-Aq7P3yLX4!`DwXmpah8=WsI3tO)H;^LlN z|FNvn@YQWJ-dpWrVkI{*dz=NHo`Im?BJsmWn9ynW3gW?s595ZZEiD)8yI22O(cG^! z=jv9Uk!WhX?X6xi%rc#3v$f^J*^8sbyu4J+tc@B9YvbeD21nkpe7z>Oik1g4oM2Bm z5gu3um2IAyZElO2n~@Zi&M)M@o0#xM!!|Rw!3__g9_!@dTvjhLE-E~E^z`Sf5uzF! zd)fcJYN9+v0$Ez(bf1*%V1MZ0fwBqbtd=%PR#rhbrYgHIS5>i`dHKyafEEN{X=DTh zTgzDjUgwV`I=}by2vk&HWXid_Z{p(%v+=ReX2;4ARcxGWZgLW zV#0vp-4x0@bO=EJ3_|w-gLh;D$?qO`0e$ar`5>|YM@JI`i$L0CMPu~1x`~eai(z$QTK*vY7%Nf# znY)K3b<6rH?0FC)TTKL0B)qn}S~l9+ z3w!fN6J@1s_SrSLQW@OumaYQWo=;QGQ3ez_{qV1I+07|? z89QYvK1M^;PF4KqzO%U{J1R_3ZnwWMQ}kr5K~+%(AVQB98Kv1N=w{s#O)g3{aQM(r z>V10p$})^-dj8ADSdFmHjY#hwi}yE?EF@${gPPct-Pv@1LylU#h|Fwq59tL4JW{fE zH{$W33I{*w3*2TAq+V7Gfsa|gZ6i1DoA|^gb9c-V`ZWVwZ>FRygx!rQIOq2_m@ECJ zP>gW_w!?9dgfU^0q1+SOL8?S%XOHHGAy!s=$G<0*XK`xEnEH5KMJ->tPmXizlO$ge zlP1x`8{YqO`XCY}psx1g`_$Cg*AJpl_#N_{OB~B>45@fV)4o(W`*ZicSbtpEr`YId zC=AB(jh=yiO-3@uc5Z{mrce1lJ;@ zIY|(wr@Q(b{beiJ_Tje_^FQDC!j_j`_aJVAZ|cYaHcmdaq+ zvGW3es<`1`55vO@-JhQ|`TbMV^E5>a!~1;X>&ij>n}w0g+t3J{{^2M%hP#`UG{*FF z>HkFFnR3*^Zodbo-F1vsRD$`Okaj7kH0$RqEi7Kh%Qw3pG4OOxPd5}5VImGvQc`{t ztAkI~^v?5GhUu9Z-6j_t#6eL}(S1UOsi~>@`ub+K1H*|DO^nRjt94QJa^0Hh>gtM$ zipt8Ok`lU5DU4E`CYP>Y{Cve!3rkB{;)LX6=IBxC0BB?a^j1|>l|KdhPzje&LP`o1 zAy-t47d;Jy|M-Fax;*WA+Vm2<4+DcVe{{?0+J}Vh@vO<8q^MA2*JaT_1Cq(l#zvxNlh@I-IS6@cfCMGE*Fs{#y zRyW5MJ>3NeDNT$6G_}c!in&BDjKvI>)vvf3n`Y@5gXUU1`Jeeb@Xvg|Lchz}{q?K< zr4t#&K25{rszaUE_>nCJYirN(kA-(|(jZ1EEP`vnK4*lMwYBxDSFaQlBI@eu($Xk+ z0G}Yl$Y^?Xeh`F99vT{oiGd-jpuoe+TUK1G{Y78g#3Z+^%~xJNJUiRy_3PJCQc^xX z&jJm!w6tt&Yz__%RPy8nT=(Wa(#!F~a4RI$)hBVtcyn@dcjp?82H4wRT^tgM*zIP;EHZr5WT5)+?~;3WyM<_M#oFTCw%_A zqo^nxk5UUAXUliFD_14o=Xxn<&8sRQdW_F@!qn8(xT3oAt8krFpM{l|$GYOm)kQ4W zC3B6RSYL8DG-zr0w_Wzr($U2rI#H1GXahiNq^a$>u{O|WZ4Dlt66i4-9oBqhZc_z+ zT!NM+-KQ~pg+F0H0;8rb4lH55?RFJVBc!C)jn&`%uG(ka>(R4tH_$G2HNqkyoLybd z4h}9Z*3(;>o5#n;3z$HEHqSZ+HE*)__5>@ZcYhp{KRVt*wfWe^(KY%>v-@?&8A%jR1cv+Q!0l#7L7LIh22TnukaEYi(UdO8U~= z9EV|4P3;i|wX<_xUER^?ZV*`6_MQ!+ljcg#=FZF~ZIv-7xwq5L_EuVHv#l*$QLp;o z&O$DZgW0CDxRJG1kCWQM&G`>l2ip_h!XlrALM<#;6w_Omn)Y$8ZvLbKYD*%}EIQ2X zbmt_A$5U7&)zHX4JY1SEWIPuNHVs=sopZ5%HA=NaS}r_@Yy&@}Hq&Eyb1Z+h*4oj| zE;uaA^Wrdfgb0QJ&oG`v^J7|Ca3U$2h?$w0k&%%?m3#`2IXZ*z;3|?5UgVa-3*D(g z>d?v4AnZrnu57b&a}b1F{T$X<-gH3`=dW+c;n1S8XLh$fk*TTo{WG(&xpvMESdmlp z`E?z3wFKd2OJA9~(vj1b-TL<1_IbF*jGn3BZ%7od4v>6Erm1u+U|@=GAY>=`}S$ifLDxFQc1^ zo)`^&Ug|2nceY2K%l4r}+sP@T=t*|trQa$bf#iE{IqvmRyZc%-)zt9t@$u2p(z3A) zjgQAAIh^ij;^9TfL{Xe=6Bio z92gk*?wz=@^7j=)l>htppXC`61{4$(YpbgzDJcz={`yKwK*)r_>&K5z*vjJs8Z0b+L|Do#A1~P@}`*57nnuA~j z2?HiiNwQRoE2%QGOM`I*=2cY2^v&vfr`(QfEH@?9$-KpTm1UuxVnM5yr$|2I{;hP& z3hKm?S3NmgJqcxdznfg~qQGZe z7|Blqql*GV7(m$kjkj`-F!dwL!{xia)igG zF0;vewzx3$0315+>2_&z%N-ay09 zFbn)n3{6Kz$JyB#ytu=(VepRL5e19%OZ%WVcyy`AZ*d~gOKAq{PZa1#7-e{AzM$0ZORiHxQu=BLE-2R>| z)7jaHg^3B46_AI4x=ZmP$BEo>8NMsxPZ?O!9=~7I9YzdpHYgyVzNzWY#f7<<*-Mq+ zl>LR4;^Jc3JaFjf*qG_VK@SOBSka2Ku zfH;-GP*#~i!8?0Q2i_-w()s5Z#7t5}g^PxUhJ}TNk8iTG)1Ra)I*9-ZeQLif$;ilP z$mZ?s4VH?8g2v6qM~KvkKm@@?!HHohPXz_F^y}fAxm-V&D5SC^ML_4}6Ej0%8G5fr zBbJ$fwEZQ#8@`jtW43mz>bdAykEdY)dMv!>W)O+{53u+ezLN&Pp1*q?i2;og9~R%q zq`f0vJp895XhGw&+i`#jr8?~uz57y%Hg+nzI;z~od=}n|1bNKDBs!NJpl;XXq4N-q zn;}wfgyV!ku@^&lr(EW><^m{SB-#)%^(w9Q^%7BnLP4C=SjK!sg~mLB*q26W~yePauXs{4nO-Jl{_( zhM(MA3uJBrr6bE!*uC;@Ca{41ub){ zohBD+0ywB6RTY{X_J+~L+m{LKi!ZVI2AWhgG&Ef`UINSaS_lJUk3MA2u{PpYjI9a)307f+kOkNjJK?^Ex-L zjEk2-NBzvM<9%;`KlgHWm8sDiok>CgurA$tyU-6GI>Lw*(!Dqd5ppan@!ehb1O<~! zO;R6mN*et+l|cR=?0xx!byrpSyRDv&`Tq7cubsZ0MQCrtSPiwur;R#HbOtF@&xf+& zp2VJlgbs#Aj;HwzxLzkS1*krSts!1@pMBPPKm_&&o}VQGZis_|3RnHe@HrF{c2 z3APN4sgKWelxRFQ>3DjdF&*9N^1n2Y&x5{fvskS6sK;k!T#n7`-Q2XqJ6xEV<459L zc;zPHxO2|{i$`v`FO8CgrFi^&c)438IawPH|2Q|ldv!I(&3y^7&=J<|x3TY!UTd6R zPgT%Tiux#PXo%+(7hIiP1}99`US4KP1Y#Ezdw!0N4ucw2RI}@~n%LSVeRQbwy?qA9 zDg?ht@;K~?xcvP2!3tsQ2%~wX2K`y?!@lGShH*+rl zgtd6#S+%`w$-^z&*FUqdLfCCw1d0y8#u(oo5pYg+(>tBpDM)lG_w-~N898!tepN3E zS64B@B^g3!DuC9JR`f6zFM^$z62)sY!3m%=lHT)}5?rLppcpZEU>m@umG$YakHecO7wgaAk}ZJ0ztbaA zQ9JU2?j%VuQ}HjG)Fj@J5egV8Bm?U%;Qw8pG*dEP6u^V*ih=F zUXd<8SaB9eX$%f_a&~?Ts(XEZn;Qob;-IlHNG_r0j`apbto}tjx7ixlqo4nuyEB7# z|EJwq<@DQFM&DmMR)twvqfK>!HBcDB|NXM(nad+#w}~_nMksu;Y`*4;Mvt-JBNDgU ztD^@uGee10iQjH8shw73V}Lpb)Cj4`B1Ua#0|`abJ;V1xsYEC{GE}x(+my3Y;k36Y z+yYth1;9f6| zi#9g~^(u{%@_va~Py^-R`EvpH-};g+r#;N-MfmX6*2Uzc$Oa$pwuDI{rQuS_XVo8_ zHL81067bUOTP)+i zP)ftc&m?mOr5=?gM7*n1G0N!6I1n+1_x>Va*QP!5?lz2g^5pWmyp5t7LEva?3qQ_f5v|U|=D!m@c zC7)9w4%XM$f@c5a1sK*-!E(PiR8Sdf!XjQ)O1?HoR`i6x6 z%RUfKe6LSFKL-6@gWXcxeyh;P=qRt_uN+*gP;iqUkDp`v&a_9m+px6U>G zU}xQp1G;D1?afnHwk9B{!p)913;=u{O#QRl;Mj&QP-lzRZtu0)+tAVBiH#$pyr{Oa zzJB_%ql&$)dLM8S?J`{*5s1#h4_=3T5Htyst8@BfK2w|dtte=J|IAA@HA|}<&yA4_ zBSh=&54ni80;#Y!x0l-$L5OwGPi@JUHYzaTwn~OC-Re#7AVVILVs}b5KRBMQnoLSU zY0_edLIB}sdgD8mV(QG&FWyXogKk6Ooc8efp#Z`hQ*Bp_PNH>ucAYDP?8l3hUWgdb#*$ti#jOp}szG z401syGXPGJkdU$l?CtCdz^WY_fG#@;8Weo^I1wZ+6jtMq^K_1nLp=Lkt2kqKPY+(ABvQk!!{c=|bxsVGt4^LrX;l=s6>VI#T9TujmOlN0i zzy?1B6c7UggL>H;e4QcCBl20#5K&P09B(K;3{!jgQs2ZxN+IUz7m}E6uQIdDXs0*c ze^6P_E&hdn*O8a*%n%83vd6`tD?TdPqoLAP(6>cHMC3))!d7 zOC6p0Nj+b0u(~W6MKerDzeJ>#!1z+DdfASC{XT$F!XkA*-jvB9M6m?PkK5OW?$&Nm z5`%;L&9S{W!ppl2AYV~0HxegXlM{%VCWeg<$U}&xX%~_;ozYBjR|-eZfkh6oSD<{6u@us2z zfp~?c*{kQf*6e%RF=D3-q-2h{v)@aOt$&7mXKVdIex5@hKCrw?ky86{P`7xRl(^aA zdz-05IXN>!3&egkwM_;Fqh8_hwXMwv3><~N0cQFhl&J9IKa0+rGa3?N4)t%!+E3gq zLJw6@WP>(1CWzG3qdXnP`(uvn7Ox6c+_wL6AH8E^eY2jk0G1@MCX4Ir6|38#_MjwO zy+)cB7bzK76=P@o0TJ`*RqoZS*&2wCpU`PKyg5q0CF3-PI@j+{SCI#&05RCj-I`3m zVXrqvA}br^1MXRir|ZJk4=M$n-h`Evyeygo)>b=00LymqFEBA#Ca_#kv+bQ%n-c>5 zB!DdehWADam9_^3{SeZlf#QIiHn15Db1qT-Zdq@;p%ME4LqLo|3_-f9rwi%yMuGUz z#DINmuiU)U`p#^m3(1d-=;`X?1-nHc36rcg8sPw#LGu?Vr4`=uV>4c?K&yLz4DtII z?cJ;Vc@~q}1vz8&C)Eh`bPx>Ufw8B7a_D#KDcdTDh2dxU-!M}okC^AvpE%KcoR1De zABx_)LokqC`~&G5N)jLlfmA46Yr87C)!S->W5aw;gzh%=K14QB%$F43dG%C=`cE{< zFgQf)3?qW=5atYgD-ej;bICU`vlP73bqIRWa6fuY3U>d=)-X$fJJ1^M?9#4F) zfnVnP|5UX{(yr2{ksug%os$^;$nu=r>7>KY1w#nrB>^X{0LU#H0$Oi)P$5)*&0*bC z>3GW+f7d7W;$IjOGyGu?|6c?~6MgIEe}@+#(WH0K*UbJ05ybEA3qQk*?gnBYll>#6 zk5I6dB_TtAkOnS?7jBBZ*dTIPXm*c{i*o`Lp2Z8mmwx*6qbr24w6xUs&n{oU zNWgtU3Q?ao+S*|T8WMLO6b`IFumugk)_eEv9Y$tc91$}!vyhMw7gyEB#zu2<^VhF% zwgfr0_esdBIR9K#2d)U1TUps&z9_^^G>SvCMIiZYr+)69UYlPMg4t!=96VQ z<$7(>pw|YE6!-he99Dv-kn0{dC+Fq$*`id=Q<88{p*3O*r!WV(Q3&%l6XPxvFpUxR(a!;CL1&CUCUhA4Qgra+dM zl|wr8f2d~!p^E@PG~LFYFA+w}4%lSe`}geusd{uYHZqct_eG;bE`d!zK;Tn+JSizD zO~A81J5_fq3@LXnSaN3|4q-(9UEqoSg2Zf>@CoHV-br-4-48y)n3;wNjMz-_U$h}B$TA&C}N7&Nl=9^nT zimk1zf_vlQ;~AoXS2M%YjL<>$4O>Eoey}2b5m#r4OOqXlCGsr2-c4Su@Ex2+q*E4% zlX#R6Xl}r&!qR+6|2BOaE7YH?zJHX_V9J5mD`!#M-|#{5YyEjPORZ%^^EalYsBRC? z#6jcYcRI4Xh0!9`dlA&GZwbRi^z^(1HM6X&40L)qkxPLFQ%O9QC8ebRSOmuELc}m)NqP`<3gM7urX(d z5?EY_sJ52Y<>@Y1ZK#2UoE%ncAMgoDwE0|XX=^9Sztz?zi%IX$udb=NA17cr!D3#L zpOw9b7|MZU{N6aINib=SW&6%dMnrUcbL|O3Yy((xylG@??6f&b4@1Pp#sWK|nXxet zcLG+<8ywf=<>iA%htfpCR@@8>GAk;;{d#zK@bK{PM~ZqJn*lI3&Pm_$zF*?FOtr|i z=5S-s2FONl8a`e*0+JPjnj)&sa*_>@vnnboMn)?DKS5FcJfYC?I$CN-@!j}aP6_=> zySutHG&D-yGyn<4y4?>65lPPV^eGj>ZeVbb?yZ2sYHyxGG6*X!PEIHs?A2$_p2;&* z0p|C~lTfWZ7ImeHpI%05_cIV76w#mi`}=EadDYZ@fPXI2Y^RBM9v&U}UaTdE`=hl0 z#p`ru8dx*G%XW+`CzngMDIHLR{~Td(97)ep6|8dPz{bMEa|QU!#f6QH?V0b*6`ttT z)3<}4V;Pl5$;b%ZZ?2A%0KW_pL9k_Jh8)ppWX;fA_js&O>fL+Ub$_P;wI)Bd7ybG@ zGwA8XL|^Lm=B7KqGyyLa6^GuVVnN|JI5;CAo*3j{Wg%mjt>X> zf$nC<*!*`3fzSu*HE2MsGu48ursq4oAz~ywf`-xDRvr`-f9*OOd|v{jo`nTnDXHAj zQdTM|{gbU91SOB5&p{8;mGJ4-7g!V<^huJ ztG6^!It`Q$(~4@>echD}Gq!C~q&50m8M_(fcu;|{fU=B=)?+=h>bN;-mp--@g1;_Lu61=)0LJw>A9*pjw`0}d{bzJ!B(Ck&CNg}` z<8al)`?>;vDe!;P*4Udg7-k^sn(raxpik&;@O@o)P^qg;2I5(@YokRq90H75QSawL zI6jU=-#xwF7)LcV@`wm;_BYUVrYH7-@>gTyDT$w)rOj%A((ST0NPQGmf$S6$9W5p= zd*rmg-4;t%iOwdsqXaj5(N^ZB9@qk>* zGI#`fgop^GkZBYYQ#QS4RSgYmOP%Y!SN7{OHBDMt6yLwgq(AdM0dzxQDWIN24oMtx zMlyX54B__nb6HYlnVEfXEw{yh+yjXRm#~ZPDDyOVBtN z4Gs|W`BJA8OffYiWO1P-9}54!5$*`8@^e#PD2PnwE0qH|)!FG;O&y>2`BQdL(I=dv zO27bqtd0&b&yq6D5DtVfIc-!;zqP7Otf`^?&KR5Kqa|bd%zvq%P{0vjZ47F>sBak5 z!1ykCr*{LbFQD7?W>9L$FlLBOM6D=T%$wD+i zJ8JOuZLQaZ!}Cdy=URb@y|Qv>YNkxkemNmL+%Dkdi~boSL}+PAJb>P3$4+nz6BBFD zFY@r7ia2dtRTwRvZskf3`ke0k2o65hX?lIOSK8|B2`Cy`nIRn91tT;5(2i(Cxgexp zy4B_*1C$)do%s`G3R{!quEsg(xoa9(625zHYV+48I)jG6JNyHJ&!)`x{C6HOPy@y) zUAT|&t*c9|lS?f&j>5r_BdyS}>;BNu@!aKa1B#fS9pFSXF|>`cAqSsL(zIIs1yhv0e> z#&UqDC7cE!J3O=?>$G7z{jqy7Giqg{xcv0D>joiZ4EZH6Awc1zq}PEse~95`TdLbD z2sxk2P0q-bH)YW-gNJKe!66e9ywA%T)0>Y~EJ$hgg*v3*2I zi@m+U53OAwagSJS+@lc-Xm`P-F~btii*E~sTTbj896JH42PY@#H@#S(ixU!Zx0qLo z5VPw_Vmx^8phANsAUYvI9q3JlhRa22#R0z(Zk<8u+dPEXoATy~QCuwEK%72;sNHnk zK))xiS3xuMjWwlSRYmXiZmq#7z1w*8;AJ$kri?0ly1c?LBcV* z;m0H8gAZGMY2HV_zP&?1XHZHLwwdF%zzj41kR7a?kU?HnP7bJZ*qE5F)YR4-8v6SB z0F8q|jon$M+tTQ?`3hhMpi-BVu)q+&oc!;c4*b7p8h>#XdUkdts@$;RtHpWAtGM7z zrDu=6IGRS6@2hU!ww{alE>!#84rgW_U2F$JFPFnYz?4KGP6x=9yc`F&$78;qKGA;+ zak}bop%f z+&~;DJdsXs_2BfKO>8l)cZ0XYFevMuoJ|`)%=hWt`hW8S483y$4CgR@eH)tvUCej4 zF5v*p4~yQysJq@)^$}|lYy!A~LCu)&ySFF=7@|mWApju%Q7zH%D4Kz_;`i_0*)ma; z8YS=FBZJn;B6Ot4mn6N9@+MrN^ zVHuFzQ&U-SDR15aX9Os??w+>HY&S;Z1(}6~+bJo7ArpOb4Les?l^?M3xw(Y_;u1|@ zNlZ&>tZf-wSQruzAfBINSY5ZJP1lxH!lT^^gpzW-tq08nFpG~9Ozo6I;gONlz?qRc z`%a9M=*em?-aG2#Rn{%pxRK7ps}xM9SA2%6%iUqg$;m(#o|~V)zPbW!UjY*(*6seJ zf48AdqZ0_Y!s_brk&$S5K2AM!vxUOtT`#3KxWWtrU?zk+ORz}wN%&;Whc!O>AfSa^APSzbY*kO|q* z0V;h#j_;#1=XP-C6C@bI(vos8 z=>gD~D^FiQ4$%RiLV_w=CM4bqem6u|NPeY%IWgh z!vF$z_N0fn)9O(N?TOrEDY1Uqg_cw+2Z^;#ML?F`yTKY7rL&{T{-Y)+ zg?fM{`zQc*kS$HFd0hlz*_gl~?x+Da^Ue(=2TyQ<4*pYZD>eP#TQVPb(pO5Eu}olh zcj;6iqA2yM-YO_4d|T~{1=Ppx&JHm2LE-q{~b9&1^TIJ3;FMvr~-e>1}I2?!JWhSt@&g1+VaUI&jknmvC|W$!?e@?STNMoP5_9wD%YfqWHI)Tlam82DWGUWq5!oC76UJ+ zsX5vBp1riRv|8|HJT5Kc&+dMxD_`kLr#S_k+^MEd4;j7g-t9b}?iO@7?mqTC$p zHWq8&NXJM`&Bs55LLFeR12j*2Sc~_cXEa}D7k!gRuw*cRxsKCxXq{2CM#zMkc73l$4ZUWDf8Ok)%AB z)NwH}_yh!;=A${FGxa&>Cf-=FoB;I{I8hiCQ%LafJ48c?;g4Bacav>f6G7*#BznEN zyIY!QuBL_-6sxRC1k4E^-LTf}wg3_{GUD0;D$->6;@a((( zsI7&1O<+D2xUg7z+<+Uj?%?bUAOOxmOlj#ZsD&4%=}!&bx0~sJY%7joZfRM^7fS4` zT4obI_JbarM!S(autQ%%D{{U?2oE7=VL|%3Bp9$?oloOFlUTjYTi>I22L*1$7p?p- z#KGmIOi>Ybz{uXbI{e+ zHEPV&RqO3u6aCs+2-jPAnpeokS!X*JMPQgz=+AbpoDmd$*D6wTF6fhJOPL&|2qc3B z)F0aDd;8qwbh7Ox2~a0{KnL&p2;lBQizoX_qKL>Yq*@3^>!B5qm-??j`1_rx%)N>2GX@s%9x(FI4Zs~W-Uck9% zZ;t?_c-Z(x$ti`i+Yn5P!NWK?9?>38PL2Hb1rA%PfIwXG@sZy-o|bf*RP!Q-n#>Tu z)fNJ4gPfdzN}fjCCmqID|8wHgN#p(hFhj@zk3>PWx~iwCFW6K*w>N-TY5_XbNSkkZ zTInN5h7lN^P~BZ@Gq^aM(rp@Lx+S8X7 zV3OET=M6jvZ<3oEW@05Q2&s^#Y6%W%6jv zRWRsLqqiPlmS<#mZNK*YXSNf#1o7duwLR+Pd6>pcj_Xhk@fKSjAhgZavf|6qRo-U} z1xg4N*4cr*fNR<4*RMaXE*8DK-ZVBThWfiGF*!Ye85k=@!f}0rBg4bv3>5rU_+WK>6XJn^@9HVCAL8$hFheRNLPQB*6KzfJ*3}$BZ z`mCAJACuIpVEkp$nfyHQH<5?1{c`RoOR9UOXvZ>PLK8o={+S{NldDhaiSZ#O(*A)Y zkX>rTc0f6Y_xCIzj9@G<(A`Lbr^X*SwyZ!6fdGO&{+?n4^%g`7Ya|EtcuZFv+vz(v zGHhS8+5z${_*_R^8yzA5CW=O$2d&#fo&6kWT2Bve*Mg!^HUda(3)(m?_O&5btGAEu zcVYa;th$W&9g(^*TA$xRezznd6mVGxgcVF~G%*|8$qarz!TJ(SHc!Cy7tCDa(eJfW z>`=fE=ESytRyKMLjzsnNM<*Xm`)kPPNZ+D1pHF;hdM?ly zfz{qn^D&fm>gENimVlVme<>xIOrSHa0bL0XPiaAc7{-tBaiEM(gBEURs0?TfDIhLK z`}-{bn+?8eyFMk02{r)K>F2^ibA5d(_{QbQHZLzPV4L;4Paecj)6;hYI&^4gXmF4P z*!;{+JkItMSo`Pa$*ISuret+&baizBCP)~dm&?e5jDPoGBunTDXiqCDEELB$@Wr{u z*{=JNn;#|F2Wrrn(2f1kM?z%J{)vfrS;jUrT1{fIG5OH{)0XGPlHn^pLtO^5Nrxl;N7}SftHp2 z2+CwSlyY!*n8ab!lOo^jN#&P3hFdyXlHao9kvF25TZ7^ z6j6*$O3H0$a94WrGvqF^O#LvwG!MY80~HDeg8`JU+v>#xtOQQLpA17Nr3#wZ*!*u> zw=xmDx3?FlR~U!`fRqwHe~#X~A~X)msjvSmdmj_i4| z2NM(e#34~-05NTBo&f{`+JG!60!m6-LqkKb76XHrxH!7%z}*ipZ*NdZ_Ei#qgLZ3k z^J2Taji8h!lS%B@2VpNvMb+NbMaR$odFm&!XXqslv=`zj-qGGdBQ{w7hRweNnmQ^0 zw5>D%E{cmS6%`}FbVfjH=PM0-snOkU^p}x5GrOquNJ`u!ztMspo!C*GqI8WHs(`L= zZ=uB!><4a?6Z{k#7;4TJnovo2a+t0s(y~I3J_?eDKc&EY2ZidBFI6Dh$lm|Ev*+`x zZCf`f?ksU53jJ5VlK1Yi0gmF+&BzJQ==uZoiJA<;e>2QE;go8>tweP#L6SlVLUGS% zM}Jsf+{CCqizMZ5pmE=;*d!E(_=mXAouo_U!yn14;i%H_TITg#%JWBgH@9Uxp4m;2 zBSmkH1d@!{E28XD6uiY?e2}R8?lFmtzYDUx%f=ae{11CYzbm7kX1oFmf<*HR);gQ1 z8))6Bx6x=GQsi#u((u1|^t&=PMugyD13LABEJpJKB5+w6_tlsk|{Kf zgn(xI2_)n5-G#O-Zau+NVrx$iGo!*G53izD(?e=i#8SzZiu+0Y_ASNR$qDSVbMyFc zB{DL6z1a_+GlmBC(S2`4eJ{Wcu-IQH>FuQ`PppjIeLz(2Lu+F92lA2)OlsW<3eC2E z&D!h^OHB8w8!(}X%b!yxni!PL*K2PT^*x(m+?Q;5r>BUOrkv2h#!=|>}abaVqtZ3D5#|;YStSa;;`D5?sP7T5FxO;z8yk^F48ai=xL|?iUTnBO>D{@g-UU8L{`Y z1P&cXAvut=0pQ8z2k%4lZ-^2aH^v@Q1iX%Wa~F0mjiI)yn0K*>{Cy7c&{FKjaJJ?}!>kdM^{*=AJW?53rpc;s70kqKuP&u-6; zKsVZ9@OLvZoZfhxv31z<2D*El{MhgAHezMfPDfjy##uKzQLYh$ zglA=XQQ+VX{qUOV!P%DN=FB%4?YP8GoRZJKXrNnK(A6IaA}vR}=|p3eiY^G-Lv9O@=!RIg?iu>s{-WTif_N}pxk@oEMWO>5R^O%{LiuibA!J2?m zhqre8l4v)AFS(+4dH=6o&NL9pwr}G^RAh-P84XjnElXj>9x--<3??MoWKD#~*h)gy zxQpx}+f7DUvxMx#sIjkQ-(`syX5O=&-lyle-}l4w>G?XY3v-?4`M=Kd_#eN6{H~;g zwyj<{Ah{ZLP`VBpyB|g?4}>o{5MmIB7^R?hv~6}h>HTncPLE0OG(g=I2x%7@H-@(6 z)!B!>s6HxQOsaHKck|CmW!la3dMBc?4|ve0gI_P%(F(ArX2=1}x(FP_2}x=KroUNr zn2w{wJQo|=k~)L)9I3xQ;fItM8B0@BuG!YEm8lXbj9$ZFV*iDBKggJZ5)PMTAyNn) ze(cg`zG{_^45zDe>-Kj}TdIat4~o&@<8m3Q5@;GIRo)vg)rH+Gm@7x59way0vm`f{ zw#`5hSEfJ1;=DS`j+4%_|Am@k;mAym{H(03ZrelOMc|i5o6C3hJ~_zW8?W&j#Iq4c zL^<-x*!jKciuAl5WP!mzrA*c>m$0yQEp^=F3YRIP`Z4ou>rJow&uF#gqQttpZMeCy zQ>{fsLQtrQK14^GezWZAMd6ckN{*B>_HbN`hGEz`$xZ+}NU~&bCQPYWg>@ zu6_PQR9Kx2g$yXYe%v=(GYctWh090EDh*$_RQJ8lk{a}IhY0#W?q>1uP4pfe8=+o6 z)!G%kerD}o@u54V4fWi5b_vHXI1iFb%w*hj-X2+@L|;0f_>>D($whlxhk@6TjgnJX z&^3cMVJD}e0}@HJ9&gBx1Gvxn`c^;BmTU?FX9NS8Egg4AEfAiK(U^9TPkmG)u&ML2XFo>?t<$6Q(%muN;5jet*uv5e`s0(r?zF^ zyHgp+P-7wjrU$mDj=UWba{VJfC^d(MiX3nGi;(4ofdhn&(T>j>e05En5DmhO-wnQFpX}J^0 z@isJ6psQMZVUdUdoy7KP4wVB?V*Vvt>c2`^j5G;Y&`MJTt8UzqLX3VG83ACNDH*7p zM0xowZbnU1chYDDFY?&41P`yfoPQN61Z}j00v&@tBwg9f!;=AxPRYWrn_NGj-yf1s zl5vYn9$~kdT<7Igd#)#FI}e26HbEVfYiE%et89$lFP0Zpc%}OX%E{4{hmmjqmp@kQ zi}zXkU?Z8fHntaAxQqi~DsyuQOuG_Kgn*kZ*x3ad5^}yLrBYojJ0pGK*bCwFZf^6N zo6TiqNB$XN<*uT#ovvi{EK$(jA*jyFi7{!ozdxcqHwXTmd?+|PY(?33`IMtu17L0B zu{{!{1oV_6BCrMqc>s>?Q-whE3jcCWOH~EgGJh~7_dVUwvbpcG$Z}1B(N2mh2J{1g zYo#G0aNkS)-uL&TmCUzC${f2A4v)QPXt)M`Ng)QkKJMoQtd${#e@pEt2i(U81=nPh z|3T-Dgo)i~F zNiA8jB{;RBQYJc5;j*J)kib?3|F&GJxt||8!HI}?xfPNJVmDpR%>ynLOd({A})ANLkTegyO1Fvqu z2+*Lhx8AG82?_KY^AG6>;lL|v={8AbmTR2eKw_DWJ=fO*Tkmp=Hd!%3ODn#nCM_c)B~(M% z`9x6Qi*ua7;(tN(AaG?UE*4rZBwEBrG%+Ug1lHD8^bbOLC9!}!SDVVE;m{>*&RPH^ zNmy7A?8eWPJptTBL4ly#SbpqdvrB=s#l7q~?`@AmGjZL?N`NqCV#?*_R!+Md!2Q2T zME{9)zltWOjoR3MDs{jgHTu5A#l6_v46&&324_qszdu0mlFaQf7h6dI3H)~Fv!&x~ zjI2+D!2vox>nBf>moMZ!R1yTxck&iN-Z>(C_}jPgGiTDVKjXsQlv~0*=LW$uI-M+a z9$Or#yHMuzrK4jH;53x_Iudh4b0gxAm{^e&dARX(51+6ESfFSvjKq5=L=^wp&$@%efDSmpY{_YK`JW+;SP z&Jy|Q(-g39jgO^UzJ|4Rxj2$G9394;6tV3pKD$>~Sqm&7f)Wx1wYBmW4JQ$pS6gwF zw|q%K!owQ{M#ikdYx!4)|(=OS;R+0R+Q>+u4oO;L^DbyU4GJ7 z%`UORm9)GhZZR`XZJ{=!lIAjayKew!x6puc>px zzMPr#VRfNWifMl!4-{>-xT>nJ!svt4G~R%Ku*X{J>gA@(z?d~H`g z5{D#ZDOdAP0X#g64)Em9`T2=ysqf!64Mu3We?7r!21evaB29^sUVNzh?5u-2cBn*) zm0J>Pef4T`_|rrTi4?mqioqBgFRiRxyZU;0=rzF#S73-t5FMTamP-?p5`W*Gi8?49 zUCfO)SPQN8p_P@JSFT9h8Y=1S?*7*N*i$3>&Qjkc8yo744eo$_M}`vvNKH4y>copX zX2aYH3N^!}58pS@*x3=)k@$>&%^5i~s}WDLsEv>Yc$g6p$!4VjGc%%WkorkhIIb8yw4|YwV!RWkqG2zcgdfk@~ce{$O`wsT^&t}I;B457vGVn1w1FE#| zYd&HDvmL1`T8Szw)U};T4GwOKi3va(rC$&c;ZYiyrj91i(UX8+v-*%(L{VuRIn!4_ z8DK6)DJI%2iVs0x^buUqt!#qMMn>sdU+-B*b_!_#pyG`&Jyr<%8Z;vl? za~}utmbVY^G6mRoK2>(O$$N~^Ulkdpk=^Ky5NfwT#z66sbwa{&tMf8hp3{+>c%bZz zOXprHXJz&CtJ&VJ?6*4EfVg^^U8%#I0cC!3Ps`=7q?#b2JP-!S{^z2C(F0jnYJh6A z<>xR`A^tk-dx1(pn3V{Y@FJOTTohTFdn_<|r4J(WUyV<&+q9kmOY-O4 zao|)I@`IyQ1;*?jKfrNqJ*HMX7WeRMtEU{**^vLUNSO=Pf&${>sQPir&&0a4S7EJA!(Y2C&j}fAu(Z& zgQFODU|Hf!3O9GxEHOs$7UtDN$6H`%KttybI<<+pZs3yEcN>+F$F-6V+mJJ_Dr1`4 z2oaIG>+TR%;2b4xOlv-FA9|e*b{x)+(X_pmQ6APe`1$Rcng;j3E4uA}oS4u@P6X`E zzOta;mQAzu=ULdKN^|F?&<1;twcJaB?tZHu*-2CI(J}00xPZ|Blu}!p!!>nvRM>QQ zJD7iGWxvY6Bpsi0<>+Egr*q%Wh;D!2J3Kt>druL!(0d_0{Whjp8X}Kni30$l%!JnB zD8}cDYF(_sO8(WgmKGCY9)F4L~x~|}5JYJ^c)KFzwZ~^pz zogawxe}Ct|=$E|mX!SW=^CM}ty^&03#Zf3q)w=i66qV`y_6Ki`O$X@cmIU>*Qsty( zN$YMYh^234WO8JpcsF|-uL5~(wa#&>`R2q#q-pV(lXEZLDnHy&y0H+mzWFU0h$51% z>xP_dN9JihW6pV4i@$!2&&_G!Vf2lQBc2Q`&5Z_|+=4Q%c^7=01PmCn#6+)KnO2lm z-P82mnUr5S%d3=KChfDk1|!DywNMvP6*4zm7r9Umw0aDZL+pgh==Wx}vuC1Pw{e@; z$)X|}5Kdvf8o==vsP6*zZ;?DYdmD^+h$AN(k4k7K;|GAN- zwl);!M-i9u4D#4Kpy!PS_ngkW!Gw$7Tbj);h}`1q>!QZd66t#t3_0mbj({>l|MP*a zd-S@1PZm~xkB7V6Nu?qM7oQ^~C~%n(Np3d<;rhnffJ!l>3bbziQFz`j0l-E5_f3D> hIQ&0V>i1ZaX{2^=sT%p=3E-qkrLC@yELOD+{vX5sL#hA( diff --git a/doc/devel/uml/index.html b/doc/devel/uml/index.html index a45c5e406..89c2dc30a 100644 --- a/doc/devel/uml/index.html +++ b/doc/devel/uml/index.html @@ -147,7 +147,7 @@ Documentation
Artifact Lumiera

the main executable to be built

Depends on common

Depends on gui

Depends on proc

Depends on backend

Stereotype: executable

-

executable associated with : effect, buildertool, segmentationtool, link, parameter, renderengine, glbuf, procnode, stateproxy, edl, fixture, glpipe, main, conmanager, clip, vrender, placement, sessionimpl, builderfacade, aframe, assembler, trafo, allocation, vframe, toolfactory, hub, buildable, abstractmo, exitnode, pathmanager, track, meta, fixedlocation, relativelocation, controllerfacade, rendergraph, pluginadapter, explicitplacement, auto, glrender, arender, renderstate, label, nodecreatertool, projector, interpolator, paramprovider, mask, mobject, source, frame

+

executable associated with : explicitplacement, auto, glrender, arender, renderstate, label, nodecreatertool, projector, interpolator, paramprovider, mask, mobject, source, frame, effect, buildertool, segmentationtool, link, parameter, renderengine, glbuf, procnode, stateproxy, edl, fixture, glpipe, main, conmanager, clip, vrender, placement, sessionimpl, builderfacade, aframe, assembler, trafo, allocation, vframe, toolfactory, hub, buildable, abstractmo, exitnode, pathmanager, track, meta, fixedlocation, relativelocation, controllerfacade, rendergraph, pluginadapter

Artifact main

Stereotype: source

diff --git a/tests/components/proc/mobject/placement-scope-test.cpp b/tests/components/proc/mobject/placement-scope-test.cpp index 29e1352f3..f89cc4f4d 100644 --- a/tests/components/proc/mobject/placement-scope-test.cpp +++ b/tests/components/proc/mobject/placement-scope-test.cpp @@ -22,21 +22,23 @@ #include "lib/test/run.hpp" +#include "lib/test/test-helper.hpp" +#include "proc/mobject/session/scope.hpp" #include "proc/mobject/session/test-scopes.hpp" //#include "lib/lumitime.hpp" //#include "proc/mobject/placement-ref.hpp" //#include "proc/mobject/placement-index.hpp" //#include "proc/mobject/test-dummy-mobject.hpp" -//#include "lib/util.hpp" +#include "lib/util.hpp" -//#include +#include //#include -//using util::isSameObject; +using util::isSameObject; //using lumiera::Time; //using std::string; -//using std::cout; -//using std::endl; +using std::cout; +using std::endl; namespace mobject { @@ -69,6 +71,65 @@ namespace test { PIdx index = build_testScopes(); UNIMPLEMENTED ("function test of placement scope interface"); + verifyLookup (index); + verifyNavigation (index); + } + + + typedef PlacementIndex::Query::iterator _Iter; + + /** @test for each Placement in our test "session", + * find the scope and verify it's in line with the index + */ + void + verifyLookup (PIdx ref_index) + { + for (_Iter elm = ref_index.query(); elm; ++elm) + { + ASSERT (elm->isValid()); + cout << *elm << endl; + Scope& scope1 = Scope::containing(*elm); + + RefPlacement ref (*elm); + Scope& scope2 = Scope::containing(ref); + + // verify this with the scope registered within the index... + PlacementMO& scopeTop = ref_index->getScope(*elm); + ASSERT (scope1 == scopeTop); + ASSERT (scope2 == scopeTop); + ASSERT (scope1 == scope2); + + ASSERT (isSameObject (scope1,scope2)); + } + } + + + /** @test navigate to root, starting from each Placement */ + void + verifyNavigation (PIdx ref_index) + { + for (_Iter elm = ref_index.query(); elm; ++elm) + { + Scope& scope = Scope::containing(*elm); + ASSERT (scope == *scope.ascend()); + for (Scope::iterator sco = scope.ascend(); sco; ++sco) + if (sco->isRoot()) + { + VERIFY_ERROR (INVALID, sco->getParent() ); + RefPlacement top = sco->getTop(); + RefPlacement root = ref_index->getRoot(); + + ASSERT (isSameObject (top,root)); + } + else + { + Scope& parent = sco->getParent(); + RefPlacement top = sco->getTop(); + Scope& parentsScope = Scope::containing(top); + RefPlacement topsTop = ref_index->getScope(top); ///////////////////TODO impact of Binding a Sequence? see Ticket #311 + ASSERT (topsTop == parentsScope); + ASSERT (isSameObject (topsTop, parentsScope.getTop())); + } } } }; diff --git a/uml/lumiera/136325.diagram b/uml/lumiera/136325.diagram index 80ebfe88a..2111137af 100644 --- a/uml/lumiera/136325.diagram +++ b/uml/lumiera/136325.diagram @@ -41,6 +41,8 @@ classcanvas 130437 class_ref 153989 // QueryResolver end note 131333 "this connection is established by the current session" xyzwh 361 39 2000 158 47 +textcanvas 131461 "the \"scope top\"" + xyzwh 357 180 2010 73 13 relationcanvas 128389 relation_ref 167557 // from ref 128261 z 1999 stereotype "<>" xyz 281 219 3000 to ref 128133 no_role_a no_role_b