Advertisement
Guest User

Untitled

a guest
Aug 12th, 2016
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
D 0.74 KB | None | 0 0
  1. module flow.data.base;
  2.  
  3. import std.signals;
  4. import std.uuid;
  5.  
  6. import flow.type.base;
  7.  
  8. mixin template DataProperty(T, string name)
  9. {
  10.     mixin("T " ~ name ~ ";");
  11.     mixin("void " ~ name ~ "(T value){}");
  12.     mixin("T " ~ name ~ "(){}");
  13. }
  14.  
  15. class PropertyEventArgs : EventArgs { }
  16.  
  17. class PropertyChangingEventArgs : PropertyEventArgs { }
  18.  
  19. class PropertyChangedEventArgs : PropertyEventArgs { }
  20.  
  21. struct PropertyChangingSignal { mixin Signal!(Object, PropertyChangingEventArgs); }
  22.  
  23. struct PropertyChangedSignal
  24. {
  25.     mixin Signal!(Object, PropertyChangedEventArgs);
  26. }
  27.  
  28. abstract class DataObject
  29. {
  30.     mixin DataProperty!(UUID, name);
  31.    
  32.     immutable PropertyChangingSignal propertyChanged;
  33.    
  34.     immutable PropertyChangingSignal propertyChanging;
  35. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement