Beispiel #1
0
 public unsafe void AddItem(string path, IRegItem item)
 {
     if (TryAddItem(path, item) != AddItemResult.Success)
     {
         ABSLog.ThrowError($"ABSoftware Core: Failed to add item at path: '{path}'");
     }
 }
Beispiel #2
0
 public static unsafe void AddItem(string path, IRegItem item)
 {
     if (TryAddItem(path, item) != AddItemResult.Success)
     {
         ABSLog.ThrowError("T");
     }
 }
Beispiel #3
0
        public static unsafe AddItemResult TryAddItem(string path, IRegItem item)
        {
            item = null;
            char *buffer = stackalloc char[path.Length];

            if (!GetSegment(path, buffer, out int pos, out RegSegment segment))
            {
                return(AddItemResult.InvalidPath);
            }
            return(segment.TryAddItemBuffer(path, pos, buffer, item));
        }
Beispiel #4
0
        public static unsafe bool TryGetItem(string path, out IRegItem item)
        {
            item = null;
            char *buffer = stackalloc char[path.Length];

            if (!GetSegment(path, buffer, out int pos, out RegSegment segment))
            {
                return(false);
            }
            return(segment.TryGetItemBuffer(path, pos, buffer, out item));
        }
Beispiel #5
0
        void AddEventHandlerToItem(RegistrySyncInfo info, IRegItem regItem)
        {
            if (regItem is RegBooleanGroup blGr)
            {
                blGr.BooleanItemChanged += (s, e) =>
                {
                    if (info.BlGroupPos == e.Pos)
                    {
                        UpdateProperty(info);
                    }
                }
            }
            ;

            else
            {
                regItem.ItemChanged += (s, e) => UpdateProperty(info);
            }
        }
Beispiel #6
0
        internal unsafe bool TryGetItemBuffer(string path, int pos, char *buffer, out IRegItem item)
        {
            item = null;

            if (!GetGroupAndEnd(path, pos, buffer, out ParseResult result))
            {
                return(false);
            }

            if (result.HasTrailingSlash)
            {
                var found = result.ContainingGroup.ShallowGetGroup(result.End, out RegGroup group);
                item = group;
                return(found);
            }
            else
            {
                return(result.ContainingGroup.ShallowGetItem(result.End, out item));
            }
        }
Beispiel #7
0
        internal unsafe AddItemResult TryAddItemBuffer(string path, int pos, char *buffer, IRegItem item)
        {
            if (!GetGroupAndEnd(path, pos, buffer, out ParseResult result))
            {
                return(AddItemResult.InvalidPath);
            }

            if (result.HasTrailingSlash)
            {
                if (result.ContainingGroup.SubGroups.ContainsKey(result.End))
                {
                    return(AddItemResult.ItemAlreadyExists);
                }
                result.ContainingGroup.SubGroups.Add(result.End, (RegGroup)item);
            }
            else
            {
                if (result.ContainingGroup.SubItems.ContainsKey(result.End))
                {
                    return(AddItemResult.ItemAlreadyExists);
                }
                result.ContainingGroup.SubItems.Add(result.End, item);
            }

            ItemChanged?.Invoke(this, new EventArgs());
            return(AddItemResult.Success);
        }
Beispiel #8
0
        public unsafe AddItemResult TryAddItem(string path, IRegItem item)
        {
            char *buffer = stackalloc char[path.Length];

            return(TryAddItemBuffer(path, 0, buffer, item));
        }
Beispiel #9
0
        public unsafe bool TryGetItem(string path, out IRegItem item)
        {
            char *buffer = stackalloc char[path.Length];

            return(TryGetItemBuffer(path, 0, buffer, out item));
        }
Beispiel #10
0
 public bool ShallowGetItem(string subItem, out IRegItem res) => SubItems.TryGetValue(subItem, out res);
Beispiel #11
0
 internal RegistrySyncInfo(PropertyInfo property, IRegItem item, byte blGroupPos)
 {
     Property   = property;
     Item       = item;
     BlGroupPos = blGroupPos;
 }