public ObjectArrayEventBeanCopyMethodWithArrayMapForge( ObjectArrayEventType eventType, ISet<string> mapPropertiesToCopy, ISet<string> arrayPropertiesToCopy, IDictionary<string, int> propertiesIndexes) { this.eventType = eventType; ISet<int> mapIndexesToCopy = new HashSet<int>(); foreach (var prop in mapPropertiesToCopy) { if (propertiesIndexes.TryGetValue(prop, out var index)) { mapIndexesToCopy.Add(index); } } mapIndexes = IntArrayUtil.ToArray(mapIndexesToCopy); ISet<int> arrayIndexesToCopy = new HashSet<int>(); foreach (var prop in arrayPropertiesToCopy) { if (propertiesIndexes.TryGetValue(prop, out var index)) { arrayIndexesToCopy.Add(index); } } arrayIndexes = IntArrayUtil.ToArray(arrayIndexesToCopy); }
public IntSeqKey RemoveFromEnd() { if (Array.Length > 7) { return new IntSeqKeyMany(IntArrayUtil.GetParentPath(Array)); } return new IntSeqKeySix(Array[0], Array[1], Array[2], Array[3], Array[4], Array[5]); }
public bool IsParentTo(IntSeqKey other) { if (!(other is IntSeqKeyMany)) { return false; } return IntArrayUtil.CompareParentKey(((IntSeqKeyMany) other).Array, Array); }
public CodegenExpression Make( CodegenMethodScope parent, SAIFFInitializeSymbol symbols, CodegenClassScope classScope) { var methodNode = parent.MakeChild(typeof(SubordTableLookupStrategyFactory), GetType(), classScope); if (_isStrictKeys) { int[] keyStreamNums = IntArrayUtil.Copy(_keyStreamNumbers); var keyStreamTypes = _outerStreamTypesZeroIndexed; if (isNWOnTrigger) { keyStreamTypes = EventTypeUtility.ShiftRight(_outerStreamTypesZeroIndexed); for (var i = 0; i < keyStreamNums.Length; i++) { keyStreamNums[i] = keyStreamNums[i] + 1; } } var forges = ExprNodeUtilityQuery.ForgesForProperties( keyStreamTypes, _hashStrictKeys, keyStreamNums); var eval = MultiKeyCodegen.CodegenExprEvaluatorMayMultikey( forges, _hashKeyCoercionTypes.CoercionTypes, _hashMultikeyClasses, methodNode, classScope); methodNode.Block.MethodReturn( NewInstance<SubordHashedTableLookupStrategyPropFactory>( Constant(_hashStrictKeys), Constant(keyStreamNums), eval)); return LocalMethod(methodNode); } else { var forges = new ExprForge[_hashKeys.Count]; for (var i = 0; i < _hashKeys.Count; i++) { forges[i] = _hashKeys[i].HashKey.KeyExpr.Forge; } var expressions = ExprNodeUtilityPrint.ToExpressionStringsMinPrecedence(forges); var eval = MultiKeyCodegen.CodegenExprEvaluatorMayMultikey( forges, _hashKeyCoercionTypes.CoercionTypes, _hashMultikeyClasses, methodNode, classScope); methodNode.Block.MethodReturn( NewInstance<SubordHashedTableLookupStrategyExprFactory>( Constant(expressions), eval, Constant(isNWOnTrigger), Constant(_numStreamsOuter))); return LocalMethod(methodNode); } }
public IntSeqKey AddToEnd(int num) { return new IntSeqKeyMany(IntArrayUtil.Append(Array, num)); }