⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smcvbgenerator.java

📁 SMC takes a state machine stored in a .sm file and generates a State pattern in twelve programming l
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
        // default state's transitions.        if (defaultState != null)        {            definedDefaultTransitions =                    defaultState.getTransitions();        }        else        {            definedDefaultTransitions =                new ArrayList<SmcTransition>();        }        // Declare the map class. Declare it as abstract to        // prevent its instantiation.        _source.println();        _source.print(_indent);        _source.print("Public MustInherit Class ");        _source.println(mapName);        _source.println();        _source.print(_indent);        _source.println(            "    '------------------------------------------------------------");        _source.print(_indent);        _source.println("    ' Shared data");        _source.print(_indent);        _source.println("    '");        _source.println();        // Declare each of the state class member data.        for (SmcState state: states)        {            stateName = state.getClassName();            _source.print(_indent);            _source.print("    Public Shared ");            _source.print(state.getInstanceName());            _source.print(" As ");            _source.print(mapName);            _source.print('_');            _source.print(stateName);            _source.println(" = _");            _source.print(_indent);            _source.print("        New ");            _source.print(mapName);            _source.print('_');            _source.print(stateName);            _source.print("(\"");            _source.print(mapName);            _source.print('.');            _source.print(stateName);            _source.print("\", ");            _source.print(map.getNextStateId());            _source.println(")");        }        // Create a default state as well.        _source.print(_indent);        _source.print("    Private Shared Default_ As ");        _source.print(mapName);        _source.println("_Default = _");        _source.print(_indent);        _source.print("        New ");        _source.print(mapName);        _source.print("_Default(\"");        _source.print(mapName);        _source.println(".Default\", -1)");        _source.println();        // End of the map class.        _source.print(_indent);        _source.println("End Class");        _source.println();        // Declare the map default state class.        _source.print(_indent);        _source.print("Public Class ");        _source.print(mapName);        _source.println("_Default");        _source.print(_indent);        _source.print("    Inherits ");        _source.print(context);        _source.println("State");        _source.println();        // If reflection is on, generate the Transition property.        if (Smc.isReflection() == true)        {            _source.print(_indent);            _source.println(                "    '------------------------------------------------------------");            _source.print(_indent);            _source.println("    ' Properties");            _source.print(_indent);            _source.println("    '");            _source.println();            _source.print(_indent);            _source.print("    Public Overrides ReadOnly ");            _source.println(                "Property Transitions() As IDictionary");            _source.print(_indent);            _source.println("        Get");            _source.println();            _source.print(_indent);            _source.println("            Return _transitions");            _source.print(_indent);            _source.println("        End Get");            _source.print(_indent);            _source.println("    End Property");            _source.println();        }        _source.print(_indent);        _source.println(            "    '------------------------------------------------------------");        _source.print(_indent);        _source.println("    ' Member methods");        _source.print(_indent);        _source.println("    '");        _source.println();        // Generate the constructor.        _source.print(_indent);        _source.print("    Public Sub New(");        _source.println(            "ByVal name As String, ByVal id As Integer)");        _source.println();        _source.print(_indent);        _source.println("        MyBase.New(name, id)");        _source.print(_indent);        _source.println("    End Sub");        _source.println();        // Declare the user-defined default transitions first.        for (SmcTransition transition: definedDefaultTransitions)        {            transition.accept(this);        }        // If reflection is on, then define the transitions list.        if (Smc.isReflection() == true)        {            List<SmcTransition> allTransitions =                map.getFSM().getTransitions();            String transName;            int transDefinition;            _source.println();            _source.print(_indent);            _source.println(                "    '------------------------------------------------------------");            _source.print(_indent);            _source.println("    ' Shared data");            _source.print(_indent);            _source.println("    '");            _source.println();            _source.print(_indent);            _source.print("    ");            _source.println(                "Private Shared _transitions As IDictionary");            _source.println();            _source.print(_indent);            _source.println("    Shared Sub New()");            _source.println();            _source.print(_indent);            _source.print("        ");            _source.println("_transitions = New Hashtable()");            // Now place the transition names into the list.            for (SmcTransition transition: allTransitions)            {                transName = transition.getName();                // If the transition is defined in this map's                // default state, then the value is 2.                if (definedDefaultTransitions.contains(                        transition) == true)                {                    transDefinition = 2;                }                // Otherwise the value is 0 - undefined.                else                {                    transDefinition = 0;                }                _source.print(_indent);                _source.print("        ");                _source.print("_transitions.Add(\"");                _source.print(transName);                _source.print("\", ");                _source.print(transDefinition);                _source.println(")");            }            _source.println();            _source.print(_indent);            _source.println("    End Sub");        }        _source.print(_indent);        _source.println("End Class");        // Have each state now generate its code. Each state        // class is an inner class.        for (SmcState state: states)        {            state.accept(this);        }        return;    } // end of visit(SmcMap)    public void visit(SmcState state)    {        SmcMap map = state.getMap();        String context = map.getFSM().getContext();        String mapName = map.getName();        List<SmcAction> actions;        // Declare the state class.        _source.println();        _source.print(_indent);        _source.print("Public NotInheritable Class ");        _source.print(mapName);        _source.print('_');        _source.println(state.getClassName());        _source.print(_indent);        _source.print("    Inherits ");        _source.print(mapName);        _source.println("_Default");        _source.println();        // Generate the Transitions property if reflection is on.        if (Smc.isReflection() == true)        {            _source.print(_indent);            _source.println(                "    '------------------------------------------------------------");            _source.print(_indent);            _source.println("    ' Properties");            _source.print(_indent);            _source.println("    '");            _source.println();            _source.print(_indent);            _source.print("    Public Overrides ReadOnly ");            _source.println(                "Property Transitions() As IDictionary");            _source.print(_indent);            _source.println("        Get");            _source.println();            _source.print(_indent);            _source.println("            Return _transitions");            _source.print(_indent);            _source.println("        End Get");            _source.print(_indent);            _source.println("    End Property");            _source.println();        }        _source.print(_indent);        _source.println(            "    '------------------------------------------------------------");        _source.print(_indent);        _source.println("    ' Member methods");        _source.print(_indent);        _source.println("    '");        _source.println();        // Add the constructor.        _source.print(_indent);        _source.print("    Public Sub New(");        _source.println(            "ByVal name As String, ByVal id As Integer)");        _source.println();        _source.print(_indent);        _source.println("        MyBase.New(name, id)");        _source.print(_indent);        _source.println("    End Sub");        // Add the Entry() and Exit() member functions if this        // state defines them.        actions = state.getEntryActions();        if (actions != null && actions.size() > 0)        {            _source.println();            _source.print(_indent);            _source.print("    Public Overrides Sub Entry(");            _source.print("ByRef context As ");            _source.print(context);            _source.println("Context)");            _source.println();            // Declare the "ctxt" local variable.            _source.print(_indent);            _source.print("       Dim ctxt As ");            _source.print(context);            _source.println(" = context.Owner");            _source.println();            // Generate the actions associated with this code.            for (SmcAction action: actions)            {                action.accept(this);            }            _source.print(_indent);            _source.println("    End Sub");        }        actions = state.getExitActions();        if (actions != null && actions.size() > 0)        {            _source.println();            _source.print(_indent);            _source.print("    Public Overrides Sub Exit(");            _source.print("ByRef context As ");            _source.print(context);            _source.println("Context)");            _source.println();            // Declare the "ctxt" local variable.            _source.print(_indent);            _source.print("        Dim ctxt As ");            _source.print(context);            _source.println(" = context.Owner");            _source.println();            // Generate the actions associated with this code.            for (SmcAction action: actions)            {                action.accept(this);            }            _source.print(_indent);            _source.println("    End Sub");        }        // Have each transition generate its code.        for (SmcTransition transition: state.getTransitions())        {            transition.accept(this);        }        // If reflection is on, then generate the transitions        // list.        if (Smc.isReflection() == true)        {            List<SmcTransition> allTransitions =                map.getFSM().getTransitions();            List<SmcTransition> stateTransitions =                state.getTransitions();            List<SmcTransition> defaultTransitions;            SmcState defaultState = map.getDefaultState();            String transName;            int transDefinition;            // Initialize the default transition list to all the            // default state's transitions.            if (defaultState != null)            {                defaultTransitions =                    defaultState.getTransitions();            }            else            {                defaultTransitions =                    new ArrayList<SmcTransition>();            }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -