Ejemplo n.º 1
0
 public IEnumerable <string> SettingNames(ICollectionRequester requester, int depth)
 {
     //get
     {
         return(Request.TargetSettings.SettingNames(requester, depth));
     }
 }
 public IEnumerable <string> SettingNames(ICollectionRequester requester, int depth)
 {
     return(PrologCLR.InvokeFromC(
                () =>
     {
         if (IsEmpty(KeyGetter))
         {
             return null;
         }
         List <string> names = new List <string>();
         var plVar = PlTerm.PlVar();
         var query = new PlQuery(Module, KeyGetter,
                                 new PlTermV(PrologCLR.ToProlog(requester), PlTerm.PlString(NameSpace),
                                             plVar));
         while (query.NextSolution())
         {
             string res = (string)query.Args[2];
             if (!names.Contains(res))
             {
                 names.Add(res);
             }
         }
         return names.ToArray();
     }, DiscardFrames));
 }
Ejemplo n.º 3
0
 public IEnumerable<string> SettingNames(ICollectionRequester requester, int depth)
 {
     //get 
     {
         return new string[0]; /*throw new NotImplementedException(); */
     }
 }
Ejemplo n.º 4
0
 public void SetValue(ICollectionRequester requester, string name, object value)
 {
     if (Name == null)
     {
         return;
     }
 }
Ejemplo n.º 5
0
 public IEnumerable <string> SettingNames(ICollectionRequester requester, int depth)
 {
     //get
     {
         return(new string[0]); /*throw new NotImplementedException(); */
     }
 }
        static public IEnumerable <ICollectionProvider> GetProviders(ICollectionRequester requester, string namespaec)
        {
            var namespaec0          = ToKey(namespaec);
            var CollectionProviders = GetCollectionProviders(requester);

            lock (CollectionProviders)
            {
                HashSet <object> sp = null;
                if (requester.SessionMananger != null)
                {
                    sp = requester.SessionMananger.SkippedProviders;
                }
                var all = new List <ICollectionProvider>();
                foreach (var nv in CollectionProviders)
                {
                    var nsp = nv.NameSpace;
                    if (!string.IsNullOrEmpty(nsp) && ToKey(nv.NameSpace) != namespaec0)
                    {
                        continue;
                    }
                    if (sp == null || !sp.Contains(nv))
                    {
                        all.Add(nv);
                        //   sp.Add(nv);
                    }
                }
                return(all);
            }
        }
        public static bool AddSetting(ICollectionRequester requester, string namespac, string name, object valeu)
        {
            if (LoopingOn(namespac + "." + name, "update"))
            {
                return(false);
            }
            bool somethngTookIt = false;

            foreach (ICollectionProvider provider in GetProviders(requester, namespac))
            {
                if (!HasSetting(requester, provider, name))
                {
                    if (!provider.AcceptsNewKeys)
                    {
                        continue;
                    }
                }
                try
                {
                    provider.SetValue(requester, name, valeu);
                    somethngTookIt = true;
                }
                catch (Exception e)
                {
                    DLRConsole.DebugWriteLine("AddSetting " + e);
                }
            }
            return(somethngTookIt);
        }
 public ICollection GetGroup(ICollectionRequester requester, string name)
 {
     return(PrologCLR.InvokeFromC(
                () =>
     {
         PlTerm callback = AllCallbacks.Args[0];
         if (IsEmpty(callback))
         {
             return null;
         }
         var plVar = PlTerm.PlVar();
         List <object> results = new List <object>();
         var query = new PlQuery("call",
                                 new PlTermV(callback, PlTerm.PlString(NameSpace), PlTerm.PlString(name),
                                             plVar));
         while (query.NextSolution())
         {
             object res = PrologCLR.GetInstance(query.Args[3]);
             if (!results.Contains(res))
             {
                 results.Add(res);
             }
         }
         return results.Count == 0 ? null : results;
     }, DiscardFrames));
 }
Ejemplo n.º 9
0
 public IEnumerable <string> SettingNames(ICollectionRequester requester, int depth)
 {
     if (Name == null)
     {
         return(null);
     }
     return(new [] { Name });
 }
Ejemplo n.º 10
0
        public static IList <IKeyValuePair <string, object> > MakeKVP(ICollectionRequester requester, ICollectionProvider dict, int depth)
        {
            var list = new List <IKeyValuePair <string, object> >();

            foreach (var p in dict.SettingNames(requester, depth))
            {
                string key = p;
                list.Add(new SingleNameValue(p, () => AsCollection(dict.GetGroup(requester, key))));
            }
            return(list);
        }
Ejemplo n.º 11
0
 private static List<ICollectionProvider> FOCCollectionProviders(ICollectionRequester requester)
 {
     List<ICollectionProvider> providers;
     lock (_CollectionProviders)
     {
         if (!_CollectionProviders.TryGetValue(requester.RequesterID, out providers))
         {
             return _CollectionProviders[requester.RequesterID] = new List<ICollectionProvider>();
         }
         return providers;
     }
 }
Ejemplo n.º 12
0
 private static Dictionary<string, ICollectionProvider> FOCCodeRegistrars(ICollectionRequester requester)
 {
     Dictionary<string, ICollectionProvider> providers;
     lock (_CodeRegistrars)
     {
         if (!_CodeRegistrars.TryGetValue(requester.RequesterID, out providers))
         {
             return _CodeRegistrars[requester.RequesterID] = new Dictionary<string, ICollectionProvider>();
         }
         return providers;
     }
 }
 public static bool HasSetting(ICollectionRequester requester, ICollectionProvider provider, string name)
 {
     name = ToKey(name);
     foreach (var settingName in provider.SettingNames(requester, 1))
     {
         if (ToKey(settingName) == name)
         {
             return(true);
         }
     }
     return(false);
 }
        private static Dictionary <string, ICollectionProvider> FOCCodeRegistrars(ICollectionRequester requester)
        {
            Dictionary <string, ICollectionProvider> providers;

            lock (_CodeRegistrars)
            {
                if (!_CodeRegistrars.TryGetValue(requester.RequesterID, out providers))
                {
                    return(_CodeRegistrars[requester.RequesterID] = new Dictionary <string, ICollectionProvider>());
                }
                return(providers);
            }
        }
        private static List <ICollectionProvider> FOCCollectionProviders(ICollectionRequester requester)
        {
            List <ICollectionProvider> providers;

            lock (_CollectionProviders)
            {
                if (!_CollectionProviders.TryGetValue(requester.RequesterID, out providers))
                {
                    return(_CollectionProviders[requester.RequesterID] = new List <ICollectionProvider>());
                }
                return(providers);
            }
        }
Ejemplo n.º 16
0
        public ICollection GetGroup(ICollectionRequester requester, string name)
        {
            object val;

            lock (Dict)
            {
                if (Dict.TryGetValue(name, out val))
                {
                    return(SingleNameValue.AsCollection(val));
                }
            }
            return(null);
        }
        static public IEnumerable <string> GetNameSpaces(ICollectionRequester requester)
        {
            var CollectionProviders = GetCollectionProviders(requester);

            lock (CollectionProviders)
            {
                var all = new HashSet <string>();
                foreach (var nv in CollectionProviders)
                {
                    all.Add(ToKey(nv.NameSpace));
                }
                return(all);
            }
        }
Ejemplo n.º 18
0
 public void SetValue(ICollectionRequester requester, string name, object value)
 {
     PrologCLR.InvokeFromC(
         () =>
             {
                 if (IsEmpty(Setter)) return false;
                 var plVar = PlTerm.PlVar();
                 var query = new PlQuery(Module, Setter,
                                         new PlTermV(PrologCLR.ToProlog(requester), PlTerm.PlString(NameSpace), PlTerm.PlString(name),
                                                     PrologCLR.ToProlog(value)));
                 while (query.NextSolution())
                 {
                     
                 }
                 return true;
             }, DiscardFrames);
 }
