public static IFormalValue BitArrayBinaryOp(string operation, IFormalValue formalLeftSubValue, IFormalValue formalRightSubValue) => new BitArrayBinaryOpValue(operation, formalLeftSubValue, formalRightSubValue);
public BitArrayBinaryOpValue(string operation, IFormalValue leftSubValue, IFormalValue rightSubValue) { _operation = operation; _leftSubValue = leftSubValue; _rightSubValue = rightSubValue; }
public static IFormalValue RefPlus(IFormalValue formalSubValue, int right) => formalSubValue.RefPlus(right);
public static IFormalValue Dereference(IFormalValue formalSubValue) => new DereferenceValue(formalSubValue);
public static IFormalValue Call(IFormalValue[] formalSubValues, FunctionId functionId) => new CallValue(formalSubValues, functionId);
public static IFormalValue BitCast(IFormalValue formalSubValue, int castedBits) => new BitCastValue(formalSubValue, castedBits);
public FormalValueAccess(IFormalValue formalValue, int index, int size) { _formalValue = formalValue; _size = size; _index = index; }
public BitCastValue(IFormalValue formalSubValue, int castedBits) { _formalSubValue = formalSubValue; _castedBits = castedBits; }
public CallValue(IFormalValue[] formalSubValues, FunctionId functionId) { _formalSubValues = formalSubValues; _functionId = functionId; }
public DereferenceValue(IFormalValue formalSubValue) { _formalSubValue = formalSubValue; }
void SetFormalValues(IFormalValue element, int startAddress, Size size) { var size1 = size.ToInt(); for(var i = 0; i < size1; i++) _data[i + startAddress] = new FormalValueAccess(element, i, size1); }