예제 #1
0
 public override void Deserialize(Deserializer deserializer)
 {
     base.Deserialize(deserializer);
     var touched = new Capo<bool>(fingerprint, tag.Offset);
     if (touched[0])
     {
         deserializer.Read(out message_);
     }
 }
예제 #2
0
        public override void Deserialize(Deserializer deserializer)
        {
            base.Deserialize(deserializer);
            var touched = new Capo <bool>(fingerprint, tag.Offset);

            if (touched[0])
            {
                deserializer.Read(out message_);
            }
        }
예제 #3
0
        public void TestCreation()
        {
            var fp = new Fingerprint(7);

            var window = new Capo<bool>(fp, 0);
            Assert.AreEqual(7, window.Length);

            window = new Capo<bool>(fp, 3);
            Assert.AreEqual(4, window.Length);

            // Invalid offset initialization attempt never throws
            Assert.DoesNotThrow(() => { window = new Capo<bool>(fp, 7); });
        }
예제 #4
0
파일: LinkClose.cs 프로젝트: nice1378/x2clr
 public override int GetHashCode(Fingerprint fingerprint)
 {
     var hash = new Hash(base.GetHashCode(fingerprint));
     if (fingerprint.Length <= tag.Offset)
     {
         return hash.Code;
     }
     var touched = new Capo<bool>(fingerprint, tag.Offset);
     if (touched[0])
     {
         hash.Update(name);
     }
     return hash.Code;
 }
예제 #5
0
        public void TestCreation()
        {
            var fp = new Fingerprint(7);

            var window = new Capo <bool>(fp, 0);

            Assert.Equal(7, window.Length);

            window = new Capo <bool>(fp, 3);
            Assert.Equal(4, window.Length);

            // Invalid offset initialization attempt never throws
            window = new Capo <bool>(fp, 7);
        }
예제 #6
0
        public override int GetHashCode(Fingerprint fingerprint)
        {
            var hash = new Hash(base.GetHashCode(fingerprint));

            if (fingerprint.Length <= tag.Offset)
            {
                return(hash.Code);
            }
            var touched = new Capo <bool>(fingerprint, tag.Offset);

            if (touched[0])
            {
                hash.Update(tag.Offset + 0);
                hash.Update(name_);
            }
            return(hash.Code);
        }
예제 #7
0
        protected override bool IsEquivalent(Cell other, Fingerprint fingerprint)
        {
            if (!base.IsEquivalent(other, fingerprint))
            {
                return(false);
            }
            HelloResp o       = (HelloResp)other;
            var       touched = new Capo <bool>(fingerprint, tag.Offset);

            if (touched[0])
            {
                if (message_ != o.message_)
                {
                    return(false);
                }
            }
            return(true);
        }
예제 #8
0
        public void TestCapoing()
        {
            var fp = new Fingerprint(8);
            fp.Touch(2);
            fp.Touch(4);

            var window = new Capo<bool>(fp, 3);
            Assert.False(window[0]);
            Assert.True(window[1]);
            Assert.False(window[2]);

            fp.Wipe(4);
            Assert.False(window[1]);

            // Out-of-range indexing never throws
            Assert.False(window[-8]);
            Assert.False(window[8]);
        }
예제 #9
0
        public override void Serialize(Serializer serializer,
                                       Type targetType, ref bool flag)
        {
            base.Serialize(serializer, targetType, ref flag);
            if (!flag)
            {
                return;
            }
            var touched = new Capo <bool>(fingerprint, tag.Offset);

            if (touched[0])
            {
                serializer.Write(message_);
            }
            if (targetType != null && targetType == typeof(HelloResp))
            {
                flag = false;
            }
        }
예제 #10
0
        public bool ToDocumentElement(TablatureContext context, ILogger logger, out Capo element)
        {
            if (context.DocumentState.BarAppeared)
            {
                logger.Report(LogLevel.Error, this.Range, Messages.Error_CapoInstructionAfterBarAppeared);
                element = null;
                return false;
            }

            element = new Capo
            {
                Range = this.Range,
                CapoInfo =
                    new CapoInfo(this.Position.Value,
                                 this.StringsSpecifier?.GetStringNumbers() ?? CapoInfo.AffectAllStrings)
            };

            return true;
        }
예제 #11
0
        public override int GetLength(Type targetType, ref bool flag)
        {
            int length = base.GetLength(targetType, ref flag);

            if (!flag)
            {
                return(length);
            }
            var touched = new Capo <bool>(fingerprint, tag.Offset);

            if (touched[0])
            {
                length += Serializer.GetLength(message_);
            }
            if (targetType != null && targetType == typeof(HelloResp))
            {
                flag = false;
            }
            return(length);
        }
예제 #12
0
        public void TestCapoing()
        {
            var fp = new Fingerprint(8);
            fp.Touch(2);
            fp.Touch(4);

            // Capo just displaces Fingerprint index with a provided offset.

            var window = new Capo<bool>(fp, 3);
            Assert.False(window[0]);
            Assert.True(window[1]);
            Assert.False(window[2]);

            fp.Wipe(4);
            Assert.False(window[1]);

            // Out-of-range indexing never throws
            Assert.False(window[-8]);
            Assert.False(window[8]);
        }
예제 #13
0
        public void TestCapoing()
        {
            var fp = new Fingerprint(8);

            fp.Touch(2);
            fp.Touch(4);

            // Capo just displaces Fingerprint index with a provided offset.

            var window = new Capo <bool>(fp, 3);

            Assert.False(window[0]);
            Assert.True(window[1]);
            Assert.False(window[2]);

            fp.Wipe(4);
            Assert.False(window[1]);

            // Out-of-range indexing never throws
            Assert.False(window[-8]);
            Assert.False(window[8]);
        }
예제 #14
0
 public override bool IsEquivalent(Cell other)
 {
     if (!base.IsEquivalent(other))
     {
         return false;
     }
     LinkSessionDisconnected o = (LinkSessionDisconnected)other;
     var touched = new Capo<bool>(fingerprint, tag.Offset);
     if (touched[0])
     {
         if (linkName != o.linkName)
         {
             return false;
         }
     }
     if (touched[1])
     {
         if (result != o.result)
         {
             return false;
         }
     }
     if (touched[2])
     {
         if (context != o.context)
         {
             return false;
         }
     }
     return true;
 }
예제 #15
0
 protected override bool IsEquivalent(Cell other, Fingerprint fingerprint)
 {
     if (!base.IsEquivalent(other, fingerprint))
     {
         return false;
     }
     LinkSessionConnected o = (LinkSessionConnected)other;
     var touched = new Capo<bool>(fingerprint, tag.Offset);
     if (touched[0])
     {
         if (linkName_ != o.linkName_)
         {
             return false;
         }
     }
     if (touched[1])
     {
         if (result_ != o.result_)
         {
             return false;
         }
     }
     if (touched[2])
     {
         if (context_ != o.context_)
         {
             return false;
         }
     }
     return true;
 }
예제 #16
0
 public override bool IsEquivalent(Cell other)
 {
     if (!base.IsEquivalent(other))
     {
         return false;
     }
     SampleEvent1 o = (SampleEvent1)other;
     var touched = new Capo<bool>(fingerprint, tag.Offset);
     if (touched[0])
     {
         if (foo_ != o.foo_)
         {
             return false;
         }
     }
     if (touched[1])
     {
         if (bar_ != o.bar_)
         {
             return false;
         }
     }
     return true;
 }
예제 #17
0
 public override bool IsEquivalent(Cell other)
 {
     if (!base.IsEquivalent(other))
     {
         return false;
     }
     SampleCell4 o = (SampleCell4)other;
     var touched = new Capo<bool>(fingerprint, tag.Offset);
     if (touched[0])
     {
         if (quux_ != o.quux_)
         {
             return false;
         }
     }
     return true;
 }
예제 #18
0
 protected override bool IsEquivalent(Cell other, Fingerprint fingerprint)
 {
     if (!base.IsEquivalent(other, fingerprint))
     {
         return false;
     }
     TestReq o = (TestReq)other;
     var touched = new Capo<bool>(fingerprint, tag.Offset);
     if (touched[0])
     {
         if (serial_ != o.serial_)
         {
             return false;
         }
     }
     return true;
 }
예제 #19
0
 public override void Serialize(Serializer serializer,
     Type targetType, ref bool flag)
 {
     base.Serialize(serializer, targetType, ref flag);
     if (!flag) { return; }
     var touched = new Capo<bool>(fingerprint, tag.Offset);
     if (touched[0])
     {
         serializer.Write(result_);
     }
     if (targetType != null && targetType == typeof(HelloResp))
     {
         flag = false;
     }
 }
예제 #20
0
 public ActionResult Item(Capo o)
 {
     return(View(o));
 }
예제 #21
0
 public override bool IsEquivalent(Cell other)
 {
     if (!base.IsEquivalent(other))
     {
         return false;
     }
     TimeoutEvent o = (TimeoutEvent)other;
     var touched = new Capo<bool>(fingerprint, tag.Offset);
     if (touched[0])
     {
         if ((object)key != null)
         {
             if (key is Cell)
             {
                 if (!((Cell)key).IsEquivalent((Cell)o.key))
                 {
                     return false;
                 }
             }
             else
             {
                 if (!key.Equals(o.key))
                 {
                     return false;
                 }
             }
         }
         else if ((object)o.key != null)
         {
             return false;
         }
     }
     return true;
 }
예제 #22
0
 protected override void Describe(StringBuilder stringBuilder)
 {
     base.Describe(stringBuilder);
     var touched = new Capo<bool>(fingerprint, tag.Offset);
     if (touched[0])
     {
         stringBuilder.AppendFormat(" LinkName={0}", linkName);
     }
     if (touched[1])
     {
         stringBuilder.AppendFormat(" Result={0}", result);
     }
     if (touched[2])
     {
         stringBuilder.AppendFormat(" Context={0}", context);
     }
 }
예제 #23
0
 public override int GetLength(Type targetType, ref bool flag)
 {
     int length = base.GetLength(targetType, ref flag);
     if (!flag) { return length; }
     var touched = new Capo<bool>(fingerprint, tag.Offset);
     if (touched[0])
     {
         length += Serializer.GetLength(result_);
     }
     if (targetType != null && targetType == typeof(HelloResp))
     {
         flag = false;
     }
     return length;
 }
예제 #24
0
파일: Sample.cs 프로젝트: jaykang920/x2clr
 protected override bool IsEquivalent(Cell other, Fingerprint fingerprint)
 {
     if (!base.IsEquivalent(other, fingerprint))
     {
         return false;
     }
     SampleCell3 o = (SampleCell3)other;
     var touched = new Capo<bool>(fingerprint, tag.Offset);
     if (touched[0])
     {
         if (qux_ != o.qux_)
         {
             return false;
         }
     }
     return true;
 }
예제 #25
0
 protected override bool IsEquivalent(Cell other, Fingerprint fingerprint)
 {
     if (!base.IsEquivalent(other, fingerprint))
     {
         return false;
     }
     HelloResp o = (HelloResp)other;
     var touched = new Capo<bool>(fingerprint, tag.Offset);
     if (touched[0])
     {
         if (result_ != o.result_)
         {
             return false;
         }
     }
     return true;
 }
예제 #26
0
 public override bool IsEquivalent(Cell other)
 {
     if (!base.IsEquivalent(other))
     {
         return false;
     }
     TimeoutEvent o = (TimeoutEvent)other;
     var touched = new Capo<bool>(fingerprint, tag.Offset);
     if (touched[0])
     {
         if (key_ != o.key_)
         {
             return false;
         }
     }
     return true;
 }
예제 #27
0
파일: Events.cs 프로젝트: nice1378/x2clr
 public override void Load(x2.Buffer buffer)
 {
     base.Load(buffer);
     var touched = new Capo<bool>(fingerprint, tag.Offset);
     if (touched[0])
     {
         buffer.Read(out result_);
     }
 }
예제 #28
0
 public override bool IsEquivalent(Cell other)
 {
     if (!base.IsEquivalent(other))
     {
         return false;
     }
     HandshakeResp o = (HandshakeResp)other;
     var touched = new Capo<bool>(fingerprint, tag.Offset);
     if (touched[0])
     {
         if (data_ != o.data_)
         {
             return false;
         }
     }
     return true;
 }
예제 #29
0
 public override bool IsEquivalent(Cell other)
 {
     if (!base.IsEquivalent(other))
     {
         return false;
     }
     HeartbeatEvent o = (HeartbeatEvent)other;
     var touched = new Capo<bool>(fingerprint, tag.Offset);
     if (touched[0])
     {
         if (timestamp_ != o.timestamp_)
         {
             return false;
         }
     }
     return true;
 }