Ejemplo n.º 19
0
 /// <summary>
 /// Returns an enumeration of Settings that Others have Overridden
 /// </summary>
 /// <param name="requester"></param>
 /// <param name="provider"></param>
 /// <returns></returns>
 public static ICollection<string> AddGroupProvider(ICollectionRequester requester, ICollectionProvider provider)
 {
     var CodeRegistrars = FOCCodeRegistrars(requester);
     var CollectionProviders = FOCCollectionProviders(requester);
     lock (CollectionProviders)
     {
         if (!CollectionProviders.Contains(provider))
         {
             CollectionProviders.Add(provider);
             foreach(string sn in provider.SettingNames(requester, 1))
             {
                 CodeRegistrars[ToKey(sn)] = provider; 
             }
         }
     }
     return new List<string>();
 }
 public void SetValue(ICollectionRequester requester, string name, object value)
 {
     PrologCLR.InvokeFromC(
         () =>
     {
         PlTerm callback = AllCallbacks.Args[1];
         if (IsEmpty(callback))
         {
             return(false);
         }
         var plVar = PlTerm.PlVar();
         var query = new PlQuery("call",
                                 new PlTermV(callback, PlTerm.PlString(NameSpace), PlTerm.PlString(name),
                                             PrologCLR.ToProlog(value)));
         return(query.NextSolution());
     }, DiscardFrames);
 }
        /// <summary>
        /// Returns an enumeration of Settings that Others have Overridden
        /// </summary>
        /// <param name="requester"></param>
        /// <param name="provider"></param>
        /// <returns></returns>
        public static ICollection <string> AddGroupProvider(ICollectionRequester requester, ICollectionProvider provider)
        {
            var CodeRegistrars      = FOCCodeRegistrars(requester);
            var CollectionProviders = FOCCollectionProviders(requester);

            lock (CollectionProviders)
            {
                if (!CollectionProviders.Contains(provider))
                {
                    CollectionProviders.Add(provider);
                    foreach (string sn in provider.SettingNames(requester, 1))
                    {
                        CodeRegistrars[ToKey(sn)] = provider;
                    }
                }
            }
            return(new List <string>());
        }
 public static bool SendSettingsChange(ICollectionRequester requester, string namespac, string name, object valeu)
 {
     foreach (ICollectionProvider provider in GetProviders(requester, namespac))
     {
         if (ReferenceEquals(provider, requester))
         {
             continue;
         }
         provider.SetValue(requester, name, valeu);
         lock (VarListeners)
         {
             foreach (var action in VarListeners)
             {
                 action(requester, namespac, name, valeu);
             }
         }
     }
     return(true);
 }
 public void SetValue(ICollectionRequester requester, string name, object value)
 {
     PrologCLR.InvokeFromC(
         () =>
     {
         if (IsEmpty(Setter))
         {
             return(false);
         }
         var plVar = PlTerm.PlVar();
         var query = new PlQuery(Module, Setter,
                                 new PlTermV(PrologCLR.ToProlog(requester), PlTerm.PlString(NameSpace), PlTerm.PlString(name),
                                             PrologCLR.ToProlog(value)));
         while (query.NextSolution())
         {
         }
         return(true);
     }, DiscardFrames);
 }
