Example #1
0
 public AstarSerializer(AstarPath script)
 {
     active    = script;
     astarData = script.astarData;
     mask      = -1;
     mask     -= SMask.SaveNodes;
 }
Example #2
0
        public Task Start(IDictionary <string, List <string> > args)
        {
            try
            {
                var bm  = new BitMask(156);
                var bm3 = new BitMask(56);

                bm[3]   = true;
                bm[34]  = true;
                bm[134] = true;
                bm3[2]  = true;

                var T  = bm.GetTiles();
                var s1 = bm.ToBinaryString();
                var s2 = bm.ToUintString();
                var s3 = bm.ToString();
                var s4 = bm3.ToString();


                var bm2 = new BitMask(T, bm.Count);
                bm.Or(bm2);

                Passed     = true;
                IsComplete = true;
            }
            catch (Exception ex)
            {
                Passed         = false;
                FailureMessage = ex.Message;
            }

            return(Task.CompletedTask);
        }
Example #3
0
        public void CanHasTrue()
        {
            var bitMask  = new BitMask(new[] { 1, 2, 3, 4, 10, 16, 17, 20, 30, 31, 63, 72, 112 });
            var bitMask2 = new BitMask(new[] { 2, 4, 16, 17, 30, 63, 112 });

            Assert.True(bitMask.Has(bitMask2));
        }
Example #4
0
        // Toggles the bit specified in intBit in the byte given in bytByte
        public void ToggleBit(ref object bytByte, object intBit)
        {
            double BitMask;

            BitMask = Math.Pow(2, (int.Parse(intBit.ToString()) - 1));
            bytByte = int.Parse(bytByte.ToString()) ^ int.Parse(BitMask.ToString());
        }
Example #5
0
 /// <summary>
 /// Returns the plugins that are meant to be run at the specified stage
 /// </summary>
 /// <param name="plugins">All plugins loaded</param>
 /// <param name="type">The plugin type</param>
 /// <param name="stage">the process stage</param>
 /// <returns></returns>
 public static List <AbstractPlugin> GetPluginsForStage(List <AbstractPlugin> plugins, PluginType type,
                                                        ProcessStage stage)
 {
     return(plugins.Where(
                x => BitMask.IsContainedInMask((int)x.PluginTypeToggle, (int)type, true) &&
                BitMask.IsContainedInMask((int)x.ProcessStages, (int)stage, true)).ToList());
 }
Example #6
0
        public TickAttribBidAsk(int value)
        {
            var mask = new BitMask(value);

            BidPastLow  = mask[0];
            AskPastHigh = mask[1];
        }
Example #7
0
        public void CanEqualsFalse()
        {
            var bitMask  = new BitMask(new[] { 1, 2, 3, 4, 10, 16, 17, 20, 30, 31, 63, 72, 112 });
            var bitMask2 = new BitMask(new[] { 1, 2, 4, 21, 29, 30, 72, 118 });

            Assert.False(bitMask == bitMask2);
        }
Example #8
0
        private static IEnumerable <BitMask[]> ExplodeMaskPart2(BitMask[] mask)
        {
            var index = -1;

            for (var i = 0; i < mask.Length; i++)
            {
                if (mask[i] == BitMask.Any)
                {
                    index = i;
                    break;
                }
            }

            if (index == -1)
            {
                return(new[] { mask });
            }

            var copy1 = new BitMask[mask.Length];
            var copy2 = new BitMask[mask.Length];

            Array.Copy(mask, copy1, mask.Length);
            Array.Copy(mask, copy2, mask.Length);
            copy1[index] = BitMask.Zero;
            copy2[index] = BitMask.One;

            return(new[] { copy1, copy2 }.SelectMany(ExplodeMaskPart2));
        }
Example #9
0
        public TickAttribLast(int value)
        {
            var mask = new BitMask(value);

            PastLimit  = mask[0];
            Unreported = mask[1];
        }
Example #10
0
 public UtilityTest()
 {
     mask = new BitMask();
     //
     // TODO: Add constructor logic here
     //
 }
