diff --git a/src/bindx/Bind.hx b/src/bindx/Bind.hx index d27d5f8..4e7dcb9 100644 --- a/src/bindx/Bind.hx +++ b/src/bindx/Bind.hx @@ -37,23 +37,23 @@ class Bind { #if macro - public static function internalBind(field:Expr, listener:Expr, doBind:Bool):Expr { + static function internalBind(field:Expr, listener:Expr, doBind:Bool):Expr { var fieldData = warnCheckField(field); return if (doBind) BindMacros.bindingSignalProvider.getClassFieldBindExpr(fieldData.e, fieldData.field, listener); else BindMacros.bindingSignalProvider.getClassFieldUnbindExpr(fieldData.e, fieldData.field, listener); } - public static function internalBindTo(field:Expr, target:Expr):Expr { + static function internalBindTo(field:Expr, target:Expr):Expr { var fieldData = warnCheckField(field); return BindMacros.bindingSignalProvider.getClassFieldBindToExpr(fieldData.e, fieldData.field, target); } - public static function internalNotify(field:Expr, ?oldValue:Expr, ?newValue:Expr):Expr { + static function internalNotify(field:Expr, ?oldValue:Expr, ?newValue:Expr):Expr { var fieldData = warnCheckField(field); return BindMacros.bindingSignalProvider.getClassFieldChangedExpr(fieldData.e, fieldData.field, oldValue, newValue); } - public static function internalUnbindAll(object:ExprOf):Expr { + static function internalUnbindAll(object:ExprOf):Expr { var type = Context.typeof(object).follow(); if (!isBindable(type.getClass())) { Context.error('\'${object.toString()}\' must be bindx.IBindable', object.pos); @@ -74,7 +74,7 @@ class Bind { return res; } - public static function checkField(f:Expr):{e:Expr, field:ClassField, error:bindx.Error} { + static function checkField(f:Expr):{e:Expr, field:ClassField, error:bindx.Error} { var error:bindx.Error; switch (f.expr) { case EField(e, field): @@ -108,7 +108,7 @@ class Bind { return {e:f, field:null, error:new bindx.Error('\'${f.toString()}\' is not bindable', f.pos)}; } - public static function isBindable(classType:ClassType):Bool { + static function isBindable(classType:ClassType):Bool { var check = [classType]; while (check.length > 0) { var t = check.shift(); diff --git a/src/bindx/BindExt.hx b/src/bindx/BindExt.hx index 0904d2e..2475c9e 100644 --- a/src/bindx/BindExt.hx +++ b/src/bindx/BindExt.hx @@ -29,6 +29,7 @@ typedef Chain = { #end @:access(bindx.BindMacros) +@:access(bindx.Bind) class BindExt { @:noUsing macro static public function expr(expr:ExprOf, listener:ExprOf->Null->Void>):ExprOfVoid> { @@ -51,7 +52,7 @@ class BindExt { #if macro - public static function internalBindChain(expr:Expr, listener:Expr):Expr { + static function internalBindChain(expr:Expr, listener:Expr):Expr { var zeroListener = listenerName(0, ""); var chain = null; try { chain = warnPrepareChain(expr, macro $i{ zeroListener }); } catch (e:bindx.Error) e.contextError(); @@ -61,7 +62,7 @@ class BindExt { )($listener); } - public static function internalBindExpr(expr:Expr, listener:Expr):Expr { + static function internalBindExpr(expr:Expr, listener:Expr):Expr { var type = Context.typeof(expr).toComplexType(); var listenerNameExpr = macro listener; var fieldListenerName = "fieldListener"; @@ -146,13 +147,12 @@ class BindExt { var zeroListener = listenerName(0, ""); var zeroValue = 'value0'; + chain.unbind.unshift(macro $i { zeroValue } = null); var callListener = switch (type) { case macro : Void: macro if (!init) $i{zeroListener}(); case _: macro if (!init) { var v:Null<$type> = null; try { v = $expr; } catch (e:Dynamic) { }; $i{zeroListener}($i{zeroValue}, $i{zeroValue} = v); }; } - - chain.unbind.unshift(macro $i{zeroValue} = null); var preInit = [ (macro var init:Bool = true), @@ -203,7 +203,6 @@ class BindExt { } prevField = field; } - return fields; } diff --git a/src/bindx/IBindingSignalProvider.hx b/src/bindx/IBindingSignalProvider.hx index c2c7d6b..9fd4ac7 100644 --- a/src/bindx/IBindingSignalProvider.hx +++ b/src/bindx/IBindingSignalProvider.hx @@ -6,7 +6,7 @@ import haxe.macro.Expr; import haxe.macro.Type; interface IBindingSignalProvider { - + function getFieldDispatcher(field:Field, result:Array):Void; function getFieldChangedExpr(field:Field, oldValue:Expr, newValue:Expr):Expr;