コード例 #1
0
        public IOperationCollection Read(BinaryReader reader)
        {
            int  count = reader.ReadInt32();
            bool isAllMonotoneAndPoint = reader.ReadBoolean();

            var operations = Locator.CreateOperationCollection(count);

            for (int i = 0; i < count; i++)
            {
                int operationCode = reader.ReadInt32();

                IOperation operation;

                //operation body
                switch (operationCode)
                {
                case OperationCode.REPLACE:
                    operation = ReadReplaceOperation(reader);
                    break;

                case OperationCode.DELETE:
                    operation = ReadDeleteOperation(reader);
                    break;

                case OperationCode.DELETE_RANGE:
                    operation = ReadDeleteRangeOperation(reader);
                    break;

                case OperationCode.INSERT_OR_IGNORE:
                    operation = ReadInsertOrIgnoreOperation(reader);
                    break;

                case OperationCode.READ:
                    operation = ReadReadOperation(reader);
                    break;

                case OperationCode.READ_RANGE:
                    operation = ReadReadRangeOperation(reader);
                    break;

                case OperationCode.CLEAR:
                    operation = ReadClearOperation(reader);
                    break;

                case OperationCode.REFRESH:
                    operation = ReadRefreshOperation(reader);
                    break;

                case OperationCode.REFRESH_POINT:
                    operation = ReadRefreshPointOperation(reader);
                    break;

                case OperationCode.REFRESH_RANGE:
                    operation = ReadRefreshRangeOperation(reader);
                    break;

                case OperationCode.TRY_GET:
                    operation = ReadTryGetOperation(reader);
                    break;

                case OperationCode.FORWARD:
                    operation = ReadForwardOperation(reader);
                    break;

                case OperationCode.BACKWARD:
                    operation = ReadBackwardOperation(reader);
                    break;

                case OperationCode.FIND_NEXT:
                    operation = ReadFindNextOperation(reader);
                    break;

                case OperationCode.FIND_AFTER:
                    operation = ReadFindAfterOperation(reader);
                    break;

                case OperationCode.FIND_PREV:
                    operation = ReadFindPrevOperation(reader);
                    break;

                case OperationCode.FIND_BEFORE:
                    operation = ReadFindBeforeOperation(reader);
                    break;

                case OperationCode.FIRST_ROW:
                    operation = ReadFirstRowOperation(reader);
                    break;

                case OperationCode.LAST_ROW:
                    operation = ReadLastRowOperation(reader);
                    break;

                case OperationCode.COUNT:
                    operation = ReadCountOperation(reader);
                    break;

                case OperationCode.STORAGE_ENGINE_COMMIT:
                    operation = ReadStorageEngineCommitOperation(reader);
                    break;

                default:
                    throw new NotImplementedException();
                }

                operations.Add(operation);
            }

            return(operations);
        }