/// <summary> /// Upserts the value associated with the specified [key0 key1.... keyN]. /// </summary> /// <param name="replaceExistingData">Specify if the existing val should be overwritten if the [key0 key1.... keyN value] already exists.</param> /// <param name="a">Key0 of type A, of [key0 key1.... keyN value] pair.</param> /// <param name="b">Key1 of type B, of [key0 key1.... keyN value] pair.</param> /// <param name="c">Key2 of type C, of [key0 key1.... keyN value] pair.</param> /// <param name="d">Key3 of type D, of [key0 key1.... keyN value] pair.</param> /// <param name="val">Value of [key0 key1.... keyN value] pair.</param> public void Upsert(bool replaceExistingData, A a, B b, C c, D d, VALUE val) { int level = 0; NKeyHash <B, NKeyHash <C, NKeyHash <D, VALUE> > > bsA1l = null; NKeyHash <C, NKeyHash <D, VALUE> > csA1l = null; NKeyHash <D, VALUE> dsA1l = null; if (this.Values.TryGetValue(a, out bsA1l)) { if (bsA1l.TryGetValue(b, out csA1l)) { if (csA1l.TryGetValue(c, out dsA1l)) { if (dsA1l.ContainsKey(d)) { if (replaceExistingData) { dsA1l[d] = val; } return; } else { level = 4; } } else { level = 3; } } else { level = 2; } } else { level = 1; } if (level == 1) { bsA1l = new NKeyHash <B, NKeyHash <C, NKeyHash <D, VALUE> > >(this.UnderlyingHashType); this.Values.Add(a, bsA1l); level++; } if (level == 2) { csA1l = new NKeyHash <C, NKeyHash <D, VALUE> >(this.UnderlyingHashType); bsA1l.Add(b, csA1l); level++; } if (level == 3) { dsA1l = new NKeyHash <D, VALUE>(this.UnderlyingHashType); csA1l.Add(c, dsA1l); level++; } if (level == 4) { dsA1l.Add(d, val); } }
//NKeyHash<X, NKeyHash<Y, NKeyHash<Z, VALUE>>>> //NKeyHash<A, NKeyHash<B, NKeyHash<C, NKeyHash<D, NKeyHash<, VALUE>>>> Values private string CubeXCubeYCubeZValue(int maxNode, int skipFirstFew, bool useMultiKeyValue) { string s; if (StoreCubeXCubeYCubeZValue.TryGetValue(maxNode, skipFirstFew, useMultiKeyValue, out s)) { return(s); } StringBuilder line2 = new StringBuilder(100); if (!useMultiKeyValue) { line2.Append(" NKeyHash<"); } else { line2.Append(" NKeyValue<"); } for (int n = skipFirstFew; n < maxNode; n++) { line2.Append(GenericCharUpper(n)); if (n != maxNode - 1) { if (!useMultiKeyValue) { line2.Append(", NKeyHash<"); } else { line2.Append(", NKeyValue<"); } } } line2.Append(", VALUE"); for (int n = skipFirstFew; n < maxNode; n++) { line2.Append('>'); } s = line2.ToString(); StoreCubeXCubeYCubeZValue[maxNode, skipFirstFew, useMultiKeyValue] = s; return(s); }
/// <summary> /// Upserts the value associated with the specified [key0 key1.... keyN]. /// </summary> /// <param name="replaceExistingData">Specify if the existing val should be overwritten if the [key0 key1.... keyN value] already exists.</param> /// <param name="a">Key0 of type A, of [key0 key1.... keyN value] pair.</param> /// <param name="b">Key1 of type B, of [key0 key1.... keyN value] pair.</param> /// <param name="c">Key2 of type C, of [key0 key1.... keyN value] pair.</param> /// <param name="d">Key3 of type D, of [key0 key1.... keyN value] pair.</param> /// <param name="e">Key4 of type E, of [key0 key1.... keyN value] pair.</param> /// <param name="f">Key5 of type F, of [key0 key1.... keyN value] pair.</param> /// <param name="g">Key6 of type G, of [key0 key1.... keyN value] pair.</param> /// <param name="h">Key7 of type H, of [key0 key1.... keyN value] pair.</param> /// <param name="val">Value of [key0 key1.... keyN value] pair.</param> public void Upsert(bool replaceExistingData, A a, B b, C c, D d, E e, F f, G g, H h, VALUE val) { int level = 0; NKeyHash <B, NKeyHash <C, NKeyHash <D, NKeyHash <E, NKeyHash <F, NKeyHash <G, NKeyHash <H, VALUE> > > > > > > bsA1l = null; NKeyHash <C, NKeyHash <D, NKeyHash <E, NKeyHash <F, NKeyHash <G, NKeyHash <H, VALUE> > > > > > csA1l = null; NKeyHash <D, NKeyHash <E, NKeyHash <F, NKeyHash <G, NKeyHash <H, VALUE> > > > > dsA1l = null; NKeyHash <E, NKeyHash <F, NKeyHash <G, NKeyHash <H, VALUE> > > > esA1l = null; NKeyHash <F, NKeyHash <G, NKeyHash <H, VALUE> > > fsA1l = null; NKeyHash <G, NKeyHash <H, VALUE> > gsA1l = null; NKeyHash <H, VALUE> hsA1l = null; if (this.Values.TryGetValue(a, out bsA1l)) { if (bsA1l.TryGetValue(b, out csA1l)) { if (csA1l.TryGetValue(c, out dsA1l)) { if (dsA1l.TryGetValue(d, out esA1l)) { if (esA1l.TryGetValue(e, out fsA1l)) { if (fsA1l.TryGetValue(f, out gsA1l)) { if (gsA1l.TryGetValue(g, out hsA1l)) { if (hsA1l.ContainsKey(h)) { if (replaceExistingData) { hsA1l[h] = val; } return; } else { level = 8; } } else { level = 7; } } else { level = 6; } } else { level = 5; } } else { level = 4; } } else { level = 3; } } else { level = 2; } } else { level = 1; } if (level == 1) { bsA1l = new NKeyHash <B, NKeyHash <C, NKeyHash <D, NKeyHash <E, NKeyHash <F, NKeyHash <G, NKeyHash <H, VALUE> > > > > > >(this.UnderlyingHashType); this.Values.Add(a, bsA1l); level++; } if (level == 2) { csA1l = new NKeyHash <C, NKeyHash <D, NKeyHash <E, NKeyHash <F, NKeyHash <G, NKeyHash <H, VALUE> > > > > >(this.UnderlyingHashType); bsA1l.Add(b, csA1l); level++; } if (level == 3) { dsA1l = new NKeyHash <D, NKeyHash <E, NKeyHash <F, NKeyHash <G, NKeyHash <H, VALUE> > > > >(this.UnderlyingHashType); csA1l.Add(c, dsA1l); level++; } if (level == 4) { esA1l = new NKeyHash <E, NKeyHash <F, NKeyHash <G, NKeyHash <H, VALUE> > > >(this.UnderlyingHashType); dsA1l.Add(d, esA1l); level++; } if (level == 5) { fsA1l = new NKeyHash <F, NKeyHash <G, NKeyHash <H, VALUE> > >(this.UnderlyingHashType); esA1l.Add(e, fsA1l); level++; } if (level == 6) { gsA1l = new NKeyHash <G, NKeyHash <H, VALUE> >(this.UnderlyingHashType); fsA1l.Add(f, gsA1l); level++; } if (level == 7) { hsA1l = new NKeyHash <H, VALUE>(this.UnderlyingHashType); gsA1l.Add(g, hsA1l); level++; } if (level == 8) { hsA1l.Add(h, val); } }