- 647 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 19:37:54 ]
- private ReturnType!(T) _deserialize(T)(ref ubyte* t){
ReturnType!(T) rv; static if(is(T==struct)) {{ foreach(i,x;rv.tupleof) { static if(__traits(isStaticArray,typeof(x))) rv.tupleof[i][]/*x[]=*/=_deserialize!(typeof(x))(t)[]; else rv.tupleof[i]/*x=*/=_deserialize!(typeof(x))(t); } }} else static if(__traits(isIntegral,T)){{ rv=*cast(T*)t; t+=T.sizeof; }} else static if(__traits(isStaticArray,T)&&is(T U:U[])){{ rv=cast(U[])t[0..T.sizeof]; t+=T.sizeof; }} else static if(is(T U:U[][])){{ int len = _deserialize!(size_t)(t); rv.length= len; foreach( i; 0..len) { rv[i]= _deserialize!(U[])( t); } }} else static if(is(T U:U[])){{ int len = _deserialize!(size_t)(t); rv= (cast(U*)t)[0..len]; t+=len*U.sizeof; }} else {{ assert(0,"unsupported"); }} return rv; } だれか連想配列たのむ
|

|