📄 smccsharpgenerator.java
字号:
// deserialize constructor. if (Smc.isSerial() == true) { _source.print(_indent); _source.print(" public "); _source.print(context); _source.print("Context(SerializationInfo info, "); _source.println("StreamingContext context) :"); _source.print(_indent); _source.println(" base ()"); _source.print(_indent); _source.println(" {"); _source.print(_indent); _source.println(" int stackSize;"); _source.print(_indent); _source.println(" int stateId;"); _source.println(); _source.print(_indent); _source.print( " stackSize = "); _source.println("info.GetInt32(\"stackSize\");"); _source.print(_indent); _source.println(" if (stackSize > 0)"); _source.print(_indent); _source.println(" {"); _source.print(_indent); _source.println(" int index;"); _source.print(_indent); _source.println(" String name;"); _source.println(); _source.print(_indent); _source.print( " for (index = (stackSize - 1); "); _source.println("index >= 0; --index)"); _source.print(_indent); _source.println(" {"); _source.print(_indent); _source.print(" "); _source.println("name = \"stackIndex\" + index;"); _source.print(_indent); _source.print(" "); _source.println("stateId = info.GetInt32(name);"); _source.print(_indent); _source.print(" "); _source.println("PushState(_States[stateId]);"); _source.print(_indent); _source.println(" }"); _source.print(_indent); _source.println(" }"); _source.println(); _source.print(_indent); _source.println( " stateId = info.GetInt32(\"state\");"); _source.print(_indent); _source.println( " PushState(_States[stateId]);"); _source.print(_indent); _source.println(" }"); _source.println(); } // Generate the default transition methods. // First get the transition list. transitions = fsm.getTransitions(); for (SmcTransition trans: transitions) { transName = trans.getName(); // Ignore the default transition. if (transName.equals("Default") == false) { _source.print(_indent); _source.print(" public void "); _source.print(transName); _source.print("("); // Now output the transition's parameters. params = trans.getParameters(); for (pit = params.iterator(), separator = ""; pit.hasNext() == true; separator = ", ") { _source.print(separator); (pit.next()).accept(this); } _source.println(")"); _source.print(_indent); _source.println(" {"); // If the -sync flag was specified, then output // "lock(this)" to prevent multiple threads from // access this state machine simultaneously. if (Smc.isSynchronized() == true) { _source.print(_indent); _source.println(" lock (this)"); _source.print(_indent); _source.println(" {"); indent2 = _indent + " "; } else { indent2 = _indent + " "; } // Save away the transition name in case it is // need in an UndefinedTransitionException. _source.print(indent2); _source.print("_transition = \""); _source.print(transName); _source.println("\";"); _source.print(indent2); _source.print("State."); _source.print(transName); _source.print("(this"); for (SmcParameter param: params) { _source.print(", "); _source.print(param.getName()); } _source.println(");"); _source.print(indent2); _source.println("_transition = \"\";"); // If the -sync flag was specified, then output // the "End SyncLock". if (Smc.isSynchronized() == true) { _source.print(_indent); _source.println(" }"); _source.println(); } _source.print(_indent); _source.println(" return;"); _source.print(_indent); _source.println(" }"); _source.println(); } } // If -serial specified, then output the valueOf(int) // method. if (Smc.isSerial() == true) { _source.print(_indent); _source.print(" public "); _source.print(context); _source.println("State valueOf(int stateId)"); _source.print(_indent); _source.println(" {"); _source.print(_indent); _source.println(" return(_States[stateId]);"); _source.print(_indent); _source.println(" }"); _source.println(); } // If serialization is turned on, then output the // GetObjectData method. if (Smc.isSerial() == true) { _source.print(_indent); _source.print(" [SecurityPermissionAttribute("); _source.print("SecurityAction.Demand, "); _source.println("SerializationFormatter=true)]"); _source.print(_indent); _source.print(" public void GetObjectData("); _source.println("SerializationInfo info,"); _source.print(_indent); _source.print(" "); _source.println("StreamingContext context)"); _source.print(_indent); _source.println(" {"); _source.print(_indent); _source.println(" int stackSize = 0;"); _source.println(); _source.print(_indent); _source.println(" if (_stateStack != null)"); _source.print(_indent); _source.println(" {"); _source.print(_indent); _source.println( " stackSize = _stateStack.Count;"); _source.print(_indent); _source.println(" }"); _source.println(); _source.print(_indent); _source.print(" "); _source.println( "info.AddValue(\"stackSize\", stackSize);"); _source.println(); _source.print(_indent); _source.println(" if (stackSize > 0)"); _source.print(_indent); _source.println(" {"); _source.print(_indent); _source.println(" int index = 0;"); _source.print(_indent); _source.println(" String name;"); _source.println(); _source.print(_indent); _source.print(" foreach ("); _source.print(context); _source.println("State state in _stateStack)"); _source.print(_indent); _source.println(" {"); _source.print(_indent); _source.print(" "); _source.println("name = \"stackIndex\" + index;"); _source.print(_indent); _source.print(" info.AddValue("); _source.println("name, state.Id);"); _source.print(_indent); _source.println(" ++index;"); _source.print(_indent); _source.println(" }"); _source.print(_indent); _source.println(" }"); _source.println(); _source.print(_indent); _source.println( " info.AddValue(\"state\", _state.Id);"); _source.println(); _source.print(_indent); _source.println(" return;"); _source.print(_indent); _source.println(" }"); _source.println(); } // Declare member data. _source.print(_indent); _source.println( "//---------------------------------------------------------------"); _source.print(_indent); _source.println("// Member data."); _source.print(_indent); _source.println("//"); _source.println(); _source.print(_indent); _source.println(" [NonSerialized]"); _source.print(_indent); _source.print(" private "); _source.print(context); _source.println(" _owner;"); _source.println(); // If serialization support is on, then create the state // array. if (Smc.isSerial() == true) { Iterator<SmcMap> mit; SmcMap map; String mapName; Iterator<SmcState> sit; SmcState state; _source.print(_indent); _source.println( " // Map state IDs to state objects."); _source.print(_indent); _source.println( " // Used to deserialize an FSM."); _source.print(_indent); _source.println(" [NonSerialized]"); _source.print(_indent); _source.print(" private static "); _source.print(context); _source.println("State[] _States ="); _source.print(_indent); _source.print(" {"); for (mit = maps.iterator(), separator = ""; mit.hasNext() == true; ) { map = mit.next(); mapName = map.getName(); for (sit = map.getStates().iterator(); sit.hasNext() == true; separator = ",") { state = sit.next(); _source.println(separator); _source.print(_indent); _source.print(" "); _source.print(mapName); _source.print("."); _source.print(state.getClassName()); } } _source.println(); _source.print(_indent); _source.println(" };"); _source.println(); } // Declare the inner state class. _source.print(_indent); _source.println( "//---------------------------------------------------------------"); _source.print(_indent); _source.println("// Inner classes."); _source.print(_indent); _source.println("//"); _source.println(); _source.print(_indent); _source.print(" public abstract class "); _source.print(context); _source.println("State :"); _source.print(_indent); _source.println(" statemap.State"); _source.print(_indent); _source.println(" {"); // The abstract Transitions property - if reflection was // is specified. 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(" "); _source.println( "public abstract IDictionary Transitions"); _source.print(_indent); _source.println(" {"); _source.print(_indent); _source.println(" get;"); _source.print(_indent); _source.println(" }"); _source.println(); } _source.print(_indent); _source.println(" //-----------------------------------------------------------"); _source.print(_indent); _source.println(" // Member methods."); _source.print(_indent); _source.println(" //"); _source.println(); // State constructor. _source.print(_indent); _source.print(" internal "); _source.print(context); _source.println("State(string name, int id) :"); _source.print(_indent); _source.println(" base (name, id)"); _source.print(_indent); _source.println(" {}"); _source.println(); // Entry/Exit methods. _source.print(_indent); _source.print( " protected internal virtual void Entry("); _source.print(context); _source.println("Context context)"); _source.print(_indent); _source.println(" {}"); _source.println(); _source.print(_indent); _source.print( " protected internal virtual void Exit("); _source.print(context); _source.println("Context context)"); _source.print(_indent); _source.println(" {}"); _source.println(); // Transition methods (except default). for (SmcTransition trans: transitions)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -