Example #1
0
        /// <summary>
        /// Example of how you can filter when keys follow a hierarchical pattern
        /// </summary>
        private static void QuickFilter()
        {
            DirectDictionaryLayerSimple <int> layer = new DirectDictionaryLayerSimple <int>();

            layer["--1--A--A1"] = 1;
            layer["--1--A--A2"] = 2;
            layer["--1--A--A3"] = 3;
            layer["--1--B--A1"] = 4;
            layer["--1--B--A2"] = 5;
            layer["--1--B--A3"] = 6;
            layer["--1--B--A4"] = 7;


            DirectDictionaryLayer <int, SimpleContainer <int> > subLayerA = layer.Filter("--1--A".ConvertToNibbles());
            DirectDictionaryLayer <int, SimpleContainer <int> > subLayerB = layer.Filter("--1--B".ConvertToNibbles());

            Console.WriteLine("Part A");
            subLayerA.ExecuteOnAllItems((v, k) => {
                Console.WriteLine($"Value [{v}] at SubKey [{k.ConvertFromFromNibbles()}]");
            });


            Console.WriteLine("Part B");
            subLayerB.ExecuteOnAllItems((v, k) => {
                Console.WriteLine($"Value [{v}] at SubKey [{k.ConvertFromFromNibbles()}]");
            });
        }
Example #2
0
        /// <summary>
        /// An example of some of the ways data can be stored and retrieved from DirectDictionaryLayer
        /// </summary>
        private static void GetAndSet()
        {
            DirectDictionaryLayerSimple <int> layer = new DirectDictionaryLayerSimple <int>();

            layer["123"]        = 1;
            layer["123"]["456"] = 2;
            layer.Set("1234-567".ConvertToNibbles(), 3);
            layer[(int)2000]  = 5;
            layer[(long)2000] = 6;
            layer['A']['B']   = 7;


            int four = layer.GetOrSet("1234-567-89".ConvertToNibbles(), () => { return(4); });

            Console.WriteLine(layer["123"]);
            Console.WriteLine(layer["1"]["23"]);

            Console.WriteLine(layer["123456"]);
            Console.WriteLine(layer["123"]["456"]);

            Console.WriteLine(layer["1234-567"]);
            Console.WriteLine(layer["1234"]["-"]["567"]);

            Console.WriteLine(four);
            Console.WriteLine(layer["1234-567-89"]);

            Console.WriteLine(layer[(int)2000]);
            Console.WriteLine(layer[(long)2000]);
            Console.WriteLine(layer['A']['B']);
            Console.WriteLine(layer.Get("123456"));
        }
Example #3
0
        private static void Delete()
        {
            DirectDictionaryLayerSimple <int> layer = new DirectDictionaryLayerSimple <int>();

            layer["asd"]   = 5;
            layer["asdr4"] = 6;
            layer["bsd"]   = 5;
            layer["bsdr4"] = 6;
            layer["csd"]   = 5;
            layer["csdr4"] = 6;

            layer.DeleteWithoutShrink("asd".ConvertToNibbles());
            layer.DeleteWithoutShrink("asdr4".ConvertToNibbles());
            layer.DeleteWithoutShrink("bsd".ConvertToNibbles());
            layer.DeleteWithoutShrink("bsdr4".ConvertToNibbles());
            layer.DeleteWithoutShrink("csd".ConvertToNibbles());
            layer.DeleteWithoutShrink("csdr4".ConvertToNibbles());
            layer.Shrink();
        }
Example #4
0
        /// <summary>
        /// Example of how DirectDictionaryLayer can loop around on itself when you set up to do so
        /// </summary>
        private static void LoopAround()
        {
            DirectDictionaryLayerSimple <int> layer = new DirectDictionaryLayerSimple <int>();

            layer.SetLayer("--1".ConvertToNibbles(), layer, false);
            layer.SetLayer("---2".ConvertToNibbles(), layer, false);

            layer["--1"]  = 1;
            layer["---2"] = 2;

            Console.WriteLine(layer["--1"]);
            Console.WriteLine(layer["--1--1"]);
            Console.WriteLine(layer["--1--1--1"]);

            Console.WriteLine(layer["--1--1--1---2---2--1"]);

            Console.WriteLine(layer["---2"]);
            Console.WriteLine(layer["---2---2"]);
            Console.WriteLine(layer["---2---2---2"]);

            Console.WriteLine(layer["---2---2--1--1---2--1---2"]);
        }
Example #5
0
        /// <summary>
        /// Example of how DirectDictionaryLayer can be use for grouping
        /// </summary>
        private static void Grouping()
        {
            List <AnimalProperty> mixedAnimalFeatures = new List <AnimalProperty>()
            {
                new AnimalProperty()
                {
                    AnimalName = "horse", AnimalFeature = "kicks people"
                },
                new AnimalProperty()
                {
                    AnimalName = "dog", AnimalFeature = "excited"
                },
                new AnimalProperty()
                {
                    AnimalName = "cat", AnimalFeature = "loveable"
                },
                new AnimalProperty()
                {
                    AnimalName = "horse", AnimalFeature = "evil"
                },
                new AnimalProperty()
                {
                    AnimalName = "dog", AnimalFeature = "barks"
                },
                new AnimalProperty()
                {
                    AnimalName = "dog", AnimalFeature = "protective"
                },
                new AnimalProperty()
                {
                    AnimalName = "cat", AnimalFeature = "soft"
                },
                new AnimalProperty()
                {
                    AnimalName = "horse", AnimalFeature = "conducts psychological warfare"
                },
                new AnimalProperty()
                {
                    AnimalName = "dog", AnimalFeature = "eats barf"
                },
                new AnimalProperty()
                {
                    AnimalName = "cat", AnimalFeature = "fluffy paws"
                },
                new AnimalProperty()
                {
                    AnimalName = "horse", AnimalFeature = "bites"
                },
                new AnimalProperty()
                {
                    AnimalName = "dog", AnimalFeature = "friendly"
                }
            };

            DirectDictionaryLayerSimple <List <AnimalProperty> > layer = new DirectDictionaryLayerSimple <List <AnimalProperty> >();

            //Do grouping
            foreach (AnimalProperty animalThing in mixedAnimalFeatures)
            {
                List <AnimalProperty> groupList = layer.GetOrSet(animalThing.AnimalName.ConvertToNibbles(), () => { return(new List <AnimalProperty>()); });
                groupList.Add(animalThing);
            }
            //Done grouping

            List <AnimalProperty> dogStuff   = layer["dog"];
            List <AnimalProperty> catStuff   = layer["cat"];
            List <AnimalProperty> horseStuff = layer["horse"];

            Console.WriteLine("\nDog features:");
            for (int i = 0; i < dogStuff.Count; ++i)
            {
                Console.WriteLine(dogStuff[i].AnimalFeature);
            }
            Console.WriteLine();

            Console.WriteLine("Cat features:");
            for (int i = 0; i < catStuff.Count; ++i)
            {
                Console.WriteLine(catStuff[i].AnimalFeature);
            }
            Console.WriteLine();

            Console.WriteLine("Horse features:");
            for (int i = 0; i < horseStuff.Count; ++i)
            {
                Console.WriteLine(horseStuff[i].AnimalFeature);
            }
            Console.WriteLine();
        }