UCFS, Reflection/Metadata, Overload Resolution, Templates, and other issues

%u wfunction at hotmail.com
Thu Apr 7 11:40:12 PDT 2011


> I tried a "wrapper" type using opDispatch in dcollections, but what
I ran into is, opDispatch uses its called parameter types to decide
the function parameter types, you have very little control over that.
I basically ended up abandoning the use of opDispatch and implemented
each covered function by hand.

I managed to get this far (my file attached), using D-style runtime
variadic functions... it seems to work well in most cases, with the
notable exceptions being:
(1) Things I already mentioned
(2) Possibly ref/out/lazy parameters (I haven't tested them yet)

Any thoughts?
begin 644 std.dynamic.core.d
M;6]D=6QE('-T9"YD>6YA;6EC+F-O<F4[#0H-"G!R:79A=&4@<W1A=&EC(&EM
M<&]R="!S=&0N86QG;W)I=&AM.PT*<')I=F%T92!I;7!O<G0 at 8V]R92YE>&-E
M<'1I;VXL('-T9"YE>&-E<'1I;VXL('-T9"YT>7!E='5P;&4L('-T9"YM971A
M<W1R:6YG<RP@<W1D+G1R86ET<RP at 8V]R92YV87)A<F<L('-T9"YS=&1I;SL-
M"@T*86)S=')A8W0 at 8VQA<W, at 1'EN86UI8PT*>PT*"7!R;W1E8W1E9"!A8G-T
M<F%C="!$>6YA;6EC(&EN=F]K92AS=')I;F<@;65M8F5R+"`N+BXI.PT*"7!R
M;W1E8W1E9"!T:&ES*"D@>R!A<W-E<G0H='EP96ED*'1H:7,I("$]('1Y<&5I
M9"AT>7!E;V8H=&AI<RDI*3L@?0T*"7!U8FQI8R!$>6YA;6EC(&]P1&ES<&%T
M8V at H<W1R:6YG(&YA;64L(%0N+BXI*%0 at 87)G<RD@>R!R971U<FX@=&AI<RYI
M;G9O:V4H;F%M92P at 87)G<RD[('T-"@EP<F]T96-T960 at 0'!R;W!E<G1Y(&%B
M<W1R86-T('9O:60J('!686QU92 at I.PT*"7!U8FQI8R!`<')O<&5R='D at 86)S
M=')A8W0 at 5'EP94EN9F\@='EP94ED*"D[#0H)<'5B;&EC(')E9B!4(&%S*%0I
M*"D@>R!A<W-E<G0H=&AI<RYT>7!E260@/3T@='EP96ED*%0I*3L@<F5T=7)N
M("IC87-T*%0J*71H:7,N<%9A;'5E.R!]#0I]#0H-"G-T871I8R!B;V]L(&ES
M1'EN86UI8RA4>7!E26YF;R!T*2![(&%U=&\@87-424-L87-S(#T at 8V%S="A4
M>7!E26YF;U]#;&%S<RET.R!R971U<FX at 87-424-L87-S("%I<R!N=6QL("8F
M("AA<U1)0VQA<W,@/3T@='EP96ED*$1Y;F%M:6,I*3L@?0T*<W1A=&EC(&)O
M;VP@:7-686QI9$%R9W5M96YT*%1Y<&5);F9O('1!<F<L(%1Y<&5);F9O('10
M87)A;2D@>R!R971U<FX@=$%R9R`]/2!T4&%R86T[('T at +R]&25A-13H at 06QL
M;W<@9F]R(&EM<&QI8VET(&-O;G9E<G-I;VYS("AB;W1H('=I9&5N:6YG(&-O
M;G9E<G-I;VYS(&%N9"!S=&%T:6, at 8V%S=',I#0H-"G!R:79A=&4@=&5M<&QA
M=&4@<W1A=&EC24UA<$EN=&5R;F%L*'-I>F5?="!I4W1A<G0L(&%L:6%S($UA
M<'!E<BP at 5"XN+BD@>R!S=&%T:6,@:68@*%0N;&5N9W1H(#X@,"D@>R!A;&EA
M<R!4>7!E5'5P;&4A*$UA<'!E<B$H:5-T87)T+"!46S!=*2P@<W1A=&EC24UA
M<$EN=&5R;F%L(2AI4W1A<G0@*R`Q+"!-87!P97(L(%1;,2`N+B`D72DI('-T
M871I8TE-87!);G1E<FYA;#L@?2!E;'-E('L at 86QI87, at 5'EP951U<&QE(2 at I
M('-T871I8TE-87!);G1E<FYA;#L@?2!]#0IT96UP;&%T92!S=&%T:6-)36%P
M*&%L:6%S($UA<'!E<BP at 5"XN+BD@>R!A;&EA<R!S=&%T:6-)36%P26YT97)N
M86PA*#`L($UA<'!E<BP at 5"D@<W1A=&EC24UA<#L@?0T*=&5M<&QA=&4 at 2F]I
M;F5R*'-T<FEN9R!P87)A;5!R969I>"D@>R!T96UP;&%T92!*;VEN97(H<VEZ
M95]T(&DL(%0N+BXI('L at 96YU;2!*;VEN97(@/2!&;W)M870A*'%[)7,E<WTL
M('!A<F%M4')E9FEX+"!I*3L@?2!]#0IT96UP;&%T92!S=&%T:6-*;VEN*'-T
M<FEN9R!S97!A<F%T;W(L(%0N+BXI('L@<W1A=&EC(&EF("A4+FQE;F=T:"`^
M/2`R*2![(&5N=6T@<W1A=&EC2F]I;B`](%1;,%T@?B!S97!A<F%T;W(@?B!S
M=&%T:6-*;VEN(2AS97!A<F%T;W(L(%1;,2`N+B`D72D[('T at 96QS92!S=&%T
M:6,@:68@*%0N;&5N9W1H(#X](#$I('L at 96YU;2!S=&%T:6-*;VEN(#T at 5%LP
M73L@?2!E;'-E('L at 96YU;2!S=&%T:6-*;VEN(#T@<7M].R!]('T-"@T*=&5M
M<&QA=&4@=F%?;6%K95]L;V-A;%]A<F<H<W1R:6YG('!A<F%M4')E9FEX+"!A
M;&EA<R!A<F=S*0T*>PT*"71E;7!L871E('9A7VUA:V5?;&]C86Q?87)G*'-I
M>F5?="!I+"!4*0T*"7L-"@D)96YU;2!V85]M86ME7VQO8V%L7V%R9R`]($9O
M<FUA="$H<7MA=71O("5S)7,@/2!I<T1Y;F%M:6,H7V%R9W5M96YT<ULE<UTI
M(#\@=F%?87)G(2A$>6YA;6EC*2 at E<RDN87,A*"5S*2`Z('9A7V%R9R$H)7,I
M*"5S*3L@?2P-"@D)"0D)"7!A<F%M4')E9FEX+"!I+"!I+"!A<F=S+G-T<FEN
M9V]F+"!4+G-T<FEN9V]F+"!4+G-T<FEN9V]F+"!A<F=S+G-T<FEN9V]F*3L-
M"@E]#0I]#0H-"G1E;7!L871E(&ES5&5M<&QA=&4H5"XN+BD@>R!P<F%G;6$H
M;7-G+"!T>7!E;V8H)E1;,%TI*3L at 96YU;2!B;V]L(&ES5&5M<&QA=&4@/2`A
M:7,H5%LP72D@)B8@(6ES*'1Y<&5O9B at F5%LP72DI.R!]("\O1F%L<V4@;F5G
M871I=F5S/PT*#0IP<FEV871E(&-L87-S($1Y;F%M:6-/9BA4*2!I9B`H(6ES
M*%0 at .B!$>6YA;6EC*2D at .B!$>6YA;6EC#0I[#0H)5"!O8FH[#0H)=&AI<RA4
M(&]B:BD@>R!T:&ES+F]B:B`](&]B:CL@?0T*#0H)86QI87, at 1'EN86UI8R!F
M=6YC=&EO;BA$>6YA;6EC3V8A*%0I(&EN<W1A;F-E+"!4>7!E26YF;UM=(%]A
M<F=U;65N=',L(')E9B!V85]L:7-T(&%R9W,I($EN=F]K97([#0H)<W1A=&EC
M(&EM;75T86)L92A);G9O:V5R6W-T<FEN9UTI(&UE;6)E<G,[#0H)96YU;2!0
M05)!35]04D5&25@@/2!Q>W!A<F%M?3L-"@ES=&%T:6,@=&AI<R at I#0H)>PT*
M"0E);G9O:V5R6W-T<FEN9UT@;65M8F5R<SL-"@D)875T;R!T96UP(#T at 5"YI
M;FET.PT*"0ES=&%T:6,@:68@*%]?=')A:71S*&-O;7!I;&5S+"!T>7!E;V8H
M7U]T<F%I=',H86QL365M8F5R<RP at 5"DI*2D-"@D)>PT*"0D)9F]R96%C:"`H
M:2P@;65M8F5R.R!?7W1R86ET<RAA;&Q-96UB97)S+"!4*2D-"@D)"7L-"@D)
M"0ES=&%T:6, at 8V]N<W0@<W1R:6YG(%--14U"15)?3D%-12`]('%[*%0I+GT@
M?B!M96UB97([#0H)"0D)<W1A=&EC(&-O;G-T('-T<FEN9R!)345-0D527TY!
M344@/2!Q>U0N:6YI="Y]('X@;65M8F5R.PT*"0D)"7-T871I8R!I9B`H;65M
M8F5R(#T]('%[;W!5;F%R>7TI#0H)"0D)>PT*"0D)"0D-"@D)"0E]#0H)"0D)
M96QS90T*"0D)"7L-"@D)"0D)<W1A=&EC(&EF("AI<RA&=6YC=&EO;E1Y<&5/
M9B$H;6EX:6XH4TU%34)%4E].04U%*2D at 5$9N,BDI#0H)"0D)"7L-"@D)"0D)
M"6%L:6%S(%1&;C(@5$9N.PT*"0D)"0E]#0H)"0D)?0T*"0D)"7-T871I8R!I
M9B`H:7,H5$9N*2D-"@D)"0E[#0H)"0D)"7-T871I8R!I9B`H(5]?=')A:71S
M*&ES4W1A=&EC1G5N8W1I;VXL(&UI>&EN*%--14U"15)?3D%-12DI*0T*"0D)
M"0E[#0H)"0D)"0DO+W!R86=M82AM<V<L(")!9&1I;F<@;65M8F5R.B`B+"!M
M96UB97(I.PT*"0D)"0D)875T;R!F;B`](&9U;F-T:6]N($1Y;F%M:6,H1'EN
M86UI8T]F(2A4*2!I;G-T86YC92P at 5'EP94EN9F];72!?87)G=6UE;G1S+"!R
M968@=F%?;&ES="!A<F=S*0T*"0D)"0D)>PT*"0D)"0D)"6UI>&EN*$9O<FUA
M="$H<7LE<PT*"0D)"0D)"0EA=71O(')E<W5L="`](&EN<W1A;F-E+F]B:BXE
M<R at E<RD[#0H)"0D)"0D)"6%S<V5R="A?87)G=6UE;G1S+FQE;F=T:"`]/2!0
M87)A;65T97)4>7!E5'5P;&4A*%1&;BDN;&5N9W1H*3L-"@D)"0D)"0D)9F]R
M96%C:"`H:2P@='EP93L at 4&%R86UE=&5R5'EP951U<&QE(2A41FXI*0T*"0D)
M"0D)"0E[(&%S<V5R="AI<T1Y;F%M:6,H7V%R9W5M96YT<UMI72D@/R!T<G5E
M(#H@:7-686QI9$%R9W5M96YT*%]A<F=U;65N='-;:5TL('1Y<&5I9"AT>7!E
M*2DI.R!]#0H)"0D)"0D)"7)E='5R;B!N97<@1'EN86UI8T]F(2A2971U<FY4
M>7!E(2A41FXI*2AR97-U;'0I.WTL#0H)"0D)"0D)"7-T871I8TIO:6XA*'%[
M('TL('-T871I8TE-87`A*'9A7VUA:V5?;&]C86Q?87)G(2A005)!35]04D5&
M25 at L(&%R9W,I+"!087)A;65T97)4>7!E5'5P;&4A*%1&;BDI*2P-"@D)"0D)
M"0D)7U]T<F%I=',H86QL365M8F5R<RP at 5"E;:5TL#0H)"0D)"0D)"7-T871I
M8TIO:6XA*'%[+"!]+"!S=&%T:6-)36%P(2A*;VEN97(A*%!!4D%-7U!2149)
M6"DL(%!A<F%M971E<E1Y<&54=7!L92$H1G5N8W1I;VY4>7!E3V8A*&UI>&EN
M*%--14U"15)?3D%-12DI*2DI*2D[#0H)"0D)"0E].PT*"0D)"0D);65M8F5R
M<UMM96UB97)=(#T at 9FX[#0H)"0D)"7T-"@D)"0D)96QS90T*"0D)"0E[#0H)
M"0D)"0DO+W!R86=M82AM<V<L("))9VYO<FEN9R!N;VXM:6YS=&%N8V4@;65M
M8F5R.B`B+"!M96UB97(I.PT*"0D)"0E]#0H)"0D)?0T*"0D)"65L<V4-"@D)
M"0E[#0H)"0D)"2\O<')A9VUA*&US9RP@(DEG;F]R:6YG(&YO;BUF=6YC=&EO
M;B!M96UB97(Z("(L(&UE;6)E<BD[#0H)"0D)?0T*"0D)?0T*"0E]#0H)"41Y
M;F%M:6-/9B$H5"DN;65M8F5R<R`](&UE;6)E<G,N87-S=6UE56YI<75E*"D[
M#0H)?0T*#0H)<')O=&5C=&5D(&]V97)R:61E($1Y;F%M:6,@:6YV;VME*'-T
M<FEN9R!M96UB97(L("XN+BD-"@E[#0H)"6%U=&\@<$UE;6)E<B`](&UE;6)E
M<B!I;B!M96UB97)S.PT*"0EI9B`H<$UE;6)E<B`]/2!N=6QL*2![('1H<F]W
M(&YE=R!(:61D96Y&=6YC17)R;W(H='EP96ED*$1Y;F%M:6-/9B$H5"DI*3L@
M?0T*"0EV85]L:7-T(&%R9W,[#0H)"79A7W-T87)T*&%R9W,L(&UE;6)E<BD[
M#0H)"6%U=&\@<F5S=6QT(#T@*"IP365M8F5R*2AT:&ES+"!?87)G=6UE;G1S
M+"!A<F=S*3L-"@D)=F%?96YD*&%R9W,I.PT*"0ER971U<FX@<F5S=6QT.PT*
M"7T-"@T*"7!R;W1E8W1E9"!`<')O<&5R='D@;W9E<G)I9&4 at 5'EP94EN9F\@
M='EP94ED*"D@>R!R971U<FX@='EP96ED*'1H:7,N;V)J*3L@?0T*"7!R;W1E
M8W1E9"!`<')O<&5R='D@;W9E<G)I9&4@=F]I9"H@<%9A;'5E*"D@>R!R971U
M<FX@)G1H:7,N;V)J.R!]#0I]#0H-"G-T871I8R!$>6YA;6EC(&1Y;F%M:6,H
M5"DH5"!V86QU92D@>R!S=&%T:6,@:68@*"%I<RA4(#H at 1'EN86UI8RDI('L@
M<F5T=7)N(&YE=R!$>6YA;6EC3V8A*%0I*'9A;'5E*3L@?2!E;'-E('L@<F5T
.=7)N('9A;'5E.R!]('T`
`
end


More information about the Digitalmars-d mailing list