Advertisement
Guest User

Untitled

a guest
May 8th, 2015
283
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
D 0.89 KB | None | 0 0
  1. module test;
  2.  
  3. import std.traits;
  4.  
  5. struct MyType
  6. {
  7. }
  8.  
  9. struct RangeCounter {
  10. }
  11.  
  12. void serializeToJson(R, T)(R destination, T value)
  13. {
  14.     serialize!(JsonStringSerializer!R)(value, destination);
  15. }
  16.  
  17. struct JsonStringSerializer(R)
  18. {
  19.     void getSerializedResult() {}
  20. }
  21.  
  22. auto serialize(Serializer, T, ARGS)(T value, ARGS )
  23. {
  24.     auto serializer = Serializer();
  25.     serialize(serializer, value);
  26.     return serializer.getSerializedResult;
  27. }
  28.  
  29. void serialize(Serializer, T)(Serializer serializer, T value)
  30. {
  31.     serializeImpl!(Serializer, DefaultPolicy, T)(serializer, value);
  32. }
  33.  
  34. void serializeImpl(Serializer, alias Policy, T, ATTRIBUTES...)(Serializer , T value)
  35. {
  36.     alias TU = T;
  37.     static if (isArray!TU) { foreach (i; value) {} }
  38. }
  39.  
  40. template DefaultPolicy()
  41. {
  42. }
  43.  
  44. int main()
  45. {
  46.     auto counter = RangeCounter();
  47.     serializeToJson(counter, [MyType()]);
  48.  
  49.     return 0;
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement