Author: jbeard
Date: Sun Jun 27 02:11:45 2010
New Revision: 958312

URL: http://svn.apache.org/viewvc?rev=958312&view=rev
Log:
Merged branch SCXML-140 back into trunk.

Added:
    commons/sandbox/gsoc/2010/scxml-js/trunk/test/in_predicate/
      - copied from r958311, 
commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-140/test/in_predicate/
    
commons/sandbox/gsoc/2010/scxml-js/trunk/test/in_predicate/TestInPredicate.xml
      - copied unchanged from r958311, 
commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-140/test/in_predicate/TestInPredicate.xml
    commons/sandbox/gsoc/2010/scxml-js/trunk/test/in_predicate/scripts/
      - copied from r958311, 
commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-140/test/in_predicate/scripts/
    
commons/sandbox/gsoc/2010/scxml-js/trunk/test/in_predicate/scripts/unitTest.js
      - copied unchanged from r958311, 
commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-140/test/in_predicate/scripts/unitTest.js
Modified:
    commons/sandbox/gsoc/2010/scxml-js/trunk/   (props changed)
    commons/sandbox/gsoc/2010/scxml-js/trunk/build.js
    
commons/sandbox/gsoc/2010/scxml-js/trunk/src/javascript/scxml/cgf/SCXMLCompiler.js
    
commons/sandbox/gsoc/2010/scxml-js/trunk/src/javascript/scxml/cgf/util/base.js
    
commons/sandbox/gsoc/2010/scxml-js/trunk/src/xslt/backends/js/AbstractEnumeratedStatechartGenerator.xsl
    
commons/sandbox/gsoc/2010/scxml-js/trunk/src/xslt/backends/js/AbstractStatechartGenerator.xsl
    
commons/sandbox/gsoc/2010/scxml-js/trunk/src/xslt/backends/js/StatePatternStatechartGenerator.xsl
    
commons/sandbox/gsoc/2010/scxml-js/trunk/src/xslt/backends/js/StateTableStatechartGenerator.xsl
    
commons/sandbox/gsoc/2010/scxml-js/trunk/src/xslt/backends/js/SwitchyardStatechartGenerator.xsl

Propchange: commons/sandbox/gsoc/2010/scxml-js/trunk/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sun Jun 27 02:11:45 2010
@@ -1,3 +1,4 @@
 /commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-138-139:958222
+/commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-140:958231-958311
 /commons/sandbox/gsoc/2010/scxml-js/branches/browser-tests.1.ie:954350-956951
 
/commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137:957703-958221

Modified: commons/sandbox/gsoc/2010/scxml-js/trunk/build.js
URL: 
http://svn.apache.org/viewvc/commons/sandbox/gsoc/2010/scxml-js/trunk/build.js?rev=958312&r1=958311&r2=958312&view=diff
==============================================================================
--- commons/sandbox/gsoc/2010/scxml-js/trunk/build.js (original)
+++ commons/sandbox/gsoc/2010/scxml-js/trunk/build.js Sun Jun 27 02:11:45 2010
@@ -77,7 +77,7 @@ require.def("build",
                                KitchenSink_performance 
:"test/kitchen_sink/KitchenSink_performance.xml",
                                KitchenSink_executableContent 
:"test/kitchen_sink/KitchenSink_executableContent.xml",
                                ConditionalTransition 
:"test/conditional_transition/TestConditionalTransition.xml",
-                               ConditionalTransition_executableContent 
:"test/conditional_transition/TestConditionalTransition_executableContent.xml"
+                               InPredicate 
:"test/in_predicate/TestInPredicate.xml"
                        }
 
                        //FIXME: this violates Don't Repeat Yourself; these 
paths are written here and in the module
@@ -107,7 +107,7 @@ require.def("build",
                                        "test/kitchen_sink/scripts/unitTest",
                                        
"test/kitchen_sink/scripts/unitTest_executableContent",
                                        
"test/conditional_transition/scripts/unitTest",
-                                       
"test/conditional_transition/scripts/unitTest"
+                                       "test/in_predicate/scripts/unitTest"
                        ]
 
                        //gets populated at run-time

Modified: 
commons/sandbox/gsoc/2010/scxml-js/trunk/src/javascript/scxml/cgf/SCXMLCompiler.js
URL: 
http://svn.apache.org/viewvc/commons/sandbox/gsoc/2010/scxml-js/trunk/src/javascript/scxml/cgf/SCXMLCompiler.js?rev=958312&r1=958311&r2=958312&view=diff
==============================================================================
--- 
commons/sandbox/gsoc/2010/scxml-js/trunk/src/javascript/scxml/cgf/SCXMLCompiler.js
 (original)
+++ 
commons/sandbox/gsoc/2010/scxml-js/trunk/src/javascript/scxml/cgf/SCXMLCompiler.js
 Sun Jun 27 02:11:45 2010
@@ -54,7 +54,7 @@ require.def("src/javascript/scxml/cgf/SC
                        if(!options.inFiles) return false;
 
                        if(options.ie){
-                               options.noMap = options.noForEach = 
options.noIndexOf = true;
+                               options.noMap = options.noForEach = 
options.noIndexOf = options.noSome = true;
                        }
 
                        var backendModuleToImport = 

Modified: 
commons/sandbox/gsoc/2010/scxml-js/trunk/src/javascript/scxml/cgf/util/base.js
URL: 
http://svn.apache.org/viewvc/commons/sandbox/gsoc/2010/scxml-js/trunk/src/javascript/scxml/cgf/util/base.js?rev=958312&r1=958311&r2=958312&view=diff
==============================================================================
--- 
commons/sandbox/gsoc/2010/scxml-js/trunk/src/javascript/scxml/cgf/util/base.js 
(original)
+++ 
commons/sandbox/gsoc/2010/scxml-js/trunk/src/javascript/scxml/cgf/util/base.js 
Sun Jun 27 02:11:45 2010
@@ -31,5 +31,14 @@ function(){
                return undefined;
            }
        }
+
+       if(!Array.some){
+               Array.prototype.some = function(fn){
+                       for(var i=0; i < this.length; i++){
+                               if(fn(this[i])) return true;
+                       }
+                       return false;
+               }
+       }
 });
 

Modified: 
commons/sandbox/gsoc/2010/scxml-js/trunk/src/xslt/backends/js/AbstractEnumeratedStatechartGenerator.xsl
URL: 
http://svn.apache.org/viewvc/commons/sandbox/gsoc/2010/scxml-js/trunk/src/xslt/backends/js/AbstractEnumeratedStatechartGenerator.xsl?rev=958312&r1=958311&r2=958312&view=diff
==============================================================================
--- 
commons/sandbox/gsoc/2010/scxml-js/trunk/src/xslt/backends/js/AbstractEnumeratedStatechartGenerator.xsl
 (original)
+++ 
commons/sandbox/gsoc/2010/scxml-js/trunk/src/xslt/backends/js/AbstractEnumeratedStatechartGenerator.xsl
 Sun Jun 27 02:11:45 2010
@@ -22,15 +22,18 @@
 
        <import href="AbstractStatechartGenerator.xsl"/>
 
-       <param name="defaultEventLiteral" select="'$default'"/>
-       <param name="currentConfigurationExpression" 
+       <variable name="defaultEventLiteral" select="'$default'"/>
+       <variable name="currentConfigurationExpression" 
                select="'currentConfiguration.map(function(s){return 
STATE_INT_ID_TO_OBJECT_MAP[s]})'"/>
+       <variable name="inPredicateFunctionStateReference" select="'state.id'"/>
+       <variable name="inPredicateFunctionStateIdReference" 
select="'STATE_INT_ID_TO_OBJECT_MAP[s]'"/>
+
        
-       <param 
name="genHistoryTriggerDispatcherCurrentConfigurationAssignmentRHS"
+       <variable 
name="genHistoryTriggerDispatcherCurrentConfigurationAssignmentRHS"
                select="'newConfiguration.map(function(sObj){return 
sObj.id})'"/>
-       <param name="genHistoryTriggerDispatcherInnerForEachStateReference"
+       <variable name="genHistoryTriggerDispatcherInnerForEachStateReference"
                select="'STATE_INT_ID_TO_OBJECT_MAP[state]'"/>
-       <param name="genNonBasicTriggerDispatcherExitBlockIteratorExpression"
+       <variable name="genNonBasicTriggerDispatcherExitBlockIteratorExpression"
                select="'currentConfiguration.map(function(state){return 
STATE_INT_ID_TO_OBJECT_MAP[state]})'"/>
 
 
@@ -215,6 +218,7 @@
        <template name="genStateHooks"/>
        <template name="genEnumeratedHooks"/>
        <template name="genTriggerIntEnum"/>
+
 </stylesheet>
 
 

Modified: 
commons/sandbox/gsoc/2010/scxml-js/trunk/src/xslt/backends/js/AbstractStatechartGenerator.xsl
URL: 
http://svn.apache.org/viewvc/commons/sandbox/gsoc/2010/scxml-js/trunk/src/xslt/backends/js/AbstractStatechartGenerator.xsl?rev=958312&r1=958311&r2=958312&view=diff
==============================================================================
--- 
commons/sandbox/gsoc/2010/scxml-js/trunk/src/xslt/backends/js/AbstractStatechartGenerator.xsl
 (original)
