/// <summary> /// Write at index of value (that is not array, string, undefined or anyvalue) /// </summary> /// <param name="indexed">Value which index is written</param> /// <param name="index">Index used for given value</param> /// <param name="writtenValue">Value that is written at specified index</param> /// <returns>Values that should be written back into value container</returns> public abstract IEnumerable <Value> WriteValueIndex(Value indexed, MemberIdentifier index, MemoryEntry writtenValue);
/// <summary> /// Read index of value (that is not array, string, undefined or anyvalue) /// </summary> /// <param name="value">Value which index is read</param> /// <param name="index">Index used for given value</param> /// <returns>Value resolved by reading index on given value</returns> public abstract IEnumerable <Value> ReadValueIndex(Value value, MemberIdentifier index);
/// <summary> /// Read index of string value /// </summary> /// <param name="value">String value which index is read</param> /// <param name="index">Index used for given value</param> /// <returns>Value resolved by reading index on given value</returns> public abstract IEnumerable <Value> ReadStringIndex(StringValue value, MemberIdentifier index);
/// <summary> /// Read index of any value /// </summary> /// <param name="value">Any value which index is read</param> /// <param name="index">Index used for given value</param> /// <returns>Value resolved by reading index on given value</returns> public abstract MemoryEntry ReadAnyValueIndex(AnyValue value, MemberIdentifier index);
/// <summary> /// Read memory represented by given index identifier resolved on current /// snapshot entry (resulting snapshot entry can encapsulate merging, alias resolving and /// other stuff based on nondeterminism of identifier and current snapshot entry) /// </summary> /// <param name="index">Identifier of an index</param> /// <param name="context">Context snapshot where operation is proceeded</param> /// <returns>Snapshot entry representing index resolving on current entry</returns> protected abstract ReadWriteSnapshotEntryBase readIndex(SnapshotBase context, MemberIdentifier index);
/// <summary> /// Read memory represented by given index identifier resolved on current /// snapshot entry (resulting snapshot entry can encapsulate merging, alias resolving and /// other stuff based on nondeterminism of identifier and current snapshot entry) /// </summary> /// <param name="context">Context snapshot where operation is proceeded</param> /// <param name="index">Identifier of an index</param> /// <returns>Snapshot entries representing index resolving on current entry</returns> public ReadWriteSnapshotEntryBase ReadIndex(SnapshotBase context, MemberIdentifier index) { //TODO statistics reporting return(readIndex(context, index)); }