Example #11
0
            public Computer Decode(string[] instructions)
            {
                foreach (var instruction in instructions)
                {
                    var splitData = instruction.Split(new char[] { '[', ']', '=', ' ' }, StringSplitOptions.RemoveEmptyEntries);

                    if (instruction.StartsWith("mask"))
                    {
                        Mask = BitMask.Parse(splitData[1]);
                    }
                    else if (instruction.StartsWith("mem"))
                    {
                        var address = Mask.SetBits(long.Parse(splitData[1]));
                        var value   = long.Parse(splitData[2]);

                        for (int floatNr = 0; floatNr < Math.Pow(2, Mask.Float.Count); floatNr++)
                        {
                            var tempAddress = address;

                            for (int bitIndex = 0; bitIndex < Mask.Float.Count; bitIndex++)
                            {
                                var bitValue = ((floatNr >> bitIndex) & 0x1);
                                tempAddress = UpdateBit(tempAddress, Mask.Float[bitIndex], bitValue);
                            }

                            SaveToRegister(tempAddress, value);
                        }
                    }
                }

                return(this);
            }
Example #12
0
        public bool ProcessControlWordLabel() //Processes a control word label and adds it to the list of control word labels
        {
            String name = GetWordToken();
            long   bank = GetIntToken();

            if (!Enumerator.HasToken())
            {
                throw new MicroassemblerParseException(Enumerator.Current, "Number or Number:Number pair expected");
            }
            int msb, lsb;

            if (Enumerator.Current.TokenType == TokenType.Pair)
            {
                Object[] arr = (Object[])Enumerator.Current.Value;
                if (!(arr[0] is long) || !(arr[1] is long))
                {
                    throw new MicroassemblerParseException("Number:Number pair expected");
                }
                msb = Convert.ToInt32(arr[0]);
                lsb = Convert.ToInt32(arr[1]);
                Enumerator.Advance();
            }
            else
            {
                msb = (int)GetIntToken();
                lsb = msb;
            }
            BitMask mask = new BitMask(msb, lsb);

            Microprogram.ControlWordLabels.Add(name, new ControlWordLabel {
                Bank = Convert.ToInt32(bank), Name = name, Mask = mask
            });
            Console.WriteLine($"Added new control word label '{name}' on bank {bank} at {mask}");
            return(true);
        }
Example #13
0
        public override string Solve_1()
        {
            var     reMask = new Regex(@"mask = (?<mask>\w+)");
            var     reMem  = new Regex(@"mem\[(?<address>\d+)+\] = (?<value>\d+)");
            BitMask mask   = new BitMask("0");
            var     memory = new Dictionary <int, long>();

            _input.ForEach(line =>
            {
                var m = reMem.Match(line);
                if (m.Success)
                {
                    var k     = int.Parse(m.Groups["address"].Value);
                    var v     = int.Parse(m.Groups["value"].Value);
                    memory[k] = mask.Apply(v);
                }
                else
                {
                    m    = reMask.Match(line);
                    mask = new BitMask(m.Groups["mask"].Value);
                }
            });

            return($"{memory.Values.ToList().Sum()}");
        }
Example #14
0
        public void CanHasFalse()
        {
            var bitMask  = new BitMask(new[] { 1, 2, 3, 4, 10, 16, 17, 20, 30, 31 });
            var bitMask2 = new BitMask(new[] { 1, 2, 3, 4, 9, 10, 16, 17, 20, 30, 31, 72 });

            Assert.False(bitMask.Has(bitMask2));
        }
        public void WritesAllMasksCorrectly()
        {
            // we can't use [range] args because we have to skip cases where end is over 64
            int count = 0;

            for (int start = 0; start < 64; start++)
            {
                for (int bits = 0; bits < 64; bits++)
                {
                    int end = start + bits;
                    if (end > 64)
                    {
                        continue;
                    }

                    ulong expected = SlowMask(start, end);
                    ulong actual   = BitMask.OuterMask(start, end);
                    count++;
                    if (expected != actual)
                    {
                        Assert.Fail($"Failed, start:{start} bits:{bits}");
                    }
                }
            }
            //UnityEngine.Debug.Log($"{count} masks tested");
        }
Example #16
0
        // Returns true if the bit specified in intBit is true, false if not.
        public bool ExamineBit(byte bytToCheck, int intBit)
        {
            double BitMask;

            BitMask = Math.Pow(2, (intBit - 1));
            return((bytToCheck & byte.Parse(BitMask.ToString())) > 0);
        }
