bindAll support
This commit is contained in:
@@ -38,6 +38,14 @@ class BindMacros {
|
||||
return BindableMacros.bindingSignalProvider.getUnbindAllExpr(object, type);
|
||||
}
|
||||
|
||||
static inline function bindAll(object:ExprOf<IBindable>, listener:Expr, force:Bool = true):Expr {
|
||||
var type = object.deepTypeof();
|
||||
if (!isBindable(type.getClass())) {
|
||||
Context.error('\'${object.toString()}\' must be bindx.IBindable', object.pos);
|
||||
}
|
||||
return BindableMacros.bindingSignalProvider.getBindAllExpr(object, type, listener, force);
|
||||
}
|
||||
|
||||
static inline function warnCheckField(field:Expr):{e:Expr, field:ClassField} {
|
||||
var res = null;
|
||||
try {
|
||||
|
||||
@@ -93,6 +93,10 @@ class BindSignalProvider implements IBindingSignalProvider {
|
||||
return macro bindx.BindSignal.SignalTools.unbindAll($expr);
|
||||
}
|
||||
|
||||
public function getBindAllExpr(expr:ExprOf<IBindable>, type:Type, listener:Expr, force:Bool = true):Expr {
|
||||
return macro bindx.BindSignal.SignalTools.bindAll($expr, $listener, $v{force});
|
||||
}
|
||||
|
||||
function generateSignal(field:Field, type:ComplexType, builder:Expr, res:Array<Field>):Void {
|
||||
var signalName = signalName(field.name);
|
||||
var meta = field.bindableMeta();
|
||||
|
||||
@@ -13,4 +13,5 @@ interface IBindingSignalProvider {
|
||||
function getClassFieldUnbindExpr(expr:Expr, field:ClassField, listener:Expr):Expr;
|
||||
function getClassFieldChangedExpr(expr:Expr, field:ClassField, oldValue:Expr, newValue:Expr):Expr;
|
||||
function getUnbindAllExpr(expr:ExprOf<IBindable>, type:Type):Expr;
|
||||
function getBindAllExpr(expr:ExprOf<IBindable>, type:Type, listener:Expr, force:Bool = true):Expr;
|
||||
}
|
||||
Reference in New Issue
Block a user