Exemplo n.º 1
0
            public bool TryMarge(CodeSeed b, out CodeSeed ret)
            {
                ret = null;
                if (!(this is CanMargeCodeSeed am))
                {
                    return(false);
                }
                if (!(b is CanMargeCodeSeed bm))
                {
                    return(false);
                }
                if (am.Type != bm.Type)
                {
                    return(false);
                }

                ret = CanMargeCodeSeed.Marge(am, bm);
                return(true);
            }
Exemplo n.º 2
0
                static public CanMargeCodeSeed Marge(CanMargeCodeSeed a, CanMargeCodeSeed b)
                {
                    if (a.Type != b.Type)
                    {
                        throw new ArgumentNullException();
                    }

                    if (a._header == b._header)
                    {
                        return(new CanMargeCodeSeed(a, a._length + b._length));
                    }
                    else if (a._length > b._length)
                    {
                        return(new CanMargeCodeSeed(a, a._length - b._length));
                    }
                    else
                    {
                        return(new CanMargeCodeSeed(b, b._length - a._length));
                    }
                }
Exemplo n.º 3
0
 private CanMargeCodeSeed(CanMargeCodeSeed baseSeed, int length)
 {
     Type    = baseSeed.Type;
     _header = baseSeed._header;
     _length = length;
 }