Esempio n. 1
0
        internal CandidateFinder(VfState vfs)
        {
            _vfs = vfs;

            if (
                !vfs.fnCmp(vfs.LstOut1.Count, vfs.LstOut2.Count) ||
                !vfs.fnCmp(vfs.LstIn1.Count, vfs.LstIn2.Count) ||
                !vfs.fnCmp(vfs.LstDisconnected1.Count, vfs.LstDisconnected2.Count))
            {
                _fFailImmediately = true;
                return;
            }
            if (vfs.LstOut2.Count > 0 && vfs.LstOut1.Count > 0)
            {
                _arinodGraph1 = new int[vfs.LstOut1.Count];
                vfs.LstOut1.CopyTo(_arinodGraph1);
                SetInitialMatch(vfs.LstOut1[0], vfs.LstOut2[0]);
            }
            else if (vfs.LstIn2.Count > 0 && vfs.LstIn1.Count > 0)
            {
                _arinodGraph1 = new int[vfs.LstIn1.Count];
                vfs.LstIn1.CopyTo(_arinodGraph1);
                SetInitialMatch(vfs.LstIn1[0], vfs.LstIn2[0]);
            }
            else if (vfs.LstDisconnected1.Count >= 0)
            {
                _arinodGraph1 = new int[vfs.LstDisconnected1.Count];
                vfs.LstDisconnected1.CopyTo(_arinodGraph1);
                SetInitialMatch(vfs.LstDisconnected1[0], vfs.LstDisconnected2[0]);
            }
        }