Ejemplo n.º 24
0
 public IEnumerable<string> SettingNames(ICollectionRequester requester, int depth)
 {
     return PrologCLR.InvokeFromC(
         () =>
             {
                 if (IsEmpty(KeyGetter)) return null;
                 List<string> names = new List<string>();
                 var plVar = PlTerm.PlVar();
                 var query = new PlQuery(Module, KeyGetter,
                                         new PlTermV(PrologCLR.ToProlog(requester), PlTerm.PlString(NameSpace),
                                                     plVar));
                 while (query.NextSolution())
                 {
                     string res = (string) query.Args[2];
                     if (!names.Contains(res)) names.Add(res);
                 }
                 return names.ToArray();
             }, DiscardFrames);
 }        
        static public IEnumerable <string> SettingNames(ICollectionRequester requester, int depth)
        {
            var CollectionProviders = GetCollectionProviders(requester);

            lock (CollectionProviders)
            {
                var all = new HashSet <string>();
                foreach (var nv in CollectionProviders)
                {
                    string ns = ToKey(nv.NameSpace);
                    IEnumerable <string> cvol = nv.SettingNames(requester, depth);
                    if (cvol != null)
                    {
                        foreach (var c in cvol)
                        {
                            all.Add(ns + "." + ToKey(c));
                        }
                    }
                }
                return(all);
            }
        }
Ejemplo n.º 26
0
 public ICollection GetGroup(ICollectionRequester requester, string name)
 {
     return(world.ResolveForExternal(name));
 }
Ejemplo n.º 27
0
 public IEnumerable <string> SettingNames(ICollectionRequester requester, int depth)
 {
     return(GroupNames);
 }
Ejemplo n.º 28
0
 public void SetValue(ICollectionRequester requester, string name, object value)
 {
     //throw new NotImplementedException();
 }
Ejemplo n.º 29
0
 public ICollection GetGroup(ICollectionRequester requester, string name)
 {
     return null;
 }
Ejemplo n.º 30
0
        static public IEnumerable<ICollectionProvider> GetProviders(ICollectionRequester requester, string namespaec)
        {
            var namespaec0 = ToKey(namespaec);
            var CollectionProviders = GetCollectionProviders(requester);

            lock (CollectionProviders)
            {
                HashSet<object> sp = null;
                if (requester.SessionMananger != null) sp = requester.SessionMananger.SkippedProviders;
                var all = new List<ICollectionProvider>();
                foreach (var nv in CollectionProviders)
                {
                    var nsp = nv.NameSpace;
                    if (!string.IsNullOrEmpty(nsp) && ToKey(nv.NameSpace) != namespaec0) continue;
                    if (sp == null || !sp.Contains(nv))
                    {
                        all.Add(nv);
                        //   sp.Add(nv);
                    }
                }
                return all;
            }
        }
Ejemplo n.º 31
0
 public RequesterSession(ICollectionRequester requester)
 {
     TheRequester     = requester;
     SkippedProviders = new HashSet <object>();
 }
Ejemplo n.º 32
0
 public ICollection GetGroup(ICollectionRequester requester, string name)
 {
     return(ggf(name));
 }
 public void SetValue(ICollectionRequester requester, string name, object value)
 {
    // if (!ScriptManager.HasSetting(this, name)) return;
     //@TODO dmiles
 }
Ejemplo n.º 34
0
        ///<summary>
        ///</summary>
        ///<param name="name"></param>
        ///<returns></returns>
        ///<exception cref="NotImplementedException"></exception>
        public ICollection GetGroup(ICollectionRequester requester, string name)
        {

            return null;
          //  throw new NotImplementedException();
        }
Ejemplo n.º 35
0
 static public IEnumerable<string> GetNameSpaces(ICollectionRequester requester)
 {
     var CollectionProviders = GetCollectionProviders(requester);
     lock (CollectionProviders)
     {
         var all = new HashSet<string>();
         foreach (var nv in CollectionProviders)
         {
             all.Add(ToKey(nv.NameSpace));
         }
         return all;
     }
 }
Ejemplo n.º 36
0
 public IEnumerable <string> SettingNames(ICollectionRequester requester, int depth)
 {
     //get
     { return(new[] { named }); }
 }
Ejemplo n.º 37
0
 public static bool SendSettingsChange(ICollectionRequester requester, string namespac, string name, object valeu)
 {
     foreach (ICollectionProvider provider in GetProviders(requester, namespac))
     {
         if (ReferenceEquals(provider, requester)) continue;
         provider.SetValue(requester, name, valeu);
         lock (VarListeners)
         {
             foreach (var action in VarListeners)
             {
                 action(requester, namespac, name, valeu);
             }
         }
     }
     return true;
 }