+++ 
commons/sandbox/gsoc/2010/scxml-js/trunk/src/xslt/backends/js/AbstractStatechartGenerator.xsl
 Sun Jun 27 02:11:45 2010
@@ -25,16 +25,19 @@
        <param name="noIndexOf" select="false()"/>
        <param name="noMap" select="false()"/>
        <param name="noForEach" select="false()"/>
+       <param name="noSome" select="false()"/>
        <param name="name"/>
 
-       <!-- these params get overridden by subclasses -->
-       <param name="dispatchInvocation"/>
-       <param name="currentConfigurationExpression"/>
-       <param name="defaultEventLiteral"/>
+       <!-- these variables get overridden by subclasses -->
+       <variable name="dispatchInvocation"/>
+       <variable name="currentConfigurationExpression"/>
+       <variable name="defaultEventLiteral"/>
+       <variable name="inPredicateFunctionStateReference"/>
+       <variable name="inPredicateFunctionStateIdReference"/>
        <!-- TODO: refactor these names-->
-       <param 
name="genHistoryTriggerDispatcherCurrentConfigurationAssignmentRHS"/>
-       <param name="genHistoryTriggerDispatcherInnerForEachStateReference"/>
-       <param name="genNonBasicTriggerDispatcherExitBlockIteratorExpression"/>
+       <variable 
name="genHistoryTriggerDispatcherCurrentConfigurationAssignmentRHS"/>
+       <variable name="genHistoryTriggerDispatcherInnerForEachStateReference"/>
+       <variable 
name="genNonBasicTriggerDispatcherExitBlockIteratorExpression"/>
 
        <!-- main variables -->
        <variable name="allStates" 
@@ -75,6 +78,10 @@
                        <call-template 
name="genNoForEachArrayPrototypeExtension"/>
                </if>
 
+               <if test="$noSome">
+                       <call-template name="genNoSomeArrayPrototypeExtension"/>
+               </if>
+
                function <value-of select="$name"/>StatechartExecutionContext(){
 
                                var self = this;        //used in the rare 
occasions we call public functions from inside this class
@@ -119,6 +126,7 @@
                                //start static boilerplate code
                                <call-template 
name="genBoilerplateDispatchCode"/>
 
+                               <value-of select="$genInPredicateFunction"/>
                        }
 
        </template>
@@ -177,6 +185,31 @@
 
                                this.historyState = null;
 
+                               //these variables facilitate fast In predicate
+                               this.isBasic = 
+                               <choose>
+                                       <when test="$state/@c:isBasic">
+                                               true;
+                                       </when>
+                                       <otherwise>
+                                               false;
+                                       </otherwise>
+                               </choose>
+
+                               <!-- only basic states need this property -->
+                               <if test="$state/@c:isBasic">
+                                       this.ancestors = [
+                                               <for-each 
select="$state/ancestor::*">
+                                                       <value-of select="@id"/>
+                                                       <if test="position() != 
last()">
+                                                               ,
+                                                       </if>   
+                                               </for-each>
+                                       ];
+                               </if>
+
+
+
                                <if test="$state/self::s:history">
                                        this.parent.historyState = this; //init 
parent's pointer to history state
                                </if>
@@ -438,6 +471,11 @@
                        return <value-of 
select="$currentConfigurationExpression"/>;
                }
 
+               //public API for In predicate
+               this.$in = function(state){
+                       return In(state);
+               }
+
                //end static boilerplate code
        </template>
 
@@ -716,6 +754,28 @@
                }
        </template>
 
+       <template name="genNoSomeArrayPrototypeExtension">
+               if(!Array.some){
+                       Array.prototype.some = function(fn){
+                               for(var i=0; i &lt; this.length; i++){
+                                       if(fn(this[i])) return true;
+                               }
+                               return false;
+                       }
+               }
+       </template>
+
+       <variable name="genInPredicateFunction">
+               function In(state){
+                       state = typeof state == "string" ? self._states[state] 
: state;
+                               
+                       return state.isBasic ? 
+                               currentConfiguration.indexOf(<value-of 
select="$inPredicateFunctionStateReference"/>) != -1 : 
+                                       currentConfiguration.some(function(s){
+                                               return <value-of 
select="$inPredicateFunctionStateIdReference"/>.ancestors.indexOf(state) != -1;
+                                       });
+               }
+       </variable>
 
        <template name="genContextHooks"/>
        <template name="genStateHooks"/>
@@ -725,5 +785,6 @@
        <template name="genInitialization"/>
        <template name="genTriggerDispatcherContext"/>
 
+
 </stylesheet>
 

