I've observed some problems with STBInFiler when I have circular references
among proxies. The problem is that replacing the proxy with the model in the readMap happens after the instance variables are read. Of course, this is partly necessary since until some of the instance variables are read one doesn't know enough to find or create the model. Unfortunately, the process of reading instance variables into the proxy can bring in other objects that reference the proxy. Thus, by the time the proxy is fully loaded it is already referenced and it is too late to replace it with the model in the readMap. One solution is #oneWayBecome: which is slow and I try to avoid. The attached contains a STBInFilerEx which overrides #basicNext to give the object being built a chance to update the readMap before all the instance variables are loaded. This allows properly defined proxies to load cleanly with circular references. STBInFilerEx also includes a valueHolder instance variable that is updated with the position in the file. This allows for a ProgressDialog to be used to show the progress of a load. An example is included. This package also includes a way to set the current working directory and Collection>>#any. I respectfully submit it for consideration into the base distribution. James Foster Fargo, ND begin 666 DolphinEx.pac M?"!P86-K86=E('P-"G!A8VMA9V4@.CT@4&%C:V%G92!N86UE.B G1&]L<&AI M;D5X)RX-"G!A8VMA9V4@<&%X5F5R<VEO;CH@,#L-"@EB87-I8T-O;6UE;G0Z M("<G+@T*#0IP86-K86=E(&)A<VEC4&%C:V%G959E<G-I;VXZ("<P+C P,2<N M#0H-"B)!9&0@=&AE('!A8VMA9V4@<V-R:7!T<R(-"@T*(D%D9"!T:&4@8VQA M<W,@;F%M97,L(&QO;W-E(&UE=&AO9"!N86UE<RP@9VQO8F%L(&YA;65S+"!R M97-O=7)C92!N86UE<R(-"G!A8VMA9V4@8VQA<W-.86UE<PT*"6%D9#H@(U-4 M0DEN1FEL97)%>#L-"@EY;W5R<V5L9BX-"@T*<&%C:V%G92!M971H;V1.86UE M<PT*"6%D9#H@(T-O;&QE8W1I;VX@+3X@(V%N>3L-"@EA9&0Z("-+97)N96Q, M:6)R87)Y("T^("-S971#=7)R96YT1&ER96-T;W)Y.CL-"@EA9&0Z("-/8FIE M8W0@+3X@(W-T8DEN<W1687)!=#IP=70Z:6Y&:6QE<CII9#H[#0H)861D.B G M1FEL92!C;&%S<R<@+3X@(W=O<FMI;F=$:7)E8W1O<GDZ.PT*"7EO=7)S96QF M+@T*#0IP86-K86=E(&=L;V)A;$YA;65S#0H)>6]U<G-E;&8N#0H-"G!A8VMA M9V4@<F5S;W5R8V5.86UE<PT*"7EO=7)S96QF+@T*#0HB0FEN87)Y($=L;V)A M;"!.86UE<R(-"G!A8VMA9V4@8FEN87)Y1VQO8F%L3F%M97,Z("A3970@;F5W M#0H)>6]U<G-E;&8I+@T*(E)E<V]U<F-E($YA;65S(@T*<&%C:V%G92!A;&Q2 M97-O=7)C94YA;65S.B H4V5T(&YE=PT*"7EO=7)S96QF*2X-"@T*(D%D9"!T M:&4@<')E<F5Q=6ES:71E(&YA;65S(@T*<&%C:V%G92!S9710<F5R97%U:7-I M=&5S.B H261E;G1I='E3970@;F5W#0H)861D.B G1&]L<&AI;B<[#0H)>6]U M<G-E;&8I+@T*#0IP86-K86=E(0T*#0HB0VQA<W,@1&5F:6YI=&EO;G,B(0T* M#0I35$));D9I;&5R('-U8F-L87-S.B C4U1"26Y&:6QE<D5X#0H):6YS=&%N M8V5687)I86)L94YA;65S.B G=F%L=65(;VQD97(G#0H)8VQA<W-687)I86)L M94YA;65S.B G)PT*"7!O;VQ$:6-T:6]N87)I97,Z("<G#0H)8VQA<W-);G-T M86YC959A<FEA8FQE3F%M97,Z("<G(0T*(DQO;W-E($UE=&AO9',B(0T*#0HA M0V]L;&5C=&EO;B!M971H;V1S1F]R(0T*#0IA;GD-"@T*"5YS96QF#0H)"61E M=&5C=#H@6SIE86-H('P@=')U95T-"@D):69.;VYE.B!;;FEL70T*(2 A#0HA M0V]L;&5C=&EO;B!C871E9V]R:65S1F]R.B C86YY(7!U8FQI8R%S96%R8VAI M;F<A("$-"@T*(49I;&4@8VQA<W,@;65T:&]D<T9O<B$-"@T*=V]R:VEN9T1I M<F5C=&]R>3H@85-T<FEN9PT*"2)3970@=&AE(&-U<G)E;G0@=V]R:VEN9R!D M:7)E8W1O<GDN(@T*#0H)7DME<FYE;$QI8G)A<GD@9&5F875L="!S971#=7)R M96YT1&ER96-T;W)Y.B!A4W1R:6YG(2 A#0HA1FEL92!C;&%S<R!C871E9V]R M:65S1F]R.B C=V]R:VEN9T1I<F5C=&]R>3HA9FEL96YA;64@;6%N:7!U;&%T M:6]N(7!U8FQI8R$@(0T*#0HA2V5R;F5L3&EB<F%R>2!M971H;V1S1F]R(0T* M#0IS971#=7)R96YT1&ER96-T;W)Y.B!A4W1R:6YG1&ER96-T;W)Y3F%M90T* M#0H)/'-T9&-A;&PZ(&)O;VP@4V5T0W5R<F5N=$1I<F5C=&]R>4$@;'!S='(^ M#0H)7G-E;&8@:6YV86QI9$-A;&P-"B$@(0T*(4ME<FYE;$QI8G)A<GD@8V%T M96=O<FEE<T9O<CH@(W-E=$-U<G)E;G1$:7)E8W1O<GDZ(2HM<')I;6ET:79E M<R%P=6)L:6,A=VEN,S(@9G5N8W1I;VYS+69I;&4A("$-"@T*(4]B:F5C="!M M971H;V1S1F]R(0T*#0IS=&));G-T5F%R070Z(&%N26YT96=E<B!P=70Z(&%N M3V)J96-T(&EN1FEL97(Z(&%N4U1"26Y&:6QE<B!I9#H@:61);G1E9V5R#0H- M"@ES96QF#0H)"6EN<W1687)!=#H@86Y);G1E9V5R#0H)"7!U=#H@86Y/8FIE M8W0-"B$@(0T*(4]B:F5C="!C871E9V]R:65S1F]R.B C<W1B26YS=%9A<D%T M.G!U=#II;D9I;&5R.FED.B%B:6YA<GD@9FEL:6YG(7!U8FQI8R$@(0T*#0HB M16YD(&]F('!A8VMA9V4@9&5F:6YI=&EO;B(A#0H-"@T*#0I35$));D9I;&5R M17@@8V]M;65N=#H@)R<A#0H-"E-40DEN1FEL97)%>"!G=6ED.B H1U5)1"!F M<F]M4W1R:6YG.B G>T4R,35#13,P+3A&.#4M-#1&02U!,#(R+4(X-CDP,35" M-3@Q0WTG*2$-"@T*(5-40DEN1FEL97)%>"!C871E9V]R:65S1F]R0VQA<W,A M56YC;&%S<VEF:65D(2 A#0HA4U1"26Y&:6QE<D5X(&UE=&AO9'-&;W(A#0H- M"F%L; T*#0H)?"!L:7-T('-T<F5A;4YA;64@<')O9W)E<W-$:6%L;V<@? T* M"6QI<W0@.CT@3W)D97)E9$-O;&QE8W1I;VX@;F5W+@T*"7-T<F5A;4YA;64@ M.CT@<W1R96%M(&YA;64N#0H)<W1R96%M3F%M92!S:7IE(#X@-# @:694<G5E M.B!;<W1R96%M3F%M92 Z/2 G+BXN)R L("AS=')E86U.86UE(')I9VAT4W1R M:6YG.B S-BE=+@T*"7!R;V=R97-S1&EA;&]G(#H](%!R;V=R97-S1&EA;&]G M( T*"0EC<F5A=&4Z(%!R;V=R97-S1&EA;&]G(&1E9F%U;'16:65W( T*"0EO M<&5R871I;VXZ(%LZ=F@@?" -"@D)"7-E;&8@=F%L=65(;VQD97(Z('9H+@T* M"0D)6W-E;&8@871%;F0@;F]T72!W:&EL951R=64Z(%ML:7-T(&%D9#H@<V5L M9B!N97AT72X-"@D)"6QI<W1=+@T*"7!R;V=R97-S1&EA;&]G('1E>'0Z("=2 M96%D:6YG(&9R;VT@)R L('-T<F5A;4YA;64@<')I;G13=')I;F<N#0H)7G!R M;V=R97-S1&EA;&]G('-H;W=-;V1A; T*(0T*#0IB87-I8TYE>'0-"@T*"7P@ M<')E9FEX(&-L87-S(&%N3V)J96-T(&YE=T]B:F5C=$EN9&5X('P-"@T*"2)5 M<&1A=&4@=&AE('!O<VET:6]N(&9O<B!A;GD@<')O9W)E<W,@9&EA;&]G(@T* M"79A;'5E2&]L9&5R(&YO=$YI;"!I9E1R=64Z(%MV86QU94AO;&1E<B!V86QU M93H@<W1R96%M('!O<VET:6]N("H@,3 P("\O('-T<F5A;2!S:7IE72X-"@E0 M<F]C97-S;W(@>6EE;&0N#0H-"@DB1FER<W0L(')E860@=&AE('!R969I>" M M("XB#0H)<')E9FEX(#H]('-T<F5A;2!N97AT4T173U)$+@T*"0T*"7!R969I M>" ]/2 P(&EF5')U93H@6UYN:6Q=+@D)"0DB;W!T:6UI>F4@9F]R(&YI;"(- M"@T*"2AP<F5F:7@@86QL36%S:SH@4VUA;&Q);G1E9V5R36%S:RD-"@D):694 M<G5E.B!;7G!R969I>"!B:713:&EF=#H@4VUA;&Q);G1E9V5R4VAI9G1=+@T* M#0H)*'!R969I>"!A;&Q-87-K.B!$871A4')E9FEX36%S:RD@:69&86QS93H@ M6PT*"0E>*'!R969I>"!A;&Q-87-K.B!#:&%R86-T97)-87-K*0T*"0D):694 M<G5E.B!;0VAA<F%C=&5R('9A;'5E.B H<')E9FEX(&)I=%-H:69T.B!);F1E M>%-H:69T*5T-"@D)"6EF1F%L<V4Z(%MS96QF(&]B:F5C=$%T.B H<')E9FEX M(&)I=%-H:69T.B!);F1E>%-H:69T*5U=+@T*#0H)(D%S8V5R=&%I;B!T:&4@ M8VQA<W,@;V8@=&AE(&]B:F5C="XB#0H)8VQA<W,@.CT@*'!R969I>"!A;&Q- M87-K.B!#;&%S<U!R969I>$UA<VLI#0H)"6EF5')U93H@6W-E;&8@<F5A9$-L M87-S1&%T83H@<')E9FEX70T*"0EI9D9A;'-E.B!;<V5L9B!O8FIE8W1!=#H@ M*'!R969I>"!B:713:&EF=#H@26YD97A3:&EF="E=+@T*#0H)(DYO=R!R96%D M('1H92!O8FIE8W0@9&%T82P@86QL;W=I;F<@:70@=&\@:VYO=R!I=',@240N M(@T*"6YE=T]B:F5C=$EN9&5X(#H](')E861-87 @<VEZ92 K(#$N#0H)86Y/ M8FIE8W0@.CT@<V5L9B -"@D)<F5A9$]B:F5C=$]F0VQA<W,Z(&-L87-S#0H) M"6%S260Z(&YE=T]B:F5C=$EN9&5X+@T*#0H)(DEF(&%N3V)J96-T('=A<R!A M('!R;WAY(&9O<B!T:&4@<F5A;"!O;F4L(&5V86QU871E(&ET(&YO=RXB#0H) M7F%N3V)J96-T('-T8D9I>'5P.B!S96QF(&%T.B!N97=/8FIE8W1);F1E> T* M#0HA#0H-"G)E861/8FIE8W1/9D-L87-S.B!C;&%S<R!A<TED.B!A;DEN=&5G M97(-"@DB4')I=F%T92 M(%)E860@=&AE('-T<F5A;2!F;W(@=&AE(&1A=&$@ M=&\@8W)E871E(&%N(&EN<W1A;F-E(&]F(&%#;&%S<RXB#0H-"@E\(&)A<VEC M4VEZ92!F=6QL4VEZ92!S=&)#;&%S<T9O<FUA="!N97=/8FIE8W0@? T*"2)& M:7)S="P@<F5A9"!T:&4@8F%S:6-3:7IE("AN=6UB97(@;V8@:6YD97AE9"!V M87)I86)L97,I+B(-"@EB87-I8U-I>F4@.CT@<W1R96%M(&YE>'131%=/4D0N M#0H-"@DB0W)E871E(&$@;F5W(&]B:F5C="!O9B!S=69F:6-I96YT('-I>F4@ M=&\@:&]L9"!T:&4@<W1O<F5D(&1A=&$N(@T*"2AS=&)#;&%S<T9O<FUA=" Z M/2!C;VYV97)T97)S(&%T.B!C;&%S<R!I9D%B<V5N=#H@6UTI(&ES3FEL#0H) M"6EF5')U93H@6PT*"0D)(E1H92!O8FIE8W0@:7,@;V8@=&AE(&-U<G)E;G0@ M9F]R;6%T+@T*"0D)0W)E871E(&%N(&EN<W1A;F-E(&]F('1H92!A<'!R;W!R M:6%T92!C;&%S<RXB#0H)"0EF=6QL4VEZ92 Z/2!C;&%S<R!I;G-T4VEZ92 K M(&)A<VEC4VEZ92X-"@D)"6YE=T]B:F5C=" Z/2!C;&%S<R!I<U9A<FEA8FQE M#0H)"0D):694<G5E.B!;8VQA<W,@8F%S:6-.97<Z(&)A<VEC4VEZ95T-"@D) M"0EI9D9A;'-E.B!;8VQA<W,@8F%S:6-.97==70T*"0EI9D9A;'-E.B!;#0H) M"0DB5&AE(&]B:F5C="!I<R!O9B!A;B!O;&0@9F]R;6%T+@T*"0D)0W)E871E M(&%N($%R<F%Y(&]R($)Y=&5!<G)A>2!T;R!H;VQD('1H92!S=&]R960@9&%T M82X@5&AI<R!I<PT*"0D)<&%S<V5D('1O('1H92!C;VYV97)T97(@8FQO8VL@ M=VAI8V@@86YS=V5R<R!A;B!I;G-T86YC92!O9B!T:&4-"@D)"7)E86P@8VQA M<W,@:6YI=&EA;&ES960@9G)O;2!I="XB#0H)"0EF=6QL4VEZ92 Z/2!S=&)# M;&%S<T9O<FUA="!I;G-T4VEZ92 K(&)A<VEC4VEZ92X-"@D)"6YE=T]B:F5C M=" Z/2 H<W1B0VQA<W-&;W)M870@:7-">71E<PT*"0D)"6EF5')U93H@6T)Y M=&5!<G)A>5T@:69&86QS93H@6T%R<F%Y72D@8F%S:6-.97<Z(&9U;&Q3:7IE M72X-"@T*"7-E;&8@<F5G:7-T97(Z(&YE=T]B:F5C="X-"@T*"2)296%D('1H M92!O8FIE8W0G<R!I;G-T86YC92!D871A+B(-"@EC;&%S<R!I<T)Y=&5S#0H) M"6EF5')U93H@6R)-86YY(&]F('1H97-E(&]B:F5C=',@=VEL;"!B92!3=')I M;F=S+"!S;R!S;VUE(&]P=&EM:7IA=&EO;B!M87D@8F4@<&]S<VEB;&4B#0H) M"0DQ('1O.B!F=6QL4VEZ92!D;SH@6SII('P@;F5W3V)J96-T(&)A<VEC070Z M(&D@<'5T.B!S=')E86T@;F5X=%U=#0H)"6EF1F%L<V4Z(%LQ('1O.B!F=6QL M4VEZ92!D;SH@6SII('P@#0H)"0EN97=/8FIE8W0@#0H)"0D)<W1B26YS=%9A M<D%T.B!I( T*"0D)"7!U=#H@<V5L9B!B87-I8TYE>'0-"@D)"0EI;D9I;&5R M.B!S96QF#0H)"0D):60Z(&%N26YT96=E<EU=+@T*#0H)<W1B0VQA<W-&;W)M M870@;F]T3FEL(&EF5')U93H@6PT*"0DB26YI=&EA;&ES92!A(&YE=R!I;G-T M86YC92!F<F]M('1H92!O;&0@9F]R;6%T(&]B:F5C="!D871A(&%N9"!B96-O M;64@:70N(@T*"0EN97=/8FIE8W0@8F5C;VUE.B H<W1B0VQA<W-&;W)M870@ M8V]N=F5R=&5R0FQO8VL@=F%L=64Z(&YE=T]B:F5C="E=+@T*#0H)7FYE=T]B M:F5C= T*(0T*#0IV86QU94AO;&1E<CH@859A;'5E2&]L9&5R#0H-"@EV86QU M94AO;&1E<B Z/2!A5F%L=65(;VQD97(-"B$@(0T*(5-40DEN1FEL97)%>"!C M871E9V]R:65S1F]R.B C86QL(2HM=6YC;&%S<VEF:65D(7!U8FQI8R$@(0T* M(5-40DEN1FEL97)%>"!C871E9V]R:65S1F]R.B C8F%S:6-.97AT(2HM=6YC M;&%S<VEF:65D(7!R:79A=&4A("$-"B%35$));D9I;&5R17@@8V%T96=O<FEE M<T9O<CH@(W)E861/8FIE8W1/9D-L87-S.F%S260Z(2HM=6YC;&%S<VEF:65D M(7!R:79A=&4A("$-"B%35$));D9I;&5R17@@8V%T96=O<FEE<T9O<CH@(W9A M;'5E2&]L9&5R.B$J+75N8VQA<W-I9FEE9"%P=6)L:6,A("$-"@T*( T*(D)I B;F%R>2!';&]B86QS(B$-"@T*(E)E<V]U<F-E<R(A#0H-"@`` ` end |
Free forum by Nabble | Edit this page |