Ejemplo n.º 38
0
 public void SetValue(ICollectionRequester requester, string name, object value)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 39
0
 public void SetValue(ICollectionRequester requester, string name, object value)
 {
     // if (!ScriptManager.HasSetting(this, name)) return;
     //@TODO dmiles
 }
 public IEnumerable<string> SettingNames(ICollectionRequester requester, int depth)
 {
     return GroupNames;
 }
        static public ICollection GetGroup(ICollectionRequester requester, string namespaec, string varname)
        {
            if (LoopingOn(namespaec + "." + varname, "GetGroup"))
            {
                return(null);
            }
            var CodeRegistrars = FOCCodeRegistrars(requester);

            ICollectionProvider defaultProvider;

            if (varname.ToLower() == "currentaction")
            {
            }
            if (CodeRegistrars.TryGetValue(varname, out defaultProvider) && defaultProvider != null)
            {
                ICollection v = defaultProvider.GetGroup(requester, varname);
                return(v);
            }

            List <object> rv = new List <object>();
            ICollection   c  = null;
            int           fc = 0;
            var           CollectionProviders = GetCollectionProviders(requester);

            lock (CollectionProviders)
            {
                foreach (var nv in GetProviders(requester, namespaec))
                {
                    ICollection v = nv.GetGroup(requester, varname);
                    if (v == null)
                    {
                        continue;
                    }
                    fc++;
                    if (fc == 2)
                    {
                        foreach (var e in c)
                        {
                            if (!rv.Contains(e))
                            {
                                rv.Add(e);
                            }
                        }
                        foreach (var e in v)
                        {
                            if (!rv.Contains(e))
                            {
                                rv.Add(e);
                            }
                        }
                    }
                    else if (fc > 2)
                    {
                        foreach (var e in v)
                        {
                            if (!rv.Contains(e))
                            {
                                rv.Add(e);
                            }
                        }
                    }
                    c = v;
                }
            }
            if (fc == 0)
            {
                return(null);
            }
            if (fc == 1)
            {
                return(c);
            }
            return(rv);
        }
 public ICollection GetGroup(ICollectionRequester requester, string name)
 {
     return world.ResolveForExternal(name);
 }
Ejemplo n.º 43
0
 static public IEnumerable<string> SettingNames(ICollectionRequester requester, int depth)
 {
     var CollectionProviders = GetCollectionProviders(requester);
     lock (CollectionProviders)
     {
         var all = new HashSet<string>();
         foreach (var nv in CollectionProviders)
         {
             string ns = ToKey(nv.NameSpace);
             IEnumerable<string> cvol = nv.SettingNames(requester, depth);
             if (cvol != null)
             {
                 foreach (var c in cvol)
                 {
                     all.Add(ns + "." + ToKey(c));
                 }
             }
         }
         return all;
     }
 }
Ejemplo n.º 44
0
 public IEnumerable <string> SettingNames(ICollectionRequester requester, int depth)
 {
     lock (Dict) return(Dict.Keys);
 }
Ejemplo n.º 45
0
 private static IEnumerable<ICollectionProvider> GetCollectionProviders(ICollectionRequester requester)
 {
     requester.SessionMananger = new RequesterSession(requester);
     return LockInfo.CopyOf(FOCCollectionProviders(requester));
 }
Ejemplo n.º 46
0
 public ICollection GetGroup(ICollectionRequester requester, string name)
 {
     return PrologCLR.InvokeFromC(
         () =>
             {
                 if (IsEmpty(Getter)) return null;
                 var plVar = PlTerm.PlVar();
                 List<object> results = new List<object>();
                 var query = new PlQuery(Module, Getter,
                                         new PlTermV(PrologCLR.ToProlog(requester), PlTerm.PlString(NameSpace), PlTerm.PlString(name),
                                                     plVar));
                 while (query.NextSolution())
                 {
                     object res = PrologCLR.GetInstance(query.Args[3]);
                     if (!results.Contains(res)) results.Add(res);
                 }
                 return results.Count == 0 ? null : results;
             }, DiscardFrames);
 }
