1 module uim.core.mixins; 2 3 public import uim.core.mixins.function_; 4 public import uim.core.mixins.properties; 5 6 template PropertyOverride(string dataType, string propertyName, string defaultValue = null) { 7 const char[] PropertyOverride = " 8 alias "~propertyName~" = super."~propertyName~"; 9 @property override "~dataType~" "~propertyName~"() { return _"~propertyName~"; } 10 @property override void "~propertyName~"("~dataType~" newValue) { _"~propertyName~" = newValue; }"; 11 } 12 13 template MyPropertyString(string propertyName, string defaultValue = null) { 14 const char[] MyProperty = " 15 protected string _"~propertyName~(defaultValue.length > 0 ? " = "~defaultValue : "")~"; 16 protected string _default"~propertyName~(defaultValue.length > 0 ? " = "~defaultValue : "")~"; 17 18 auto "~propertyName~"Default() { return _default"~propertyName~"; } 19 void "~propertyName~"Reset() { _"~propertyName~" = _default"~propertyName~"; } 20 void "~propertyName~"Default(string v) { _default"~propertyName~" = v; } 21 bool "~propertyName~"IsDefault() { return (_"~propertyName~" == _default"~propertyName~"); } 22 23 @property string "~propertyName~"(this O)() { return _"~propertyName~"; } 24 @property O "~propertyName~"(this O)(string newValue) { _"~propertyName~" = newValue; return cast(O)this; }"; 25 } 26 27 template MyPropertyOverride(string dataType, string propertyName, string sourceName = "super") { 28 const char[] MyPropertyOverride = " 29 alias "~propertyName~" = "~sourceName~"."~propertyName~"; 30 @property "~dataType~" "~propertyName~"(this O)() { return _"~propertyName~"; } 31 @property O "~propertyName~"(this O)("~dataType~" newValue) { _"~propertyName~" = newValue; return cast(O)this; }"; 32 } 33 34 template BoolProperty(string propertyName, string defaultValue = null) { 35 const char[] BoolProperty = " 36 protected bool _"~propertyName~(defaultValue.length > 0 ? " = "~defaultValue : "")~"; 37 protected bool _default"~propertyName~(defaultValue.length > 0 ? " = "~defaultValue : "")~"; 38 39 @property bool "~propertyName~"() { return _"~propertyName~"; } 40 @property O "~propertyName~"(this O)(bool value) { _"~propertyName~" = value; return cast(O)this; } 41 42 auto "~propertyName~"Default() { return _default"~propertyName~"; } 43 void "~propertyName~"Reset() { _"~propertyName~" = _default"~propertyName~"; } 44 void "~propertyName~"Default(bool value) { _default"~propertyName~" = value; } 45 bool "~propertyName~"IsDefault() { return (_"~propertyName~" == _default"~propertyName~"); } 46 "; 47 } 48 49 template StringProperty(string propertyName, string defaultValue = null) { 50 const char[] StringProperty = " 51 protected string _"~propertyName~(defaultValue.length > 0 ? " = "~defaultValue : "")~"; 52 protected string _default"~propertyName~(defaultValue.length > 0 ? " = "~defaultValue : "")~"; 53 54 @property string "~propertyName~"() { return _"~propertyName~"; } 55 @property O "~propertyName~"(this O)(string value) { _"~propertyName~" = value; return cast(O)this; } 56 57 auto "~propertyName~"Default() { return _default"~propertyName~"; } 58 void "~propertyName~"Reset() { _"~propertyName~" = _default"~propertyName~"; } 59 void "~propertyName~"Default(string value) { _default"~propertyName~" = value; } 60 bool "~propertyName~"IsDefault() { return (_"~propertyName~" == _default"~propertyName~"); } 61 "; 62 } 63 64 template EnumProperty(string dataType, string propertyName, string defaultValue = null) { 65 const char[] EnumProperty = " 66 protected "~dataType~" _"~propertyName~(defaultValue.length > 0 ? " = "~dataType~"."~defaultValue : "")~"; 67 protected "~dataType~" _default"~propertyName~(defaultValue.length > 0 ? " = "~dataType~"."~defaultValue : "")~"; 68 69 @property "~dataType~" "~propertyName~"() { return _"~propertyName~"; } 70 @property O "~propertyName~"(this O)("~dataType~" value) { _"~propertyName~" = value; return cast(O)this; } 71 72 auto "~propertyName~"Default() { return _default"~propertyName~"; } 73 void "~propertyName~"Reset() { _"~propertyName~" = _default"~propertyName~"; } 74 void "~propertyName~"Default("~dataType~" value) { _default"~propertyName~" = value; } 75 bool "~propertyName~"IsDefault() { return (_"~propertyName~" == _default"~propertyName~"); } 76 "; 77 }