Example #1
0
        public PtrMemoryWriter(RangeContainer container, MMU mmu, uint dest)
        {
            dest = BitConverter.ToUInt32(container.Memory, (int)dest);

            MMU  = mmu;
            Dest = dest;
        }
Example #2
0
        public void CanCombine()
        {
            var list1 = new RangeContainer <uint>((a, b) => Math.Abs(a - b) == 1)
            {
                { 0, 100 }, { 200, 300 }
            };
            var list2 = new RangeContainer <uint>((a, b) => Math.Abs(a - b) == 1)
            {
                { 90, 110 }, { 190, 310 }
            };

            list1.Add(list2);

            Assert.AreEqual(2, list1.Count);
            Assert.True(list1.Any(x => x.Start == 0 && x.End == 110));
            Assert.True(list1.Any(x => x.Start == 190 && x.End == 310));
        }
Example #3
0
        private object WorkDay(HttpListenerContext context, string path)
        {
            var parameters = this.QueryParser(context.Request.Url.Query);

            if (!parameters.TryGetValue("date", out var dateString) || !DateTime.TryParse(dateString, out var day))
            {
                context.Response.StatusCode = 400;
                return(new { status = "Bad Request: parameter 'date' was missing or malformed" });
            }
            int blur = 35;

            if (parameters.TryGetValue("blur", out string blurValue))
            {
                if (byte.TryParse(blurValue, out byte blurParam))
                {
                    blur = blurParam;
                }
                else
                {
                    context.Response.StatusCode = 400;
                    return(new { status = "Bad Request: parameter 'blur' was malformed" });
                }
            }

            var acts     = ActivityManager.GetSharedMonthActivities((short)day.Year, (byte)day.Month, "*", blur);
            var dayActs  = acts.Values.Where(x => x.Days.ContainsKey((byte)day.Day)).Select(x => x.Days[(byte)day.Day]).ToList();
            var xx       = dayActs.SelectMany(x => x.RangesWhere(y => y.WasActive && y.Classification == WorkPlayType.Work));
            var combined = RangeContainer.UintRangeContainer();

            combined.Add(xx);
            var totalTime = SecondToTime((uint)combined.Sum(x => x.End - x.Start + 1));

            return(new
            {
                date = day.ToString("yyyy-MM-dd"),
                totalTime,
                dayNumber = day.Day,
                work = combined.Select(x => new[] { SecondToTime(x.Start), SecondToTime(x.End) })
            });
        }
Example #4
0
        public void FormatString(ProgramReader reader)
        {
            Pointer ptr = new Pointer(Processor.MMU)
            {
                Value = reader.NextPtr()
            };

            string str = ptr.GetString();

            Regex           r       = new Regex(@"\{%[d,s,f]}");
            MatchCollection matches = r.Matches(str);

            foreach (Match match in matches)
            {
                object obj = null;

                if (match.Value == "{%d}")
                {
                    obj = reader.NextInt();
                }
                if (match.Value == "{%f}")
                {
                    obj = reader.NextFloat();
                }
                if (match.Value == "{%s}")
                {
                    obj = new Pointer(Processor.MMU)
                    {
                        Value = reader.NextPtr()
                    }.GetString();
                }

                str = ReplaceFirst(str, match.Value, obj.ToString());
            }

            RangeContainer c = Processor.MMU.Alloc(str.Length + 1);

            c.Write(str);
            Processor.Registers.SetReturnCarry(c.Start);
        }
Example #5
0
 public PtrMemoryReader(RangeContainer container, MMU mmu, uint ptr, int size)
 {
     ptr  = BitConverter.ToUInt32(container.Memory, (int)ptr);
     Data = mmu.ReadBytes(ptr, size);
 }
Example #6
0
        public AddressMemoryReader(RangeContainer container, uint ptr, int size)
        {
            Data = new byte[size];

            Array.Copy(container.Memory, ptr, Data, 0, size);
        }
Example #7
0
 public AddressMemoryWriter(RangeContainer container, uint dest)
 {
     Container = container;
     Dest      = dest;
 }