예제 #30
0
 public override int GetHashCode(Fingerprint fingerprint)
 {
     var hash = new Hash(base.GetHashCode(fingerprint));
     if (fingerprint.Length <= tag.Offset)
     {
         return hash.Code;
     }
     var touched = new Capo<bool>(fingerprint, tag.Offset);
     if (touched[0])
     {
         hash.Update(linkName_);
     }
     if (touched[1])
     {
         hash.Update(handle_);
     }
     if (touched[2])
     {
         hash.Update(context_);
     }
     return hash.Code;
 }
예제 #31
0
파일: LinkClose.cs 프로젝트: nice1378/x2clr
 public override bool IsEquivalent(Cell other)
 {
     if (!base.IsEquivalent(other))
     {
         return false;
     }
     LinkClose o = (LinkClose)other;
     var touched = new Capo<bool>(fingerprint, tag.Offset);
     if (touched[0])
     {
         if (name != o.name)
         {
             return false;
         }
     }
     return true;
 }
예제 #32
0
 public override bool IsEquivalent(Cell other)
 {
     if (!base.IsEquivalent(other))
     {
         return false;
     }
     LinkSessionRecovered o = (LinkSessionRecovered)other;
     var touched = new Capo<bool>(fingerprint, tag.Offset);
     if (touched[0])
     {
         if (linkName_ != o.linkName_)
         {
             return false;
         }
     }
     if (touched[1])
     {
         if (handle_ != o.handle_)
         {
             return false;
         }
     }
     if (touched[2])
     {
         if (context_ != o.context_)
         {
             return false;
         }
     }
     return true;
 }
예제 #33
0
파일: Events.cs 프로젝트: nice1378/x2clr
 public override bool IsEquivalent(Cell other)
 {
     if (!base.IsEquivalent(other))
     {
         return false;
     }
     CapitalizeResp o = (CapitalizeResp)other;
     var touched = new Capo<bool>(fingerprint, tag.Offset);
     if (touched[0])
     {
         if (result_ != o.result_)
         {
             return false;
         }
     }
     return true;
 }
예제 #34
0
 public override bool IsEquivalent(Cell other)
 {
     if (!base.IsEquivalent(other))
     {
         return false;
     }
     SessionResp o = (SessionResp)other;
     var touched = new Capo<bool>(fingerprint, tag.Offset);
     if (touched[0])
     {
         if (value_ != o.value_)
         {
             return false;
         }
     }
     return true;
 }
예제 #35
0
파일: Events.cs 프로젝트: nice1378/x2clr
 protected override void Dump(x2.Buffer buffer)
 {
     base.Dump(buffer);
     var touched = new Capo<bool>(fingerprint, tag.Offset);
     if (touched[0])
     {
         buffer.Write(result_);
     }
 }
예제 #36
0
 protected override bool IsEquivalent(Cell other, Fingerprint fingerprint)
 {
     if (!base.IsEquivalent(other, fingerprint))
     {
         return false;
     }
     TimeoutEvent o = (TimeoutEvent)other;
     var touched = new Capo<bool>(fingerprint, tag.Offset);
     if (touched[0])
     {
         if (key_ != o.key_)
         {
             return false;
         }
     }
     if (touched[1])
     {
         if (intParam_ != o.intParam_)
         {
             return false;
         }
     }
     return true;
 }
예제 #37
0
 public override int GetEncodedLength()
 {
     int length = base.GetEncodedLength();
     var touched = new Capo<bool>(fingerprint, tag.Offset);
     if (touched[0])
     {
         length += Serializer.GetEncodedLength(foo_);
     }
     if (touched[1])
     {
         length += Serializer.GetEncodedLength(bar_);
     }
     return length;
 }
예제 #38
0
 public IEnumerable <Soldier> GetCapoSoldiers(Capo capo)
 {
     return(_capos.FirstOrDefault(c => c.Id == capo.Id)?.Soldiers);
 }
예제 #39
0
 public override void Serialize(Serializer serializer)
 {
     base.Serialize(serializer);
     var touched = new Capo<bool>(fingerprint, tag.Offset);
     if (touched[0])
     {
         serializer.Write(foo_);
     }
     if (touched[1])
     {
         serializer.Write(bar_);
     }
 }
예제 #40
0
 protected override bool IsEquivalent(Cell other, Fingerprint fingerprint)
 {
     if (!base.IsEquivalent(other, fingerprint))
     {
         return false;
     }
     HandshakeReq o = (HandshakeReq)other;
     var touched = new Capo<bool>(fingerprint, tag.Offset);
     if (touched[0])
     {
         if (data_ != o.data_)
         {
             return false;
         }
     }
     return true;
 }