Example #17
0
        private static List <BitMask> CalculateFloatingBitMasks(BitMask bitmask)
        {
            var result = new List <BitMask>();

            for (int i = 0; i < 36; i++)
            {
                if (bitmask[i] == null)
                {
                    var falseMask = bitmask.Clone();
                    var trueMask  = bitmask.Clone();
                    falseMask[i] = false;
                    trueMask[i]  = true;

                    result.AddRange(CalculateFloatingBitMasks(falseMask));
                    result.AddRange(CalculateFloatingBitMasks(trueMask));

                    break;
                }

                if (i == 35)
                {
                    result.Add(bitmask);
                }
            }

            return(result);
        }
Example #18
0
        public void MaskValueIsCorrect([Range(0, 64)] int bits)
        {
            var mask     = BitMask.Mask(bits);
            var expected = slowMask(bits);

            Assert.That(mask, Is.EqualTo(expected), $"    mask:{mask:X}\nexpected:{expected:X}");
        }
        public static IEnumerable <MemoryAddress> Decode(BitMask mask, MemoryAddress memoryAddress)
        {
            var floatingAddress = mask.Overwrite(memoryAddress);

            var decodingAddress = new List <string>
            {
                string.Empty
            };

            foreach (var bit in floatingAddress)
            {
                var assignBit = bit == 'X' ? '0' : bit;

                for (var i = 0; i < decodingAddress.Count; i++)
                {
                    decodingAddress[i] += assignBit;
                }

                if (bit != 'X')
                {
                    continue;
                }

                foreach (var decodingResult in decodingAddress.ToList())
                {
                    decodingAddress.Add(decodingResult[..^ 1] + '1');
Example #20
0
        int ReserveTransient(Entity entity, Resolutions resolution, BitMask mask = null)
        {
            var index = _slots.count++;

            _slots.Ensure();

            ref var slot = ref _slots.items[index];
Example #21
0
        private static void PartTwo()
        {
            var     memoryMap  = new Dictionary <long, long>();
            BitMask memoryMask = null;

            using (var inputFile = File.OpenRead("input.txt"))
            {
                using (var reader = new StreamReader(inputFile))
                {
                    while (!reader.EndOfStream)
                    {
                        var currentLine = reader.ReadLine();
                        var lineParts   = currentLine.Split('=');

                        if (lineParts.First().StartsWith("mask"))
                        {
                            memoryMask = new BitMask(lineParts.Last().Trim());
                        }
                        else if (lineParts.First().StartsWith("mem"))
                        {
                            var address      = int.Parse(Regex.Match(lineParts.First().Trim(), "mem\\[([0-9]+)\\]").Groups[1].Value);
                            var decimalValue = long.Parse(lineParts.Last().Trim());
                            var addressMask  = new BitMask(address);

                            for (int i = 0; i < 36; i++)
                            {
                                if (memoryMask[i].HasValue)
                                {
                                    if (memoryMask[i].Value == true)
                                    {
                                        addressMask[i] = true;
                                    }
                                }
                                else
                                {
                                    addressMask[i] = null;
                                }
                            }

                            var floatingAddresses = CalculateFloatingBitMasks(addressMask);

                            foreach (var finalAddress in floatingAddresses)
                            {
                                memoryMap[finalAddress.ToLong()] = decimalValue;
                            }
                        }
                    }
                }
            }

            var result = 0L;

            foreach (var entry in memoryMap)
            {
                result += entry.Value;
            }

            Console.WriteLine(result);
        }
Example #22
0
        public void Test_Constructors()
        {
            var bm  = new BitMask(2, 8, 16);
            var bm1 = new BitMask(2 | 8 | 16);


            Assert.AreEqual((int)bm, (int)bm1);
        }
Example #23
0
        public void Test_RemoveAllPrefixes()
        {
            var bm = new BitMask(2 | 8);

            Debug.AddPrefixForMask(bm, "HELLO");
            Debug.RemoveAllPrefixes();
            Assert.IsTrue(Debug.GetAllPrefixes().Count == 0);
        }
Example #24
0
        public void CanAnd()
        {
            var bitMask        = new BitMask(new[] { 1, 2, 3, 4, 10, 16, 17, 20, 30, 31, 63, 72, 112 });
            var bitMask2       = new BitMask(new[] { 1, 2, 3, 4, 10, 17, 20, 30, 31, 63, 112 });
            var expectedResult = new BitMask(new[] { 1, 2, 3, 4, 10, 17, 20, 30, 31, 63, 112 });

            Assert.Equal(expectedResult, bitMask & bitMask2);
        }
Example #25
0
 public BitMask( BitMask mask )
 {
     _bytes = new uint[mask._bytes.Length];
     for( var i = 0; i < mask._bytes.Length; i++ )
     {
         _bytes[i] = mask._bytes[i];
     }
 }
Example #26
0
        public void UnsetBitRange_SecondShortUnset()
        {
            nint value = (nint)nuint.MaxValue;

            value = BitMask.UnsetBitRange(value, 16, 16);

            Assert.IsTrue((ulong)value == 0b_1111_1111_1111_1111_1111_1111_1111_1111_0000_0000_0000_0000_1111_1111_1111_1111);
        }
Example #27
0
 public void triggerMask(BitMask mask)
 {
     msclPINVOKE.EventTriggerOptions_triggerMask__SWIG_1(swigCPtr, BitMask.getCPtr(mask));
     if (msclPINVOKE.SWIGPendingException.Pending)
     {
         throw msclPINVOKE.SWIGPendingException.Retrieve();
     }
 }
Example #28
0
        public void SetBitRange_SecondShortSet()
        {
            nint value = 0;

            value = BitMask.SetBitRange(value, 16, 16);

            Assert.IsTrue((ulong)value == 0b_0000_0000_0000_0000_0000_0000_0000_0000_1111_1111_1111_1111_0000_0000_0000_0000);
        }
Example #29
0
        public void ADL_Mask_Constructors_Test()
        {
            BitMask bm  = new BitMask(2, 8, 16);
            BitMask bm1 = new BitMask(2 | 8 | 16);


            Assert.AreEqual((int)bm, (int)bm1);
        }
Example #30
0
        public void ADL_Mask_RemoveFlags_Test()
        {
            BitMask <char> bm1 = new BitMask <char>(2 | 8 | 16);
            BitMask <char> ret = BitMask.RemoveFlags(bm1, 2);

            Assert.False(BitMask.IsContainedInMask(ret, 2, true));
            Assert.True(BitMask.IsContainedInMask(bm1, 2, true));
        }
Example #31
0
        public void ADL_Mask_IsUniqueMask_Test()
        {
            BitMask <char> bm  = new BitMask <char>(2 | 4);
            BitMask <char> bm1 = new BitMask <char>(8);

            Assert.True(BitMask.IsUniqueMask(bm1));
            Assert.False(BitMask.IsUniqueMask(bm));
        }
Example #32
0
 public BitMask And( BitMask mask )
 {
     Debug.Assert( _bytes.Length == mask._bytes.Length, "BitMasks must be the same size" );
     for( var i = 0; i < mask._bytes.Length; i++ )
     {
         _bytes[i] = _bytes[i] & mask._bytes[i];
     }
     return this;
 }
Example #33
0
 public AstarSerializer(AstarPath script)
 {
     active = script;
     astarData = script.astarData;
     mask = -1;
     mask -= SMask.SaveNodes;
 }
Example #34
0
    private static bool _isEqual( BitMask m1, BitMask m2 )
    {
        // BitMasks need to be the same size
        if( m1._bytes.Length != m2._bytes.Length ) return false;

        // Compare all elements in each BitMask's _byte array
        for( int i = 0; i < m1._bytes.Length; i++ )
        {
            if( m1._bytes[i] != m2._bytes[i] )
            {
                return false;
            }
        }

        return true;
    }
        private byte RegisterRead(Register register, BitMask mask)
        {
            var regval = RawReadRegister((byte) register);

            regval &= (byte) mask;

            if (mask != 0x0)
            {
                regval >>= (GetShiftCount((byte) mask) - 1);
            }

            return regval;
        }
        private void RegisterWrite(Register register, BitMask mask, byte data)
        {
            var regval = RawReadRegister((byte) register);
            regval &= (byte) ~(mask);

            if (mask != 0x0)
            {
                regval |= (byte) (data << (GetShiftCount((byte) mask) - 1));
            }
            else
            {
                regval |= data;
            }
            try
            {
                spi.Write((byte) ((byte) register & 0x3F), regval);
            }
            catch (Exception e)
            {
                Debug.Print(e.Message);
            }
        }