diff --git a/CS2JLibrary/NetFramework/System/Action'1.xml b/CS2JLibrary/NetFramework/System/Action'1.xml new file mode 100644 index 0000000..576a55b --- /dev/null +++ b/CS2JLibrary/NetFramework/System/Action'1.xml @@ -0,0 +1,79 @@ + + + + + CS2JNet.System.Action + + Action*[${T}]* + System.Action + + T + + + + System.Object + + + + + CS2JNet.System.__MultiAction + + __MultiAction.Combine(${a},${b}) + + + System.Action*[T]* + a + + + System.Action*[T]* + b + + + Combine + + T + + System.Action*[T]* + + + + CS2JNet.System.__MultiAction + + __MultiAction.Remove(${a},${b}) + + + System.Action*[T]* + a + + + System.Action*[T]* + b + + + Remove + + T + + System.Action*[T]* + + + + ${this:16}.Invoke(${a}) + + + T + a + + + Invoke + + System.Boolean + + +yz+yOlqpwafASqBPdP2mB/lVgZk=Nv+agoqBJd5WaI7/+c3HuvQ/dt5/5j3fHCKxNm4v8TZITAC8J+AbF8DN3l3ZZC1+zmhBzRTyrMMD7EWi7zumiRrhC2r/+rUpYbfOeiHANORPmwqP5NvSBeUbWvEp3VRBtQZHYNTDNG1gbOApoTGZi0z3dSv1ySftgALkYlxmbrc= diff --git a/CS2JLibrary/NetFramework/System/EventHandler.xml b/CS2JLibrary/NetFramework/System/EventHandler.xml index ec07250..147c719 100644 --- a/CS2JLibrary/NetFramework/System/EventHandler.xml +++ b/CS2JLibrary/NetFramework/System/EventHandler.xml @@ -1,4 +1,4 @@ - + + + + CS2JNet.System.Predicate + + Predicate*[${T}]* + System.Predicate + + T + + + + System.Object + + + + + CS2JNet.System.__MultiPredicate + + __MultiPredicate.Combine(${a},${b}) + + + System.Predicate*[T]* + a + + + System.Predicate*[T]* + b + + + Combine + + T + + System.Predicate*[T]* + + + + CS2JNet.System.__MultiPredicate + + __MultiPredicate.Remove(${a},${b}) + + + System.Predicate*[T]* + a + + + System.Predicate*[T]* + b + + + Remove + + T + + System.Predicate*[T]* + + + + ${this:16}.Invoke(${a}) + + + T + a + + + Invoke + + System.Boolean + + +yz+yOlqpwafASqBPdP2mB/lVgZk=Nv+agoqBJd5WaI7/+c3HuvQ/dt5/5j3fHCKxNm4v8TZITAC8J+AbF8DN3l3ZZC1+zmhBzRTyrMMD7EWi7zumiRrhC2r/+rUpYbfOeiHANORPmwqP5NvSBeUbWvEp3VRBtQZHYNTDNG1gbOApoTGZi0z3dSv1ySftgALkYlxmbrc= diff --git a/CS2JLibrary/src/CS2JNet/System/Action.java b/CS2JLibrary/src/CS2JNet/System/Action.java new file mode 100644 index 0000000..7e7e6b7 --- /dev/null +++ b/CS2JLibrary/src/CS2JNet/System/Action.java @@ -0,0 +1,30 @@ +/* + Copyright 2007,2008,2009,2010 Rustici Software, LLC + Copyright 2010,2011 Kevin Glynn (kevin.glynn@twigletsoftware.com) + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + Author(s): + + Kevin Glynn (kevin.glynn@twigletsoftware.com) +*/ +package CS2JNet.System; + +import java.util.List; + +public interface Action { + void Invoke(T obj) throws Exception ; + + List> GetInvocationList() throws Exception ; + +} diff --git a/CS2JLibrary/src/CS2JNet/System/Predicate.java b/CS2JLibrary/src/CS2JNet/System/Predicate.java new file mode 100644 index 0000000..2b7b02c --- /dev/null +++ b/CS2JLibrary/src/CS2JNet/System/Predicate.java @@ -0,0 +1,30 @@ +/* + Copyright 2007,2008,2009,2010 Rustici Software, LLC + Copyright 2010,2011 Kevin Glynn (kevin.glynn@twigletsoftware.com) + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + Author(s): + + Kevin Glynn (kevin.glynn@twigletsoftware.com) +*/ +package CS2JNet.System; + +import java.util.List; + +public interface Predicate { + boolean Invoke(T obj) throws Exception ; + + List> GetInvocationList() throws Exception ; + +} diff --git a/CS2JLibrary/src/CS2JNet/System/__MultiAction.java b/CS2JLibrary/src/CS2JNet/System/__MultiAction.java new file mode 100644 index 0000000..d4598a4 --- /dev/null +++ b/CS2JLibrary/src/CS2JNet/System/__MultiAction.java @@ -0,0 +1,84 @@ +/* + Copyright 2010,2011 Kevin Glynn (kevin.glynn@twigletsoftware.com) + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + Author(s): + + Kevin Glynn (kevin.glynn@twigletsoftware.com) +*/ + +package CS2JNet.System; + +import java.util.ArrayList; +import java.util.LinkedList; +import java.util.List; + +import CS2JNet.JavaSupport.util.ListSupport; + +/** + * @author keving + * + */ +public class __MultiAction implements Action { + + public void Invoke(T obj) throws Exception { + List> copy, members = this.GetInvocationList(); + synchronized (members) + { + copy = new LinkedList>(members); + } + for (Action d : copy) + { + d.Invoke(obj); + } + } + + private List> _invocationList = new ArrayList>(); + public static Action Combine(Action a, Action b) throws Exception { + if (a == null) + return b; + + if (b == null) + return a; + + __MultiAction ret = new __MultiAction(); + ret._invocationList = a.GetInvocationList(); + ret._invocationList.addAll(b.GetInvocationList()); + return ret; + } + + public static Action Remove(Action a, Action b) throws Exception { + if (a == null || b == null) + return a; + + List> aInvList = a.GetInvocationList(); + List> newInvList = ListSupport.removeFinalStretch(aInvList, b.GetInvocationList()); + if (aInvList == newInvList) + { + return a; + } + else + { + __MultiAction ret = new __MultiAction(); + ret._invocationList = newInvList; + return ret; + } + } + + public List> GetInvocationList() throws Exception { + return _invocationList; + } + + +} diff --git a/CS2JLibrary/src/CS2JNet/System/__MultiPredicate.java b/CS2JLibrary/src/CS2JNet/System/__MultiPredicate.java new file mode 100644 index 0000000..6eeebd8 --- /dev/null +++ b/CS2JLibrary/src/CS2JNet/System/__MultiPredicate.java @@ -0,0 +1,86 @@ +/* + Copyright 2010,2011 Kevin Glynn (kevin.glynn@twigletsoftware.com) + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + Author(s): + + Kevin Glynn (kevin.glynn@twigletsoftware.com) +*/ + +package CS2JNet.System; + +import java.util.ArrayList; +import java.util.LinkedList; +import java.util.List; + +import CS2JNet.JavaSupport.util.ListSupport; + +/** + * @author keving + * + */ +public class __MultiPredicate implements Predicate { + + public boolean Invoke(T obj) throws Exception { + List> copy, members = this.GetInvocationList(); + synchronized (members) + { + copy = new LinkedList>(members); + } + boolean ret = false; + for (Predicate d : copy) + { + ret = d.Invoke(obj); + } + return ret; + } + + private List> _invocationList = new ArrayList>(); + public static Predicate Combine(Predicate a, Predicate b) throws Exception { + if (a == null) + return b; + + if (b == null) + return a; + + __MultiPredicate ret = new __MultiPredicate(); + ret._invocationList = a.GetInvocationList(); + ret._invocationList.addAll(b.GetInvocationList()); + return ret; + } + + public static Predicate Remove(Predicate a, Predicate b) throws Exception { + if (a == null || b == null) + return a; + + List> aInvList = a.GetInvocationList(); + List> newInvList = ListSupport.removeFinalStretch(aInvList, b.GetInvocationList()); + if (aInvList == newInvList) + { + return a; + } + else + { + __MultiPredicate ret = new __MultiPredicate(); + ret._invocationList = newInvList; + return ret; + } + } + + public List> GetInvocationList() throws Exception { + return _invocationList; + } + + +}