diff --git a/CS2JLibrary/src/CS2JNet/System/LCC/Action.java b/CS2JLibrary/src/CS2JNet/System/LCC/Action.java new file mode 100644 index 0000000..f6be02d --- /dev/null +++ b/CS2JLibrary/src/CS2JNet/System/LCC/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.LCC; + +import java.util.List; + +public interface Action { + void invoke(T obj) throws Exception ; + + List> getInvocationList() throws Exception ; + +} diff --git a/CS2JLibrary/src/CS2JNet/System/LCC/EventHandler.java b/CS2JLibrary/src/CS2JNet/System/LCC/EventHandler.java new file mode 100644 index 0000000..801fa42 --- /dev/null +++ b/CS2JLibrary/src/CS2JNet/System/LCC/EventHandler.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.LCC; + +import java.util.List; + +public interface EventHandler { + void invoke(Object sender, TEventArgs value) throws Exception ; + + List> getInvocationList() throws Exception ; + +} diff --git a/CS2JLibrary/src/CS2JNet/System/LCC/Predicate.java b/CS2JLibrary/src/CS2JNet/System/LCC/Predicate.java new file mode 100644 index 0000000..6ac86fa --- /dev/null +++ b/CS2JLibrary/src/CS2JNet/System/LCC/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.LCC; + +import java.util.List; + +public interface Predicate { + boolean invoke(T obj) throws Exception ; + + List> getInvocationList() throws Exception ; + +} diff --git a/CS2JLibrary/src/CS2JNet/System/LCC/__MultiAction.java b/CS2JLibrary/src/CS2JNet/System/LCC/__MultiAction.java new file mode 100644 index 0000000..173aba8 --- /dev/null +++ b/CS2JLibrary/src/CS2JNet/System/LCC/__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.LCC; + +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/LCC/__MultiEventHandler.java b/CS2JLibrary/src/CS2JNet/System/LCC/__MultiEventHandler.java new file mode 100644 index 0000000..9cc6b43 --- /dev/null +++ b/CS2JLibrary/src/CS2JNet/System/LCC/__MultiEventHandler.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.LCC; + +import java.util.ArrayList; +import java.util.LinkedList; +import java.util.List; + +import CS2JNet.JavaSupport.util.ListSupport; + +/** + * @author keving + * + */ +public class __MultiEventHandler implements EventHandler { + + public void invoke(Object other, TEventArgs e) throws Exception { + List> copy, members = this.getInvocationList(); + synchronized (members) + { + copy = new LinkedList>(members); + } + for (EventHandler d : copy) + { + d.invoke(other, e); + } + } + + private List> _invocationList = new ArrayList>(); + public static EventHandler combine(EventHandler a, EventHandler b) throws Exception { + if (a == null) + return b; + + if (b == null) + return a; + + __MultiEventHandler ret = new __MultiEventHandler(); + ret._invocationList = a.getInvocationList(); + ret._invocationList.addAll(b.getInvocationList()); + return ret; + } + + public static EventHandler remove(EventHandler a, EventHandler 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 + { + __MultiEventHandler ret = new __MultiEventHandler(); + ret._invocationList = newInvList; + return ret; + } + } + + public List> getInvocationList() throws Exception { + return _invocationList; + } + + +} diff --git a/CS2JLibrary/src/CS2JNet/System/LCC/__MultiPredicate.java b/CS2JLibrary/src/CS2JNet/System/LCC/__MultiPredicate.java new file mode 100644 index 0000000..35d07d5 --- /dev/null +++ b/CS2JLibrary/src/CS2JNet/System/LCC/__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.LCC; + +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; + } + + +}