Ejemplo n.º 47
0
 public static bool HasSetting(ICollectionRequester requester, ICollectionProvider provider, string name)
 {
     name = ToKey(name);
     foreach (var settingName in provider.SettingNames(requester, 1))
     {
         if (ToKey(settingName) == name) return true;
     }
     return false;
 }
Ejemplo n.º 48
0
        public static bool AddSetting(ICollectionRequester requester, string namespac, string name, object valeu)
        {
            if (LoopingOn(namespac + "." + name, "update"))
            {
                return false;
            }
            bool somethngTookIt = false;
            foreach (ICollectionProvider provider in GetProviders(requester, namespac))
            {
                if (!HasSetting(requester, provider, name))
                {
                    if (!provider.AcceptsNewKeys) continue;
                }
                try
                {
                    provider.SetValue(requester, name, valeu);
                    somethngTookIt = true;

                }
                catch (Exception e)
                {
                    DLRConsole.DebugWriteLine("AddSetting " + e);
                }
            }
            return somethngTookIt;
        }
Ejemplo n.º 49
0
 ///<summary>
 ///</summary>
 ///<param name="name"></param>
 ///<returns></returns>
 ///<exception cref="NotImplementedException"></exception>
 public ICollection GetGroup(ICollectionRequester requester, string name)
 {
     return(null);
     //  throw new NotImplementedException();
 }
Ejemplo n.º 50
0
 public void SetValue(ICollectionRequester requester, string name, object value)
 {
     PrologCLR.InvokeFromC(
         () =>
         {
             PlTerm callback = AllCallbacks.Args[1];
             if (IsEmpty(callback)) return false;
             var plVar = PlTerm.PlVar();
             var query = new PlQuery("call",
                                     new PlTermV(callback, PlTerm.PlString(NameSpace), PlTerm.PlString(name),
                                                 PrologCLR.ToProlog(value)));
             return query.NextSolution();
         }, DiscardFrames);
 }
 private static IEnumerable <ICollectionProvider> GetCollectionProviders(ICollectionRequester requester)
 {
     requester.SessionMananger = new RequesterSession(requester);
     return(LockInfo.CopyOf(FOCCollectionProviders(requester)));
 }
Ejemplo n.º 52
0
        static public ICollection GetGroup(ICollectionRequester requester, string namespaec, string varname)
        {
            if (LoopingOn(namespaec + "." + varname, "GetGroup"))
            {
                return null;
            }
            var CodeRegistrars = FOCCodeRegistrars(requester);
            
            ICollectionProvider defaultProvider;
            if (varname.ToLower() == "currentaction")
            {

            }
            if (CodeRegistrars.TryGetValue(varname, out defaultProvider) && defaultProvider != null)
            {
                ICollection v = defaultProvider.GetGroup(requester, varname);
                return v;
            }

            List<object> rv = new List<object>();
            ICollection c = null;
            int fc = 0;
            var CollectionProviders = GetCollectionProviders(requester);
            lock (CollectionProviders)
            {
                foreach (var nv in GetProviders(requester, namespaec))
                {
                    ICollection v = nv.GetGroup(requester, varname);
                    if (v == null) continue;
                    fc++;
                    if (fc == 2)
                    {
                        foreach (var e in c)
                        {
                            if (!rv.Contains(e)) rv.Add(e);
                        }
                        foreach (var e in v)
                        {
                            if (!rv.Contains(e)) rv.Add(e);
                        }
                    }
                    else if (fc > 2)
                    {
                        foreach (var e in v)
                        {
                            if (!rv.Contains(e)) rv.Add(e);
                        }
                    }
                    c = v;
                }
            }
            if (fc == 0) return null;
            if (fc == 1) return c;
            return rv;
        }