Modified: 
commons/sandbox/gsoc/2010/scxml-js/trunk/src/xslt/backends/js/StatePatternStatechartGenerator.xsl
URL: 
http://svn.apache.org/viewvc/commons/sandbox/gsoc/2010/scxml-js/trunk/src/xslt/backends/js/StatePatternStatechartGenerator.xsl?rev=958312&r1=958311&r2=958312&view=diff
==============================================================================
--- 
commons/sandbox/gsoc/2010/scxml-js/trunk/src/xslt/backends/js/StatePatternStatechartGenerator.xsl
 (original)
+++ 
commons/sandbox/gsoc/2010/scxml-js/trunk/src/xslt/backends/js/StatePatternStatechartGenerator.xsl
 Sun Jun 27 02:11:45 2010
@@ -22,14 +22,15 @@
 
        <import href="AbstractStatechartGenerator.xsl"/>
 
-       <!-- these params get overridden by subclasses -->
-       <param name="dispatchInvocation" select="'state[e]();'"/>
-       <param name="defaultEventLiteral" select="'&quot;$default&quot;'"/>
-       <param name="currentConfigurationExpression" 
select="'currentConfiguration.slice()'"/>
-
-       <param 
name="genHistoryTriggerDispatcherCurrentConfigurationAssignmentRHS" 
select="'newConfiguration'"/>
-       <param name="genHistoryTriggerDispatcherInnerForEachStateReference" 
select="'state'"/>
-       <param name="genNonBasicTriggerDispatcherExitBlockIteratorExpression" 
select="'currentConfiguration'"/>
+       <variable name="dispatchInvocation" select="'state[e]();'"/>
+       <variable name="defaultEventLiteral" select="'&quot;$default&quot;'"/>
+       <variable name="currentConfigurationExpression" 
select="'currentConfiguration.slice()'"/>
+       <variable name="inPredicateFunctionStateReference" select="'state'"/>
+       <variable name="inPredicateFunctionStateIdReference" select="'s'"/>
+
+       <variable 
name="genHistoryTriggerDispatcherCurrentConfigurationAssignmentRHS" 
select="'newConfiguration'"/>
+       <variable name="genHistoryTriggerDispatcherInnerForEachStateReference" 
select="'state'"/>
+       <variable 
name="genNonBasicTriggerDispatcherExitBlockIteratorExpression" 
select="'currentConfiguration'"/>
 
        <template name="genStateHooks">
                <param name="state"/>

Modified: 
commons/sandbox/gsoc/2010/scxml-js/trunk/src/xslt/backends/js/StateTableStatechartGenerator.xsl
URL: 
http://svn.apache.org/viewvc/commons/sandbox/gsoc/2010/scxml-js/trunk/src/xslt/backends/js/StateTableStatechartGenerator.xsl?rev=958312&r1=958311&r2=958312&view=diff
==============================================================================
--- 
commons/sandbox/gsoc/2010/scxml-js/trunk/src/xslt/backends/js/StateTableStatechartGenerator.xsl
 (original)
+++ 
commons/sandbox/gsoc/2010/scxml-js/trunk/src/xslt/backends/js/StateTableStatechartGenerator.xsl
 Sun Jun 27 02:11:45 2010
@@ -22,7 +22,7 @@
 
        <import href="AbstractEnumeratedStatechartGenerator.xsl"/>
 
-       <param name="dispatchInvocation" 
select="'STATE_TRANSITION_TABLE[state][e]();'"/>
+       <variable name="dispatchInvocation" 
select="'STATE_TRANSITION_TABLE[state][e]();'"/>
 
        <variable name="nullTransitionFunctionName" select="'$nt'"/>
 

Modified: 
commons/sandbox/gsoc/2010/scxml-js/trunk/src/xslt/backends/js/SwitchyardStatechartGenerator.xsl
URL: 
http://svn.apache.org/viewvc/commons/sandbox/gsoc/2010/scxml-js/trunk/src/xslt/backends/js/SwitchyardStatechartGenerator.xsl?rev=958312&r1=958311&r2=958312&view=diff
==============================================================================
--- 
commons/sandbox/gsoc/2010/scxml-js/trunk/src/xslt/backends/js/SwitchyardStatechartGenerator.xsl
 (original)
+++ 
commons/sandbox/gsoc/2010/scxml-js/trunk/src/xslt/backends/js/SwitchyardStatechartGenerator.xsl
 Sun Jun 27 02:11:45 2010
@@ -22,7 +22,7 @@
 
        <import href="AbstractEnumeratedStatechartGenerator.xsl"/>
 
-       <param name="dispatchInvocation" select="'dispatch(state,e)'"/>
+       <variable name="dispatchInvocation" select="'dispatch(state,e)'"/>
 
        <template name="genEnumeratedHooks">
                        //state transition table


Reply via email to