示例#1
0
        /// <summary>
        /// Returns the number of bytes the copy commands length argument occupies.
        /// </summary>
        /// <param name="command">The copy command to evaluate</param>
        /// <returns>The number of bytes the copy commands length argument occupies.</returns>
        public static int GetCopyLengthSize(CopyDeltaCommand command)
        {
            int response;

            switch (command)
            {
            case CopyDeltaCommand.Copy_Byte_Byte:
            case CopyDeltaCommand.Copy_Short_Byte:
            case CopyDeltaCommand.Copy_Int_Byte:
            case CopyDeltaCommand.Copy_Long_Byte: {
                response = 1;

                break;
            }

            case CopyDeltaCommand.Copy_Byte_Short:
            case CopyDeltaCommand.Copy_Short_Short:
            case CopyDeltaCommand.Copy_Int_Short:
            case CopyDeltaCommand.Copy_Long_Short: {
                response = 2;

                break;
            }

            case CopyDeltaCommand.Copy_Byte_Int:
            case CopyDeltaCommand.Copy_Short_Int:
            case CopyDeltaCommand.Copy_Int_Int:
            case CopyDeltaCommand.Copy_Long_Int: {
                response = 4;

                break;
            }

            case CopyDeltaCommand.Copy_Byte_Long:
            case CopyDeltaCommand.Copy_Short_Long:
            case CopyDeltaCommand.Copy_Int_Long:
            case CopyDeltaCommand.Copy_Long_Long: {
                response = 8;

                break;
            }

            default: {
                throw new Exception(string.Format(Strings.RDiffBinary.InvalidDeltaCopyCommandError, command));
            }
            }

            return(response);
        }
示例#2
0
 /// <summary>
 /// Returns the number of bytes the copy commands offset argument occupies.
 /// </summary>
 /// <param name="command">The copy command to evaluate</param>
 /// <returns>The number of bytes the copy commands offset argument occupies.</returns>
 public static int GetCopyOffsetSize(CopyDeltaCommand command)
 {
     switch (command)
     {
         case CopyDeltaCommand.Copy_Byte_Byte:
         case CopyDeltaCommand.Copy_Byte_Short:
         case CopyDeltaCommand.Copy_Byte_Int:
         case CopyDeltaCommand.Copy_Byte_Long:
             return 1;
         case CopyDeltaCommand.Copy_Short_Byte:
         case CopyDeltaCommand.Copy_Short_Short:
         case CopyDeltaCommand.Copy_Short_Int:
         case CopyDeltaCommand.Copy_Short_Long:
             return 2;
         case CopyDeltaCommand.Copy_Int_Byte:
         case CopyDeltaCommand.Copy_Int_Short:
         case CopyDeltaCommand.Copy_Int_Int:
         case CopyDeltaCommand.Copy_Int_Long:
             return 4;
         case CopyDeltaCommand.Copy_Long_Byte:
         case CopyDeltaCommand.Copy_Long_Short:
         case CopyDeltaCommand.Copy_Long_Int:
         case CopyDeltaCommand.Copy_Long_Long:
             return 8;
         default:
             throw new Exception(string.Format(Strings.RDiffBinary.InvalidDeltaCopyCommandError, command));
     }
 }