Exemple #1
0
        public void AddTran(StateTransition trans)
        {
            //step1. check conflict
            LogManager.Assert(!_check_conflict(trans), "new trans conflict with other trans");

            //step2. add
            //condition a : single transition
            if (trans is ST_Single)
            {
                ST_Single single_tran = trans as ST_Single;
                _single_tran_set.Add(single_tran);

                _add_single_tran(single_tran);
            }
            //condition b : group transition
            else if (trans is ST_Group)
            {
                ST_Group group_tran = trans as ST_Group;
                _group_tran_set.Add(group_tran);

                foreach (var single_tran in group_tran.trans_list)
                {
                    _add_single_tran(single_tran);
                }
            }
            else
            {
                LogManager.Error("AddTran : transition type [{0}] unhandled", trans.GetType());
            }
        }
Exemple #2
0
        public void RemoveTran(StateTransition trans)
        {
            if (trans is ST_Single)
            {
                ST_Single single_tran = trans as ST_Single;

                //remove from set
                LogManager.Assert(_single_tran_set.Contains(single_tran), "RemoveTran Error11");
                _single_tran_set.Remove(single_tran);

                //remove from map
                _remove_single_tran(single_tran);
            }
            else if (trans is ST_Group)
            {
                ST_Group group_tran = trans as ST_Group;

                //remove from set
                LogManager.Assert(_group_tran_set.Contains(group_tran), "RemoveTran Error22");
                _group_tran_set.Remove(group_tran);

                //remove from map
                foreach (var st_single in group_tran.trans_list)
                {
                    _remove_single_tran(st_single);
                }
            }
            else
            {
                LogManager.Error("Remove Tran : transition type [{0}] unhandled", trans.GetType());
            }
        }